Skip to content
Snippets Groups Projects
Commit b2208f32 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[PL/THM] Add initial_stress input.

parent 5c2ae1c3
No related branches found
No related tags found
No related merge requests found
\copydoc ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsProcessData::initial_stress
......@@ -158,10 +158,19 @@ std::unique_ptr<Process> createThermoHydroMechanicsProcess(
auto media_map =
MaterialPropertyLib::createMaterialSpatialDistributionMap(media, mesh);
// Initial stress conditions
auto const initial_stress = ParameterLib::findOptionalTagParameter<double>(
//! \ogs_file_param_special{prj__processes__process__THERMO_HYDRO_MECHANICS__initial_stress}
config, "initial_stress", parameters,
// Symmetric tensor size, 4 or 6, not a Kelvin vector.
MathLib::KelvinVector::kelvin_vector_dimensions(DisplacementDim),
&mesh);
ThermoHydroMechanicsProcessData<DisplacementDim> process_data{
materialIDs(mesh),
std::move(media_map),
std::move(solid_constitutive_relations),
initial_stress,
reference_temperature,
specific_body_force};
......
......@@ -107,7 +107,27 @@ public:
for (unsigned ip = 0; ip < n_integration_points; ip++)
{
_ip_data[ip].pushBackState();
auto& ip_data = _ip_data[ip];
/// Set initial stress from parameter.
if (_process_data.initial_stress != nullptr)
{
ParameterLib::SpatialPosition const x_position{
std::nullopt, _element.getID(), ip,
MathLib::Point3d(NumLib::interpolateCoordinates<
ShapeFunctionDisplacement,
ShapeMatricesTypeDisplacement>(
_element, ip_data.N_u))};
ip_data.sigma_eff =
MathLib::KelvinVector::symmetricTensorToKelvinVector<
DisplacementDim>((*_process_data.initial_stress)(
std::numeric_limits<
double>::quiet_NaN() /* time independent */,
x_position));
}
ip_data.pushBackState();
}
}
......
......@@ -45,6 +45,11 @@ struct ThermoHydroMechanicsProcessData
int,
std::unique_ptr<MaterialLib::Solids::MechanicsBase<DisplacementDim>>>
solid_materials;
/// Optional, initial stress field. A symmetric tensor, short vector
/// representation of length 4 or 6, ParameterLib::Parameter<double>.
ParameterLib::Parameter<double> const* const initial_stress;
ParameterLib::Parameter<double> const& reference_temperature;
/// Specific body forces applied to solid and fluid.
/// It is usually used to apply gravitational forces.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment