--- branches/development/src/parallel/ForceMatrixDecomposition.hpp 2011/06/03 21:39:49 1575 +++ branches/development/src/parallel/ForceMatrixDecomposition.hpp 2011/06/16 22:00:08 1583 @@ -55,7 +55,7 @@ namespace OpenMD { class ForceMatrixDecomposition : public ForceDecomposition { public: - ForceMatrixDecomposition(SimInfo* info) : ForceDecomposition(info) {}; + ForceMatrixDecomposition(SimInfo* info, InteractionManager* iMan) : ForceDecomposition(info, iMan) {}; void distributeInitialData(); void zeroWorkArrays(); @@ -68,7 +68,7 @@ namespace OpenMD { vector > buildNeighborList(); // group bookkeeping - pair getGroupTypes(int cg1, int cg2); + groupCutoffs getGroupCutoffs(int cg1, int cg2); // Group->atom bookkeeping vector getAtomsInGroupRow(int cg1); @@ -84,27 +84,27 @@ namespace OpenMD { // atom bookkeeping int getNAtomsInRow(); - vector getSkipsForRowAtom(int atom1); - int getTopoDistance(int atom1, int atom2); + int getTopologicalDistance(int atom1, int atom2); + vector getSkipsForAtom(int atom1); bool skipAtomPair(int atom1, int atom2); void addForceToAtomRow(int atom1, Vector3d fg); void addForceToAtomColumn(int atom2, Vector3d fg); // filling interaction blocks with pointers - InteractionData fillInteractionData(int atom1, int atom2); - void unpackInteractionData(InteractionData idat, int atom1, int atom2); - InteractionData fillSkipData(int atom1, int atom2); + void fillInteractionData(InteractionData &idat, int atom1, int atom2); + void unpackInteractionData(InteractionData &idat, int atom1, int atom2); + void fillSkipData(InteractionData &idat, int atom1, int atom2); + void unpackSkipData(InteractionData &idat, int atom1, int atom2); private: + void createGtypeCutoffMap(); + int nLocal_; int nGroups_; - vector identsLocal; vector AtomLocalToGlobal; vector cgLocalToGlobal; - vector massFactorsLocal; - vector > skipsForLocalAtom; - vector > toposForLocalAtom; - vector > topoDistLocal; + vector groupCutoff; + vector groupToGtype; #ifdef IS_MPI DataStorage atomRowData; @@ -137,7 +137,6 @@ namespace OpenMD { // work arrays for assembling potential energy vector pot_row; vector pot_col; - potVec pot_local; vector identsRow; vector identsCol; @@ -151,6 +150,11 @@ namespace OpenMD { vector cgRowToGlobal; vector cgColToGlobal; + vector groupCutoffRow; + vector groupCutoffCol; + vector groupColToGtype; + vector groupRowToGtype; + vector > cellListRow_; vector > cellListCol_; @@ -159,10 +163,6 @@ namespace OpenMD { vector massFactorsRow; vector massFactorsCol; - - vector > skipsForRowAtom; - vector > toposForRowAtom; - vector > topoDistRow; #endif };