Loading [MathJax]/extensions/tex2jax.js
OGS
SolidMechanics.cpp
Go to the documentation of this file.
1
10#include "SolidMechanics.h"
11
12namespace ProcessLib::TH2M
13{
14namespace ConstitutiveRelations
15{
16template <int DisplacementDim>
18 const SpaceTimeData& x_t,
19 TemperatureData const& T_data,
20 MechanicalStrainData<DisplacementDim> const& mechanical_strain_data,
22 mechanical_strain_prev_data,
24 DisplacementDim>> const& eff_stress_prev_data,
26 eff_stress_data,
29 EquivalentPlasticStrainData& equivalent_plastic_strain) const
30{
31 namespace MPL = MaterialPropertyLib;
32 MPL::VariableArray variables;
33
35 mechanical_strain_data.eps_m);
36 variables.temperature = T_data.T;
37
38 MPL::VariableArray variables_prev;
39 variables_prev.stress.emplace<KelvinVector<DisplacementDim>>(
40 eff_stress_prev_data->sigma_eff);
42 mechanical_strain_prev_data->eps_m);
43 variables_prev.temperature = T_data.T_prev;
44
45 auto solution = solid_material_.integrateStress(
46 variables_prev, variables, x_t.t, x_t.x, x_t.dt,
47 *mat_state.material_state_variables);
48
49 if (!solution)
50 {
51 OGS_FATAL("Computation of local constitutive relation failed.");
52 }
53
54 std::tie(eff_stress_data.sigma_eff, mat_state.material_state_variables,
55 out.stiffness_tensor) = std::move(*solution);
56
57 *equivalent_plastic_strain =
58 mat_state.material_state_variables->getEquivalentPlasticStrain();
59}
60
61template struct SolidMechanicsModel<2>;
62template struct SolidMechanicsModel<3>;
63} // namespace ConstitutiveRelations
64} // namespace ProcessLib::TH2M
#define OGS_FATAL(...)
Definition Error.h:26
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
void eval(const SpaceTimeData &x_t, TemperatureData const &T_data, MechanicalStrainData< DisplacementDim > const &mechanical_strain_data, PrevState< MechanicalStrainData< DisplacementDim > > const &mechanical_strain_prev_data, PrevState< ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > > const &eff_stress_prev_data, ProcessLib::ConstitutiveRelations::EffectiveStressData< DisplacementDim > &eff_stress_data, MaterialStateData< DisplacementDim > &mat_state, SolidMechanicsDataStateless< DisplacementDim > &out, EquivalentPlasticStrainData &equivalent_plastic_strain) const