| 55 | 
  | 
   | 
| 56 | 
  | 
  class ForceMatrixDecomposition : public ForceDecomposition { | 
| 57 | 
  | 
  public: | 
| 58 | 
< | 
    ForceMatrixDecomposition(SimInfo* info) : ForceDecomposition(info) {sman_ = info_->getSnapshotManager();} | 
| 58 | 
> | 
    ForceMatrixDecomposition(SimInfo* info) : ForceDecomposition(info) {}; | 
| 59 | 
> | 
 | 
| 60 | 
  | 
    void distributeInitialData(); | 
| 61 | 
  | 
    void distributeData(); | 
| 62 | 
  | 
    void collectIntermediateData(); | 
| 64 | 
  | 
    void collectData(); | 
| 65 | 
  | 
 | 
| 66 | 
  | 
    // neighbor list routines | 
| 66 | 
– | 
    bool checkNeighborList(); | 
| 67 | 
  | 
    vector<pair<int, int> >  buildNeighborList(); | 
| 68 | 
  | 
 | 
| 69 | 
  | 
    // group bookkeeping | 
| 74 | 
  | 
    vector<int> getAtomsInGroupColumn(int cg2); | 
| 75 | 
  | 
    Vector3d getAtomToGroupVectorRow(int atom1, int cg1); | 
| 76 | 
  | 
    Vector3d getAtomToGroupVectorColumn(int atom2, int cg2); | 
| 77 | 
< | 
    RealType getMfactRow(int atom1); | 
| 78 | 
< | 
    RealType getMfactColumn(int atom2); | 
| 77 | 
> | 
    RealType getMassFactorRow(int atom1); | 
| 78 | 
> | 
    RealType getMassFactorColumn(int atom2); | 
| 79 | 
  | 
 | 
| 80 | 
  | 
    // spatial data | 
| 81 | 
  | 
    Vector3d getIntergroupVector(int cg1, int cg2); | 
| 91 | 
  | 
    // filling interaction blocks with pointers | 
| 92 | 
  | 
    InteractionData fillInteractionData(int atom1, int atom2); | 
| 93 | 
  | 
    InteractionData fillSkipData(int atom1, int atom2); | 
| 94 | 
– | 
    SelfData fillSelfData(int atom1); | 
| 94 | 
  | 
 | 
| 95 | 
  | 
  private:  | 
| 97 | 
– | 
    SnapshotManager* sman_;     | 
| 98 | 
– | 
    Snapshot* snap_; | 
| 99 | 
– | 
    int storageLayout_; | 
| 100 | 
– | 
    vector<Vector3i> Cells; | 
| 101 | 
– | 
 | 
| 96 | 
  | 
    int nLocal_; | 
| 97 | 
  | 
    int nGroups_; | 
| 98 | 
+ | 
    vector<int> AtomLocalToGlobal; | 
| 99 | 
+ | 
    vector<int> cgLocalToGlobal; | 
| 100 | 
+ | 
    vector<RealType> pot_local; | 
| 101 | 
+ | 
    vector<RealType> massFactorsLocal; | 
| 102 | 
  | 
 | 
| 103 | 
  | 
#ifdef IS_MPI     | 
| 104 | 
  | 
    DataStorage atomRowData; | 
| 128 | 
  | 
 | 
| 129 | 
  | 
    vector<vector<RealType> > pot_row; | 
| 130 | 
  | 
    vector<vector<RealType> > pot_col; | 
| 131 | 
+ | 
 | 
| 132 | 
  | 
    vector<int> identsRow; | 
| 133 | 
  | 
    vector<int> identsCol; | 
| 134 | 
  | 
 | 
| 136 | 
– | 
    vector<int> AtomLocalToGlobal; | 
| 135 | 
  | 
    vector<int> AtomRowToGlobal; | 
| 136 | 
  | 
    vector<int> AtomColToGlobal; | 
| 137 | 
< | 
    vector<int> cgLocalToGlobal; | 
| 137 | 
> | 
 | 
| 138 | 
  | 
    vector<int> cgRowToGlobal; | 
| 139 | 
  | 
    vector<int> cgColToGlobal; | 
| 140 | 
  | 
 | 
| 141 | 
< | 
    vector<vector<int> > CellListRow; | 
| 142 | 
< | 
    vector<vector<int> > CellListCol; | 
| 143 | 
< | 
#else  | 
| 144 | 
< | 
    vector<vector<int> > CellList; | 
| 141 | 
> | 
    vector<vector<int> > cellListRow_; | 
| 142 | 
> | 
    vector<vector<int> > cellListCol_; | 
| 143 | 
> | 
 | 
| 144 | 
> | 
    vector<vector<int> > groupListRow_; | 
| 145 | 
> | 
    vector<vector<int> > groupListCol_; | 
| 146 | 
> | 
 | 
| 147 | 
> | 
    vector<RealType> massFactorsRow; | 
| 148 | 
> | 
    vector<RealType> massFactorsCol; | 
| 149 | 
> | 
 | 
| 150 | 
  | 
#endif | 
| 148 | 
– | 
    vector<RealType> pot_local; | 
| 151 | 
  | 
 | 
| 152 | 
  | 
  }; | 
| 153 | 
  | 
 |