OGS
ProcessLib::ThermoRichardsMechanics Namespace Reference

Namespaces

namespace  ConstitutiveStress_StrainTemperature
namespace  ConstitutiveStressSaturation_StrainPressureTemperature

Classes

struct  BiotModel
struct  BishopsData
struct  BishopsModel
struct  BishopsPrevModel
struct  CapillaryPressureData
struct  DarcyLawModel
struct  EqPData
struct  EqPModel
struct  EqTData
struct  EqTModel
struct  EquivalentPlasticStrainData
struct  FluidThermalExpansionData
struct  FluidThermalExpansionModel
struct  GravityData
struct  GravityModel
struct  IntegrationPointData
struct  LiquidDensityData
struct  LiquidDensityModel
struct  LiquidViscosityModel
struct  LocalAssemblerInterface
class  MaterialStateData
struct  MediaData
struct  PermeabilityData
struct  PermeabilityModel
struct  PorosityData
struct  PorosityModel
struct  SaturationData
struct  SaturationDataDeriv
struct  SaturationModel
struct  SolidCompressibilityData
struct  SolidDensityData
struct  SolidDensityModel
struct  SolidMechanicsDataStateless
struct  SolidThermalExpansionData
struct  SolidThermalExpansionModel
struct  TemperatureData
struct  ThermoOsmosisData
struct  ThermoOsmosisModel
class  ThermoRichardsMechanicsLocalAssembler
struct  ThermoRichardsMechanicsLocalAssembler3Args
class  ThermoRichardsMechanicsProcess
 Global assembler for the monolithic scheme of the non-isothermal Richards flow coupled with mechanics. More...
struct  ThermoRichardsMechanicsProcessData
struct  TotalStressData
struct  TransportPorosityData
struct  TRMHeatStorageAndFluxData
struct  TRMHeatStorageAndFluxModel
struct  TRMStorageData
struct  TRMStorageModel
struct  TRMVaporDiffusionData
struct  TRMVaporDiffusionModel

Typedefs

using BiotData = BaseLib::StrongType<double, struct BiotTag>
template<int DisplacementDim>
using DarcyLawData
using LiquidViscosityData
using InitializePorosityFromMediumProperty
 A type helping to avoid confusion of different boolean values.

Functions

template<int D>
constexpr GlobalDimVector< D > DVnan ()
 Used to set a D dimensional vector to all not-a-number.
template<int D>
constexpr GlobalDimMatrix< D > DMnan ()
 Used to set a D x D matrix to all not-a-number.
static void bishopsModelEvalImpl (SpaceTimeData const &x_t, MediaData const &media_data, SaturationData const &S_L_data, BishopsData &out)
constexpr std::string_view ioName (struct DarcyLawDataTag *)
constexpr std::string_view ioName (struct LiquidViscosityDataTag *)
template<int DisplacementDim, typename ConstitutiveTraits>
void createLocalAssemblers (std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface< DisplacementDim, ConstitutiveTraits > > > &local_assemblers, NumLib::IntegrationOrder const integration_order, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< DisplacementDim, ConstitutiveTraits > &process_data)
template void createLocalAssemblers< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > (std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > > > &local_assemblers, NumLib::IntegrationOrder const integration_order, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > &process_data)
template void createLocalAssemblers< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > (std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > > > &local_assemblers, NumLib::IntegrationOrder const integration_order, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > &process_data)
template void createLocalAssemblers< 2, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 2 > > (std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface< 2, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 2 > > > > &local_assemblers, NumLib::IntegrationOrder const integration_order, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< 2, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 2 > > &process_data)
template void createLocalAssemblers< 3, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 3 > > (std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface< 3, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 3 > > > > &local_assemblers, NumLib::IntegrationOrder const integration_order, bool const is_axially_symmetric, ThermoRichardsMechanicsProcessData< 3, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 3 > > &process_data)
void checkMPLProperties (std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
void checkProcessVariableComponents (ProcessVariable const &variable, const int dim)
template<int DisplacementDim, typename ConstitutiveTraits, typename CreateConstitutiveSetting>
std::unique_ptr< ProcesscreateThermoRichardsMechanicsProcessStage2 (std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media, bool const mandatory_stress0_type)
template<int DisplacementDim>
std::unique_ptr< ProcesscreateThermoRichardsMechanicsProcess (std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< ProcesscreateThermoRichardsMechanicsProcess< 2 > (std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
template std::unique_ptr< ProcesscreateThermoRichardsMechanicsProcess< 3 > (std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)

Typedef Documentation

◆ BiotData

◆ DarcyLawData

template<int DisplacementDim>
using ProcessLib::ThermoRichardsMechanics::DarcyLawData
Initial value:

Definition at line 16 of file DarcyLaw.h.

◆ InitializePorosityFromMediumProperty

◆ LiquidViscosityData

Function Documentation

◆ bishopsModelEvalImpl()

void ProcessLib::ThermoRichardsMechanics::bishopsModelEvalImpl ( SpaceTimeData const & x_t,
MediaData const & media_data,
SaturationData const & S_L_data,
BishopsData & out )
static

Definition at line 8 of file ThermoRichardsMechanics/ConstitutiveCommon/Bishops.cpp.

12{
13 namespace MPL = MaterialPropertyLib;
14 MPL::VariableArray variables;
15 variables.liquid_saturation = S_L_data.S_L;
16
17 auto const& medium = media_data.medium;
18
20 .template value<double>(variables, x_t.x, x_t.t, x_t.dt);
21
23 .template dValue<double>(
24 variables, MPL::Variable::liquid_saturation, x_t.x,
25 x_t.t, x_t.dt);
26}

References MaterialPropertyLib::bishops_effective_stress, ProcessLib::ThermoRichardsMechanics::BishopsData::chi_S_L, ProcessLib::ThermoRichardsMechanics::BishopsData::dchi_dS_L, ProcessLib::ConstitutiveRelations::SpaceTimeData::dt, MaterialPropertyLib::liquid_saturation, MaterialPropertyLib::VariableArray::liquid_saturation, ProcessLib::ThermoRichardsMechanics::MediaData::medium, ProcessLib::ThermoRichardsMechanics::SaturationData::S_L, ProcessLib::ConstitutiveRelations::SpaceTimeData::t, and ProcessLib::ConstitutiveRelations::SpaceTimeData::x.

Referenced by ProcessLib::ThermoRichardsMechanics::BishopsModel::eval(), and ProcessLib::ThermoRichardsMechanics::BishopsPrevModel::eval().

◆ checkMPLProperties()

void ProcessLib::ThermoRichardsMechanics::checkMPLProperties ( std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media)

Definition at line 30 of file CreateThermoRichardsMechanicsProcess.cpp.

32{
33 std::array const required_medium_properties = {
37 std::array const required_liquid_properties = {
39 std::array const required_solid_properties = {MaterialPropertyLib::density};
40
41 // Thermal properties are not checked because they can be phase property or
42 // medium property (will be enabled later).
43 for (auto const& m : media)
44 {
45 checkRequiredProperties(*m.second, required_medium_properties);
46 checkRequiredProperties(m.second->phase("AqueousLiquid"),
47 required_liquid_properties);
48 checkRequiredProperties(m.second->phase("Solid"),
49 required_solid_properties);
50 }
51}
void checkRequiredProperties(Component const &c, std::span< PropertyType const > const required_properties)
Definition Component.cpp:51

References MaterialPropertyLib::biot_coefficient, MaterialPropertyLib::bishops_effective_stress, MaterialPropertyLib::density, MaterialPropertyLib::porosity, MaterialPropertyLib::relative_permeability, and MaterialPropertyLib::viscosity.

Referenced by createThermoRichardsMechanicsProcessStage2().

◆ checkProcessVariableComponents()

void ProcessLib::ThermoRichardsMechanics::checkProcessVariableComponents ( ProcessVariable const & variable,
const int dim )

Definition at line 53 of file CreateThermoRichardsMechanicsProcess.cpp.

55{
56 DBUG("Associate displacement with process variable '{:s}'.",
57 variable.getName());
58
59 if (variable.getNumberOfGlobalComponents() != dim)
60 {
62 "Number of components of the process variable '{:s}' is different "
63 "from the displacement dimension: got {:d}, expected {:d}",
64 variable.getName(),
65 variable.getNumberOfGlobalComponents(),
66 dim);
67 }
68}
#define OGS_FATAL(...)
Definition Error.h:19
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22

References DBUG(), ProcessLib::ProcessVariable::getName(), ProcessLib::ProcessVariable::getNumberOfGlobalComponents(), and OGS_FATAL.

Referenced by createThermoRichardsMechanicsProcessStage2().

◆ createLocalAssemblers()

template<int DisplacementDim, typename ConstitutiveTraits>
void ProcessLib::ThermoRichardsMechanics::createLocalAssemblers ( std::vector< MeshLib::Element * > const & mesh_elements,
NumLib::LocalToGlobalIndexMap const & dof_table,
std::vector< std::unique_ptr< LocalAssemblerInterface< DisplacementDim, ConstitutiveTraits > > > & local_assemblers,
NumLib::IntegrationOrder const integration_order,
bool const is_axially_symmetric,
ThermoRichardsMechanicsProcessData< DisplacementDim, ConstitutiveTraits > & process_data )

Definition at line 28 of file CreateThermoRichardsMechanicsLocalAssemblers.cpp.

38{
40 DisplacementDim,
42 ConstitutiveTraits>::template LocalAssemblerImplementation>(
43 mesh_elements, dof_table, local_assemblers, integration_order,
44 is_axially_symmetric, process_data);
45}
void createLocalAssemblersHM(std::vector< MeshLib::Element * > const &mesh_elements, NumLib::LocalToGlobalIndexMap const &dof_table, std::vector< std::unique_ptr< LocalAssemblerInterface > > &local_assemblers, ProviderOrOrder const &provider_or_order, ExtraCtorArgs &&... extra_ctor_args)

References ProcessLib::createLocalAssemblersHM().

Referenced by createLocalAssemblers< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > >(), createLocalAssemblers< 2, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 2 > >(), createLocalAssemblers< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > >(), createLocalAssemblers< 3, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 3 > >(), and ProcessLib::ThermoRichardsMechanics::ThermoRichardsMechanicsProcess< DisplacementDim, ConstitutiveTraits >::initializeConcreteProcess().

◆ createLocalAssemblers< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > >()

template void ProcessLib::ThermoRichardsMechanics::createLocalAssemblers< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > ( std::vector< MeshLib::Element * > const & mesh_elements,
NumLib::LocalToGlobalIndexMap const & dof_table,
std::vector< std::unique_ptr< LocalAssemblerInterface< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > > > & local_assemblers,
NumLib::IntegrationOrder const integration_order,
bool const is_axially_symmetric,
ThermoRichardsMechanicsProcessData< 2, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 2 > > & process_data )

◆ createLocalAssemblers< 2, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 2 > >()

◆ createLocalAssemblers< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > >()

template void ProcessLib::ThermoRichardsMechanics::createLocalAssemblers< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > ( std::vector< MeshLib::Element * > const & mesh_elements,
NumLib::LocalToGlobalIndexMap const & dof_table,
std::vector< std::unique_ptr< LocalAssemblerInterface< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > > > & local_assemblers,
NumLib::IntegrationOrder const integration_order,
bool const is_axially_symmetric,
ThermoRichardsMechanicsProcessData< 3, ConstitutiveStress_StrainTemperature::ConstitutiveTraits< 3 > > & process_data )

◆ createLocalAssemblers< 3, ConstitutiveStressSaturation_StrainPressureTemperature::ConstitutiveTraits< 3 > >()

◆ createThermoRichardsMechanicsProcess()

template<int DisplacementDim>
std::unique_ptr< Process > ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcess ( std::string const & name,
MeshLib::Mesh & mesh,
std::unique_ptr< ProcessLib::AbstractJacobianAssembler > && jacobian_assembler,
std::vector< ProcessVariable > const & variables,
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
std::optional< ParameterLib::CoordinateSystem > const & local_coordinate_system,
unsigned const integration_order,
BaseLib::ConfigTree const & config,
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media )
Input File Parameter
prj__processes__process__type
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__subtype

Definition at line 217 of file CreateThermoRichardsMechanicsProcess.cpp.

228{
230 config.checkConfigParameter("type", "THERMO_RICHARDS_MECHANICS");
231 DBUG("Create ThermoRichardsMechanicsProcess.");
232
233 auto const subtype =
235 config.getConfigParameter<std::string>("subtype",
236 "Stress_StrainTemperature");
237 INFO("TRM process subtype is '{}'", subtype);
238
239 if (subtype == "Stress_StrainTemperature")
240 {
241 bool const mandatory_stress0_type = false;
243 DisplacementDim,
245 DisplacementDim>,
247 DisplacementDim>>(name, mesh, std::move(jacobian_assembler),
248 variables, parameters,
249 local_coordinate_system, integration_order,
250 config, media, mandatory_stress0_type);
251 }
252
253 if (subtype == "StressSaturation_StrainPressureTemperature")
254 {
255#ifdef OGS_USE_MFRONT
256 bool const mandatory_stress0_type = true;
258 DisplacementDim,
259 ConstitutiveStressSaturation_StrainPressureTemperature::
260 ConstitutiveTraits<DisplacementDim>,
261 ConstitutiveStressSaturation_StrainPressureTemperature::
262 CreateConstitutiveSetting<DisplacementDim>>(
263 name, mesh, std::move(jacobian_assembler), variables, parameters,
264 local_coordinate_system, integration_order, config, media,
265 mandatory_stress0_type);
266#else
267 OGS_FATAL(
268 "TRM process subtype 'StressSaturation_StrainPressureTemperature' "
269 "is not supported, because OGS has not been built with MFront.");
270#endif
271 }
272
273 OGS_FATAL("Unknown TRM process subtype '{}'.", subtype);
274}
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:28
std::unique_ptr< Process > createThermoRichardsMechanicsProcessStage2(std::string const &name, MeshLib::Mesh &mesh, std::unique_ptr< ProcessLib::AbstractJacobianAssembler > &&jacobian_assembler, std::vector< ProcessVariable > const &variables, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, std::optional< ParameterLib::CoordinateSystem > const &local_coordinate_system, unsigned const integration_order, BaseLib::ConfigTree const &config, std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media, bool const mandatory_stress0_type)

References BaseLib::ConfigTree::checkConfigParameter(), createThermoRichardsMechanicsProcessStage2(), DBUG(), BaseLib::ConfigTree::getConfigParameter(), INFO(), and OGS_FATAL.

◆ createThermoRichardsMechanicsProcess< 2 >()

template std::unique_ptr< Process > ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcess< 2 > ( std::string const & name,
MeshLib::Mesh & mesh,
std::unique_ptr< ProcessLib::AbstractJacobianAssembler > && jacobian_assembler,
std::vector< ProcessVariable > const & variables,
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
std::optional< ParameterLib::CoordinateSystem > const & local_coordinate_system,
unsigned const integration_order,
BaseLib::ConfigTree const & config,
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media )

◆ createThermoRichardsMechanicsProcess< 3 >()

template std::unique_ptr< Process > ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcess< 3 > ( std::string const & name,
MeshLib::Mesh & mesh,
std::unique_ptr< ProcessLib::AbstractJacobianAssembler > && jacobian_assembler,
std::vector< ProcessVariable > const & variables,
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
std::optional< ParameterLib::CoordinateSystem > const & local_coordinate_system,
unsigned const integration_order,
BaseLib::ConfigTree const & config,
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media )

◆ createThermoRichardsMechanicsProcessStage2()

template<int DisplacementDim, typename ConstitutiveTraits, typename CreateConstitutiveSetting>
std::unique_ptr< Process > ProcessLib::ThermoRichardsMechanics::createThermoRichardsMechanicsProcessStage2 ( std::string const & name,
MeshLib::Mesh & mesh,
std::unique_ptr< ProcessLib::AbstractJacobianAssembler > && jacobian_assembler,
std::vector< ProcessVariable > const & variables,
std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
std::optional< ParameterLib::CoordinateSystem > const & local_coordinate_system,
unsigned const integration_order,
BaseLib::ConfigTree const & config,
std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const & media,
bool const mandatory_stress0_type )
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__coupling_scheme

Process Variables

Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__process_variables

Primary process variables as they appear in the global component vector:

Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__process_variables__temperature
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__process_variables__pressure
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__process_variables__displacement

Process Parameters

Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__specific_body_force
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__mass_lumping
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__apply_body_force_for_deformation
Input File Parameter
prj__processes__process__THERMO_RICHARDS_MECHANICS__initialize_porosity_from_medium_property
Input File Parameter
prj__processes__process__linear

Definition at line 72 of file CreateThermoRichardsMechanicsProcess.cpp.

82{
83 auto const coupling_scheme =
85 config.getConfigParameterOptional<std::string>("coupling_scheme");
86 const bool use_monolithic_scheme =
87 !(coupling_scheme && (*coupling_scheme == "staggered"));
88
90
92 auto const pv_config = config.getConfigSubtree("process_variables");
93
94 ProcessVariable* variable_T;
95 ProcessVariable* variable_p;
96 ProcessVariable* variable_u;
97 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
98 process_variables;
99 if (use_monolithic_scheme) // monolithic scheme.
100 {
103 auto per_process_variables = findProcessVariables(
104 variables, pv_config,
105 {
106 "temperature",
108 "pressure",
110 "displacement"});
111 variable_T = &per_process_variables[0].get();
112 variable_p = &per_process_variables[1].get();
113 variable_u = &per_process_variables[2].get();
114 process_variables.push_back(std::move(per_process_variables));
115 }
116 else // staggered scheme.
117 {
118 OGS_FATAL(
119 "So far, only the monolithic scheme is implemented for "
120 "THERMO_RICHARDS_MECHANICS");
121 }
122
123 checkProcessVariableComponents(*variable_T, 1);
124 checkProcessVariableComponents(*variable_p, 1);
125 checkProcessVariableComponents(*variable_u, DisplacementDim);
126
128
129 auto solid_constitutive_relations =
130 CreateConstitutiveSetting::createSolidConstitutiveRelations(
131 parameters, local_coordinate_system, materialIDs(mesh), config);
132
133 // Specific body force
134 Eigen::Matrix<double, DisplacementDim, 1> specific_body_force;
135 {
136 std::vector<double> const b =
138 config.getConfigParameter<std::vector<double>>(
139 "specific_body_force");
140 if (b.size() != DisplacementDim)
141 {
142 OGS_FATAL(
143 "The size of the specific body force vector does not match the "
144 "displacement dimension. Vector size is {:d}, displacement "
145 "dimension is {:d}",
146 b.size(), DisplacementDim);
147 }
148
149 std::copy_n(b.data(), b.size(), specific_body_force.data());
150 }
151
152 auto media_map =
154 DBUG(
155 "Check the media properties of ThermoRichardsMechanics process "
156 "...");
157 checkMPLProperties(media);
158 DBUG("Media properties verified.");
159
161 config, parameters, mesh, mandatory_stress0_type);
162
163 bool mass_lumping = false;
164 if (auto const mass_lumping_ptr =
166 config.getConfigParameterOptional<bool>("mass_lumping"))
167 {
168 DBUG("Using mass lumping for the Richards flow equation.");
169 mass_lumping = *mass_lumping_ptr;
170 }
171
172 bool const apply_body_force_for_deformation =
174 config.getConfigParameter<bool>("apply_body_force_for_deformation",
175 true);
176
177 bool const initialize_porosity_from_medium_property =
179 config.getConfigParameter("initialize_porosity_from_medium_property",
180 true);
181
182 auto const is_linear =
184 config.getConfigParameter("linear", false);
185
186 const bool use_TaylorHood_elements =
187 variable_p->getShapeFunctionOrder() !=
188 variable_u->getShapeFunctionOrder()
189 ? true
190 : false;
191
193 process_data{materialIDs(mesh),
194 std::move(media_map),
195 std::move(solid_constitutive_relations),
196 std::move(initial_stress),
197 specific_body_force,
198 mass_lumping,
199 use_TaylorHood_elements,
200 apply_body_force_for_deformation,
202 initialize_porosity_from_medium_property}};
203
204 SecondaryVariableCollection secondary_variables;
205
206 ProcessLib::createSecondaryVariables(config, secondary_variables);
207
208 return std::make_unique<
210 name, mesh, std::move(jacobian_assembler), parameters,
211 integration_order, std::move(process_variables),
212 std::move(process_data), std::move(secondary_variables),
213 use_monolithic_scheme, is_linear);
214}
unsigned getShapeFunctionOrder() const
Global assembler for the monolithic scheme of the non-isothermal Richards flow coupled with mechanics...
MaterialSpatialDistributionMap createMaterialSpatialDistributionMap(std::map< int, std::shared_ptr< Medium > > const &media, MeshLib::Mesh const &mesh)
PropertyVector< int > const * materialIDs(Mesh const &mesh)
Definition Mesh.cpp:258
void checkMPLProperties(std::map< int, std::shared_ptr< MaterialPropertyLib::Medium > > const &media)
void checkProcessVariableComponents(ProcessVariable const &variable, const int dim)
BaseLib::StrongType< bool, struct InitializePorosityFromMediumPropertyTag > InitializePorosityFromMediumProperty
A type helping to avoid confusion of different boolean values.
std::vector< std::reference_wrapper< ProcessVariable > > findProcessVariables(std::vector< ProcessVariable > const &variables, BaseLib::ConfigTree const &pv_config, std::initializer_list< std::string > tags)
InitialStress createInitialStress(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, MeshLib::Mesh const &mesh, bool const mandatory_stress_type)
void createSecondaryVariables(BaseLib::ConfigTree const &config, SecondaryVariableCollection &secondary_variables)

References checkMPLProperties(), checkProcessVariableComponents(), ProcessLib::createInitialStress(), MaterialPropertyLib::createMaterialSpatialDistributionMap(), ProcessLib::createSecondaryVariables(), DBUG(), ProcessLib::findProcessVariables(), BaseLib::ConfigTree::getConfigParameter(), BaseLib::ConfigTree::getConfigParameterOptional(), BaseLib::ConfigTree::getConfigSubtree(), ProcessLib::ProcessVariable::getShapeFunctionOrder(), and OGS_FATAL.

Referenced by createThermoRichardsMechanicsProcess().

◆ DMnan()

template<int D>
GlobalDimMatrix< D > ProcessLib::ThermoRichardsMechanics::DMnan ( )
constexpr

Used to set a D x D matrix to all not-a-number.

Definition at line 26 of file ThermoRichardsMechanics/ConstitutiveCommon/Base.h.

27{
29}
Eigen::Matrix< double, DisplacementDim, DisplacementDim, Eigen::RowMajor > GlobalDimMatrix
static constexpr double nan
Convenience alias for not a number.

References ProcessLib::ConstitutiveRelations::nan.

◆ DVnan()

template<int D>
GlobalDimVector< D > ProcessLib::ThermoRichardsMechanics::DVnan ( )
constexpr

Used to set a D dimensional vector to all not-a-number.

Definition at line 19 of file ThermoRichardsMechanics/ConstitutiveCommon/Base.h.

20{
22}
Eigen::Vector< double, DisplacementDim > GlobalDimVector

References ProcessLib::ConstitutiveRelations::nan.

◆ ioName() [1/2]

std::string_view ProcessLib::ThermoRichardsMechanics::ioName ( struct DarcyLawDataTag * )
constexpr

Definition at line 19 of file DarcyLaw.h.

20{
21 return "velocity";
22}

◆ ioName() [2/2]

std::string_view ProcessLib::ThermoRichardsMechanics::ioName ( struct LiquidViscosityDataTag * )
constexpr

Definition at line 15 of file LiquidViscosity.h.

16{
17 return "viscosity";
18}