--- trunk/src/brains/DataStorage.cpp 2012/08/22 02:28:28 1782 +++ trunk/src/brains/DataStorage.cpp 2014/04/29 17:32:31 1993 @@ -35,7 +35,7 @@ * * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). - * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). + * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ @@ -44,7 +44,6 @@ * @file DataStorage.cpp * @author tlin * @date 10/26/2004 - * @time 11:56am * @version 1.0 */ @@ -73,6 +72,11 @@ namespace OpenMD { cerr << "size does not match"<< endl; } + if (storageLayout_ & dslForce && force.size() != size_) { + //error + cerr << "size does not match"<< endl; + } + if (storageLayout_ & dslAmat && aMat.size() != size_) { //error cerr << "size does not match"<< endl; @@ -83,37 +87,37 @@ namespace OpenMD { cerr << "size does not match"<< endl; } - if (storageLayout_ & dslElectroFrame && electroFrame.size() != size_) { + if (storageLayout_ & dslTorque && torque.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslForce && force.size() != size_) { + if (storageLayout_ & dslParticlePot && particlePot.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslTorque && torque.size() != size_) { + if (storageLayout_ & dslDensity && density.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslParticlePot && particlePot.size() != size_) { + if (storageLayout_ & dslFunctional && functional.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslDensity && density.size() != size_) { + if (storageLayout_ & dslFunctionalDerivative && functionalDerivative.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslFunctional && functional.size() != size_) { + if (storageLayout_ & dslDipole && dipole.size() != size_) { //error cerr << "size does not match"<< endl; } - if (storageLayout_ & dslFunctionalDerivative && functionalDerivative.size() != size_) { + if (storageLayout_ & dslQuadrupole && quadrupole.size() != size_) { //error cerr << "size does not match"<< endl; } @@ -142,6 +146,11 @@ namespace OpenMD { //error cerr << "size does not match"<< endl; } + + if (storageLayout_ & dslSitePotential && sitePotential.size() != size_) { + //error + cerr << "size does not match"<< endl; + } return size_; @@ -157,6 +166,10 @@ namespace OpenMD { internalResize(velocity, newSize); } + if (storageLayout_ & dslForce) { + internalResize(force, newSize); + } + if (storageLayout_ & dslAmat) { internalResize(aMat, newSize); } @@ -164,15 +177,7 @@ namespace OpenMD { if (storageLayout_ & dslAngularMomentum) { internalResize(angularMomentum, newSize); } - - if (storageLayout_ & dslElectroFrame) { - internalResize(electroFrame, newSize); - } - if (storageLayout_ & dslForce) { - internalResize(force, newSize); - } - if (storageLayout_ & dslTorque) { internalResize(torque, newSize); } @@ -193,6 +198,14 @@ namespace OpenMD { internalResize(functionalDerivative, newSize); } + if (storageLayout_ & dslDipole) { + internalResize(dipole, newSize); + } + + if (storageLayout_ & dslQuadrupole) { + internalResize(quadrupole, newSize); + } + if (storageLayout_ & dslElectricField) { internalResize(electricField, newSize); } @@ -213,6 +226,10 @@ namespace OpenMD { internalResize(flucQFrc, newSize); } + if (storageLayout_ & dslSitePotential) { + internalResize(sitePotential, newSize); + } + size_ = newSize; } @@ -225,6 +242,10 @@ namespace OpenMD { velocity.reserve(size); } + if (storageLayout_ & dslForce) { + force.reserve(size); + } + if (storageLayout_ & dslAmat) { aMat.reserve(size); } @@ -233,14 +254,6 @@ namespace OpenMD { angularMomentum.reserve(size); } - if (storageLayout_ & dslElectroFrame) { - electroFrame.reserve(size); - } - - if (storageLayout_ & dslForce) { - force.reserve(size); - } - if (storageLayout_ & dslTorque) { torque.reserve(size); } @@ -261,6 +274,14 @@ namespace OpenMD { functionalDerivative.reserve(size); } + if (storageLayout_ & dslDipole) { + dipole.reserve(size); + } + + if (storageLayout_ & dslQuadrupole) { + quadrupole.reserve(size); + } + if (storageLayout_ & dslElectricField) { electricField.reserve(size); } @@ -280,6 +301,10 @@ namespace OpenMD { if (storageLayout_ & dslFlucQForce) { flucQFrc.reserve(size); } + + if (storageLayout_ & dslSitePotential) { + sitePotential.reserve(size); + } } void DataStorage::copy(int source, int num, int target) { @@ -295,20 +320,16 @@ namespace OpenMD { internalCopy(velocity, source, num, target); } + if (storageLayout_ & dslForce) { + internalCopy(force, source, num, target); + } + if (storageLayout_ & dslAmat) { internalCopy(aMat, source, num, target); } if (storageLayout_ & dslAngularMomentum) { internalCopy(angularMomentum, source, num, target); - } - - if (storageLayout_ & dslElectroFrame) { - internalCopy(electroFrame, source, num, target); - } - - if (storageLayout_ & dslForce) { - internalCopy(force, source, num, target); } if (storageLayout_ & dslTorque) { @@ -331,6 +352,14 @@ namespace OpenMD { internalCopy(functionalDerivative, source, num, target); } + if (storageLayout_ & dslDipole) { + internalCopy(dipole, source, num, target); + } + + if (storageLayout_ & dslQuadrupole) { + internalCopy(quadrupole, source, num, target); + } + if (storageLayout_ & dslElectricField) { internalCopy(electricField, source, num, target); } @@ -349,6 +378,10 @@ namespace OpenMD { if (storageLayout_ & dslFlucQForce) { internalCopy(flucQFrc, source, num, target); } + + if (storageLayout_ & dslSitePotential) { + internalCopy(sitePotential, source, num, target); + } } int DataStorage::getStorageLayout() { @@ -365,85 +398,74 @@ namespace OpenMD { switch (whichArray) { case dslPosition: return internalGetArrayPointer(position); - break; case dslVelocity: return internalGetArrayPointer(velocity); - break; + case dslForce: + return internalGetArrayPointer(force); + case dslAmat: return internalGetArrayPointer(aMat); - break; case dslAngularMomentum: return internalGetArrayPointer(angularMomentum); - break; - case dslElectroFrame: - return internalGetArrayPointer(electroFrame); - break; - - case dslForce: - return internalGetArrayPointer(force); - break; - case dslTorque: return internalGetArrayPointer(torque); - break; case dslParticlePot: return internalGetArrayPointer(particlePot); - break; case dslDensity: return internalGetArrayPointer(density); - break; case dslFunctional: return internalGetArrayPointer(functional); - break; case dslFunctionalDerivative: return internalGetArrayPointer(functionalDerivative); - break; + case dslDipole: + return internalGetArrayPointer(dipole); + + case dslQuadrupole: + return internalGetArrayPointer(quadrupole); + case dslElectricField: return internalGetArrayPointer(electricField); - break; case dslSkippedCharge: return internalGetArrayPointer(skippedCharge); - break; case dslFlucQPosition: return internalGetArrayPointer(flucQPos); - break; case dslFlucQVelocity: return internalGetArrayPointer(flucQVel); - break; case dslFlucQForce: return internalGetArrayPointer(flucQFrc); - break; + case dslSitePotential: + return internalGetArrayPointer(sitePotential); + default: //error message return NULL; - } } RealType* DataStorage::internalGetArrayPointer(std::vector& v) { - if (v.size() == 0) { + if (v.empty()) { return NULL; } else { return v[0].getArrayPointer(); } } - RealType* DataStorage::internalGetArrayPointer(std::vector& v) { - if (v.size() == 0) { + RealType* DataStorage::internalGetArrayPointer(std::vector& v) { + if (v.empty()) { return NULL; } else { return v[0].getArrayPointer(); @@ -452,7 +474,7 @@ namespace OpenMD { } RealType* DataStorage::internalGetArrayPointer(std::vector& v) { - if (v.size() == 0) { + if (v.empty()) { return NULL; } else { return &(v[0]); @@ -502,18 +524,15 @@ namespace OpenMD { if (layout & dslVelocity) { bytes += sizeof(Vector3d); } + if (layout & dslForce) { + bytes += sizeof(Vector3d); + } if (layout & dslAmat) { bytes += sizeof(RotMat3x3d); } if (layout & dslAngularMomentum) { bytes += sizeof(Vector3d); } - if (layout & dslElectroFrame) { - bytes += sizeof(Mat3x3d); - } - if (layout & dslForce) { - bytes += sizeof(Vector3d); - } if (layout & dslTorque) { bytes += sizeof(Vector3d); } @@ -529,6 +548,12 @@ namespace OpenMD { if (layout & dslFunctionalDerivative) { bytes += sizeof(RealType); } + if (layout & dslDipole) { + bytes += sizeof(Vector3d); + } + if (layout & dslQuadrupole) { + bytes += sizeof(Mat3x3d); + } if (layout & dslElectricField) { bytes += sizeof(Vector3d); } @@ -544,6 +569,9 @@ namespace OpenMD { if (layout & dslFlucQForce) { bytes += sizeof(RealType); } + if (layout & dslSitePotential) { + bytes += sizeof(RealType); + } return bytes; }