From 2cd3bd4625104bda80276a9cea8258d383c631d3 Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Tue, 17 Feb 2015 11:40:29 +0100 Subject: [PATCH] Added method to PyGenVisitor to construct LatticeBasis objects --- Core/Tools/inc/PyGenVisitor.h | 1 + Core/Tools/src/PyGenVisitor.cpp | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/Core/Tools/inc/PyGenVisitor.h b/Core/Tools/inc/PyGenVisitor.h index 0ff3cc26e4b..4b009da0ae8 100644 --- a/Core/Tools/inc/PyGenVisitor.h +++ b/Core/Tools/inc/PyGenVisitor.h @@ -81,6 +81,7 @@ private: std::string defineFormFactors() const; std::string defineParticles() const; std::string defineCoreShellParticles() const; + std::string defineLatticeBases() const; std::string defineInterferenceFunctions() const; std::string defineParticleLayouts() const; std::string defineRoughnesses() const; diff --git a/Core/Tools/src/PyGenVisitor.cpp b/Core/Tools/src/PyGenVisitor.cpp index d4cafc0e925..6cbbf879d8b 100644 --- a/Core/Tools/src/PyGenVisitor.cpp +++ b/Core/Tools/src/PyGenVisitor.cpp @@ -265,6 +265,7 @@ std::string PyGenVisitor::defineGetSample() const result << defineFormFactors(); result << defineParticles(); result << defineCoreShellParticles(); + result << defineLatticeBases(); result << defineInterferenceFunctions(); result << defineParticleLayouts(); result << defineRoughnesses(); @@ -684,6 +685,40 @@ std::string PyGenVisitor::defineCoreShellParticles() const return result.str(); } +std::string PyGenVisitor::defineLatticeBases() const +{ + if (m_label->getLatticeBasisMap()->size() == 0) return ""; + std::ostringstream result; + result << std::setprecision(12); + result << "\n\t# Defining collection of particles with specific positions\n"; + std::map<const LatticeBasis *,std::string>::iterator it = + m_label->getLatticeBasisMap()->begin(); + + while (it != m_label->getLatticeBasisMap()->end()) + { + result << "\t" << it->second << " = LatticeBasis()\n"; + for (size_t i=0; i<it->first->getNbrParticles(); ++i) { + std::vector<kvector_t> position_vector = it->first->getParticlePositions(i); + for (size_t j=0; j<position_vector.size(); ++j) { + result << "\tparticle_" << i + << "_position_" << j << " = kvector_t(" + << position_vector[j].x() << "*nanometer," + << position_vector[j].y() << "*nanometer," + << position_vector[j].z() << "*nanometer)\n"; + } + result << "\t" << it->second << ".addParticle(" + << m_label->getLabel(it->first->getParticle(i)) << ", ["; + for (size_t j=0; j<position_vector.size(); ++j) { + result << "particle_" << i << "_position_" << j; + if (j!=position_vector.size()-1) result << ", "; + } + result << "])\n"; + } + it++; + } + return result.str(); +} + std::string PyGenVisitor::defineInterferenceFunctions() const { if (m_label->getInterferenceFunctionMap()->size() == 0) return ""; -- GitLab