OGS
MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim > Class Template Reference

Detailed Description

template<int DisplacementDim>
class MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >

Definition at line 20 of file LinearElasticIsotropic.h.

#include <LinearElasticIsotropic.h>

Inheritance diagram for MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >:
[legend]
Collaboration diagram for MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >:
[legend]

Classes

class  MaterialProperties
 Variables specific to the material model. More...
 

Public Types

using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 
- Public Types inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 

Public Member Functions

 LinearElasticIsotropic (MaterialProperties material_properties)
 
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, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
 
KelvinMatrix getElasticTensor (double const t, ParameterLib::SpatialPosition const &x, double const T) const
 
MaterialProperties getMaterialProperties () const
 
double getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
 
- Public Member Functions inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
virtual std::unique_ptr< MaterialStateVariablescreateMaterialStateVariables () 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< InternalVariablegetInternalVariables () const
 
virtual ConstitutiveModel getConstitutiveModel () const
 Gets the type of constitutive model. More...
 
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

MaterialProperties _mp
 

Member Typedef Documentation

◆ KelvinMatrix

template<int DisplacementDim>
using MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType<DisplacementDim>

Definition at line 67 of file LinearElasticIsotropic.h.

◆ KelvinVector

template<int DisplacementDim>
using MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::KelvinVector = MathLib::KelvinVector::KelvinVectorType<DisplacementDim>

Definition at line 65 of file LinearElasticIsotropic.h.

Constructor & Destructor Documentation

◆ LinearElasticIsotropic()

template<int DisplacementDim>
MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::LinearElasticIsotropic ( MaterialProperties  material_properties)
inlineexplicit

Definition at line 70 of file LinearElasticIsotropic.h.

71  : _mp(std::move(material_properties))
72  {
73  }

Member Function Documentation

◆ computeFreeEnergyDensity()

template<int DisplacementDim>
double MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::computeFreeEnergyDensity ( double const  ,
ParameterLib::SpatialPosition const &  ,
double const  ,
KelvinVector const &  eps,
KelvinVector const &  sigma,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &   
) const
inlineoverride

Definition at line 75 of file LinearElasticIsotropic.h.

84  {
85  return eps.dot(sigma) / 2;
86  }

◆ getBulkModulus()

template<int DisplacementDim>
double MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::getBulkModulus ( double const  t,
ParameterLib::SpatialPosition const &  x,
KelvinMatrix const * const   
) const
inlineoverridevirtual

◆ getElasticTensor()

template<int DisplacementDim>
LinearElasticIsotropic< DisplacementDim >::KelvinMatrix MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::getElasticTensor ( double const  t,
ParameterLib::SpatialPosition const &  x,
double const  T 
) const

Definition at line 55 of file LinearElasticIsotropic.cpp.

58 {
59  return elasticTangentStiffness<DisplacementDim>(_mp.lambda(t, x),
60  _mp.mu(t, x));
61 }
double mu(double const t, X const &x) const
Lamé's second parameter, the shear modulus.
double lambda(double const t, X const &x) const
Lamé's first parameter.

◆ getMaterialProperties()

template<int DisplacementDim>
MaterialProperties MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::getMaterialProperties ( ) const
inline

◆ integrateStress()

template<int DisplacementDim>
std::optional< std::tuple< typename MechanicsBase< DisplacementDim >::KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, typename MechanicsBase< DisplacementDim >::KelvinMatrix > > MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::integrateStress ( MaterialPropertyLib::VariableArray const &  variable_array_prev,
MaterialPropertyLib::VariableArray const &  variable_array,
double const  t,
ParameterLib::SpatialPosition const &  x,
double const  ,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &  material_state_variables 
) const
override

Definition at line 25 of file LinearElasticIsotropic.cpp.

31 {
32  auto const& eps_m = std::get<MPL::SymmetricTensor<DisplacementDim>>(
33  variable_array[static_cast<int>(MPL::Variable::mechanical_strain)]);
34  auto const& eps_m_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
35  variable_array_prev[static_cast<int>(
36  MPL::Variable::mechanical_strain)]);
37  auto const& sigma_prev = std::get<MPL::SymmetricTensor<DisplacementDim>>(
38  variable_array_prev[static_cast<int>(MPL::Variable::stress)]);
39  auto const T = std::get<double>(
40  variable_array_prev[static_cast<int>(MPL::Variable::temperature)]);
41 
42  KelvinMatrix C = getElasticTensor(t, x, T);
43 
44  KelvinVector sigma = sigma_prev + C * (eps_m - eps_m_prev);
45 
46  return {std::make_tuple(
47  sigma,
48  std::make_unique<
49  typename MechanicsBase<DisplacementDim>::MaterialStateVariables>(),
50  C)};
51 }
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
KelvinMatrix getElasticTensor(double const t, ParameterLib::SpatialPosition const &x, double const T) const
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector

References MaterialPropertyLib::temperature.

Member Data Documentation

◆ _mp

◆ KelvinVectorSize

template<int DisplacementDim>
int const MaterialLib::Solids::LinearElasticIsotropic< DisplacementDim >::KelvinVectorSize
static
Initial value:
=
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
Definition: KelvinVector.h:23

Definition at line 63 of file LinearElasticIsotropic.h.


The documentation for this class was generated from the following files: