23namespace ThermoHydroMechanics
25template <
typename BMatricesType,
typename ShapeMatrixTypeDisplacement,
26 typename ShapeMatricesTypePressure,
int DisplacementDim,
int NPoints>
37 static const int kelvin_vector_size =
41 eps.setZero(kelvin_vector_size);
42 eps0.setZero(kelvin_vector_size);
44 eps_m.setZero(kelvin_vector_size);
61 typename ShapeMatrixTypeDisplacement::NodalRowVectorType
N_u;
62 typename ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType
dNdx_u;
65 typename ShapeMatricesTypePressure::NodalRowVectorType
N;
66 typename ShapeMatricesTypePressure::GlobalDimNodalMatrixType
dNdx;
70 DisplacementDim>::MaterialStateVariables>
73 double phi_fr = std::numeric_limits<double>::quiet_NaN();
74 double phi_fr_prev = std::numeric_limits<double>::quiet_NaN();
94 double const temperature)
103 variable_array.
stress.emplace<
KV>(KV::Zero());
107 variable_array_prev.
stress.emplace<
KV>(KV::Zero());
112 variable_array_prev, variable_array, t, x_position, dt,
117 OGS_FATAL(
"Computation of elastic tangent stiffness failed.");
121 std::move(std::get<2>(*solution));
131 double const temperature_prev)
134 variable_array_prev.
stress
140 variable_array_prev.
temperature = temperature_prev;
143 variable_array_prev, variable_array, t, x_position, dt,
147 OGS_FATAL(
"Computation of local constitutive relation failed.");
157 ice_constitutive_relation,
162 double const temperature_prev)
166 variable_array_prev.
stress
172 variable_array_prev.
temperature = temperature_prev;
175 auto const null_state =
178 t, x_position, *null_state);
180 variable_array_prev, variable_array, t, x_position, dt,
184 OGS_FATAL(
"Computation of local constitutive relation failed.");
188 std::move(*solution);
195template <
int DisplacementDim>
202 DisplacementDim, std::numeric_limits<double>::quiet_NaN());
205 double viscosity = std::numeric_limits<double>::quiet_NaN();
208template <
int DisplacementDim>
KelvinVector mechanical_strain
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
typename ::detail::EigenMatrixType< N, 1 >::type VectorType
typename ::detail::EigenMatrixType< N, M >::type MatrixType
virtual std::optional< std::tuple< KelvinVector, std::unique_ptr< MaterialStateVariables >, KelvinMatrix > > integrateStress(MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, MaterialStateVariables const &material_state_variables) const =0
virtual void initializeInternalStateVariables(double const, ParameterLib::SpatialPosition const &, typename MechanicsBase< DisplacementDim >::MaterialStateVariables &) const
virtual std::unique_ptr< MaterialStateVariables > createMaterialStateVariables() const
DimMatrix K_pT_thermal_osmosis
DimMatrix effective_thermal_conductivity
double effective_volumetric_heat_capacity
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > C
typename MatrixPolicyType::MatrixType< DisplacementDim, DisplacementDim > DimMatrix
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > J_uT_fr
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > r_u_fr
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > solid_linear_thermal_expansion_coefficient
double fluid_compressibility
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > J_uu_fr
MatrixPolicyType::VectorType< DisplacementDim > DimVector
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
BMatricesType::KelvinVectorType eps_m
BMatricesType::KelvinVectorType eps_m_ice_prev
BMatricesType::KelvinVectorType eps_m_prev
BMatricesType::KelvinMatrixType updateConstitutiveRelation(MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature_prev)
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > computeElasticTangentStiffness(double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature)
ShapeMatricesTypePressure::GlobalDimNodalMatrixType dNdx
BMatricesType::KelvinVectorType eps0_prev
std::unique_ptr< typename MaterialLib::Solids::MechanicsBase< DisplacementDim >::MaterialStateVariables > material_state_variables
BMatricesType::KelvinVectorType eps0
BMatricesType::KelvinVectorType sigma_eff
MaterialLib::Solids::MechanicsBase< DisplacementDim > const & solid_material
ShapeMatrixTypeDisplacement::NodalRowVectorType N_u
BMatricesType::KelvinMatrixType updateConstitutiveRelationIce(MaterialLib::Solids::MechanicsBase< DisplacementDim > const &ice_constitutive_relation, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x_position, double const dt, double const temperature_prev)
BMatricesType::KelvinVectorType eps_m_ice
BMatricesType::KelvinVectorType eps
ShapeMatricesTypePressure::NodalRowVectorType N
ShapeMatrixTypeDisplacement::GlobalDimNodalMatrixType dNdx_u
BMatricesType::KelvinVectorType sigma_eff_ice
double integration_weight
IntegrationPointData(MaterialLib::Solids::MechanicsBase< DisplacementDim > const &solid_material)
BMatricesType::KelvinVectorType sigma_eff_prev
BMatricesType::KelvinVectorType sigma_eff_ice_prev