| 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 | 
> | 
      dslSitePotential = 131072 | 
| 88 | 
  | 
    }; | 
| 89 | 
  | 
 | 
| 90 | 
  | 
    DataStorage(); | 
| 93 | 
  | 
    int getSize(); | 
| 94 | 
  | 
    /** | 
| 95 | 
  | 
     * Changes the size of this DataStorage. | 
| 96 | 
< | 
     * @param size new size of this DataStorage | 
| 96 | 
> | 
     * @param newSize new size of this DataStorage | 
| 97 | 
  | 
     */ | 
| 98 | 
  | 
    void resize(int newSize); | 
| 99 | 
  | 
    /** | 
| 126 | 
  | 
 | 
| 127 | 
  | 
    vector<Vector3d> position;        /** position array */ | 
| 128 | 
  | 
    vector<Vector3d> velocity;        /** velocity array */ | 
| 129 | 
+ | 
    vector<Vector3d> force;           /** force array */ | 
| 130 | 
  | 
    vector<RotMat3x3d> aMat;          /** rotation matrix array */ | 
| 131 | 
  | 
    vector<Vector3d> angularMomentum; /** angular momentum array (body-fixed) */ | 
| 129 | 
– | 
    vector<Mat3x3d> electroFrame;     /** the lab frame unit vector array*/ | 
| 130 | 
– | 
    vector<Vector3d> force;           /** force array */ | 
| 132 | 
  | 
    vector<Vector3d> torque;          /** torque array */ | 
| 133 | 
  | 
    vector<RealType> particlePot;     /** particle potential arrray */ | 
| 134 | 
  | 
    vector<RealType> density;         /** electron density */ | 
| 135 | 
  | 
    vector<RealType> functional;      /** density functional */ | 
| 136 | 
  | 
    vector<RealType> functionalDerivative; /** derivative of functional */ | 
| 137 | 
+ | 
    vector<Vector3d> dipole;          /** space-frame dipole vector */ | 
| 138 | 
+ | 
    vector<Mat3x3d>  quadrupole;      /** space-frame quadrupole tensor */ | 
| 139 | 
  | 
    vector<Vector3d> electricField;   /** local electric field */ | 
| 140 | 
  | 
    vector<RealType> skippedCharge;   /** charge skipped during normal pairwise calculation */ | 
| 141 | 
  | 
    vector<RealType> flucQPos;        /** fluctuating charges */ | 
| 142 | 
  | 
    vector<RealType> flucQVel;        /** fluctuating charge velocities */ | 
| 143 | 
  | 
    vector<RealType> flucQFrc;        /** fluctuating charge forces */ | 
| 144 | 
+ | 
    vector<RealType> sitePotential;   /** electrostatic site potentials */ | 
| 145 | 
  | 
 | 
| 146 | 
  | 
    static int getBytesPerStuntDouble(int layout); | 
| 147 | 
  | 
 | 
| 148 | 
  | 
  private: | 
| 149 | 
  | 
 | 
| 150 | 
< | 
    RealType* internalGetArrayPointer(vector<Vector3d>& v);             | 
| 151 | 
< | 
    RealType* internalGetArrayPointer(vector<RotMat3x3d>& v); | 
| 150 | 
> | 
    RealType* internalGetArrayPointer(vector<Vector3d>& v); | 
| 151 | 
> | 
    RealType* internalGetArrayPointer(vector<Mat3x3d>& v); | 
| 152 | 
  | 
    RealType* internalGetArrayPointer(vector<RealType>& v); | 
| 149 | 
– | 
 | 
| 153 | 
  | 
             | 
| 154 | 
  | 
    template<typename T> | 
| 155 | 
  | 
    void internalResize(std::vector<T>& v, int newSize); |