--- trunk/src/math/DynamicVector.hpp 2009/11/25 20:02:06 1390 +++ trunk/src/math/DynamicVector.hpp 2012/08/22 02:28:28 1782 @@ -36,7 +36,8 @@ * [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). - * [4] Vardeman & Gezelter, in progress (2009). + * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). + * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ /** @@ -225,6 +226,7 @@ namespace OpenMD { * @param s the scalar value */ inline void mul( const DynamicVector& v1, Real s) { + this->resize(v1.size()); for (unsigned int i = 0; i < this->size(); i++) (*this)[i] = s * v1[i]; } @@ -270,6 +272,12 @@ namespace OpenMD { inline DynamicVector& operator /=( Real s ) { div(s); return *this; + } + + /** zero out the vector */ + inline void setZero( ) { + for (unsigned int i = 0; i < this->size(); i++) + (*this)[i] = 0; } /** @@ -335,8 +343,8 @@ namespace OpenMD { */ template inline DynamicVector operator +(const DynamicVector& v1, const DynamicVector& v2) { - DynamicVector result; - + assert(v1.size() == v2.size()); + DynamicVectorresult(v1.size()); result.add(v1, v2); return result; } @@ -349,7 +357,8 @@ namespace OpenMD { */ template DynamicVector operator -(const DynamicVector& v1, const DynamicVector& v2) { - DynamicVector result; + assert(v1.size() == v2.size()); + DynamicVector result(v1.size()); result.sub(v1, v2); return result; } @@ -361,8 +370,8 @@ namespace OpenMD { * @param s the scalar value */ template - DynamicVector operator * ( const DynamicVector& v1, Real s) { - DynamicVector result; + DynamicVector operator *( const DynamicVector& v1, Real s) { + DynamicVector result(v1.size()); result.mul(v1,s); return result; } @@ -374,8 +383,8 @@ namespace OpenMD { * @param v1 the source vector */ template - DynamicVector operator * ( Real s, const DynamicVector& v1 ) { - DynamicVector result; + DynamicVector operator *( Real s, const DynamicVector& v1 ) { + DynamicVector result(v1.size()); result.mul(v1, s); return result; } @@ -387,8 +396,8 @@ namespace OpenMD { * @param s the scalar value */ template - DynamicVector operator / ( const DynamicVector& v1, Real s) { - DynamicVector result; + DynamicVector operator / ( const DynamicVector& v1, Real s) { + DynamicVector result(v1.size()); result.div( v1,s); return result; }