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

Detailed Description

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

Definition at line 45 of file SolidMechanics.h.

#include <SolidMechanics.h>

Public Member Functions

 SolidMechanicsModel (SolidConstitutiveRelation< DisplacementDim > const &solid_material)
 
void eval (const SpaceTimeData &x_t, SolidThermalExpansionData< DisplacementDim > const &s_therm_exp_data, SwellingDataStateless< DisplacementDim > const &swelling_data, TemperatureData< DisplacementDim > const &T_data, CapillaryPressureData< DisplacementDim > const &p_cap_data, BiotData const &biot_data, BishopsData const &bishops_data, SaturationDataDeriv const &dS_L_data, StrainData< DisplacementDim > const &eps_data, PrevState< StrainData< DisplacementDim > > const &eps_prev_data, MaterialStateData< DisplacementDim > &mat_state, PrevState< EffectiveStressData< DisplacementDim > > const &sigma_eff_prev_data, EffectiveStressData< DisplacementDim > &sigma_eff_data, PrevState< MechanicalStrainData< DisplacementDim > > const &eps_m_prev_data, MechanicalStrainData< DisplacementDim > &eps_m_data, TotalStressData< DisplacementDim > &total_stress_data, EquivalentPlasticStrainData &equiv_plast_strain_data, SolidMechanicsDataStateless< DisplacementDim > &out) const
 
auto getInternalVariables () const
 

Private Attributes

SolidConstitutiveRelation< DisplacementDim > const & solid_material_
 

Constructor & Destructor Documentation

◆ SolidMechanicsModel()

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

Definition at line 47 of file SolidMechanics.h.

49 : solid_material_(solid_material)
50 {
51 }

Member Function Documentation

◆ eval()

template<int DisplacementDim>
void ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::SolidMechanicsModel< DisplacementDim >::eval ( const SpaceTimeData & x_t,
SolidThermalExpansionData< DisplacementDim > const & s_therm_exp_data,
SwellingDataStateless< DisplacementDim > const & swelling_data,
TemperatureData< DisplacementDim > const & T_data,
CapillaryPressureData< DisplacementDim > const & p_cap_data,
BiotData const & biot_data,
BishopsData const & bishops_data,
SaturationDataDeriv const & dS_L_data,
StrainData< DisplacementDim > const & eps_data,
PrevState< StrainData< DisplacementDim > > const & eps_prev_data,
MaterialStateData< DisplacementDim > & mat_state,
PrevState< EffectiveStressData< DisplacementDim > > const & sigma_eff_prev_data,
EffectiveStressData< DisplacementDim > & sigma_eff_data,
PrevState< MechanicalStrainData< DisplacementDim > > const & eps_m_prev_data,
MechanicalStrainData< DisplacementDim > & eps_m_data,
TotalStressData< DisplacementDim > & total_stress_data,
EquivalentPlasticStrainData & equiv_plast_strain_data,
SolidMechanicsDataStateless< DisplacementDim > & out ) const

Definition at line 18 of file SolidMechanics.cpp.

37{
38 namespace MPL = MaterialPropertyLib;
39 MPL::VariableArray variables;
40
41 double const T_prev = T_data.T_prev;
42 double const dT = T_data.T - T_prev;
43
44 eps_m_data.eps_m.noalias() =
45 eps_m_prev_data->eps_m + eps_data.eps - eps_prev_data->eps -
46 s_therm_exp_data.solid_linear_thermal_expansivity_vector * dT +
47 swelling_data.eps_m;
48
49 variables.mechanical_strain.emplace<KelvinVector<DisplacementDim>>(
50 eps_m_data.eps_m);
51 variables.temperature = T_data.T;
52
53 MPL::VariableArray variables_prev;
54 variables_prev.stress.emplace<KelvinVector<DisplacementDim>>(
55 sigma_eff_prev_data->sigma_eff);
56 variables_prev.mechanical_strain.emplace<KelvinVector<DisplacementDim>>(
57 eps_m_prev_data->eps_m);
58 variables_prev.temperature = T_prev;
59
60 auto solution = solid_material_.integrateStress(
61 variables_prev, variables, x_t.t, x_t.x, x_t.dt,
62 *mat_state.material_state_variables);
63
64 if (!solution)
65 {
66 OGS_FATAL("Computation of local constitutive relation failed.");
67 }
68
69 std::tie(sigma_eff_data.sigma_eff, mat_state.material_state_variables,
70 out.stiffness_tensor) = std::move(*solution);
71
72 auto const& identity2 = MathLib::KelvinVector::Invariants<
74 DisplacementDim)>::identity2;
75 total_stress_data.sigma_total.noalias() =
76 sigma_eff_data.sigma_eff +
77 biot_data() * bishops_data.chi_S_L * p_cap_data.p_cap * identity2;
78
79 out.J_uT_BT_K_N.noalias() = // TODO is this thermal stress?
80 -out.stiffness_tensor *
81 s_therm_exp_data.solid_linear_thermal_expansivity_vector;
82
83 double const J_up_X_BTI2N =
84 -biot_data() *
85 (bishops_data.chi_S_L +
86 bishops_data.dchi_dS_L * p_cap_data.p_cap * dS_L_data.dS_L_dp_cap);
87
88 out.J_up_BT_K_N.noalias() =
89 swelling_data.J_up_BT_K_N + J_up_X_BTI2N * identity2;
90
91 equiv_plast_strain_data.equivalent_plastic_strain =
92 mat_state.material_state_variables->getEquivalentPlasticStrain();
93}
#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
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.

References ProcessLib::ThermoRichardsMechanics::BishopsData::chi_S_L, ProcessLib::ThermoRichardsMechanics::BishopsData::dchi_dS_L, ProcessLib::ThermoRichardsMechanics::SaturationDataDeriv::dS_L_dp_cap, ProcessLib::ConstitutiveRelations::SpaceTimeData::dt, ProcessLib::ConstitutiveRelations::StrainData< DisplacementDim >::eps, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::MechanicalStrainData< DisplacementDim >::eps_m, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::SwellingDataStateless< DisplacementDim >::eps_m, ProcessLib::ThermoRichardsMechanics::EquivalentPlasticStrainData::equivalent_plastic_strain, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::J_up_BT_K_N, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::SwellingDataStateless< DisplacementDim >::J_up_BT_K_N, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::J_uT_BT_K_N, MathLib::KelvinVector::kelvin_vector_dimensions(), ProcessLib::ThermoRichardsMechanics::MaterialStateData< DisplacementDim >::material_state_variables, MaterialPropertyLib::VariableArray::mechanical_strain, OGS_FATAL, ProcessLib::ThermoRichardsMechanics::CapillaryPressureData< DisplacementDim >::p_cap, ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::EffectiveStressData< DisplacementDim >::sigma_eff, ProcessLib::ThermoRichardsMechanics::TotalStressData< DisplacementDim >::sigma_total, ProcessLib::ThermoRichardsMechanics::SolidThermalExpansionData< DisplacementDim >::solid_linear_thermal_expansivity_vector, ProcessLib::ThermoRichardsMechanics::SolidMechanicsDataStateless< DisplacementDim >::stiffness_tensor, MaterialPropertyLib::VariableArray::stress, ProcessLib::ConstitutiveRelations::SpaceTimeData::t, ProcessLib::ThermoRichardsMechanics::TemperatureData< DisplacementDim >::T, ProcessLib::ThermoRichardsMechanics::TemperatureData< DisplacementDim >::T_prev, MaterialPropertyLib::VariableArray::temperature, and ProcessLib::ConstitutiveRelations::SpaceTimeData::x.

◆ getInternalVariables()

template<int DisplacementDim>
auto ProcessLib::ThermoRichardsMechanics::ConstitutiveStress_StrainTemperature::SolidMechanicsModel< DisplacementDim >::getInternalVariables ( ) const
inline

Member Data Documentation

◆ solid_material_


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