diff --git a/MaterialLib/PhysicalConstant.h b/MaterialLib/PhysicalConstant.h index 47ddab80ee36c62c8418ac4a1044c445552cf0de..3ad3f12252cc4fd20b2ba430d53207c12fce1a5c 100644 --- a/MaterialLib/PhysicalConstant.h +++ b/MaterialLib/PhysicalConstant.h @@ -20,6 +20,9 @@ namespace PhysicalConstant /// Zero degrees Celsius in Kelvin const double CelsiusZeroInKelvin = 273.15; +/// Room temperature, which is used as a reference temperature. +const double RoomTemperature = CelsiusZeroInKelvin + 20.0; + /** Ideal gas constant in SI standard units (J \per{mol} \per{K}) diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp index 99820eaf96f4b663939b88beca59dcbaeb2bfbe6..cc5b5394627a9d751a2c6e3c6639eb4807d44440 100644 --- a/MaterialLib/SolidModels/Ehlers.cpp +++ b/MaterialLib/SolidModels/Ehlers.cpp @@ -480,7 +480,7 @@ SolidEhlers<DisplacementDim>::integrateStress( KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) + material_state_variables, double const /*T*/, double const /*p*/) { assert(dynamic_cast<StateVariables<DisplacementDim> const*>( &material_state_variables) != nullptr); diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index 6b99f56504cd14813d60bc061d1d8dcc6134ed86..80449c2ca98e0173e4fa1662193d7fc55a7c8563 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -321,7 +321,7 @@ public: KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) override; + material_state_variables, double const T, double const p) override; std::vector<typename MechanicsBase<DisplacementDim>::InternalVariable> getInternalVariables() const override; diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp index 9aa837a7f7b711db90bf9efbe03cd54fdab24bc3..a16d07e79621f81e6201adeeb9165e2ee06f294f 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp +++ b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp @@ -27,7 +27,7 @@ LinearElasticIsotropic<DisplacementDim>::integrateStress( KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) + material_state_variables, double const /*T*/, double const /*p*/) { KelvinMatrix C = KelvinMatrix::Zero(); diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.h b/MaterialLib/SolidModels/LinearElasticIsotropic.h index a4468dc16c9d8a1da2fbe07fb431830f1c6180f6..11cfcc62de47876b64a1113b7a2b01a5891cfd71 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropic.h +++ b/MaterialLib/SolidModels/LinearElasticIsotropic.h @@ -121,7 +121,7 @@ public: KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) override; + material_state_variables, double const T, double const p) override; MaterialProperties getMaterialProperties() {return _mp;} diff --git a/MaterialLib/SolidModels/LinearElasticIsotropicPhaseField.h b/MaterialLib/SolidModels/LinearElasticIsotropicPhaseField.h index 7314b1130fd3755cf758b056817d43e975eaa148..078f73b771dd4c76d5ff6be9ae1306969f08d71b 100644 --- a/MaterialLib/SolidModels/LinearElasticIsotropicPhaseField.h +++ b/MaterialLib/SolidModels/LinearElasticIsotropicPhaseField.h @@ -59,10 +59,11 @@ public: KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) override + material_state_variables, double const T, double const p) override { return LinearElasticIsotropic<DisplacementDim>::integrateStress( - t, x, dt, eps_prev, eps, sigma_prev, material_state_variables); + t, x, dt, eps_prev, eps, sigma_prev, material_state_variables, + T, p); } double computeFreeEnergyDensity( diff --git a/MaterialLib/SolidModels/Lubby2.cpp b/MaterialLib/SolidModels/Lubby2.cpp index 97f40ac3bca4550a5791a7cb20257914197c9eeb..7133f9c4877ce4c8d690af154f1c3c14a5564bb6 100644 --- a/MaterialLib/SolidModels/Lubby2.cpp +++ b/MaterialLib/SolidModels/Lubby2.cpp @@ -80,7 +80,7 @@ Lubby2<DisplacementDim>::integrateStress( KelvinVector const& eps, KelvinVector const& /*sigma_prev*/, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) + material_state_variables, double const /*T*/, double const /*p*/) { using Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize>; diff --git a/MaterialLib/SolidModels/Lubby2.h b/MaterialLib/SolidModels/Lubby2.h index b37175ac51349ef41a342ac6d04e3aa8ddd14938..0c67aa9596a29be4ea4903abd2923dbee496a666 100644 --- a/MaterialLib/SolidModels/Lubby2.h +++ b/MaterialLib/SolidModels/Lubby2.h @@ -231,7 +231,7 @@ public: KelvinVector const& eps, KelvinVector const& sigma_prev, typename MechanicsBase<DisplacementDim>::MaterialStateVariables const& - material_state_variables) override; + material_state_variables, double const T, double const p) override; private: /// Calculates the 18x1 residual vector. diff --git a/MaterialLib/SolidModels/MechanicsBase.h b/MaterialLib/SolidModels/MechanicsBase.h index 40865893bdf352d1e915bff4ffd63c8c7e1f906f..2725bceeb47ece193498797a7efa9d4c0ddcc14b 100644 --- a/MaterialLib/SolidModels/MechanicsBase.h +++ b/MaterialLib/SolidModels/MechanicsBase.h @@ -77,7 +77,8 @@ struct MechanicsBase Eigen::Matrix<double, Eigen::Dynamic, 1> const& eps_prev, Eigen::Matrix<double, Eigen::Dynamic, 1> const& eps, Eigen::Matrix<double, Eigen::Dynamic, 1> const& sigma_prev, - MaterialStateVariables const& material_state_variables) + MaterialStateVariables const& material_state_variables, + double const T, double const p) { // TODO Avoid copies of data: // Using MatrixBase<Derived> not possible because template functions @@ -89,7 +90,8 @@ struct MechanicsBase KelvinVector const sigma_prev_{sigma_prev}; return integrateStress( - t, x, dt, eps_prev_, eps_, sigma_prev_, material_state_variables); + t, x, dt, eps_prev_, eps_, sigma_prev_, material_state_variables, + T, p); } /// Computation of the constitutive relation for specific material model. @@ -107,7 +109,8 @@ struct MechanicsBase KelvinVector const& eps_prev, KelvinVector const& eps, KelvinVector const& sigma_prev, - MaterialStateVariables const& material_state_variables) = 0; + MaterialStateVariables const& material_state_variables, + double const T, double const p) = 0; /// Helper type for providing access to internal variables. struct InternalVariable diff --git a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h index 917a07e1ae9f4429d6ea6f210010a8923fd96470..9ff2d7870058078479ab737a5e02b11ec2741d5c 100644 --- a/ProcessLib/HydroMechanics/HydroMechanicsFEM.h +++ b/ProcessLib/HydroMechanics/HydroMechanicsFEM.h @@ -12,6 +12,7 @@ #include <memory> #include <vector> +#include "MaterialLib/PhysicalConstant.h" #include "MaterialLib/SolidModels/LinearElasticIsotropic.h" #include "MathLib/KelvinVector.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" @@ -76,7 +77,8 @@ struct IntegrationPointData final { auto&& solution = solid_material.integrateStress( t, x_position, dt, eps_prev, eps, sigma_eff_prev, - *material_state_variables); + *material_state_variables, + MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) OGS_FATAL("Computation of local constitutive relation failed."); diff --git a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h index 7108123d3a86a3b326c3ef6b49c14c88280afe28..9b774a8c7f1cb3a00b5f6ccb49b24459eba32ccc 100644 --- a/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h +++ b/ProcessLib/LIE/HydroMechanics/LocalAssembler/HydroMechanicsLocalAssemblerMatrix-impl.h @@ -12,6 +12,7 @@ #include "HydroMechanicsLocalAssemblerMatrix.h" #include "MathLib/KelvinVector.h" +#include "MaterialLib/PhysicalConstant.h" #include "MeshLib/ElementStatus.h" #include "NumLib/Fem/CoordinatesMapping/NaturalNodeCoordinates.h" #include "ProcessLib/Deformation/LinearBMatrix.h" @@ -235,7 +236,7 @@ void HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement, auto&& solution = _ip_data[ip].solid_material.integrateStress( t, x_position, _process_data.dt, eps_prev, eps, sigma_eff_prev, - *state); + *state, MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) OGS_FATAL("Computation of local constitutive relation failed."); @@ -353,7 +354,7 @@ void HydroMechanicsLocalAssemblerMatrix<ShapeFunctionDisplacement, auto&& solution = _ip_data[ip].solid_material.integrateStress( t, x_position, _process_data.dt, eps_prev, eps, sigma_eff_prev, - *state); + *state, MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) OGS_FATAL("Computation of local constitutive relation failed."); diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h index 9ee66925223ae9d62a178fabe181fdf4d9f95752..8cb2e7275c2697c90e3cbc427de91be8ac6c43f3 100644 --- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h +++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrix-impl.h @@ -16,6 +16,7 @@ #include <Eigen/Eigen> +#include "MaterialLib/PhysicalConstant.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" #include "NumLib/Fem/ShapeMatrixPolicy.h" @@ -145,7 +146,8 @@ void SmallDeformationLocalAssemblerMatrix<ShapeFunction, IntegrationMethod, local_x.data(), ShapeFunction::NPOINTS * DisplacementDim); auto&& solution = _ip_data[ip]._solid_material.integrateStress( - t, x_position, _process_data.dt, eps_prev, eps, sigma_prev, *state); + t, x_position, _process_data.dt, eps_prev, eps, sigma_prev, *state, + MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) { diff --git a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h index a335d79cd75a3e33a071ba4d2231761bfdb13e19..ea233855541e1b4b007253e1b44f86bf43eae5f7 100644 --- a/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h +++ b/ProcessLib/LIE/SmallDeformation/LocalAssembler/SmallDeformationLocalAssemblerMatrixNearFracture-impl.h @@ -16,6 +16,8 @@ #include <Eigen/Eigen> +#include "MaterialLib/PhysicalConstant.h" + #include "MathLib/KelvinVector.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" #include "MathLib/Point3d.h" @@ -241,7 +243,8 @@ void SmallDeformationLocalAssemblerMatrixNearFracture< eps.noalias() = B * nodal_total_u; auto&& solution = _ip_data[ip]._solid_material.integrateStress( - t, x_position, _process_data.dt, eps_prev, eps, sigma_prev, *state); + t, x_position, _process_data.dt, eps_prev, eps, sigma_prev, *state, + MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) { diff --git a/ProcessLib/SmallDeformation/SmallDeformationFEM.h b/ProcessLib/SmallDeformation/SmallDeformationFEM.h index 8fee02c9f8c23f135073079adefaceca20e0b222..0502b43d3565dfd239556051f592289cdd368891 100644 --- a/ProcessLib/SmallDeformation/SmallDeformationFEM.h +++ b/ProcessLib/SmallDeformation/SmallDeformationFEM.h @@ -12,6 +12,7 @@ #include <memory> #include <vector> +#include "MaterialLib/PhysicalConstant.h" #include "MaterialLib/SolidModels/LinearElasticIsotropic.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" #include "NumLib/Extrapolation/ExtrapolatableElement.h" @@ -248,7 +249,7 @@ public: auto&& solution = _ip_data[ip].solid_material.integrateStress( t, x_position, _process_data.dt, eps_prev, eps, sigma_prev, - *state); + *state, MaterialLib::PhysicalConstant::RoomTemperature, 0.); if (!solution) OGS_FATAL("Computation of local constitutive relation failed."); diff --git a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM.h b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM.h index d4aa7a2e83c8bed399ccd1f47c8ddd7246874877..d6d4291342fc6d024cfc8798560f07462acd6511 100644 --- a/ProcessLib/ThermoMechanics/ThermoMechanicsFEM.h +++ b/ProcessLib/ThermoMechanics/ThermoMechanicsFEM.h @@ -249,7 +249,8 @@ public: eps_m.noalias() = eps - linear_thermal_strain * Invariants::identity2; auto&& solution = _ip_data[ip].solid_material.integrateStress( - t, x_position, dt, eps_m_prev, eps_m, sigma_prev, *state); + t, x_position, dt, eps_m_prev, eps_m, sigma_prev, *state, + delta_T + _process_data.reference_temperature, 0.); if (!solution) OGS_FATAL("Computation of local constitutive relation failed.");