OGS
ProcessLib::TH2M::ConstitutiveRelations::SwellingModel< DisplacementDim > Struct Template Reference

Detailed Description

template<int DisplacementDim>
struct ProcessLib::TH2M::ConstitutiveRelations::SwellingModel< DisplacementDim >

Definition at line 41 of file Swelling.h.

#include <Swelling.h>

Public Member Functions

void eval (SpaceTimeData const &x_t, MediaData const &media_data, ElasticTangentStiffnessData< DisplacementDim > const &C_el_data, SaturationData const &S_L_data, PrevState< SaturationData > const &S_L_prev_data, PrevState< SwellingDataStateful< DisplacementDim > > const &prev_state, SwellingDataStateful< DisplacementDim > &state, SwellingDataStateless< DisplacementDim > &out) const
 

Member Function Documentation

◆ eval()

template<int DisplacementDim>
void ProcessLib::TH2M::ConstitutiveRelations::SwellingModel< DisplacementDim >::eval ( SpaceTimeData const & x_t,
MediaData const & media_data,
ElasticTangentStiffnessData< DisplacementDim > const & C_el_data,
SaturationData const & S_L_data,
PrevState< SaturationData > const & S_L_prev_data,
PrevState< SwellingDataStateful< DisplacementDim > > const & prev_state,
SwellingDataStateful< DisplacementDim > & state,
SwellingDataStateless< DisplacementDim > & out ) const

Definition at line 21 of file Swelling.cpp.

29{
30 namespace MPL = MaterialPropertyLib;
31
32 auto const& solid_phase = media_data.solid;
33
34 if (!solid_phase.hasProperty(MPL::PropertyType::swelling_stress_rate))
35 {
36 out.eps_m.setZero();
37 state.sigma_sw.setZero();
38 return;
39 }
40
41 MPL::VariableArray variables;
42 variables.liquid_saturation = S_L_data.S_L;
43
44 MPL::VariableArray variables_prev;
45 variables_prev.liquid_saturation = S_L_prev_data->S_L;
46
47 // Swelling and possibly volumetric strain rate update.
48
49 // If there is swelling, compute it. Update volumetric strain rate,
50 // s.t. it corresponds to the mechanical part only.
51 state.sigma_sw = prev_state->sigma_sw;
52
53 auto const sigma_sw_dot =
56 solid_phase[MPL::PropertyType::swelling_stress_rate].value(
57 variables, variables_prev, x_t.x, x_t.t, x_t.dt)));
58 state.sigma_sw += sigma_sw_dot * x_t.dt;
59
60 auto const C_el_inv = C_el_data.stiffness_tensor.inverse().eval();
61
62 out.eps_m.noalias() = C_el_inv * (state.sigma_sw - prev_state->sigma_sw);
63}
template Eigen::Matrix< double, 3, 3 > formEigenTensor< 3 >(MaterialPropertyLib::PropertyDataType const &values)
KelvinVectorType< DisplacementDim > tensorToKelvin(Eigen::Matrix< double, 3, 3 > const &m)

References ProcessLib::ConstitutiveRelations::SpaceTimeData::dt, ProcessLib::TH2M::ConstitutiveRelations::SwellingDataStateless< DisplacementDim >::eps_m, MaterialPropertyLib::formEigenTensor< 3 >(), MaterialPropertyLib::VariableArray::liquid_saturation, ProcessLib::TH2M::ConstitutiveRelations::SaturationData::S_L, ProcessLib::TH2M::ConstitutiveRelations::SwellingDataStateful< DisplacementDim >::sigma_sw, ProcessLib::TH2M::ConstitutiveRelations::MediaData::solid, ProcessLib::TH2M::ConstitutiveRelations::ElasticTangentStiffnessData< DisplacementDim >::stiffness_tensor, ProcessLib::ConstitutiveRelations::SpaceTimeData::t, MathLib::KelvinVector::tensorToKelvin(), and ProcessLib::ConstitutiveRelations::SpaceTimeData::x.


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