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 31 of file CreateThermoRichardsMechanicsProcess.cpp.

33{
34 std::array const required_medium_properties = {
38 std::array const required_liquid_properties = {
40 std::array const required_solid_properties = {MaterialPropertyLib::density};
41
42 // Thermal properties are not checked because they can be phase property or
43 // medium property (will be enabled later).
44 for (auto const& m : media)
45 {
46 checkRequiredProperties(*m.second, required_medium_properties);
49 required_liquid_properties);
52 required_solid_properties);
53 }
54
56}
void checkRequiredProperties(Component const &c, std::span< PropertyType const > const required_properties)
Definition Component.cpp:51
void checkThermoOsmosisProperties(MaterialPropertyLib::Medium const &medium)

References MaterialPropertyLib::AqueousLiquid, MaterialPropertyLib::biot_coefficient, MaterialPropertyLib::bishops_effective_stress, ProcessLib::checkThermoOsmosisProperties(), 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 58 of file CreateThermoRichardsMechanicsProcess.cpp.

60{
61 DBUG("Associate displacement with process variable '{:s}'.",
62 variable.getName());
63
64 if (variable.getNumberOfGlobalComponents() != dim)
65 {
67 "Number of components of the process variable '{:s}' is different "
68 "from the displacement dimension: got {:d}, expected {:d}",
69 variable.getName(),
70 variable.getNumberOfGlobalComponents(),
71 dim);
72 }
73}
#define OGS_FATAL(...)
Definition Error.h:10
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 77 of file CreateThermoRichardsMechanicsProcess.cpp.

87{
88 auto const coupling_scheme =
90 config.getConfigParameterOptional<std::string>("coupling_scheme");
91 const bool use_monolithic_scheme =
92 !(coupling_scheme && (*coupling_scheme == "staggered"));
93
95
97 auto const pv_config = config.getConfigSubtree("process_variables");
98
99 ProcessVariable* variable_T;
100 ProcessVariable* variable_p;
101 ProcessVariable* variable_u;
102 std::vector<std::vector<std::reference_wrapper<ProcessVariable>>>
103 process_variables;
104 if (use_monolithic_scheme) // monolithic scheme.
105 {
108 auto per_process_variables = findProcessVariables(
109 variables, pv_config,
110 {
111 "temperature",
113 "pressure",
115 "displacement"});
116 variable_T = &per_process_variables[0].get();
117 variable_p = &per_process_variables[1].get();
118 variable_u = &per_process_variables[2].get();
119 process_variables.push_back(std::move(per_process_variables));
120 }
121 else // staggered scheme.
122 {
123 OGS_FATAL(
124 "So far, only the monolithic scheme is implemented for "
125 "THERMO_RICHARDS_MECHANICS");
126 }
127
128 checkProcessVariableComponents(*variable_T, 1);
129 checkProcessVariableComponents(*variable_p, 1);
130 checkProcessVariableComponents(*variable_u, DisplacementDim);
131
133
134 auto solid_constitutive_relations =
135 CreateConstitutiveSetting::createSolidConstitutiveRelations(
136 parameters, local_coordinate_system, materialIDs(mesh), config);
137
138 // Specific body force
139 Eigen::Matrix<double, DisplacementDim, 1> specific_body_force;
140 {
141 std::vector<double> const b =
143 config.getConfigParameter<std::vector<double>>(
144 "specific_body_force");
145 if (b.size() != DisplacementDim)
146 {
147 OGS_FATAL(
148 "The size of the specific body force vector does not match the "
149 "displacement dimension. Vector size is {:d}, displacement "
150 "dimension is {:d}",
151 b.size(), DisplacementDim);
152 }
153
154 std::copy_n(b.data(), b.size(), specific_body_force.data());
155 }
156
157 auto media_map =
159 DBUG(
160 "Check the media properties of ThermoRichardsMechanics process "
161 "...");
162 checkMPLProperties(media);
163 DBUG("Media properties verified.");
164
166 config, parameters, mesh, mandatory_stress0_type);
167
168 bool mass_lumping = false;
169 if (auto const mass_lumping_ptr =
171 config.getConfigParameterOptional<bool>("mass_lumping"))
172 {
173 DBUG("Using mass lumping for the Richards flow equation.");
174 mass_lumping = *mass_lumping_ptr;
175 }
176
177 bool const apply_body_force_for_deformation =
179 config.getConfigParameter<bool>("apply_body_force_for_deformation",
180 true);
181
182 bool const initialize_porosity_from_medium_property =
184 config.getConfigParameter("initialize_porosity_from_medium_property",
185 true);
186
187 auto const is_linear =
189 config.getConfigParameter("linear", false);
190
191 const bool use_TaylorHood_elements = variable_p->getShapeFunctionOrder() !=
192 variable_u->getShapeFunctionOrder();
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:260
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}