OGS
|
Linear transverse isotropic elastic model.
The parameters of the linear transverse isotropic elastic model are
where the subscript \(i\) means isotropy, and the subscript \(a\) means anisotropy.
With the given parameter, the in-plane shear modulus, \(G_{ii}\) is computed as
\[ G_{ii} = \frac{E_{i}}{2(1+\nu_{ii})}, \]
while the in-plane Poisson ratio, \(\nu_{ai}\), which is due to the strain perpendicular to the plane of isotropy, is calculated by the following equation:
\[ \nu_{ai} = \nu_{ia} \frac{E_{a}}{E_{i}}. \]
For 3D problems, assuming the plane of isotropy to be spanned by the basis vectors \(\mathbf{e}_1\) and \(\mathbf{e}_2\), respectively, and the direction of anisotropy is defined by the basis vector \(\mathbf{e}_3\), the following relations hold:
\begin{eqnarray*} E_{i} &=& E_1 & =& E_2, \\ E_{a} &=& E_3, & &\\ \nu_{ii} &=& \nu_{12} & =& \nu_{21}, \\ \nu_{ia} &=& \nu_{13} & =& \nu_{23}, \\ \nu_{ai} &=& \nu_{31} & =& \nu_{32}, \\ G_{ia} &=& G_{13} & =& G_{23},\\ G_{ai} &=& G_{ia}. & & \end{eqnarray*}
Under such assumption, the matrix form of the elastic tensor for strain and stress in the Kelvin vector in the local system is
\[ \begin{bmatrix} a_{ii} & b_{ii} &b_{ai} & 0 & 0 & 0\\ b_{ii} & a_{ii} &b_{ai} & 0 & 0 & 0\\ b_{ai} & b_{ai} &a_{ai} & 0 & 0 & 0\\ 0 & 0 & 0 & 2 c_{ii} & 0 & 0\\ 0 & 0 & 0 & 0 & 2 c_{ai} & 0\\ 0 & 0 & 0 & 0 & 0 & 2 c_{ai} \end{bmatrix}. \]
The matrix elements are:
\begin{eqnarray*} a_{ii} &=& \frac{1-\nu_{ia}\nu_{ai}}{E_{i} E_{a} D}, \\ a_{ai} &=& \frac{1-\nu_{ii}^2}{E_{i}^2 D}, \\ b_{ii} &=& \frac{\nu_{ii}+\nu_{ia}\nu_{ai}}{E_{i} E_{a} D}, \\ b_{ai} &=& \frac{\nu_{ia}(1+\nu_{ii})}{E_{i}^2 D}, \\ c_{ii} &=& \frac{E_{i}}{2(1+\nu_{ii})}, \\ c_{ai} &=& G_{ia}, \end{eqnarray*}
with
\[ D = \frac{(1+\nu_{ii})(1-\nu_{ii}-2\nu_{ia}\nu_{ai})}{E_{i}^2E_{a}}. \]
(also see Chapter 9.1 in [22]).
For plane strain problems, assuming the direction of anisotropy is defined by the basis vector \(\mathbf{e}_1\), the plane of isotropy to be spanned by the basis vector \(\mathbf{e}_0\) and the unit off-plane direction \(\mathbf{e}_2\), the following relations hold:
\begin{eqnarray*} E_{i} &=& E_1 & =& E_3, \\ E_{a} &=& E_2, & &\\ \nu_{ii} &=& \nu_{13} & =& \nu_{31}, \\ \nu_{ia} &=& \nu_{32} & =& \nu_{12}, \\ \nu_{ai} &=& \nu_{23} & =& \nu_{21}, \\ G_{ia} &=& G_{32} & =& G_{12},\\ G_{ai} &=& G_{ia}. & & \end{eqnarray*}
Based on this assumption, the matrix form of the elastic tensor for strain and stress in the Kelvin vector in the local system is
\[ \begin{bmatrix} a_{ii} & b_{ai} &b_{ii} & 0\\ b_{ai} & a_{ai} &b_{ai} & 0\\ b_{ii} & b_{ai} &a_{ii} & 0\\ 0 & 0 & 0 & 2 c_{ai} \end{bmatrix} \]
for plane strain problems.
Definition at line 124 of file LinearElasticTransverseIsotropic.h.
#include <LinearElasticTransverseIsotropic.h>
Public Types | |
using | KelvinVector |
using | KelvinMatrix |
using | P = ParameterLib::Parameter<double> |
Public Types inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim > | |
using | KelvinVector |
using | KelvinMatrix |
Public Member Functions | |
LinearElasticTransverseIsotropic (P const &E_i, P const &E_a, P const &nu_ii, P const &nu_ia, P const &G_ia, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system) | |
double | computeFreeEnergyDensity (double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &) const override |
std::optional< std::tuple< typename MechanicsBase< DisplacementDim >::KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, typename MechanicsBase< DisplacementDim >::KelvinMatrix > > | integrateStress (MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override |
KelvinMatrix | getElasticTensor (double const t, ParameterLib::SpatialPosition const &x, double const T) const |
double | getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override |
LinearElasticTransverseIsotropic< 2 >::KelvinMatrix | getElasticTensor (double const t, ParameterLib::SpatialPosition const &x, double const) const |
LinearElasticTransverseIsotropic< 3 >::KelvinMatrix | getElasticTensor (double const t, ParameterLib::SpatialPosition const &x, double const) const |
Public Member Functions inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim > | |
virtual std::unique_ptr< MaterialStateVariables > | createMaterialStateVariables () const |
virtual void | initializeInternalStateVariables (double const, ParameterLib::SpatialPosition const &, typename MechanicsBase< DisplacementDim >::MaterialStateVariables &) const |
virtual std::optional< std::tuple< KelvinVector, std::unique_ptr< MaterialStateVariables >, KelvinMatrix > > | integrateStress (MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, MaterialStateVariables const &material_state_variables) const =0 |
virtual std::vector< InternalVariable > | getInternalVariables () const |
virtual ConstitutiveModel | getConstitutiveModel () const |
Gets the type of constitutive model. | |
virtual double | getTemperatureRelatedCoefficient (double const, double const, ParameterLib::SpatialPosition const &, double const, double const) const |
virtual double | computeFreeEnergyDensity (double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, MaterialStateVariables const &material_state_variables) const =0 |
virtual | ~MechanicsBase ()=default |
Static Public Attributes | |
static int const | KelvinVectorSize |
Protected Attributes | |
P const & | E_i_p_ |
It is the in-plane Young’s modulus, \(E_{i}\). | |
P const & | E_a_p_ |
P const & | nu_ii_p_ |
It is the in-plane Poisson’s ratio, \(\nu_{ii}\). | |
P const & | nu_ia_p_ |
P const & | G_ia_p_ |
std::optional< ParameterLib::CoordinateSystem > const & | local_coordinate_system_ |
Private Member Functions | |
KelvinMatrix | getElasticTensorLeftTopCorner (double const t, ParameterLib::SpatialPosition const &x) const |
using MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::KelvinMatrix |
Definition at line 131 of file LinearElasticTransverseIsotropic.h.
using MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::KelvinVector |
Definition at line 129 of file LinearElasticTransverseIsotropic.h.
using MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::P = ParameterLib::Parameter<double> |
Definition at line 134 of file LinearElasticTransverseIsotropic.h.
|
inline |
Definition at line 136 of file LinearElasticTransverseIsotropic.h.
|
inlineoverride |
Definition at line 150 of file LinearElasticTransverseIsotropic.h.
|
inlineoverridevirtual |
Reimplemented from MaterialLib::Solids::MechanicsBase< DisplacementDim >.
Definition at line 179 of file LinearElasticTransverseIsotropic.h.
References MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::E_a_p_, MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::E_i_p_, MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::nu_ia_p_, and MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::nu_ii_p_.
KelvinMatrix MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getElasticTensor | ( | double const | t, |
ParameterLib::SpatialPosition const & | x, | ||
double const | T ) const |
LinearElasticTransverseIsotropic< 2 >::KelvinMatrix MaterialLib::Solids::LinearElasticTransverseIsotropic< 2 >::getElasticTensor | ( | double const | t, |
ParameterLib::SpatialPosition const & | x, | ||
double const | ) const |
Definition at line 104 of file LinearElasticTransverseIsotropic.cpp.
LinearElasticTransverseIsotropic< 3 >::KelvinMatrix MaterialLib::Solids::LinearElasticTransverseIsotropic< 3 >::getElasticTensor | ( | double const | t, |
ParameterLib::SpatialPosition const & | x, | ||
double const | ) const |
Definition at line 137 of file LinearElasticTransverseIsotropic.cpp.
|
private |
Definition at line 57 of file LinearElasticTransverseIsotropic.cpp.
|
override |
Definition at line 29 of file LinearElasticTransverseIsotropic.cpp.
References MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getElasticTensor(), MaterialPropertyLib::VariableArray::mechanical_strain, MaterialPropertyLib::VariableArray::stress, and MaterialPropertyLib::VariableArray::temperature.
|
protected |
It is the Young’s modulus w.r.t. the direction of anisotropy, \(E_{a}\).
Definition at line 208 of file LinearElasticTransverseIsotropic.h.
Referenced by MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getBulkModulus().
|
protected |
It is the in-plane Young’s modulus, \(E_{i}\).
Definition at line 205 of file LinearElasticTransverseIsotropic.h.
Referenced by MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getBulkModulus().
|
protected |
It is the shear modulus between directions of isotropy and anisotropy, \(G_{ia}\).
Definition at line 216 of file LinearElasticTransverseIsotropic.h.
|
static |
Definition at line 127 of file LinearElasticTransverseIsotropic.h.
|
protected |
Definition at line 218 of file LinearElasticTransverseIsotropic.h.
|
protected |
It is the Poisson ratio perpendicular to the plane of isotropy, due to strain in the plane of isotropy, \(\nu_{ia}\).
Definition at line 213 of file LinearElasticTransverseIsotropic.h.
Referenced by MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getBulkModulus().
|
protected |
It is the in-plane Poisson’s ratio, \(\nu_{ii}\).
Definition at line 210 of file LinearElasticTransverseIsotropic.h.
Referenced by MaterialLib::Solids::LinearElasticTransverseIsotropic< DisplacementDim >::getBulkModulus().