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

Detailed Description

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

Definition at line 22 of file MFront.h.

#include <MFront.h>

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

Public Member Functions

std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables () const override
 
void initializeInternalStateVariables (double const t, ParameterLib::SpatialPosition const &x, typename MechanicsBase< DisplacementDim >::MaterialStateVariables &material_state_variables) const override
 
std::optional< std::tuple< KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, 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
 
std::vector< typename MechanicsBase< DisplacementDim >::InternalVariable > getInternalVariables () const override
 
double getBulkModulus (double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const C) const override
 
double computeFreeEnergyDensity (double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
 
- Public Member Functions inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
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 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
 

Private Types

using Base
 
using KelvinVector = typename Base::KelvinVector
 
using KelvinMatrix = typename Base::KelvinMatrix
 
- Private Types inherited from MaterialLib::Solids::MFront::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >
using KelvinVector
 
using KelvinMatrix
 
using InternalVariable
 

Private Attributes

OGSMFrontTangentOperatorBlocksView< DisplacementDim, ForcesGradsCombinations< boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >::type > blocks_view_ = this->createTangentOperatorBlocksView()
 

Additional Inherited Members

- Public Types inherited from MaterialLib::Solids::MechanicsBase< DisplacementDim >
using KelvinVector
 
using KelvinMatrix
 
- Private Member Functions inherited from MaterialLib::Solids::MFront::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >
 MFrontGeneric (mgis::behaviour::Behaviour &&behaviour, std::vector< ParameterLib::Parameter< double > const * > &&material_properties, std::map< std::string, ParameterLib::Parameter< double > const * > &&state_variables_initial_properties, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system)
 
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables () const
 
void initializeInternalStateVariables (double const t, ParameterLib::SpatialPosition const &x, typename MechanicsBase< DisplacementDim >::MaterialStateVariables &material_state_variables) const
 
std::optional< std::tuple< OGSMFrontThermodynamicForcesData, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, OGSMFrontTangentOperatorData > > 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
 
std::vector< InternalVariablegetInternalVariables () const
 
OGSMFrontTangentOperatorBlocksView< DisplacementDim, ForcesGradsCombinationscreateTangentOperatorBlocksView () const
 
OGSMFrontThermodynamicForcesView< DisplacementDim, boost::mp11::mp_list< Stress > > createThermodynamicForcesView () const
 
double getBulkModulus (double const, ParameterLib::SpatialPosition const &, KelvinMatrix const *const C) const
 
double computeFreeEnergyDensity (double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &, KelvinVector const &, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &) const
 

Member Typedef Documentation

◆ Base

template<int DisplacementDim>
using MaterialLib::Solids::MFront::MFront< DisplacementDim >::Base
private
Initial value:
MFrontGeneric<DisplacementDim,
boost::mp11::mp_list<Strain>,
boost::mp11::mp_list<Stress>,
boost::mp11::mp_list<Temperature>>
MFrontGeneric(mgis::behaviour::Behaviour &&behaviour, std::vector< ParameterLib::Parameter< double > const * > &&material_properties, std::map< std::string, ParameterLib::Parameter< double > const * > &&state_variables_initial_properties, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system)

Definition at line 28 of file MFront.h.

◆ KelvinMatrix

template<int DisplacementDim>
using MaterialLib::Solids::MFront::MFront< DisplacementDim >::KelvinMatrix = typename Base::KelvinMatrix
private

Definition at line 33 of file MFront.h.

◆ KelvinVector

template<int DisplacementDim>
using MaterialLib::Solids::MFront::MFront< DisplacementDim >::KelvinVector = typename Base::KelvinVector
private

Definition at line 32 of file MFront.h.

Member Function Documentation

◆ computeFreeEnergyDensity()

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

Definition at line 107 of file MFront.h.

115 {
117 t, x, dt, eps, sigma, material_state_variables);
118 }
double computeFreeEnergyDensity(double const, ParameterLib::SpatialPosition const &, double const, KelvinVector const &, KelvinVector const &, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &) const

References MaterialLib::Solids::MFront::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >::computeFreeEnergyDensity().

◆ createMaterialStateVariables()

template<int DisplacementDim>
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > MaterialLib::Solids::MFront::MFront< DisplacementDim >::createMaterialStateVariables ( ) const
inlineoverridevirtual

◆ getBulkModulus()

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

◆ getInternalVariables()

template<int DisplacementDim>
std::vector< typename MechanicsBase< DisplacementDim >::InternalVariable > MaterialLib::Solids::MFront::MFront< DisplacementDim >::getInternalVariables ( ) const
inlineoverridevirtual

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

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

Definition at line 95 of file MFront.h.

96 {
97 return Base ::getInternalVariables();
98 }

◆ initializeInternalStateVariables()

template<int DisplacementDim>
void MaterialLib::Solids::MFront::MFront< DisplacementDim >::initializeInternalStateVariables ( double const t,
ParameterLib::SpatialPosition const & x,
typename MechanicsBase< DisplacementDim >::MaterialStateVariables & material_state_variables ) const
inlineoverridevirtual

◆ integrateStress()

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

Definition at line 58 of file MFront.h.

66 {
67 auto res = Base::integrateStress(variable_array_prev,
68 variable_array,
69 t,
70 x,
71 dt,
72 material_state_variables);
73
74 if (!res)
75 {
76 return std::nullopt;
77 }
78
79 auto& [stress_data, state, tangent_operator_data] = *res;
80 auto const view = this->createThermodynamicForcesView();
81
82 auto const C =
83 blocks_view_.block(stress, strain, tangent_operator_data);
84
85 return std::optional<
86 std::tuple<KelvinVector,
87 std::unique_ptr<typename MechanicsBase<
88 DisplacementDim>::MaterialStateVariables>,
89 KelvinMatrix>>{std::in_place,
90 view.block(stress, stress_data),
91 std::move(state), C};
92 }
std::optional< std::tuple< OGSMFrontThermodynamicForcesData, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, OGSMFrontTangentOperatorData > > 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
typename Base::KelvinMatrix KelvinMatrix
Definition MFront.h:33
OGSMFrontTangentOperatorBlocksView< DisplacementDim, ForcesGradsCombinations< boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >::type > blocks_view_
Definition MFront.h:126
typename Base::KelvinVector KelvinVector
Definition MFront.h:32
static constexpr Strain strain
Instance that can be used for overload resolution/template type deduction.
Definition Variable.h:92
static constexpr Stress stress
Definition Variable.h:155

References MaterialLib::Solids::MFront::MFront< DisplacementDim >::blocks_view_, MaterialLib::Solids::MFront::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >::createThermodynamicForcesView(), MaterialLib::Solids::MFront::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< Strain >, boost::mp11::mp_list< Stress >, boost::mp11::mp_list< Temperature > >::integrateStress(), MaterialLib::Solids::MFront::strain, and MaterialLib::Solids::MFront::stress.

Member Data Documentation

◆ blocks_view_

template<int DisplacementDim>
OGSMFrontTangentOperatorBlocksView< DisplacementDim, ForcesGradsCombinations<boost::mp11::mp_list<Strain>, boost::mp11::mp_list<Stress>, boost::mp11::mp_list<Temperature> >::type> MaterialLib::Solids::MFront::MFront< DisplacementDim >::blocks_view_ = this->createTangentOperatorBlocksView()
private

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