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

Detailed Description

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

Definition at line 14 of file LinearElasticIsotropicSoftening.h.

#include <LinearElasticIsotropicSoftening.h>

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

Classes

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

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

 LinearElasticIsotropicSoftening (MaterialProperties material_properties, P const &strength)
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 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< InternalVariablegetInternalVariables () 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

MaterialProperties _mp
P const & _strength

Member Typedef Documentation

◆ KelvinMatrix

template<int DisplacementDim>
using MaterialLib::Solids::LinearElasticIsotropicSoftening< DisplacementDim >::KelvinMatrix
Initial value:
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType

Definition at line 61 of file LinearElasticIsotropicSoftening.h.

◆ KelvinVector

template<int DisplacementDim>
using MaterialLib::Solids::LinearElasticIsotropicSoftening< DisplacementDim >::KelvinVector
Initial value:
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType

Definition at line 59 of file LinearElasticIsotropicSoftening.h.

◆ P

template<int DisplacementDim>
using MaterialLib::Solids::LinearElasticIsotropicSoftening< DisplacementDim >::P = ParameterLib::Parameter<double>

Definition at line 63 of file LinearElasticIsotropicSoftening.h.

Constructor & Destructor Documentation

◆ LinearElasticIsotropicSoftening()

Member Function Documentation

◆ computeFreeEnergyDensity()

template<int DisplacementDim>
double MaterialLib::Solids::LinearElasticIsotropicSoftening< 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 71 of file LinearElasticIsotropicSoftening.h.

80 {
81 return eps.dot(sigma) / 2;
82 }

◆ getBulkModulus()

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

Reimplemented from MaterialLib::Solids::MechanicsBase< DisplacementDim >.

Definition at line 103 of file LinearElasticIsotropicSoftening.h.

106 {
107 return _mp.bulk_modulus(t, x);
108 }

References _mp.

◆ getElasticTensor()

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

Definition at line 57 of file LinearElasticIsotropicSoftening.cpp.

60{
61 using KelvinMatrix =
63
65 tangentStiffness.template topLeftCorner<3, 3>().setConstant(
66 _mp.lambda(t, x));
67 tangentStiffness.noalias() += 2 * _mp.mu(t, x) * KelvinMatrix::Identity();
68 return tangentStiffness;
69}
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix

References _mp.

Referenced by integrateStress().

◆ getMaterialProperties()

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

Definition at line 101 of file LinearElasticIsotropicSoftening.h.

101{ return _mp; }

References _mp.

◆ 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::LinearElasticIsotropicSoftening< DisplacementDim >::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

Definition at line 19 of file LinearElasticIsotropicSoftening.cpp.

25{
27 variable_array.mechanical_strain);
29 variable_array_prev.mechanical_strain);
31 variable_array_prev.stress);
32 auto const T = variable_array_prev.temperature;
33
34 double const strength = _strength(t, x)[0];
35 double const strength_prev = _strength(t - dt, x)[0];
36
39
41 double const sig_tr = Invariants::trace(sigma);
42 if (strength != strength_prev && strength_prev != 0.0 && sig_tr != 0.0)
43 {
44 sigma *=
46 }
47
48 return {std::make_tuple(
49 sigma,
52 C)};
53}
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
KelvinMatrix getElasticTensor(double const t, ParameterLib::SpatialPosition const &x, double const T) const

References _strength, getElasticTensor(), MaterialPropertyLib::VariableArray::mechanical_strain, MaterialPropertyLib::VariableArray::stress, and MaterialPropertyLib::VariableArray::temperature.

Member Data Documentation

◆ _mp

◆ _strength

template<int DisplacementDim>
P const& MaterialLib::Solids::LinearElasticIsotropicSoftening< DisplacementDim >::_strength
protected

◆ KelvinVectorSize

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

Definition at line 57 of file LinearElasticIsotropicSoftening.h.


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