23 namespace ThermoRichardsMechanics
25 template <
typename BMatricesType,
typename ShapeMatrixTypeDisplacement,
26 typename ShapeMatricesTypePressure,
int DisplacementDim,
int NPoints>
37 static const int kelvin_vector_size =
40 sigma_sw.setZero(kelvin_vector_size);
41 eps.setZero(kelvin_vector_size);
42 eps_m.setZero(kelvin_vector_size);
50 typename ShapeMatrixTypeDisplacement::template MatrixType<
51 DisplacementDim, NPoints * DisplacementDim>
58 typename ShapeMatrixTypeDisplacement::NodalRowVectorType
N_u;
59 typename ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType
dNdx_u;
61 typename ShapeMatricesTypePressure::NodalRowVectorType
N_p;
62 typename ShapeMatricesTypePressure::GlobalDimNodalMatrixType
dNdx_p;
64 typename ShapeMatricesTypePressure::GlobalDimVectorType
v_darcy;
66 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>
100 double const dt,
double const temperature_prev,
101 double const temperature)
108 auto const null_state =
solid_material.createMaterialStateVariables();
112 variable_array[
static_cast<int>(MPL::Variable::stress)].emplace<KV>(
114 variable_array[
static_cast<int>(MPL::Variable::mechanical_strain)]
115 .emplace<KV>(KV::Zero());
117 .emplace<double>(temperature);
119 variable_array_prev[
static_cast<int>(MPL::Variable::stress)]
120 .emplace<KV>(KV::Zero());
121 variable_array_prev[
static_cast<int>(MPL::Variable::mechanical_strain)]
122 .emplace<KV>(KV::Zero());
124 .emplace<double>(temperature_prev);
127 solid_material.integrateStress(variable_array_prev, variable_array,
128 t, x_position, dt, *null_state);
132 OGS_FATAL(
"Computation of elastic tangent stiffness failed.");
136 std::move(std::get<2>(*solution));
146 double const temperature_prev)
149 variable_array_prev[
static_cast<int>(
157 variable_array_prev[
static_cast<int>(
159 .emplace<double>(temperature_prev);
162 variable_array_prev, variable_array, t, x_position, dt,
167 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
BMatricesType::KelvinVectorType eps_m_prev
ShapeMatricesTypePressure::GlobalDimNodalMatrixType dNdx_p
ShapeMatricesTypePressure::GlobalDimVectorType v_darcy
BMatricesType::KelvinMatrixType updateConstitutiveRelation(MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature_prev)
double dry_density_pellet_unsaturated
double dry_density_pellet_saturated
std::unique_ptr< typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables > material_state_variables
double transport_porosity
BMatricesType::KelvinVectorType eps_prev
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material
BMatricesType::KelvinVectorType sigma_eff_prev
double transport_porosity_prev
BMatricesType::KelvinVectorType eps
ShapeMatricesTypePressure::NodalRowVectorType N_p
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
BMatricesType::KelvinVectorType eps_m
BMatricesType::KelvinVectorType sigma_sw_prev
ShapeMatrixTypeDisplacement::NodalRowVectorType N_u
double integration_weight
ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType dNdx_u
BMatricesType::KelvinVectorType sigma_sw
IntegrationPointData(MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material)
ShapeMatrixTypeDisplacement::template MatrixType< DisplacementDim, NPoints *DisplacementDim > N_u_op
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > computeElasticTangentStiffness(double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature_prev, double const temperature)
BMatricesType::KelvinVectorType sigma_eff