91 |
|
|
92 |
|
virtual void distributeInitialData() = 0; |
93 |
|
virtual void distributeData() = 0; |
94 |
+ |
virtual void zeroWorkArrays() = 0; |
95 |
|
virtual void collectIntermediateData() = 0; |
96 |
|
virtual void distributeIntermediateData() = 0; |
97 |
|
virtual void collectData() = 0; |
98 |
+ |
virtual potVec getLongRangePotential() { return longRangePot_; } |
99 |
|
|
100 |
|
// neighbor list routines |
101 |
|
virtual bool checkNeighborList(); |
118 |
|
virtual Vector3d getInteratomicVector(int atom1, int atom2) = 0; |
119 |
|
|
120 |
|
// atom bookkeeping |
121 |
< |
virtual vector<int> getAtomList() = 0; |
122 |
< |
virtual vector<int> getSkipsForAtom(int atom1) = 0; |
121 |
> |
virtual int getNAtomsInRow() = 0; |
122 |
> |
virtual vector<int> getSkipsForRowAtom(int atom1) = 0; |
123 |
|
virtual bool skipAtomPair(int atom1, int atom2) = 0; |
124 |
|
virtual void addForceToAtomRow(int atom1, Vector3d fg) = 0; |
125 |
|
virtual void addForceToAtomColumn(int atom2, Vector3d fg) = 0; |
126 |
|
|
127 |
|
// filling interaction blocks with pointers |
128 |
|
virtual InteractionData fillInteractionData(int atom1, int atom2) = 0; |
129 |
+ |
virtual void unpackInteractionData(InteractionData idat, int atom1, int atom2) = 0; |
130 |
|
virtual InteractionData fillSkipData(int atom1, int atom2) = 0; |
131 |
|
virtual SelfData fillSelfData(int atom1); |
132 |
|
|
134 |
|
SimInfo* info_; |
135 |
|
SnapshotManager* sman_; |
136 |
|
Snapshot* snap_; |
137 |
+ |
ForceField* ff_; |
138 |
|
int storageLayout_; |
139 |
|
RealType skinThickness_; /**< Verlet neighbor list skin thickness */ |
140 |
|
|
164 |
|
Vector3i nCells_; |
165 |
|
vector<vector<int> > cellList_; |
166 |
|
vector<Vector3d> saved_CG_positions_; |
167 |
+ |
potVec longRangePot_; |
168 |
|
|
169 |
|
}; |
170 |
|
} |