diff --git a/examples/example-list.txt b/examples/example-list.txt index 01a10a9901..26284459f2 100644 --- a/examples/example-list.txt +++ b/examples/example-list.txt @@ -6,6 +6,7 @@ ./EOX/600K_15mol_l/config.xml ./Generators/mkTcTS/config.xml ./Generators/mkesfera/config.xml +./Generators/cubic_grid_generator/config.xml ./DropletCoalescence/liq/config_1_generateLiq.xml ./DropletCoalescence/vap/config_3_generateVap.xml ./surface-tension_LRC/CO2_Merker/vle/220K/run01/config.xml diff --git a/src/io/ASCIIReader.cpp b/src/io/ASCIIReader.cpp index c0d1a6a76a..0039e6df7c 100644 --- a/src/io/ASCIIReader.cpp +++ b/src/io/ASCIIReader.cpp @@ -410,8 +410,7 @@ ASCIIReader::readPhaseSpace(ParticleContainer* particleContainer, Domain* domain Log::global_log->debug() << "broadcasting(sending/receiving) particles with buffer_position " << particle_buff_pos << std::endl; MPI_Bcast(particle_buff, PARTICLE_BUFFER_SIZE, mpi_Particle, 0, MPI_COMM_WORLD); // TODO: MPI_COMM_WORLD for (int j = 0; j < particle_buff_pos; j++) { - Molecule m; - ParticleData::ParticleDataToMolecule(particle_buff[j], m); + Molecule m = ParticleData::ParticleDataToMolecule(particle_buff[j]); // only add particle if it is inside of the own domain! if(particleContainer->isInBoundingBox(m.r_arr().data())) { particleContainer->addParticle(m, true, false); diff --git a/src/io/BinaryReader.cpp b/src/io/BinaryReader.cpp index 83875f6e95..52f4ae5eff 100644 --- a/src/io/BinaryReader.cpp +++ b/src/io/BinaryReader.cpp @@ -261,8 +261,7 @@ BinaryReader::readPhaseSpace(ParticleContainer* particleContainer, Domain* domai MPI_Bcast(particle_buff, PARTICLE_BUFFER_SIZE, mpi_Particle, 0, MPI_COMM_WORLD); // TODO: MPI_COMM_WORLD for (int j = 0; j < particle_buff_pos; j++) { - Molecule m; - ParticleData::ParticleDataToMolecule(particle_buff[j], m); + Molecule m = ParticleData::ParticleDataToMolecule(particle_buff[j]); // only add particle if it is inside of the own domain! if(particleContainer->isInBoundingBox(m.r_arr().data())) { particleContainer->addParticle(m, true, false); diff --git a/src/io/MPI_IOReader.cpp b/src/io/MPI_IOReader.cpp index f706427b96..a8d0976fcc 100644 --- a/src/io/MPI_IOReader.cpp +++ b/src/io/MPI_IOReader.cpp @@ -504,10 +504,9 @@ MPI_IOReader::readPhaseSpace(ParticleContainer* particleContainer, Domain* domai if (globalNumParticlesPerCell[index] > 0) { - Molecule m; for (int l = 0; l < globalNumParticlesPerCell[index]; l++) { - ParticleData::ParticleDataToMolecule(data[l], m); + Molecule m = ParticleData::ParticleDataToMolecule(data[l]); // only add particle if it is inside of the own domain! if(particleContainer->isInBoundingBox(m.r_arr().data())) { diff --git a/src/io/ObjectGenerator.cpp b/src/io/ObjectGenerator.cpp index 25a080147c..df2bb40f24 100644 --- a/src/io/ObjectGenerator.cpp +++ b/src/io/ObjectGenerator.cpp @@ -126,7 +126,7 @@ ObjectGenerator::readPhaseSpace(ParticleContainer* particleContainer, Domain* do _filler->setObject(boundedObject); _filler->init(); - Molecule molecule; + Molecule molecule(0, nullptr, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); unsigned long moleculeID = _moleculeIdPool->getNewMoleculeId(); while(_filler->getMolecule(&molecule) > 0) { molecule.setid(moleculeID); diff --git a/src/io/PerCellGenerator.cpp b/src/io/PerCellGenerator.cpp index 673a67dd0d..90b72ee221 100644 --- a/src/io/PerCellGenerator.cpp +++ b/src/io/PerCellGenerator.cpp @@ -120,7 +120,7 @@ void PerCellGenerator::fillContainer(ParticleContainer *particleContainer, Compo std::array pos = {uniform_dists[0](randomEngine), uniform_dists[1](randomEngine), uniform_dists[2](randomEngine)}; - Molecule m(id, component, pos[0], pos[1], pos[2], 0., 0., 0.); + Molecule m(id, component, pos[0], pos[1], pos[2], 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.); if (isHalo) { particleContainer->addHaloParticle(m, true); } else { @@ -160,7 +160,7 @@ void PerCellGenerator::generateTwoParticles(ParticleContainer *particleContainer for (auto id = 0; id < 2; ++id) { std::array pos = {uniform_dists[0](randomEngine), uniform_dists[1](randomEngine), uniform_dists[2](randomEngine)}; - Molecule m(id, component, pos[0], pos[1], pos[2], 0., 0., 0.); + Molecule m(id, component, pos[0], pos[1], pos[2], 0., 0., 0., 1., 0., 0., 0., 0., 0., 0.); particleContainer->addParticle(m, true); } } diff --git a/src/molecules/AutoPasSimpleMolecule.cpp b/src/molecules/AutoPasSimpleMolecule.cpp index dc1cf66198..3db373520b 100644 --- a/src/molecules/AutoPasSimpleMolecule.cpp +++ b/src/molecules/AutoPasSimpleMolecule.cpp @@ -12,8 +12,8 @@ Component* AutoPasSimpleMolecule::_component = nullptr; Quaternion AutoPasSimpleMolecule::_quaternion = Quaternion(1.0, 0.0, 0.0, 0.0); AutoPasSimpleMolecule::AutoPasSimpleMolecule(unsigned long id, Component* component, double rx, double ry, double rz, - double vx, double vy, double vz, double q0, double q1, double q2, - double q3, double Dx, double Dy, double Dz) + double vx, double vy, double vz, double qw, double qx, double qy, + double qz, double Dx, double Dy, double Dz) : autopas::ParticleFP64({rx, ry, rz}, {vx, vy, vz}, id) { if (_component == nullptr) { _component = component; diff --git a/src/molecules/AutoPasSimpleMolecule.h b/src/molecules/AutoPasSimpleMolecule.h index 5fc924ecaa..2796cb778b 100644 --- a/src/molecules/AutoPasSimpleMolecule.h +++ b/src/molecules/AutoPasSimpleMolecule.h @@ -18,8 +18,8 @@ class AutoPasSimpleMolecule final : public MoleculeInterface, public autopas::ParticleFP64 { public: explicit AutoPasSimpleMolecule(unsigned long id = 0, Component* component = nullptr, double rx = 0., double ry = 0., - double rz = 0., double vx = 0., double vy = 0., double vz = 0., double q0 = 1., - double q1 = 1., double q2 = 0., double q3 = 0., double Dx = 0., double Dy = 0., + double rz = 0., double vx = 0., double vy = 0., double vz = 0., double qw = 0., + double qx = 0., double qy = 0., double qz = 0., double Dx = 0., double Dy = 0., double Dz = 0.); AutoPasSimpleMolecule(const AutoPasSimpleMolecule& m) = default; diff --git a/src/molecules/FullMolecule.cpp b/src/molecules/FullMolecule.cpp index 0e263fa77e..2c18287919 100644 --- a/src/molecules/FullMolecule.cpp +++ b/src/molecules/FullMolecule.cpp @@ -11,10 +11,10 @@ FullMolecule::FullMolecule(unsigned long id, Component *component, double rx, double ry, double rz, double vx, double vy, double vz, - double q0, double q1, double q2, double q3, + double qw, double qx, double qy, double qz, double Dx, double Dy, double Dz ) - : _q(q0, q1, q2, q3) { + : _q(qw, qx, qy, qz) { _id = id; _component = component; _r[0] = rx; diff --git a/src/molecules/FullMolecule.h b/src/molecules/FullMolecule.h index 93ba81f58a..1f6765f796 100644 --- a/src/molecules/FullMolecule.h +++ b/src/molecules/FullMolecule.h @@ -22,11 +22,11 @@ class FullMolecule : public MoleculeInterface { // but if it is left away, all pointer data is not initialized (which is not // neccessarily bad), but then assertions fail (e.g. in the destructor) and we can't // use it's instances. - FullMolecule(unsigned long id = 0, Component *component = nullptr, - double rx = 0., double ry = 0., double rz = 0., - double vx = 0., double vy = 0., double vz = 0., - double q0 = 1., double q1 = 1., double q2 = 0., double q3 = 0., - double Dx = 0., double Dy = 0., double Dz = 0. + FullMolecule(unsigned long id, Component *component, + double rx, double ry, double rz, + double vx, double vy, double vz, + double qw, double qx, double qy, double qz, + double Dx, double Dy, double Dz ); FullMolecule(const FullMolecule& m); diff --git a/src/molecules/MoleculeRMM.h b/src/molecules/MoleculeRMM.h index 56d45b861c..a460d0a7be 100644 --- a/src/molecules/MoleculeRMM.h +++ b/src/molecules/MoleculeRMM.h @@ -18,11 +18,11 @@ class MoleculeRMM : public MoleculeInterface { }; public: - MoleculeRMM(unsigned long id = 0, Component *component = nullptr, - double rx = 0., double ry = 0., double rz = 0., - double vx = 0., double vy = 0., double vz = 0., - double = 0., double = 0., double = 0., double = 0., /*q0, q1, q2, q3*/ - double = 0., double = 0., double = 0. /*Dx, Dy, Dz*/ + MoleculeRMM(unsigned long id, Component *component, + double rx, double ry, double rz, + double vx, double vy, double vz, + double qw, double qx, double qy, double qz, + double Dx, double Dy, double Dz ) { _state = STORAGE_AOS; _r[0] = rx; diff --git a/src/molecules/Quaternion.h b/src/molecules/Quaternion.h index c537c3968a..cfa53d12b9 100644 --- a/src/molecules/Quaternion.h +++ b/src/molecules/Quaternion.h @@ -9,7 +9,7 @@ */ class Quaternion { public: - Quaternion(double qw = 1., double qx = 1., double qy = 0., double qz = 0.) + Quaternion(double qw = 0., double qx = 0., double qy = 0., double qz = 0.) : m_qw(qw), m_qx(qx), m_qy(qy), m_qz(qz) { } diff --git a/src/parallel/ParticleDataFull.cpp b/src/parallel/ParticleDataFull.cpp index 9a2d296d63..12307735b4 100644 --- a/src/parallel/ParticleDataFull.cpp +++ b/src/parallel/ParticleDataFull.cpp @@ -60,9 +60,9 @@ void ParticleDataFull::MoleculeToParticleData(ParticleDataFull &particleStruct, particleStruct.D[2] = molecule.D(2); } -void ParticleDataFull::ParticleDataToMolecule(const ParticleDataFull &particleStruct, Molecule &molecule) { +Molecule ParticleDataFull::ParticleDataToMolecule(const ParticleDataFull &particleStruct) { Component* component = _simulation.getEnsemble()->getComponent(particleStruct.cid); - molecule = Molecule(particleStruct.id, component, + return Molecule(particleStruct.id, component, particleStruct.r[0], particleStruct.r[1], particleStruct.r[2], particleStruct.v[0], particleStruct.v[1], particleStruct.v[2], particleStruct.q[0], particleStruct.q[1], particleStruct.q[2], particleStruct.q[3], diff --git a/src/parallel/ParticleDataFull.h b/src/parallel/ParticleDataFull.h index 8f0317cf56..bf3bce512e 100644 --- a/src/parallel/ParticleDataFull.h +++ b/src/parallel/ParticleDataFull.h @@ -25,7 +25,7 @@ class ParticleDataFull { static void MoleculeToParticleData(ParticleDataFull &particleStruct, Molecule &molecule); //! @brief copy data from object of class ParticleDataFull to object of class Molecule - static void ParticleDataToMolecule(const ParticleDataFull &particleStruct, Molecule &molecule); + static Molecule ParticleDataToMolecule(const ParticleDataFull &particleStruct); double r[3]; //! position double v[3]; //! velocity diff --git a/src/parallel/ParticleDataRMM.cpp b/src/parallel/ParticleDataRMM.cpp index 70e228ecac..246d8dc507 100644 --- a/src/parallel/ParticleDataRMM.cpp +++ b/src/parallel/ParticleDataRMM.cpp @@ -66,7 +66,7 @@ void ParticleDataRMM::MoleculeToParticleData(ParticleDataRMM &particleStruct, Mo particleStruct.v[2] = molecule.v(2); } -void ParticleDataRMM::ParticleDataToMolecule(const ParticleDataRMM &particleStruct, Molecule &molecule) { +Molecule ParticleDataRMM::ParticleDataToMolecule(const ParticleDataRMM &particleStruct) { Component* component = _simulation.getEnsemble()->getComponent(0); molecule = Molecule(particleStruct.id, component, particleStruct.r[0], particleStruct.r[1], particleStruct.r[2], diff --git a/src/parallel/ParticleDataRMM.h b/src/parallel/ParticleDataRMM.h index f5e8b3524d..ba2902bead 100644 --- a/src/parallel/ParticleDataRMM.h +++ b/src/parallel/ParticleDataRMM.h @@ -26,7 +26,7 @@ class ParticleDataRMM { static void MoleculeToParticleData(ParticleDataRMM &particleStruct, Molecule &molecule); //! @brief copy data from object of class class ParticleDataRMM to object of class Molecule - static void ParticleDataToMolecule(const ParticleDataRMM &particleStruct, Molecule &molecule); + static Molecule ParticleDataToMolecule(const ParticleDataRMM &particleStruct); unsigned long id; vcp_real_calc r[3]; diff --git a/src/particleContainer/ParticleCellBase.cpp b/src/particleContainer/ParticleCellBase.cpp index 3cd67b55ca..1e40e400d9 100644 --- a/src/particleContainer/ParticleCellBase.cpp +++ b/src/particleContainer/ParticleCellBase.cpp @@ -143,7 +143,7 @@ unsigned long ParticleCellBase::initCubicGrid(const std::array ++numInserted; std::array v = getRandomVelocity(T, RNG); Molecule dummy(0, &(global_simulation->getEnsemble()->getComponents()->at(0)), - x1, y1, z1, v[0], -v[1], v[2]); + x1, y1, z1, v[0], -v[1], v[2], 1.0, 0.0, 0.0, 0.0); buffer.push_back(dummy); } @@ -151,7 +151,7 @@ unsigned long ParticleCellBase::initCubicGrid(const std::array ++numInserted; std::array v = getRandomVelocity(T, RNG); Molecule dummy(0, &(global_simulation->getEnsemble()->getComponents()->at(0)), - x2, y2, z2, v[0], -v[1], v[2]); + x2, y2, z2, v[0], -v[1], v[2], 1.0, 0.0, 0.0, 0.0); buffer.push_back(dummy); } } diff --git a/src/particleContainer/adapter/CellDataSoARMM.h b/src/particleContainer/adapter/CellDataSoARMM.h index 6a437b10ef..cd7c83e97f 100644 --- a/src/particleContainer/adapter/CellDataSoARMM.h +++ b/src/particleContainer/adapter/CellDataSoARMM.h @@ -72,7 +72,9 @@ class CellDataSoARMM : public CellDataSoABase { return Molecule ( getMolUid(index), nullptr, getMolR(0,index), getMolR(1,index), getMolR(2,index), - getMolV(0,index), getMolV(1,index), getMolV(2,index)); + getMolV(0,index), getMolV(1,index), getMolV(2,index), + 1.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0); } void readImmutableMolecule(size_t index, MoleculeInterface& m) const {