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 13 of file DarcyLawData.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 BishopsModel.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);
48 required_liquid_properties);
51 required_solid_properties);
52 }
53}
void checkRequiredProperties(Component const &c, std::span< PropertyType const > const required_properties)
Definition Component.cpp:51

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

Referenced by createThermoRichardsMechanicsProcessStage2().

◆ checkProcessVariableComponents()

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

Definition at line 55 of file CreateThermoRichardsMechanicsProcess.cpp.

57{
58 DBUG("Associate displacement with process variable '{:s}'.",
59 variable.getName());
60
61 if (variable.getNumberOfGlobalComponents() != dim)
62 {
64 "Number of components of the process variable '{:s}' is different "
65 "from the displacement dimension: got {:d}, expected {:d}",
66 variable.getName(),
67 variable.getNumberOfGlobalComponents(),
68 dim);
69 }
70}
#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 219 of file CreateThermoRichardsMechanicsProcess.cpp.

230{
232 config.checkConfigParameter("type", "THERMO_RICHARDS_MECHANICS");
233 DBUG("Create ThermoRichardsMechanicsProcess.");
234
235 auto const subtype =
237 config.getConfigParameter<std::string>("subtype",
238 "Stress_StrainTemperature");
239 INFO("TRM process subtype is '{}'", subtype);
240
241 if (subtype == "Stress_StrainTemperature")
242 {
243 bool const mandatory_stress0_type = false;
245 DisplacementDim,
247 DisplacementDim>,
249 DisplacementDim>>(name, mesh, std::move(jacobian_assembler),
250 variables, parameters,
251 local_coordinate_system, integration_order,
252 config, media, mandatory_stress0_type);
253 }
254
255 if (subtype == "StressSaturation_StrainPressureTemperature")
256 {
257#ifdef OGS_USE_MFRONT
258 bool const mandatory_stress0_type = true;
260 DisplacementDim,
261 ConstitutiveStressSaturation_StrainPressureTemperature::
262 ConstitutiveTraits<DisplacementDim>,
263 ConstitutiveStressSaturation_StrainPressureTemperature::
264 CreateConstitutiveSetting<DisplacementDim>>(
265 name, mesh, std::move(jacobian_assembler), variables, parameters,
266 local_coordinate_system, integration_order, config, media,
267 mandatory_stress0_type);
268#else
269 OGS_FATAL(
270 "TRM process subtype 'StressSaturation_StrainPressureTemperature' "
271 "is not supported, because OGS has not been built with MFront.");
272#endif
273 }
274
275 OGS_FATAL("Unknown TRM process subtype '{}'.", subtype);
276}
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 74 of file CreateThermoRichardsMechanicsProcess.cpp.

84{
85 auto const coupling_scheme =
87 config.getConfigParameterOptional<std::string>("coupling_scheme");
88 const bool use_monolithic_scheme =
89 !(coupling_scheme && (*coupling_scheme == "staggered"));
90
92
94 auto const pv_config = config.getConfigSubtree("process_variables");
95
96 ProcessVariable* variable_T;
97 ProcessVariable* variable_p;
98 ProcessVariable* variable_u;
99 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
100 process_variables;
101 if (use_monolithic_scheme) // monolithic scheme.
102 {
105 auto per_process_variables = findProcessVariables(
106 variables, pv_config,
107 {
108 "temperature",
110 "pressure",
112 "displacement"});
113 variable_T = &per_process_variables[0].get();
114 variable_p = &per_process_variables[1].get();
115 variable_u = &per_process_variables[2].get();
116 process_variables.push_back(std::move(per_process_variables));
117 }
118 else // staggered scheme.
119 {
120 OGS_FATAL(
121 "So far, only the monolithic scheme is implemented for "
122 "THERMO_RICHARDS_MECHANICS");
123 }
124
125 checkProcessVariableComponents(*variable_T, 1);
126 checkProcessVariableComponents(*variable_p, 1);
127 checkProcessVariableComponents(*variable_u, DisplacementDim);
128
130
131 auto solid_constitutive_relations =
132 CreateConstitutiveSetting::createSolidConstitutiveRelations(
133 parameters, local_coordinate_system, materialIDs(mesh), config);
134
135 // Specific body force
136 Eigen::Matrix<double, DisplacementDim, 1> specific_body_force;
137 {
138 std::vector<double> const b =
140 config.getConfigParameter<std::vector<double>>(
141 "specific_body_force");
142 if (b.size() != DisplacementDim)
143 {
144 OGS_FATAL(
145 "The size of the specific body force vector does not match the "
146 "displacement dimension. Vector size is {:d}, displacement "
147 "dimension is {:d}",
148 b.size(), DisplacementDim);
149 }
150
151 std::copy_n(b.data(), b.size(), specific_body_force.data());
152 }
153
154 auto media_map =
156 DBUG(
157 "Check the media properties of ThermoRichardsMechanics process "
158 "...");
159 checkMPLProperties(media);
160 DBUG("Media properties verified.");
161
163 config, parameters, mesh, mandatory_stress0_type);
164
165 bool mass_lumping = false;
166 if (auto const mass_lumping_ptr =
168 config.getConfigParameterOptional<bool>("mass_lumping"))
169 {
170 DBUG("Using mass lumping for the Richards flow equation.");
171 mass_lumping = *mass_lumping_ptr;
172 }
173
174 bool const apply_body_force_for_deformation =
176 config.getConfigParameter<bool>("apply_body_force_for_deformation",
177 true);
178
179 bool const initialize_porosity_from_medium_property =
181 config.getConfigParameter("initialize_porosity_from_medium_property",
182 true);
183
184 auto const is_linear =
186 config.getConfigParameter("linear", false);
187
188 const bool use_TaylorHood_elements =
189 variable_p->getShapeFunctionOrder() !=
190 variable_u->getShapeFunctionOrder()
191 ? true
192 : false;
193
195 process_data{materialIDs(mesh),
196 std::move(media_map),
197 std::move(solid_constitutive_relations),
198 std::move(initial_stress),
199 specific_body_force,
200 mass_lumping,
201 use_TaylorHood_elements,
202 apply_body_force_for_deformation,
204 initialize_porosity_from_medium_property}};
205
206 SecondaryVariableCollection secondary_variables;
207
208 ProcessLib::createSecondaryVariables(config, secondary_variables);
209
210 return std::make_unique<
212 name, mesh, std::move(jacobian_assembler), parameters,
213 integration_order, std::move(process_variables),
214 std::move(process_data), std::move(secondary_variables),
215 use_monolithic_scheme, is_linear);
216}
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 22 of file ThermoRichardsMechanics/ConstitutiveCommon/Base.h.

23{
25}
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 15 of file ThermoRichardsMechanics/ConstitutiveCommon/Base.h.

16{
18}
Eigen::Vector< double, DisplacementDim > GlobalDimVector

References ProcessLib::ConstitutiveRelations::nan.

◆ ioName() [1/2]

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

Definition at line 16 of file DarcyLawData.h.

17{
18 return "velocity";
19}

◆ ioName() [2/2]

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

Definition at line 16 of file LiquidViscosityData.h.

17{
18 return "viscosity";
19}