# | Line 35 | Line 35 | |
---|---|---|
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). |
39 | < | * [4] Vardeman & Gezelter, in progress (2009). |
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 | */ | |
42 | ||
43 | /** | |
# | Line 56 | Line 57 | namespace OpenMD { | |
57 | /** | |
58 | * @class SquareMatrix SquareMatrix.hpp "math/SquareMatrix.hpp" | |
59 | * @brief A square matrix class | |
60 | < | * @template Real the element type |
61 | < | * @template Dim the dimension of the square matrix |
60 | > | * \tparam Real the element type |
61 | > | * \tparam Dim the dimension of the square matrix |
62 | */ | |
63 | template<typename Real, int Dim> | |
64 | class SquareMatrix : public RectMatrix<Real, Dim, Dim> { | |
# | Line 124 | Line 125 | namespace OpenMD { | |
125 | Real det; | |
126 | return det; | |
127 | } | |
128 | < | |
128 | > | |
129 | /** Returns the trace of this matrix. */ | |
130 | Real trace() const { | |
131 | Real tmp = 0; | |
# | Line 134 | Line 135 | namespace OpenMD { | |
135 | ||
136 | return tmp; | |
137 | } | |
138 | + | |
139 | + | /** |
140 | + | * Returns the tensor contraction (double dot product) of two rank 2 |
141 | + | * tensors (or Matrices) |
142 | + | * @param t1 first tensor |
143 | + | * @param t2 second tensor |
144 | + | * @return the tensor contraction (double dot product) of t1 and t2 |
145 | + | */ |
146 | + | Real doubleDot( const SquareMatrix<Real, Dim>& t1, const SquareMatrix<Real, Dim>& t2 ) { |
147 | + | Real tmp; |
148 | + | tmp = 0; |
149 | + | |
150 | + | for (unsigned int i = 0; i < Dim; i++) |
151 | + | for (unsigned int j =0; j < Dim; j++) |
152 | + | tmp += t1[i][j] * t2[i][j]; |
153 | + | |
154 | + | return tmp; |
155 | + | } |
156 | ||
157 | + | |
158 | /** Tests if this matrix is symmetrix. */ | |
159 | bool isSymmetric() const { | |
160 | for (unsigned int i = 0; i < Dim - 1; i++) | |
# | Line 162 | Line 182 | namespace OpenMD { | |
182 | return false; | |
183 | ||
184 | return true; | |
185 | + | } |
186 | + | |
187 | + | /** |
188 | + | * Returns a column vector that contains the elements from the |
189 | + | * diagonal of m in the order R(0) = m(0,0), R(1) = m(1,1), and so |
190 | + | * on. |
191 | + | */ |
192 | + | Vector<Real, Dim> diagonals() const { |
193 | + | Vector<Real, Dim> result; |
194 | + | for (unsigned int i = 0; i < Dim; i++) { |
195 | + | result(i) = this->data_[i][i]; |
196 | + | } |
197 | + | return result; |
198 | } | |
199 | ||
200 | /** Tests if this matrix is the unit matrix. */ | |
# | Line 199 | Line 232 | namespace OpenMD { | |
232 | * @return true if success, otherwise return false | |
233 | * @param a symmetric matrix whose eigenvectors are to be computed. On return, the matrix is | |
234 | * overwritten | |
235 | < | * @param w will contain the eigenvalues of the matrix On return of this function |
235 | > | * @param d will contain the eigenvalues of the matrix On return of this function |
236 | * @param v the columns of this matrix will contain the eigenvectors. The eigenvectors are | |
237 | * normalized and mutually orthogonal. | |
238 | */ | |
# | Line 338 | Line 371 | namespace OpenMD { | |
371 | //// this is NEVER called | |
372 | if ( i >= VTK_MAX_ROTATIONS ) { | |
373 | std::cout << "vtkMath::Jacobi: Error extracting eigenfunctions" << std::endl; | |
374 | + | if (n > 4) { |
375 | + | delete[] b; |
376 | + | delete[] z; |
377 | + | } |
378 | return 0; | |
379 | } | |
380 |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |