Add transpose operation to Matrix3x3
[alexxy/gromacs.git] / src / gromacs / math / matrix.h
index 665fbe77abcccac18fd771adebc86f7009c54287..b84c84b59cbbe2bfd1fedbec79dd5331aead382a 100644 (file)
@@ -80,6 +80,15 @@ constexpr real trace(Matrix3x3ConstSpan matrixView)
 {
     return matrixView(0, 0) + matrixView(1, 1) + matrixView(2, 2);
 }
+
+//! Calculate the transpose of a 3x3 matrix, from its view
+static Matrix3x3 transpose(Matrix3x3ConstSpan matrixView)
+{
+
+    return Matrix3x3({matrixView(0, 0), matrixView(1, 0), matrixView(2, 0),
+                      matrixView(0, 1), matrixView(1, 1), matrixView(2, 1),
+                      matrixView(0, 2), matrixView(1, 2), matrixView(2, 2)});
+}
 } // namespace gmx
 
 #endif