OGS
ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim > Struct Template Reference

Detailed Description

template<int DisplacementDim>
struct ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >

Definition at line 26 of file SolidMechanics.h.

#include <SolidMechanics.h>

Collaboration diagram for ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >:
[legend]

Public Member Functions

 SolidMechanicsModel (SolidConstitutiveRelation< DisplacementDim > const &solid_material)
 
void eval (const SpaceTimeData &x_t, TemperatureData< DisplacementDim > const &T_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, StrainData< DisplacementDim > const &eps_data, PrevState< StrainData< DisplacementDim > > const &eps_prev_data, MaterialStateData< DisplacementDim > &mat_state, PrevState< TotalStressData< DisplacementDim > > const &total_stress_data_prev, TotalStressData< DisplacementDim > &total_stress_data, EquivalentPlasticStrainData &equiv_plast_strain_data, SolidMechanicsDataStateless< DisplacementDim > &current_stateless, PrevState< SaturationData > const &S_L_prev_data, SaturationData &S_L_data, SaturationDataDeriv &dS_L_data) const
 

Private Attributes

SolidConstitutiveRelation< DisplacementDim > const & solid_material_
 
MSM::OGSMFrontTangentOperatorBlocksView< DisplacementDim, MSM::ForcesGradsCombinations< boost::mp11::mp_list< MSM::Strain, MSM::LiquidPressure >, boost::mp11::mp_list< MSM::Stress, MSM::Saturation >, boost::mp11::mp_list< MSM::Temperature > >::type > tangent_operator_blocks_view_
 

Constructor & Destructor Documentation

◆ SolidMechanicsModel()

template<int DisplacementDim>
ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >::SolidMechanicsModel ( SolidConstitutiveRelation< DisplacementDim > const & solid_material)
inlineexplicit

Definition at line 28 of file SolidMechanics.h.

30 : solid_material_(solid_material),
32 solid_material.template createTangentOperatorBlocksView()}
33 {
34 }
MSM::OGSMFrontTangentOperatorBlocksView< DisplacementDim, MSM::ForcesGradsCombinations< boost::mp11::mp_list< MSM::Strain, MSM::LiquidPressure >, boost::mp11::mp_list< MSM::Stress, MSM::Saturation >, boost::mp11::mp_list< MSM::Temperature > >::type > tangent_operator_blocks_view_

Member Function Documentation

◆ eval()

template<int DisplacementDim>
void ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >::eval ( const SpaceTimeData & x_t,
TemperatureData< DisplacementDim > const & T_data,
CapillaryPressureData< DisplacementDim > const & p_cap_data,
StrainData< DisplacementDim > const & eps_data,
PrevState< StrainData< DisplacementDim > > const & eps_prev_data,
MaterialStateData< DisplacementDim > & mat_state,
PrevState< TotalStressData< DisplacementDim > > const & total_stress_data_prev,
TotalStressData< DisplacementDim > & total_stress_data,
EquivalentPlasticStrainData & equiv_plast_strain_data,
SolidMechanicsDataStateless< DisplacementDim > & current_stateless,
PrevState< SaturationData > const & S_L_prev_data,
SaturationData & S_L_data,
SaturationDataDeriv & dS_L_data ) const

Definition at line 18 of file SolidMechanics.cpp.

30{
31 namespace MPL = MaterialPropertyLib;
32
33 double const T_prev = T_data.T_prev;
34 auto const& eps_total = eps_data.eps;
35 auto const& eps_total_prev = eps_prev_data->eps;
36 auto const& sigma_total_prev = total_stress_data_prev->sigma_total;
37
38 // current state
39 MPL::VariableArray variables;
40 {
41 // gradients
42 // TODO currently we always pass strain via mechanical_strain
43 variables.mechanical_strain = eps_total;
44 variables.liquid_phase_pressure = -p_cap_data.p_cap;
45
46 // external state variables
47 variables.temperature = T_data.T;
48 }
49
50 // previous state
51 MPL::VariableArray variables_prev;
52 {
53 // thermodynamic forces
54 variables_prev.stress = sigma_total_prev;
55 variables_prev.liquid_saturation = S_L_prev_data->S_L;
56
57 // gradients
58 // TODO currently we always pass strain via mechanical_strain
59 variables_prev.mechanical_strain = eps_total_prev;
60 variables_prev.liquid_phase_pressure = -p_cap_data.p_cap_prev;
61
62 // external state variables
63 variables_prev.temperature = T_prev;
64 }
65
66 auto solution = solid_material_.integrateStress(
67 variables_prev, variables, x_t.t, x_t.x, x_t.dt,
68 *mat_state.material_state_variables);
69
70 if (!solution)
71 {
72 OGS_FATAL("Computation of local constitutive relation failed.");
73 }
74
75 auto& tdyn_forces_data = std::get<0>(*solution);
76
77 auto const view = solid_material_.createThermodynamicForcesView();
78
79 total_stress_data.sigma_total = view.block(MSM::stress, tdyn_forces_data);
80 S_L_data.S_L = view.block(MSM::saturation, tdyn_forces_data);
81 mat_state.material_state_variables = std::move(std::get<1>(*solution));
82
83 auto const& tangent_operator_data = std::get<2>(*solution);
84
85 current_stateless.stiffness_tensor = tangent_operator_blocks_view_.block(
86 MSM::stress, MSM::strain, tangent_operator_data);
87
88 dS_L_data.dS_L_dp_cap = -tangent_operator_blocks_view_.block(
89 MSM::saturation, MSM::liquid_pressure, tangent_operator_data);
90
91 current_stateless.J_uT_BT_K_N = tangent_operator_blocks_view_.block(
92 MSM::stress, MSM::temperature, tangent_operator_data);
93
94 current_stateless.J_up_BT_K_N = tangent_operator_blocks_view_.block(
95 MSM::stress, MSM::liquid_pressure, tangent_operator_data);
96
97 equiv_plast_strain_data.equivalent_plastic_strain =
98 mat_state.material_state_variables->getEquivalentPlasticStrain();
99}
#define OGS_FATAL(...)
Definition Error.h:26
std::variant< std::monostate, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 > > mechanical_strain
std::variant< std::monostate, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 > > stress
static constexpr Temperature temperature
Definition Variable.h:193
static constexpr LiquidPressure liquid_pressure
Definition Variable.h:143
static constexpr Strain strain
Instance that can be used for overload resolution/template type deduction.
Definition Variable.h:92
static constexpr Saturation saturation
Definition Variable.h:180
static constexpr Stress stress
Definition Variable.h:155

References ProcessLib::ThermoRichardsMechanics::SaturationDataDeriv::dS_L_dp_cap, ProcessLib::ConstitutiveRelations::SpaceTimeData::dt, ProcessLib::ConstitutiveRelations::StrainData< DisplacementDim >::eps, ProcessLib::ThermoRichardsMechanics::EquivalentPlasticStrainData::equivalent_plastic_strain, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::J_up_BT_K_N, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::J_uT_BT_K_N, MaterialPropertyLib::VariableArray::liquid_phase_pressure, MaterialLib::Solids::MFront::liquid_pressure, MaterialPropertyLib::VariableArray::liquid_saturation, ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim >::material_state_variables, MaterialPropertyLib::VariableArray::mechanical_strain, OGS_FATAL, ProcessLib::ThermoRichardsMechanics::CapillaryPressureData< DisplacementDim >::p_cap, ProcessLib::ThermoRichardsMechanics::CapillaryPressureData< DisplacementDim >::p_cap_prev, ProcessLib::ThermoRichardsMechanics::SaturationData::S_L, MaterialLib::Solids::MFront::saturation, ProcessLib::ThermoRichardsMechanics::TotalStressData< DisplacementDim >::sigma_total, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::stiffness_tensor, MaterialLib::Solids::MFront::strain, MaterialPropertyLib::VariableArray::stress, MaterialLib::Solids::MFront::stress, ProcessLib::ConstitutiveRelations::SpaceTimeData::t, ProcessLib::ThermoRichardsMechanics::TemperatureData< DisplacementDim >::T, ProcessLib::ThermoRichardsMechanics::TemperatureData< DisplacementDim >::T_prev, MaterialPropertyLib::VariableArray::temperature, MaterialLib::Solids::MFront::temperature, and ProcessLib::ConstitutiveRelations::SpaceTimeData::x.

Member Data Documentation

◆ solid_material_

template<int DisplacementDim>
SolidConstitutiveRelation<DisplacementDim> const& ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >::solid_material_
private

Definition at line 51 of file SolidMechanics.h.

◆ tangent_operator_blocks_view_

template<int DisplacementDim>
MSM::OGSMFrontTangentOperatorBlocksView< DisplacementDim, MSM::ForcesGradsCombinations< boost::mp11::mp_list<MSM::Strain, MSM::LiquidPressure>, boost::mp11::mp_list<MSM::Stress, MSM::Saturation>, boost::mp11::mp_list<MSM::Temperature> >::type> ProcessLib::ThermoRichardsMechanics::ConstitutiveStressSaturation_StrainPressureTemperature::SolidMechanicsModel< DisplacementDim >::tangent_operator_blocks_view_
private

Definition at line 59 of file SolidMechanics.h.


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