OGS
|
A local coordinate system used for tensor transformations.
It offers a simple way for input of anisotropic tensors w.r.t. a coordinate system. The basis vectors form a transformation matrix \(R = (e_0, e_1, e_2)\). For a given anisotropic tensor \(A\) parameter with the corresponding [tag] use_local_coordinate_system the tensor is rotated according to the formula: \(A' = R\cdot A\cdot R^T\).
For computations in transverse isotropic material models, we can create a coordinate system with only one base, where the last base is explicitly given. The other bases are set as implicit and computed from the given base as follows:
unit_direction
, is set as the third base, \({\vec e}_2\). An arbitrary unit vector orthogonal to \({\vec e}_2\) is selected as the second base \(e_1\), and the first base \({\vec e}_0\) is calculated as \({\vec e}_0 = {\vec e}_1 \times {\vec e}_2\). Definition at line 48 of file CoordinateSystem.h.
#include <CoordinateSystem.h>
Public Member Functions | |
CoordinateSystem (Parameter< double > const &unit_direction) | |
CoordinateSystem (Parameter< double > const &e0, Parameter< double > const &e1) | |
CoordinateSystem (Parameter< double > const &e0, Parameter< double > const &e1, Parameter< double > const &e2) | |
template<int Dimension> | |
Eigen::Matrix< double, Dimension, Dimension > | transformation (SpatialPosition const &pos) const |
Eigen::Matrix< double, 3, 3 > | transformation_3d (SpatialPosition const &pos) const |
template<int Dimension> | |
Eigen::Matrix< double, Dimension, Dimension > | rotateTensor (std::vector< double > const &values, SpatialPosition const &pos) const |
template<int Dimension, typename Derived > | |
Eigen::Matrix< double, Dimension, Dimension > | rotateTensor (Eigen::MatrixBase< Derived > const &tensor, SpatialPosition const &pos) const |
template<int Dimension> | |
Eigen::Matrix< double, Dimension, Dimension > | rotateDiagonalTensor (std::vector< double > const &values, SpatialPosition const &pos) const |
template<> | |
Eigen::Matrix< double, 2, 2 > | transformation (SpatialPosition const &pos) const |
template<> | |
Eigen::Matrix< double, 3, 3 > | transformation (SpatialPosition const &pos) const |
Private Member Functions | |
Eigen::Matrix< double, 3, 3 > | transformationFromSingleBase_3d (SpatialPosition const &pos) const |
Private Attributes | |
std::array< Parameter< double > const *, 3 > | _base |
bool | _has_implicit_base |
|
explicit |
It is used to create a local coordinate system with only one base, where the last base is explicitly given as unit_direction
.
unit_direction | The specified unit direction. |
Definition at line 67 of file CoordinateSystem.cpp.
References _base, ParameterLib::ParameterBase::name, and OGS_FATAL.
ParameterLib::CoordinateSystem::CoordinateSystem | ( | Parameter< double > const & | e0, |
Parameter< double > const & | e1 ) |
Definition at line 78 of file CoordinateSystem.cpp.
ParameterLib::CoordinateSystem::CoordinateSystem | ( | Parameter< double > const & | e0, |
Parameter< double > const & | e1, | ||
Parameter< double > const & | e2 ) |
Definition at line 101 of file CoordinateSystem.cpp.
template Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::rotateDiagonalTensor< 3 > | ( | std::vector< double > const & | values, |
SpatialPosition const & | pos ) const |
Definition at line 301 of file CoordinateSystem.cpp.
References transformation().
Eigen::Matrix< double, Dimension, Dimension > ParameterLib::CoordinateSystem::rotateTensor | ( | Eigen::MatrixBase< Derived > const & | tensor, |
SpatialPosition const & | pos ) const |
Definition at line 93 of file CoordinateSystem.h.
References transformation().
template Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::rotateTensor< 3 > | ( | std::vector< double > const & | values, |
SpatialPosition const & | pos ) const |
Definition at line 288 of file CoordinateSystem.cpp.
References rotateTensor().
Referenced by rotateTensor().
Eigen::Matrix< double, 2, 2 > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Definition at line 131 of file CoordinateSystem.cpp.
References ParameterLib::checkNormalization(), ParameterLib::checkTransformationIsSON(), and ParameterLib::ParameterBase::name.
Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Definition at line 173 of file CoordinateSystem.cpp.
References ParameterLib::checkNormalization(), ParameterLib::checkTransformationIsSON(), ParameterLib::ParameterBase::name, and ParameterLib::tolerance.
Eigen::Matrix< double, Dimension, Dimension > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Referenced by rotateDiagonalTensor(), rotateTensor(), transformation_3d(), and transformationFromSingleBase_3d().
Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::transformation_3d | ( | SpatialPosition const & | pos | ) | const |
Definition at line 265 of file CoordinateSystem.cpp.
References _base, _has_implicit_base, ParameterLib::checkTransformationIsSON(), transformation(), and transformationFromSingleBase_3d().
Referenced by MaterialPropertyLib::SaturationDependentSwelling::dValue(), and MaterialPropertyLib::SaturationDependentSwelling::value().
|
private |
Definition at line 249 of file CoordinateSystem.cpp.
References _base, ParameterLib::getTransformationFromSingleBase3D(), and transformation().
Referenced by transformation_3d().
|
private |
Definition at line 85 of file CoordinateSystem.h.
Referenced by CoordinateSystem(), CoordinateSystem(), CoordinateSystem(), transformation_3d(), and transformationFromSingleBase_3d().
|
private |
Definition at line 86 of file CoordinateSystem.h.
Referenced by transformation_3d().