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 25 of file ThermoMechanicsProcessData.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
 
using KelvinMatrix
 

Public Member Functions

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 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
Initial value:
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType

Definition at line 83 of file MechanicsBase.h.

◆ KelvinVector

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

Definition at line 81 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

◆ getBulkModulus()

◆ 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 131 of file MechanicsBase.h.

References MaterialLib::Solids::Invalid.

◆ getInternalVariables()

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

Returns internal variables defined by the specific material model, if any.

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

Definition at line 125 of file MechanicsBase.h.

126 {
127 return {};
128 }

◆ 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 147 of file MechanicsBase.h.

151 {
152 return 0.0;
153 }

◆ initializeInternalStateVariables()

template<int DisplacementDim>
virtual void MaterialLib::Solids::MechanicsBase< DisplacementDim >::initializeInternalStateVariables ( double const ,
ParameterLib::SpatialPosition const & ,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables &  ) const
inlinevirtual

◆ 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.

Referenced by ProcessLib::RichardsMechanics::IntegrationPointData< BMatricesType, ShapeMatrixTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, NPoints >::computeElasticTangentStiffness(), and ProcessLib::ThermoHydroMechanics::IntegrationPointData< BMatricesType, ShapeMatrixTypeDisplacement, ShapeMatricesTypePressure, DisplacementDim, NPoints >::updateConstitutiveRelationIce().


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