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> | |
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 36 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 47 of file CoordinateSystem.cpp.
ParameterLib::CoordinateSystem::CoordinateSystem | ( | Parameter< double > const & | e0, |
Parameter< double > const & | e1, | ||
Parameter< double > const & | e2 ) |
Definition at line 70 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 315 of file CoordinateSystem.cpp.
template Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::rotateTensor< 3 > | ( | std::vector< double > const & | values, |
SpatialPosition const & | pos ) const |
Definition at line 301 of file CoordinateSystem.cpp.
Eigen::Matrix< double, 2, 2 > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Definition at line 100 of file CoordinateSystem.cpp.
References ParameterLib::error_info, ParameterLib::ParameterBase::name, ParameterLib::normalization_error_info, OGS_FATAL, and ParameterLib::tolerance.
Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Definition at line 159 of file CoordinateSystem.cpp.
References ParameterLib::error_info, ParameterLib::ParameterBase::name, ParameterLib::normalization_error_info, OGS_FATAL, and ParameterLib::tolerance.
Eigen::Matrix< double, Dimension, Dimension > ParameterLib::CoordinateSystem::transformation | ( | SpatialPosition const & | pos | ) | const |
Eigen::Matrix< double, 3, 3 > ParameterLib::CoordinateSystem::transformation_3d | ( | SpatialPosition const & | pos | ) | const |
Definition at line 273 of file CoordinateSystem.cpp.
References _base, _has_implicit_base, ParameterLib::error_info, OGS_FATAL, ParameterLib::tolerance, and transformationFromSingleBase_3d().
Referenced by MaterialPropertyLib::SaturationDependentSwelling::dValue(), and MaterialPropertyLib::SaturationDependentSwelling::value().
|
private |
Definition at line 257 of file CoordinateSystem.cpp.
References _base, and ParameterLib::getTransformationFromSingleBase3D().
Referenced by transformation_3d().
|
private |
Definition at line 80 of file CoordinateSystem.h.
Referenced by CoordinateSystem(), CoordinateSystem(), CoordinateSystem(), transformation_3d(), and transformationFromSingleBase_3d().
|
private |
Definition at line 81 of file CoordinateSystem.h.
Referenced by transformation_3d().