19namespace RichardsMechanics
21template <
typename BMatricesType,
typename ShapeMatrixTypeDisplacement,
22 typename ShapeMatricesTypePressure,
int DisplacementDim,
int NPoints>
33 static const int kelvin_vector_size =
36 sigma_sw.setZero(kelvin_vector_size);
37 eps.setZero(kelvin_vector_size);
38 eps_m.setZero(kelvin_vector_size);
51 typename ShapeMatrixTypeDisplacement::NodalRowVectorType
N_u;
52 typename ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType
dNdx_u;
54 typename ShapeMatricesTypePressure::NodalRowVectorType
N_p;
55 typename ShapeMatricesTypePressure::GlobalDimNodalMatrixType
dNdx_p;
57 typename ShapeMatricesTypePressure::GlobalDimVectorType
v_darcy;
61 double saturation = std::numeric_limits<double>::quiet_NaN();
65 double porosity = std::numeric_limits<double>::quiet_NaN();
71 std::numeric_limits<double>::quiet_NaN();
73 std::numeric_limits<double>::quiet_NaN();
77 DisplacementDim>::MaterialStateVariables>
100 double const temperature)
107 auto const null_state =
solid_material.createMaterialStateVariables();
113 variable_array.
stress.emplace<
KV>(KV::Zero());
117 variable_array_prev.
stress.emplace<
KV>(KV::Zero());
122 solid_material.integrateStress(variable_array_prev, variable_array,
123 t, x_position, dt, *null_state);
127 OGS_FATAL(
"Computation of elastic tangent stiffness failed.");
131 std::move(std::get<2>(*solution));
141 double const temperature)
144 variable_array_prev.
stress
153 variable_array_prev, variable_array, t, x_position, dt,
158 OGS_FATAL(
"Computation of local constitutive relation failed.");
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.
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType
double dry_density_pellet_saturated
BMatricesType::KelvinVectorType eps_prev
ShapeMatrixTypeDisplacement::NodalRowVectorType N_u
ShapeMatricesTypePressure::GlobalDimNodalMatrixType dNdx_p
ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType dNdx_u
ShapeMatricesTypePressure::GlobalDimVectorType v_darcy
ShapeMatricesTypePressure::NodalRowVectorType N_p
BMatricesType::KelvinVectorType eps_m
BMatricesType::KelvinVectorType sigma_sw
double transport_porosity_prev
BMatricesType::KelvinMatrixType updateConstitutiveRelation(MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature)
IntegrationPointData(MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material)
BMatricesType::KelvinVectorType eps_m_prev
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
double liquid_pressure_m_prev
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > computeElasticTangentStiffness(double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature)
double integration_weight
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material
std::unique_ptr< typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables > material_state_variables
BMatricesType::KelvinVectorType sigma_eff
BMatricesType::KelvinVectorType sigma_eff_prev
BMatricesType::KelvinVectorType sigma_sw_prev
BMatricesType::KelvinVectorType eps
double transport_porosity
double dry_density_pellet_unsaturated