ls1-MarDyn
ls1-MarDyn molecular dynamics code
ParticleCellRMM.h
1#ifndef SRC_PARTICLECONTAINER_PARTICLECELLRMM_H_
2#define SRC_PARTICLECONTAINER_PARTICLECELLRMM_H_
3
4#include "ParticleCellBase.h"
5#include "SingleCellIterator.h"
6#include "particleContainer/adapter/CellDataSoARMM.h"
7
9public:
11
12 ParticleCellRMM(const ParticleCellRMM& other) = default;
13
14 ~~ParticleCellRMM() override;
15
18 }
19
20 void deallocateAllParticles() override;
21
22 bool addParticle(Molecule& particle, bool checkWhetherDuplicate = false) override;
23
24 bool isEmpty() const override;
25
26 bool deleteMoleculeByIndex(size_t index) override;
27
28 int getMoleculeCount() const override;
29
30 void preUpdateLeavingMolecules() override {}
31
32 void updateLeavingMoleculesBase(ParticleCellBase& otherCell) override ;
33
34 void postUpdateLeavingMolecules() override {}
35
36 void getRegion(double lowCorner[3], double highCorner[3], std::vector<Molecule*> &particlePtrs, bool removeFromContainer = false) override;
37
38 void buildSoACaches() override {}
39
40 void increaseMoleculeStorage(size_t numExtraMols) override;
41
42 int countInRegion(double lowCorner[3], double highCorner[3]) const;
43
44 void swapAndAppendToCell(ParticleCellRMM& other);
45
46 void swapMolecules(int i, ParticleCellRMM& other, int j);
47
48 CellDataSoARMM & getCellDataSoA() {return _cellDataSoARMM;}
49
50 size_t getMoleculeVectorDynamicSize() const override {return 0;}
51
52 void prefetchForForce() const override;
53
54 void getLeavingMolecules(std::vector<Molecule> & appendBuffer) override;
55
56 bool findMoleculeByID(size_t& index, unsigned long molid) const override;
57
58//protected: do not use!
59 void moleculesAtNew(size_t i, Molecule *& multipurposePointer) override;
60 void moleculesAtConstNew(size_t i, Molecule *& multipurposePointer) const override;
61
62private:
63 Molecule buildAoSMolecule(size_t i) const;
64
69 CellDataSoARMM _cellDataSoARMM;
70};
71
72#endif /* SRC_PARTICLECONTAINER_PARTICLECELLRMM_H_ */
Structure of Arrays for single-center lennard-Jones molecules for the RMM run.
Definition: CellDataSoARMM.h:16
FullMolecule modeled as LJ sphere with point polarities.
Definition: FullMolecule.h:18
ParticleCellBase defines the interface for cells used by the LinkedCells data structure to store mole...
Definition: ParticleCellBase.h:23
Definition: ParticleCellRMM.h:8
bool isEmpty() const override
Check if current cell contains no molecules.
Definition: ParticleCellRMM.cpp:74
bool addParticle(Molecule &particle, bool checkWhetherDuplicate=false) override
Add a particle to the cell.
Definition: ParticleCellRMM.cpp:34
bool findMoleculeByID(size_t &index, unsigned long molid) const override
Find the index of a molecule in a cell based on its molecule ID.
Definition: ParticleCellRMM.cpp:17
Definition: SingleCellIterator.h:14