MatrixSymmetric.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef MECURYDPM_MATRIXSYMMETRIC_H
6 #define MECURYDPM_MATRIXSYMMETRIC_H
7 
8 #include <cmath>
9 #include <sstream>
10 #include "Matrix.h"
11 
16 {
17 public:
21  Mdouble XX, XY, XZ, YY, YZ, ZZ;
22 
26  explicit operator Matrix3D() const;
27 
32 
37 
41  void setZero();
42 
46  Mdouble trace() const;
47 
52 
57 
62 
67 
71  friend Vec3D operator*(const MatrixSymmetric3D& A, const Vec3D& b);
72 
77 
82 
86  friend std::ostream& operator<<(std::ostream& os, const MatrixSymmetric3D& A);
87 
91  friend std::istream& operator>>(std::istream& is, MatrixSymmetric3D& A);
92 
97 
102 
107 
112 
116  static MatrixSymmetric3D sqrt(const MatrixSymmetric3D& A);
117 
121  static MatrixSymmetric3D selfDyadic(const Vec3D& a);
122 
126  static MatrixSymmetric3D symmetrisedDyadic(const Vec3D& a, const Vec3D& b);
127 
132 
136  MatrixSymmetric3D inverse() const;
137 
141  static Mdouble determinant(const MatrixSymmetric3D& A);
142 
147 };
148 
149 #endif
Matrix< float, 2, 1 > xy
Definition: LLT_solve.cpp:6
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Implementation of a 3D matrix.
Definition: Kernel/Math/Matrix.h:17
Implementation of a 3D symmetric matrix.
Definition: MatrixSymmetric.h:16
MatrixSymmetric3D operator-(const MatrixSymmetric3D &A) const
Matrix substraction.
Definition: MatrixSymmetric.cc:79
MatrixSymmetric3D & operator+=(const MatrixSymmetric3D &A)
Matrix addition.
Definition: MatrixSymmetric.cc:168
Mdouble ZZ
Definition: MatrixSymmetric.h:21
MatrixSymmetric3D & operator/=(Mdouble a)
Scalar division.
Definition: MatrixSymmetric.cc:200
static MatrixSymmetric3D square(const MatrixSymmetric3D &A)
Calculates the pointwise square.
Definition: MatrixSymmetric.cc:217
friend std::ostream & operator<<(std::ostream &os, const MatrixSymmetric3D &A)
Add elements to an ostream.
Definition: MatrixSymmetric.cc:145
Mdouble YY
Definition: MatrixSymmetric.h:21
void setZero()
Sets all elements to zero.
Definition: MatrixSymmetric.cc:49
static MatrixSymmetric3D symmetrisedDyadic(const Vec3D &a, const Vec3D &b)
Calculates the symmetrised dyadic product of two Vec3D: .
Definition: MatrixSymmetric.cc:256
MatrixSymmetric3D()
Default constructor.
Definition: MatrixSymmetric.cc:21
static MatrixSymmetric3D sqrt(const MatrixSymmetric3D &A)
Calculates the pointwise square root.
Definition: MatrixSymmetric.cc:229
MatrixSymmetric3D operator/(Mdouble a) const
Scalar division.
Definition: MatrixSymmetric.cc:134
MatrixSymmetric3D & operator-=(const MatrixSymmetric3D &A)
Matrix substraction.
Definition: MatrixSymmetric.cc:184
friend std::istream & operator>>(std::istream &is, MatrixSymmetric3D &A)
Add elements to an istream.
Definition: MatrixSymmetric.cc:157
MatrixSymmetric3D operator+(const MatrixSymmetric3D &A) const
Matrix addition.
Definition: MatrixSymmetric.cc:69
MatrixSymmetric3D getCylindricalTensorField(const Vec3D &p) const
Returns the matrix in cylindrical coordinates.
Definition: MatrixSymmetric.cc:305
friend Vec3D operator*(const MatrixSymmetric3D &A, const Vec3D &b)
Vector multiplication.
Definition: MatrixSymmetric.cc:111
static MatrixSymmetric3D selfDyadic(const Vec3D &a)
Calculates the dyadic product of a Vec3D with itself: .
Definition: MatrixSymmetric.cc:242
MatrixSymmetric3D inverse() const
Computes the inverse of a matrix; exits if the inverse doesn't exist.
Definition: MatrixSymmetric.cc:277
Mdouble XZ
Definition: MatrixSymmetric.h:21
Mdouble XY
Definition: MatrixSymmetric.h:21
Mdouble trace() const
Returns the MEAN of the diagonal elements (i.e. the trace divided by three).
Definition: MatrixSymmetric.cc:59
Mdouble XX
The six distinctive matrix elements.
Definition: MatrixSymmetric.h:21
static Mdouble determinant(const MatrixSymmetric3D &A)
Computes the determinant of a matrix.
Definition: MatrixSymmetric.cc:292
Mdouble YZ
Definition: MatrixSymmetric.h:21
Definition: Kernel/Math/Vector.h:30
const Scalar * a
Definition: level2_cplx_impl.h:32