OGS
SolidMechanics.cpp
Go to the documentation of this file.
1
11#include "SolidMechanics.h"
12
14{
15namespace ConstitutiveStress_StrainTemperature
16{
17template <int DisplacementDim>
19 const SpaceTimeData& x_t,
20 SolidThermalExpansionData<DisplacementDim> const& s_therm_exp_data,
21 SwellingDataStateless<DisplacementDim> const& swelling_data,
24 BiotData const& biot_data,
25 BishopsData const& bishops_data,
26 SaturationDataDeriv const& dS_L_data,
27 StrainData<DisplacementDim> const& eps_data,
28 PrevState<StrainData<DisplacementDim>> const& eps_prev_data,
31 DisplacementDim>> const& sigma_eff_prev_data,
33 sigma_eff_data,
35 DisplacementDim>> const& eps_m_prev_data,
37 eps_m_data,
38 TotalStressData<DisplacementDim>& total_stress_data,
39 EquivalentPlasticStrainData& equiv_plast_strain_data,
41{
42 namespace MPL = MaterialPropertyLib;
43 MPL::VariableArray variables;
44
45 double const T_prev = T_data.T_prev;
46 double const dT = T_data.T - T_prev;
47
48 eps_m_data.eps_m.noalias() =
49 eps_m_prev_data->eps_m + eps_data.eps - eps_prev_data->eps -
50 s_therm_exp_data.solid_linear_thermal_expansivity_vector * dT +
51 swelling_data.eps_m;
52
54 eps_m_data.eps_m);
55 variables.temperature = T_data.T;
56
57 MPL::VariableArray variables_prev;
58
59 variables_prev.stress.emplace<KelvinVector<DisplacementDim>>(
60 sigma_eff_prev_data->sigma_eff);
62 eps_m_prev_data->eps_m);
63 variables_prev.temperature = T_prev;
64
65 auto solution = solid_material_.integrateStress(
66 variables_prev, variables, x_t.t, x_t.x, x_t.dt,
67 *mat_state.material_state_variables);
68
69 if (!solution)
70 {
71 OGS_FATAL("Computation of local constitutive relation failed.");
72 }
73
74 std::tie(sigma_eff_data.sigma_eff, mat_state.material_state_variables,
75 out.stiffness_tensor) = std::move(*solution);
76
77 auto const& identity2 = MathLib::KelvinVector::Invariants<
79 DisplacementDim)>::identity2;
80
81 total_stress_data.sigma_total.noalias() =
82 sigma_eff_data.sigma_eff +
83 biot_data() * bishops_data.chi_S_L * p_cap_data.p_cap * identity2;
84
85 out.J_uT_BT_K_N.noalias() = // TODO is this thermal stress?
86 -out.stiffness_tensor *
88
89 double const J_up_X_BTI2N =
90 -biot_data() *
91 (bishops_data.chi_S_L +
92 bishops_data.dchi_dS_L * p_cap_data.p_cap * dS_L_data.dS_L_dp_cap);
93
94 out.J_up_BT_K_N.noalias() =
95 swelling_data.J_up_BT_K_N + J_up_X_BTI2N * identity2;
96
97 equiv_plast_strain_data.equivalent_plastic_strain =
98 mat_state.material_state_variables->getEquivalentPlasticStrain();
99}
100
101template struct SolidMechanicsModel<2>;
102template struct SolidMechanicsModel<3>;
103
104} // namespace ConstitutiveStress_StrainTemperature
105} // namespace ProcessLib::ThermoRichardsMechanics
#define OGS_FATAL(...)
Definition Error.h:26
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
KV::KelvinVectorType< DisplacementDim > KelvinVector
Definition Base.h:26
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > sigma_eff
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps_m
Represents a previous state of type T.
Definition Base.h:21
ParameterLib::SpatialPosition x
Definition Base.h:74
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > eps
Definition StrainData.h:20
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< ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > > const &sigma_eff_prev_data, ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > &sigma_eff_data, PrevState< ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > > const &eps_m_prev_data, ProcessLib::ConstitutiveRelations::MechanicalStrainData< DisplacementDim > &eps_m_data, TotalStressData< DisplacementDim > &total_stress_data, EquivalentPlasticStrainData &equiv_plast_strain_data, SolidMechanicsDataStateless< DisplacementDim > &out) const