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(); |
105 |
|
virtual pair<int, int> getGroupTypes(int cg1, int cg2) = 0; |
106 |
|
|
107 |
|
// Group->atom bookkeeping |
108 |
< |
virtual vector<int> getAtomsInGroupRow(int cg1) = 0; |
108 |
> |
virtual vector<int> getAtomsInGroupRow(int cg1) = 0; |
109 |
|
virtual vector<int> getAtomsInGroupColumn(int cg2) = 0; |
110 |
+ |
|
111 |
|
virtual Vector3d getAtomToGroupVectorRow(int atom1, int cg1) = 0; |
112 |
|
virtual Vector3d getAtomToGroupVectorColumn(int atom2, int cg2) = 0; |
113 |
< |
virtual RealType getMfactRow(int atom1) = 0; |
114 |
< |
virtual RealType getMfactColumn(int atom2) = 0; |
113 |
> |
virtual RealType getMassFactorRow(int atom1) = 0; |
114 |
> |
virtual RealType getMassFactorColumn(int atom2) = 0; |
115 |
|
|
116 |
|
// spatial data |
117 |
|
virtual Vector3d getIntergroupVector(int cg1, int cg2) = 0; |
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 |
|
|
158 |
|
//& column. It will be up to |
159 |
|
//the specific decomposition |
160 |
|
//method to fill this. |
161 |
+ |
|
162 |
+ |
vector<vector<int> > groupList_; |
163 |
|
vector<Vector3i> cellOffsets_; |
164 |
|
Vector3i nCells_; |
165 |
|
vector<vector<int> > cellList_; |
166 |
|
vector<Vector3d> saved_CG_positions_; |
167 |
+ |
potVec longRangePot_; |
168 |
|
|
169 |
|
}; |
170 |
|
} |