OGS
MaterialLib::Solids::MechanicsBase< DisplacementDim > Struct Template Referenceabstract

Detailed Description

template<int DisplacementDim>
struct MaterialLib::Solids::MechanicsBase< DisplacementDim >

Interface for mechanical solid material models. Provides updates of the stress for a given current state and also a tangent at that position. If the implemented material model stores an internal state, the nested MaterialStateVariables class should be used; it's only responsibility is to provide state's push back possibility.

Definition at line 52 of file MechanicsBase.h.

#include <MechanicsBase.h>

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

Classes

struct  InternalVariable
 Helper type for providing access to internal variables. More...
 
struct  MaterialStateVariables
 

Public Types

using KelvinVector = MathLib::KelvinVector::KelvinVectorType< DisplacementDim >
 
using KelvinMatrix = MathLib::KelvinVector::KelvinMatrixType< DisplacementDim >
 

Public Member Functions

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 getBulkModulus (double const, ParameterLib::SpatialPosition const &, KelvinMatrix const *const =nullptr) const
 
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
 

Member Typedef Documentation

◆ KelvinMatrix

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

Definition at line 76 of file MechanicsBase.h.

◆ KelvinVector

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

Definition at line 74 of file MechanicsBase.h.

Constructor & Destructor Documentation

◆ ~MechanicsBase()

template<int DisplacementDim>
virtual MaterialLib::Solids::MechanicsBase< DisplacementDim >::~MechanicsBase ( )
virtualdefault

Member Function Documentation

◆ computeFreeEnergyDensity()

template<int DisplacementDim>
virtual double MaterialLib::Solids::MechanicsBase< DisplacementDim >::computeFreeEnergyDensity ( double const  t,
ParameterLib::SpatialPosition const &  x,
double const  dt,
KelvinVector const &  eps,
KelvinVector const &  sigma,
MaterialStateVariables const &  material_state_variables 
) const
pure virtual

◆ createMaterialStateVariables()

template<int DisplacementDim>
virtual std::unique_ptr<MaterialStateVariables> MaterialLib::Solids::MechanicsBase< DisplacementDim >::createMaterialStateVariables ( ) const
inlinevirtual

Polymorphic creator for MaterialStateVariables objects specific for a material model.

Reimplemented in MaterialLib::Solids::MFront::MFront< DisplacementDim >, MaterialLib::Solids::Lubby2::Lubby2< DisplacementDim >, MaterialLib::Solids::Ehlers::SolidEhlers< DisplacementDim >, and MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >.

Definition at line 69 of file MechanicsBase.h.

70  {
71  return std::make_unique<MaterialStateVariables>();
72  }

◆ getBulkModulus()

template<int DisplacementDim>
virtual double MaterialLib::Solids::MechanicsBase< DisplacementDim >::getBulkModulus ( double const  ,
ParameterLib::SpatialPosition const &  ,
KelvinMatrix const * const  = nullptr 
) const
inlinevirtual

◆ getConstitutiveModel()

template<int DisplacementDim>
virtual ConstitutiveModel MaterialLib::Solids::MechanicsBase< DisplacementDim >::getConstitutiveModel ( ) const
inlinevirtual

Gets the type of constitutive model.

Reimplemented in MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >.

Definition at line 124 of file MechanicsBase.h.

References MaterialLib::Solids::Invalid.

◆ getInternalVariables()

template<int DisplacementDim>
virtual std::vector<InternalVariable> MaterialLib::Solids::MechanicsBase< DisplacementDim >::getInternalVariables ( ) const
inlinevirtual

◆ getTemperatureRelatedCoefficient()

template<int DisplacementDim>
virtual double MaterialLib::Solids::MechanicsBase< DisplacementDim >::getTemperatureRelatedCoefficient ( double const  ,
double const  ,
ParameterLib::SpatialPosition const &  ,
double const  ,
double const   
) const
inlinevirtual

Get temperature related coefficient for the global assembly if there is one.

Reimplemented in MaterialLib::Solids::Creep::CreepBGRa< DisplacementDim >.

Definition at line 140 of file MechanicsBase.h.

144  {
145  return 0.0;
146  }

◆ integrateStress()

template<int DisplacementDim>
virtual std::optional<std::tuple< KelvinVector, std::unique_ptr<MaterialStateVariables>, KelvinMatrix> > MaterialLib::Solids::MechanicsBase< DisplacementDim >::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
pure virtual

Computation of the constitutive relation for specific material model. This should be implemented in the derived model. Fixed Kelvin vector and matrix size version; for dynamic size arguments there is an overloaded wrapper function. Returns nothing in case of errors in the computation if Newton iterations did not converge, for example.


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