| 35 |  | * | 
| 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). | 
| 38 | > | * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). | 
| 39 |  | * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010). | 
| 40 |  | * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). | 
| 41 |  | */ | 
| 69 |  | enum{ | 
| 70 |  | dslPosition = 1, | 
| 71 |  | dslVelocity = 2, | 
| 72 | < | dslAmat = 4, | 
| 73 | < | dslAngularMomentum = 8, | 
| 74 | < | dslElectroFrame = 16, | 
| 75 | < | dslForce = 32, | 
| 76 | < | dslTorque = 64, | 
| 77 | < | dslParticlePot = 128, | 
| 78 | < | dslDensity = 256, | 
| 79 | < | dslFunctional = 512, | 
| 80 | < | dslFunctionalDerivative = 1024, | 
| 81 | < | dslElectricField = 2048, | 
| 82 | < | dslSkippedCharge = 4096, | 
| 83 | < | dslFlucQPosition = 8192, | 
| 84 | < | dslFlucQVelocity = 16384, | 
| 85 | < | dslFlucQForce = 32768 | 
| 72 | > | dslForce = 4, | 
| 73 | > | dslAmat = 8, | 
| 74 | > | dslAngularMomentum = 16, | 
| 75 | > | dslTorque = 32, | 
| 76 | > | dslParticlePot = 64, | 
| 77 | > | dslDensity = 128, | 
| 78 | > | dslFunctional = 256, | 
| 79 | > | dslFunctionalDerivative = 512, | 
| 80 | > | dslDipole = 1024, | 
| 81 | > | dslQuadrupole = 2048, | 
| 82 | > | dslElectricField = 4096, | 
| 83 | > | dslSkippedCharge = 8192, | 
| 84 | > | dslFlucQPosition = 16384, | 
| 85 | > | dslFlucQVelocity = 32768, | 
| 86 | > | dslFlucQForce = 65536 | 
| 87 |  | }; | 
| 88 |  |  | 
| 89 |  | DataStorage(); | 
| 92 |  | int getSize(); | 
| 93 |  | /** | 
| 94 |  | * Changes the size of this DataStorage. | 
| 95 | < | * @param size new size of this DataStorage | 
| 95 | > | * @param newSize new size of this DataStorage | 
| 96 |  | */ | 
| 97 |  | void resize(int newSize); | 
| 98 |  | /** | 
| 125 |  |  | 
| 126 |  | vector<Vector3d> position;        /** position array */ | 
| 127 |  | vector<Vector3d> velocity;        /** velocity array */ | 
| 128 | + | vector<Vector3d> force;           /** force array */ | 
| 129 |  | vector<RotMat3x3d> aMat;          /** rotation matrix array */ | 
| 130 |  | vector<Vector3d> angularMomentum; /** angular momentum array (body-fixed) */ | 
| 129 | – | vector<Mat3x3d> electroFrame;     /** the lab frame unit vector array*/ | 
| 130 | – | vector<Vector3d> force;           /** force array */ | 
| 131 |  | vector<Vector3d> torque;          /** torque array */ | 
| 132 |  | vector<RealType> particlePot;     /** particle potential arrray */ | 
| 133 |  | vector<RealType> density;         /** electron density */ | 
| 134 |  | vector<RealType> functional;      /** density functional */ | 
| 135 |  | vector<RealType> functionalDerivative; /** derivative of functional */ | 
| 136 | + | vector<Vector3d> dipole;          /** space-frame dipole vector */ | 
| 137 | + | vector<Mat3x3d>  quadrupole;      /** space-frame quadrupole tensor */ | 
| 138 |  | vector<Vector3d> electricField;   /** local electric field */ | 
| 139 |  | vector<RealType> skippedCharge;   /** charge skipped during normal pairwise calculation */ | 
| 140 |  | vector<RealType> flucQPos;        /** fluctuating charges */ | 
| 145 |  |  | 
| 146 |  | private: | 
| 147 |  |  | 
| 148 | < | RealType* internalGetArrayPointer(vector<Vector3d>& v); | 
| 149 | < | RealType* internalGetArrayPointer(vector<RotMat3x3d>& v); | 
| 148 | > | RealType* internalGetArrayPointer(vector<Vector3d>& v); | 
| 149 | > | RealType* internalGetArrayPointer(vector<Mat3x3d>& v); | 
| 150 |  | RealType* internalGetArrayPointer(vector<RealType>& v); | 
| 149 | – |  | 
| 151 |  |  | 
| 152 |  | template<typename T> | 
| 153 |  | void internalResize(std::vector<T>& v, int newSize); |