ls1-MarDyn
ls1-MarDyn molecular dynamics code
|
Public Member Functions | |
void | readXML (XMLfileUnits &xmlconfig) override |
void | setBoundingBox (std::shared_ptr< Object > object) |
bool | addParticle (Molecule &particle, bool inBoxCheckedAlready=false, bool checkWhetherDuplicate=false, const bool &rebuildCaches=false) override |
add a single Molecule to the ParticleContainer. More... | |
Basis & | getBasis () |
return reference to internal basis object. | |
void | clear () override |
Delete all molecules in container. More... | |
unsigned long | getNumberOfParticles () override |
double | getBoundingBoxMin (int dimension) const override |
returns one coordinate of the lower corner of the bounding box More... | |
double | getBoundingBoxMax (int dimension) const override |
returns one coordinate of the higher corner of the bounding box More... | |
bool | isInBoundingBox (double r[3]) const override |
checks, whether given coordinates are within the bounding box More... | |
void | update () override |
do necessary updates resulting from changed particle positions More... | |
void | addParticles (std::vector< Molecule > &particles, bool checkWhetherDuplicate=false) override |
adds a whole vector of particles More... | |
void | traverseCells (CellProcessor &cellProcessor) override |
traverse pairs which are close to each other More... | |
void | traverseNonInnermostCells (CellProcessor &cellProcessor) override |
void | traversePartialInnermostCells (CellProcessor &cellProcessor, unsigned int stage, int stageCount) override |
ParticleIterator | iterator (ParticleIterator::Type t) override |
RegionParticleIterator | regionIterator (const double startCorner[3], const double endCorner[3], ParticleIterator::Type t) override |
void | deleteOuterParticles () override |
delete all Particles which are not within the bounding box More... | |
double | get_halo_L (int index) const override |
returns the width of the halo stripe (for the given dimension index) More... | |
double | getCutoff () const override |
void | deleteMolecule (ParticleIterator &moleculeIter, const bool &rebuildCaches) override |
double | getEnergy (ParticlePairsHandler *particlePairsHandler, Molecule *m1, CellProcessor &cellProcessor) override |
void | updateInnerMoleculeCaches () override |
Update the caches of the molecules, that lie in inner cells. The caches of boundary and halo cells is not updated. This method is used for a multi-step scheme of overlapping mpi communication. More... | |
void | updateBoundaryAndHaloMoleculeCaches () override |
Update the caches of the molecules, that lie in the boundary or halo cells. The caches of boundary and halo cells is updated, the caches of the inner cells are not updated. This method is used for a multi-step scheme of overlapping mpi communication. More... | |
void | updateMoleculeCaches () override |
Update the caches of the molecules. More... | |
std::variant< ParticleIterator, SingleCellIterator< ParticleCell > > | getMoleculeAtPosition (const double pos[3]) override |
Gets a molecule by its position. More... | |
unsigned long | initCubicGrid (std::array< unsigned long, 3 > numMoleculesPerDimension, std::array< double, 3 > simBoxLength, size_t seed_offset) override |
size_t | getTotalSize () override |
void | printSubInfo (int offset) override |
std::string | getName () override |
double * | getCellLength () override |
string | getConfigurationAsString () override |
![]() | |
ParticleContainer (double bBoxMin[3], double bBoxMax[3]) | |
The constructor. More... | |
ParticleContainer () | |
Default constructor. | |
virtual | ~ParticleContainer () |
The destructor. | |
virtual bool | rebuild (double bBoxMin[3], double bBoxMax[3]) |
rebuild the datastructure More... | |
virtual bool | addHaloParticle (Molecule &particle, bool inBoxCheckedAlready=false, bool checkWhetherDuplicate=false, const bool &rebuildCaches=false) |
add a single Molecule to the ParticleContainer, ensures that it is added in the halo. More... | |
virtual int | getHaloWidthNumCells () |
virtual double | getSkin () const |
virtual bool | requiresForceExchange () const |
virtual double * | getHaloSize () |
virtual std::vector< unsigned long > | getParticleCellStatistics () |
virtual void | setCutoff (double rc) |
virtual std::vector< Molecule > | getInvalidParticles () |
virtual bool | isInvalidParticleReturner () |
Additional Inherited Members | |
![]() | |
double | _boundingBoxMin [3] |
coordinates of the left, lower, front corner of the bounding box | |
double | _boundingBoxMax [3] |
coordinates of the right, upper, back corner of the bounding box | |
The ParticleContainerToBasisWrapper class is there to read in any phase space input and save it into a Basis object instead of a regular particle container, so it can be used for the grid filler.
|
inlineoverridevirtual |
add a single Molecule to the ParticleContainer.
Note: a copy of the particle is pushed. Destroying the argument is responsibility of the programmer.
particle | reference to the particle which has to be added |
inBoxCheckedAlready | - if true, spare check whether molecule is in bounding box |
checkWhetherDuplicate | - if true, check whether molecule already exists and don't insert it. |
rebuildCaches | specifies, whether the caches should be rebuild |
Implements ParticleContainer.
|
inlineoverridevirtual |
adds a whole vector of particles
particles | reference to a vector of pointers to particles |
Implements ParticleContainer.
|
inlineoverridevirtual |
Delete all molecules in container.
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
delete all Particles which are not within the bounding box
Implements ParticleContainer.
|
inlineoverridevirtual |
returns the width of the halo stripe (for the given dimension index)
Implements ParticleContainer.
|
inlineoverridevirtual |
returns one coordinate of the higher corner of the bounding box
dimension | the coordinate which should be returned |
Reimplemented from ParticleContainer.
|
inlineoverridevirtual |
returns one coordinate of the lower corner of the bounding box
dimension | the coordinate which should be returned |
Reimplemented from ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Return a string representation of the algorithmic configuration of the container. Only used for logging / output.
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Gets a molecule by its position.
pos | Molecule position |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements MemoryProfilable.
|
inlineoverridevirtual |
This number may include particles which are outside of the bounding box
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements MemoryProfilable.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
checks, whether given coordinates are within the bounding box
r | the coordinates to check |
Reimplemented from ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements MemoryProfilable.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
traverse pairs which are close to each other
Only interactions between particles which have a distance which is not larger than the cutoff radius are to be considered.
This method has to be implemented in derived classes Precondition: All Particles of the process + halo molecules are stored Task: Run over all pairs (Each pair exactely once!) of particles (within cutoffradius) Important: Some pairs might be "duplicated": All pairs which cross the boundary occur twice (second time at the periodic image). Those pairs are from the point of view of the datastructure two different pairs, but they both times connect the same particles. For a pair which occurs twice, it has to be made sure, that one gets the status "original pair" and the other one "duplicated pair". For each pair found, there is an action executed, but it is a different action for original and duplicated pairs. Details about how to handle pairs can be found in the documentation for the class ParticlePairsHandler
particlePairsHandler | specified concrete action to be done for each pair |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
Implements ParticleContainer.
|
inlineoverridevirtual |
do necessary updates resulting from changed particle positions
For some implementations of the interface ParticleContainer, the place where particles are stored might e.g. depend on the spacial position of the particle. So when some externel method (e.g. Leap-Frog) changes the spacial position of a particle, the representation within the particleContainer becomes invalid. This method restores a valid representation.
Implements ParticleContainer.
|
inlineoverridevirtual |
Update the caches of the molecules, that lie in the boundary or halo cells. The caches of boundary and halo cells is updated, the caches of the inner cells are not updated. This method is used for a multi-step scheme of overlapping mpi communication.
Implements ParticleContainer.
|
inlineoverridevirtual |
Update the caches of the molecules, that lie in inner cells. The caches of boundary and halo cells is not updated. This method is used for a multi-step scheme of overlapping mpi communication.
Implements ParticleContainer.
|
inlineoverridevirtual |
Update the caches of the molecules.
Implements ParticleContainer.