--- trunk/src/math/DynamicVector.hpp 2009/11/25 20:02:06 1390 +++ trunk/src/math/DynamicVector.hpp 2013/06/16 15:15:42 1879 @@ -35,8 +35,9 @@ * * [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). + * [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). */ /** @@ -93,6 +94,7 @@ namespace OpenMD { * @brief Create a %DynamicVector with copies of an exemplar element. * @param n The number of elements to initially create. * @param value An element to copy. + * @param alloc The allocator_type to use * * This constructor fills the %DynamicVector with @a n copies of @a value. */ @@ -225,6 +227,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 +273,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 +344,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 +358,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 +371,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 +384,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 +397,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; }