35 static constexpr int kelvin_vector_size =
39 auto const& solid_phase = media_data.
solid;
41 if (!solid_phase.hasProperty(MPL::PropertyType::swelling_stress_rate))
56 DisplacementDim)>::identity2;
62 state.
sigma_sw = prev_state->sigma_sw;
64 auto const sigma_sw_dot =
67 solid_phase[MPL::PropertyType::swelling_stress_rate].value(
68 variables, variables_prev, x_t.
x, x_t.
t, x_t.
dt)));
71 auto const C_el_inv = C_el_data.
C_el.inverse().eval();
76 Invariants::trace(eps_data.
eps) +
77 identity2.transpose() * C_el_inv * state.
sigma_sw;
79 Invariants::trace(eps_prev_data->eps) +
80 identity2.transpose() * C_el_inv * prev_state->sigma_sw;
82 out.
eps_m.noalias() = C_el_inv * (state.
sigma_sw - prev_state->sigma_sw);
84 using DimMatrix = Eigen::Matrix<double, 3, 3>;
85 auto const dsigma_sw_dS_L =
87 solid_phase.property(MPL::PropertyType::swelling_stress_rate)
88 .template dValue<DimMatrix>(variables, variables_prev,
89 MPL::Variable::liquid_saturation,
90 x_t.
x, x_t.
t, x_t.
dt));
void eval(SpaceTimeData const &x_t, MediaData const &media_data, ElasticTangentStiffnessData< DisplacementDim > const &C_el_data, StrainData< DisplacementDim > const &eps_data, PrevState< StrainData< DisplacementDim > > const &eps_prev_data, SaturationData const &S_L_data, SaturationDataDeriv const &dS_L_data, PrevState< SaturationData > const &S_L_prev_data, PrevState< SwellingDataStateful< DisplacementDim > > const &prev_state, SwellingDataStateful< DisplacementDim > &state, SwellingDataStateless< DisplacementDim > &out) const