| 66 |
|
|
| 67 |
|
// neighbor list routines |
| 68 |
|
vector<pair<int, int> > buildNeighborList(); |
| 69 |
+ |
// neighbor list routines based on Rapaport |
| 70 |
+ |
vector<vector<CutoffGroup *> > buildLayerBasedNeighborList(); |
| 71 |
|
|
| 72 |
|
// group bookkeeping |
| 73 |
|
groupCutoffs getGroupCutoffs(int cg1, int cg2); |
| 82 |
|
|
| 83 |
|
// spatial data |
| 84 |
|
Vector3d getIntergroupVector(int cg1, int cg2); |
| 85 |
+ |
Vector3d getIntergroupVector(CutoffGroup *cg1, CutoffGroup *cg2); |
| 86 |
|
Vector3d getInteratomicVector(int atom1, int atom2); |
| 87 |
|
|
| 88 |
|
// atom bookkeeping |
| 94 |
|
void addForceToAtomRow(int atom1, Vector3d fg); |
| 95 |
|
void addForceToAtomColumn(int atom2, Vector3d fg); |
| 96 |
|
|
| 97 |
+ |
void addForceToAtomRowOMP(int atom1, Vector3d fg); |
| 98 |
+ |
void addForceToAtomColumnOMP(int atom2, Vector3d fg); |
| 99 |
+ |
|
| 100 |
|
// filling interaction blocks with pointers |
| 101 |
|
void fillInteractionData(InteractionData &idat, int atom1, int atom2); |
| 102 |
+ |
void fillInteractionDataOMP(InteractionDataPrv &idat, int atom1, int atom2); |
| 103 |
|
void unpackInteractionData(InteractionData &idat, int atom1, int atom2); |
| 104 |
|
|
| 105 |
+ |
void unpackInteractionDataOMP(InteractionDataPrv &idat, int atom1, int atom2); |
| 106 |
+ |
|
| 107 |
+ |
// memory reordering |
| 108 |
+ |
void reorderGroupCutoffs(vector<int> &order); |
| 109 |
+ |
void reorderPosition(vector<int> &order); |
| 110 |
+ |
void reorderGroupList(vector<int> &order); |
| 111 |
+ |
void reorderMemory(vector<vector<CutoffGroup *> > &H_c_l); |
| 112 |
+ |
|
| 113 |
|
private: |
| 114 |
|
void createGtypeCutoffMap(); |
| 115 |
|
|
| 120 |
|
vector<RealType> groupCutoff; |
| 121 |
|
vector<int> groupToGtype; |
| 122 |
|
|
| 123 |
+ |
/* XXX */ |
| 124 |
+ |
int neighborListReorderFreq; |
| 125 |
+ |
int reorderFreqCounter; |
| 126 |
+ |
|
| 127 |
|
#ifdef IS_MPI |
| 128 |
|
DataStorage atomRowData; |
| 129 |
|
DataStorage atomColData; |