diff --git a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp index 4914d6fce61003187e7b618e43e4ed74b5bbd158..b3b09939772da87a9b944ddc28767bbdd8bbb36b 100644 --- a/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp +++ b/ProcessLib/HydroMechanics/CreateHydroMechanicsProcess.cpp @@ -180,6 +180,11 @@ std::unique_ptr<Process> createHydroMechanicsProcess( std::copy_n(b.data(), b.size(), specific_body_force.data()); } + // Reference temperature + const auto& reference_temperature = + //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS__reference_temperature} + config.getConfigParameterOptional<double>("reference_temperature"); + HydroMechanicsProcessData<DisplacementDim> process_data{ std::move(material), intrinsic_permeability, @@ -189,7 +194,8 @@ std::unique_ptr<Process> createHydroMechanicsProcess( biot_coefficient, porosity, solid_density, - specific_body_force}; + specific_body_force, + *reference_temperature}; SecondaryVariableCollection secondary_variables; diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h index 073740489f02034ab3af1eb19d0e68d93dc9aff3..9e6d1641f28e693e8404b5a4aa4be097fc824145 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM-impl.h @@ -202,7 +202,8 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, // eps.noalias() = B * u; - auto C = _ip_data[ip].updateConstitutiveRelation(t, x_position, dt, u); + auto C = _ip_data[ip].updateConstitutiveRelation( + t, x_position, dt, u, _process_data.reference_temperature); local_Jac .template block<displacement_size, displacement_size>( @@ -488,7 +489,8 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, eps.noalias() = B * u; - auto C = _ip_data[ip].updateConstitutiveRelation(t, x_position, dt, u); + auto C = _ip_data[ip].updateConstitutiveRelation( + t, x_position, dt, u, _process_data.reference_temperature); local_Jac.noalias() += B.transpose() * C * B * w; @@ -574,7 +576,8 @@ void HydroMechanicsLocalAssembler<ShapeFunctionDisplacement, auto& eps = _ip_data[ip].eps; eps.noalias() = B * u; - _ip_data[ip].updateConstitutiveRelation(t, x_position, dt, u); + _ip_data[ip].updateConstitutiveRelation( + t, x_position, dt, u, _process_data.reference_temperature); } } diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h index 1b21a0fcb455507337a0c45bedad61fcce2ce86e..26dd8d5a5c761268ecf285072cfe1f48a617c5bb 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h @@ -73,12 +73,12 @@ struct IntegrationPointData final double const t, SpatialPosition const& x_position, double const dt, - DisplacementVectorType const& /*u*/) + DisplacementVectorType const& /*u*/, + double const T) { auto&& solution = solid_material.integrateStress( t, x_position, dt, eps_prev, eps, sigma_eff_prev, - *material_state_variables, - MaterialLib::PhysicalConstant::RoomTemperature); + *material_state_variables, T); if (!solution) OGS_FATAL("Computation of local constitutive relation failed."); diff --git a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h index b8c7b006d3250a4c93d6370a256898af1f86623d..fea5be6470ac90e93cc580107081320ab2fafff8 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsProcessData.h @@ -42,7 +42,8 @@ struct HydroMechanicsProcessData Parameter<double> const& porosity_, Parameter<double> const& solid_density_, Eigen::Matrix<double, DisplacementDim, 1> - specific_body_force_) + specific_body_force_, + double const reference_temperature_) : material{std::move(material_)}, intrinsic_permeability(intrinsic_permeability_), specific_storage(specific_storage_), @@ -51,7 +52,8 @@ struct HydroMechanicsProcessData biot_coefficient(biot_coefficient_), porosity(porosity_), solid_density(solid_density_), - specific_body_force(std::move(specific_body_force_)) + specific_body_force(std::move(specific_body_force_)), + reference_temperature(reference_temperature_) { } @@ -66,7 +68,8 @@ struct HydroMechanicsProcessData solid_density(other.solid_density), specific_body_force(other.specific_body_force), dt(other.dt), - t(other.t) + t(other.t), + reference_temperature(other.reference_temperature) { } @@ -105,6 +108,8 @@ struct HydroMechanicsProcessData double dt = 0.0; double t = 0.0; + double const reference_temperature; + EIGEN_MAKE_ALIGNED_OPERATOR_NEW; };