36 |
|
* [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). |
37 |
|
* [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). |
38 |
|
* [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). |
39 |
< |
* [4] Vardeman & Gezelter, in progress (2009). |
39 |
> |
* [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
40 |
> |
* [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
41 |
|
*/ |
42 |
|
|
43 |
|
#ifndef PARALLEL_FORCEMATRIXDECOMPOSITION_HPP |
56 |
|
|
57 |
|
class ForceMatrixDecomposition : public ForceDecomposition { |
58 |
|
public: |
59 |
< |
ForceMatrixDecomposition(SimInfo* info, InteractionManager* iMan) : ForceDecomposition(info, iMan) {}; |
59 |
> |
ForceMatrixDecomposition(SimInfo* info, InteractionManager* iMan); |
60 |
|
|
61 |
|
void distributeInitialData(); |
62 |
|
void zeroWorkArrays(); |
117 |
|
int nGroupsInRow_; |
118 |
|
int nGroupsInCol_; |
119 |
|
|
120 |
< |
Communicator<Row, int>* AtomCommIntRow; |
121 |
< |
Communicator<Row, RealType>* AtomCommRealRow; |
121 |
< |
Communicator<Row, Vector3d>* AtomCommVectorRow; |
122 |
< |
Communicator<Row, Mat3x3d>* AtomCommMatrixRow; |
123 |
< |
Communicator<Row, potVec>* AtomCommPotRow; |
120 |
> |
Communicator<Row> rowComm; |
121 |
> |
Communicator<Column> colComm; |
122 |
|
|
123 |
< |
Communicator<Column, int>* AtomCommIntColumn; |
124 |
< |
Communicator<Column, RealType>* AtomCommRealColumn; |
125 |
< |
Communicator<Column, Vector3d>* AtomCommVectorColumn; |
126 |
< |
Communicator<Column, Mat3x3d>* AtomCommMatrixColumn; |
127 |
< |
Communicator<Column, potVec>* AtomCommPotColumn; |
123 |
> |
Plan<int>* AtomPlanIntRow; |
124 |
> |
Plan<RealType>* AtomPlanRealRow; |
125 |
> |
Plan<Vector3d>* AtomPlanVectorRow; |
126 |
> |
Plan<Mat3x3d>* AtomPlanMatrixRow; |
127 |
> |
Plan<potVec>* AtomPlanPotRow; |
128 |
|
|
129 |
< |
Communicator<Row, int>* cgCommIntRow; |
130 |
< |
Communicator<Row, Vector3d>* cgCommVectorRow; |
131 |
< |
Communicator<Column, int>* cgCommIntColumn; |
132 |
< |
Communicator<Column, Vector3d>* cgCommVectorColumn; |
129 |
> |
Plan<int>* AtomPlanIntColumn; |
130 |
> |
Plan<RealType>* AtomPlanRealColumn; |
131 |
> |
Plan<Vector3d>* AtomPlanVectorColumn; |
132 |
> |
Plan<Mat3x3d>* AtomPlanMatrixColumn; |
133 |
> |
Plan<potVec>* AtomPlanPotColumn; |
134 |
|
|
135 |
+ |
Plan<int>* cgPlanIntRow; |
136 |
+ |
Plan<Vector3d>* cgPlanVectorRow; |
137 |
+ |
Plan<int>* cgPlanIntColumn; |
138 |
+ |
Plan<Vector3d>* cgPlanVectorColumn; |
139 |
+ |
|
140 |
|
// work arrays for assembling potential energy |
141 |
|
vector<potVec> pot_row; |
142 |
|
vector<potVec> pot_col; |
150 |
|
vector<int> AtomRowToGlobal; |
151 |
|
vector<int> AtomColToGlobal; |
152 |
|
|
153 |
+ |
public: |
154 |
|
vector<int> cgRowToGlobal; |
155 |
|
vector<int> cgColToGlobal; |
156 |
|
|
157 |
+ |
private: |
158 |
|
vector<RealType> groupCutoffRow; |
159 |
|
vector<RealType> groupCutoffCol; |
160 |
|
vector<int> groupColToGtype; |