OGS
ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim > Struct Template Reference

Detailed Description

template<int DisplacementDim>
struct ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >

Definition at line 21 of file ConstitutiveSetting.h.

#include <ConstitutiveSetting.h>

Public Member Functions

void init (ConstitutiveModels< DisplacementDim > &models, double const t, double const dt, ParameterLib::SpatialPosition const &x_position, MediaData const &media_data, TemperatureData< DisplacementDim > const &T_data, StatefulData< DisplacementDim > &state, StatefulDataPrev< DisplacementDim > &prev_state) const
 
void eval (ConstitutiveModels< DisplacementDim > &models, double const t, double const dt, ParameterLib::SpatialPosition const &x_position, MaterialPropertyLib::Medium const &medium, TemperatureData< DisplacementDim > const &T_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, KelvinVector< DisplacementDim > const &eps_arg, StatefulData< DisplacementDim > &state, StatefulDataPrev< DisplacementDim > const &prev_state, MaterialStateData< DisplacementDim > &mat_state, ConstitutiveTempData< DisplacementDim > &tmp, OutputData< DisplacementDim > &out, ConstitutiveData< DisplacementDim > &cd) const
 Evaluate the constitutive setting.
 

Static Public Member Functions

static KelvinVector< DisplacementDim > const & statefulStress (StatefulData< DisplacementDim > const &state)
 
static KelvinVector< DisplacementDim > & statefulStress (StatefulData< DisplacementDim > &state)
 
static void convertInitialStressType (StatefulData< DisplacementDim > &state, StatefulDataPrev< DisplacementDim > &prev_state, KelvinVector< DisplacementDim > const &pore_pressure_part)
 

Member Function Documentation

◆ convertInitialStressType()

template<int DisplacementDim>
static void ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >::convertInitialStressType ( StatefulData< DisplacementDim > & state,
StatefulDataPrev< DisplacementDim > & prev_state,
KelvinVector< DisplacementDim > const & pore_pressure_part )
inlinestatic

In case that the input initial data for state.s_mech_data.sigma_eff are total stress values, state.s_mech_data.sigma_eff is reset to effective stress.

Definition at line 58 of file ConstitutiveSetting.h.

62 {
63 auto& sigma_eff =
64 std::get<EffectiveStressData<DisplacementDim>>(state).sigma_eff;
65 sigma_eff.noalias() += pore_pressure_part;
66
67 (std::get<PrevState<EffectiveStressData<DisplacementDim>>>(prev_state)
68 ->sigma_eff)
69 .noalias() = sigma_eff;
70 }

◆ eval()

template<int DisplacementDim>
void ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >::eval ( ConstitutiveModels< DisplacementDim > & models,
double const t,
double const dt,
ParameterLib::SpatialPosition const & x_position,
MaterialPropertyLib::Medium const & medium,
TemperatureData< DisplacementDim > const & T_data,
CapillaryPressureData< DisplacementDim > const & p_cap_data,
KelvinVector< DisplacementDim > const & eps_arg,
StatefulData< DisplacementDim > & state,
StatefulDataPrev< DisplacementDim > const & prev_state,
MaterialStateData< DisplacementDim > & mat_state,
ConstitutiveTempData< DisplacementDim > & tmp,
OutputData< DisplacementDim > & out,
ConstitutiveData< DisplacementDim > & cd ) const

Evaluate the constitutive setting.

Definition at line 48 of file ConstitutiveSetting.cpp.

61{
62 namespace G = ProcessLib::Graph;
63
64 auto const aux_data = std::tuple{SpaceTimeData{x_position, t, dt},
65 MediaData{medium}, T_data, p_cap_data};
66
67 auto const mat_state_tuple = std::tie(mat_state);
68
69 // TODO will eps lag one iteration behind? (since it's not updated after
70 // solving the global equation system)
71 std::get<StrainData<DisplacementDim>>(state).eps.noalias() = eps_arg;
72
73 G::eval(models.elastic_tangent_stiffness_model, aux_data, tmp);
74 G::eval(models.biot_model, aux_data, tmp);
75 G::eval(models.solid_compressibility_model, aux_data, tmp);
76 G::eval(models.S_L_model, aux_data, state, tmp);
77
78 G::eval(models.bishops_model, aux_data, state, tmp);
79 // TODO why not ordinary state tracking?
80 G::eval(models.bishops_prev_model, aux_data, prev_state, tmp);
81 G::eval(models.poro_model, aux_data, tmp, state, prev_state);
82
83 {
84 auto const& biot_data = std::get<BiotData>(tmp);
85 auto const& poro_data = std::get<PorosityData>(state);
86
87 if (biot_data() < poro_data.phi)
88 {
90 "ThermoRichardsMechanics: Biot-coefficient {} is smaller than "
91 "porosity {} in element/integration point {}/{}.",
92 biot_data(), poro_data.phi, *x_position.getElementID(),
93 *x_position.getIntegrationPoint());
94 }
95 }
96
97 G::eval(models.swelling_model, aux_data, state, prev_state, tmp);
98 G::eval(models.s_therm_exp_model, aux_data, tmp);
99 G::eval(models.s_mech_model, aux_data, tmp, state, prev_state,
100 mat_state_tuple, cd);
101
102 G::eval(models.rho_L_model, aux_data, out);
103
104 /* {
105 double const p_FR = -bishops_data.chi_S_L * p_cap_data.p_cap;
106 // p_SR
107 // TODO used by no MPL model
108 variables.solid_grain_pressure =
109 p_FR -
110 Invariants::trace(std::get<s_mech_data>(state).sigma_eff) / (3 * (1
111 - phi));
112 } */
113
114 G::eval(models.rho_S_model, aux_data, state, out);
115 G::eval(models.grav_model, state, out, tmp, cd);
116 G::eval(models.mu_L_model, aux_data, out);
117 G::eval(models.transport_poro_model, aux_data, tmp, state, prev_state);
118 G::eval(models.perm_model, aux_data, state, out, cd, tmp);
119 G::eval(models.th_osmosis_model, aux_data, out, cd);
120 G::eval(models.darcy_model, aux_data, out, tmp, cd);
121 G::eval(models.heat_storage_and_flux_model, aux_data, out, state, tmp, cd);
122 G::eval(models.vapor_diffusion_model, aux_data, out, state, tmp, cd);
123 G::eval(models.f_therm_exp_model, aux_data, tmp, state, out);
124 G::eval(models.storage_model, aux_data, tmp, state, out, prev_state, cd);
125 G::eval(models.eq_p_model, aux_data, state, tmp, out, cd);
126 G::eval(models.eq_T_model, cd);
127}
#define OGS_FATAL(...)
Definition Error.h:26

References ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::biot_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::bishops_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::bishops_prev_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::darcy_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::elastic_tangent_stiffness_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::eq_p_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::eq_T_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::f_therm_exp_model, ParameterLib::SpatialPosition::getElementID(), ParameterLib::SpatialPosition::getIntegrationPoint(), ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::grav_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::heat_storage_and_flux_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::mu_L_model, OGS_FATAL, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::perm_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::poro_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::rho_L_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::rho_S_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::S_L_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::s_mech_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::s_therm_exp_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::solid_compressibility_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::storage_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::swelling_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::th_osmosis_model, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::transport_poro_model, and ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::vapor_diffusion_model.

◆ init()

template<int DisplacementDim>
void ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >::init ( ConstitutiveModels< DisplacementDim > & models,
double const t,
double const dt,
ParameterLib::SpatialPosition const & x_position,
MediaData const & media_data,
TemperatureData< DisplacementDim > const & T_data,
StatefulData< DisplacementDim > & state,
StatefulDataPrev< DisplacementDim > & prev_state ) const

Definition at line 23 of file ConstitutiveSetting.cpp.

29{
30 // Set eps_m_prev from potentially non-zero eps and sigma_sw from
31 // restart.
32 SpaceTimeData const x_t{x_position, t, dt};
33 ElasticTangentStiffnessData<DisplacementDim> C_el_data;
34 models.elastic_tangent_stiffness_model.eval(x_t, T_data, C_el_data);
35
36 auto const& eps = std::get<StrainData<DisplacementDim>>(state).eps;
37 auto const& sigma_sw =
38 std::get<SwellingDataStateful<DisplacementDim>>(state).sigma_sw;
39 std::get<PrevState<MechanicalStrainData<DisplacementDim>>>(prev_state)
40 ->eps_m.noalias() =
41 media_data.solid.hasProperty(
43 ? eps + C_el_data.C_el.inverse() * sigma_sw
44 : eps;
45}

References ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ElasticTangentStiffnessData< DisplacementDim >::C_el, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveModels< DisplacementDim >::elastic_tangent_stiffness_model, MaterialPropertyLib::Phase::hasProperty(), ProcessLib::ThermoRichardsMechanics::MediaData::solid, and MaterialPropertyLib::swelling_stress_rate.

◆ statefulStress() [1/2]

template<int DisplacementDim>
static KelvinVector< DisplacementDim > & ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >::statefulStress ( StatefulData< DisplacementDim > & state)
inlinestatic

Definition at line 49 of file ConstitutiveSetting.h.

51 {
52 return std::get<EffectiveStressData<DisplacementDim>>(state).sigma_eff;
53 }

◆ statefulStress() [2/2]

template<int DisplacementDim>
static KelvinVector< DisplacementDim > const & ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::ConstitutiveSetting< DisplacementDim >::statefulStress ( StatefulData< DisplacementDim > const & state)
inlinestatic

Definition at line 44 of file ConstitutiveSetting.h.

46 {
47 return std::get<EffectiveStressData<DisplacementDim>>(state).sigma_eff;
48 }

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