19 namespace RichardsMechanics
21 template <
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);
46 typename ShapeMatrixTypeDisplacement::template MatrixType<
47 DisplacementDim, NPoints * DisplacementDim>
54 typename ShapeMatrixTypeDisplacement::NodalRowVectorType
N_u;
55 typename ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType
dNdx_u;
57 typename ShapeMatricesTypePressure::NodalRowVectorType
N_p;
58 typename ShapeMatricesTypePressure::GlobalDimNodalMatrixType
dNdx_p;
60 typename ShapeMatricesTypePressure::GlobalDimVectorType
v_darcy;
64 double saturation = std::numeric_limits<double>::quiet_NaN();
68 double porosity = std::numeric_limits<double>::quiet_NaN();
74 std::numeric_limits<double>::quiet_NaN();
76 std::numeric_limits<double>::quiet_NaN();
80 DisplacementDim>::MaterialStateVariables>
103 double const temperature)
110 auto const null_state =
solid_material.createMaterialStateVariables();
114 variable_array[
static_cast<int>(MPL::Variable::stress)].emplace<KV>(
116 variable_array[
static_cast<int>(MPL::Variable::mechanical_strain)]
117 .emplace<KV>(KV::Zero());
119 .emplace<double>(temperature);
121 variable_array_prev[
static_cast<int>(MPL::Variable::stress)]
122 .emplace<KV>(KV::Zero());
123 variable_array_prev[
static_cast<int>(MPL::Variable::mechanical_strain)]
124 .emplace<KV>(KV::Zero());
126 .emplace<double>(temperature);
129 solid_material.integrateStress(variable_array_prev, variable_array,
130 t, x_position, dt, *null_state);
134 OGS_FATAL(
"Computation of elastic tangent stiffness failed.");
138 std::move(std::get<2>(*solution));
148 double const temperature)
151 variable_array_prev[
static_cast<int>(
159 variable_array_prev[
static_cast<int>(
161 .emplace<double>(temperature);
164 variable_array_prev, variable_array, t, x_position, dt,
169 OGS_FATAL(
"Computation of local constitutive relation failed.");
std::array< VariableType, static_cast< int >(Variable::number_of_variables)> VariableArray
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
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
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > computeElasticTangentStiffness(double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature)
double liquid_pressure_m_prev
double integration_weight
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material
ShapeMatrixTypeDisplacement::template MatrixType< DisplacementDim, NPoints *DisplacementDim > N_u_op
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