Commit 6655988e authored by Dmitry Yu. Naumov's avatar Dmitry Yu. Naumov

[PL/RM] Parse micro-porosity, store in data.

parent 213332e4
An optional tag enables double structure porosity model. It requires
micro-saturation property to be available in the material properties.
\copydoc ProcessLib::RichardsMechanics::MicroPorosityParameters::mass_exchange_coefficient
......@@ -17,6 +17,7 @@
#include "MaterialLib/MPL/Medium.h"
#include "MaterialLib/SolidModels/CreateConstitutiveRelation.h"
#include "MaterialLib/SolidModels/MechanicsBase.h"
#include "NumLib/CreateNewtonRaphsonSolverParameters.h"
#include "ParameterLib/Utils.h"
#include "ProcessLib/Output/CreateSecondaryVariables.h"
#include "ProcessLib/Utils/ProcessUtils.h"
......@@ -169,6 +170,20 @@ std::unique_ptr<Process> createRichardsMechanicsProcess(
MathLib::KelvinVector::KelvinVectorDimensions<DisplacementDim>::value,
&mesh);
std::optional<MicroPorosityParameters> micro_porosity_parameters;
if (auto const micro_porosity_config =
//! \ogs_file_param{prj__processes__process__RICHARDS_MECHANICS__micro_porosity}
config.getConfigSubtreeOptional("micro_porosity"))
{
micro_porosity_parameters = MicroPorosityParameters{
NumLib::createNewtonRaphsonSolverParameters(
//! \ogs_file_param{prj__processes__process__RICHARDS_MECHANICS__micro_porosity__nonlinear_solver}
micro_porosity_config->getConfigSubtree("nonlinear_solver")),
//! \ogs_file_param{prj__processes__process__RICHARDS_MECHANICS__micro_porosity__mass_exchange_coefficient}
micro_porosity_config->getConfigParameter<double>(
"mass_exchange_coefficient")};
}
auto const mass_lumping =
//! \ogs_file_param{prj__processes__process__RICHARDS_MECHANICS__mass_lumping}
config.getConfigParameter<bool>("mass_lumping", false);
......@@ -183,6 +198,7 @@ std::unique_ptr<Process> createRichardsMechanicsProcess(
std::move(solid_constitutive_relations),
initial_stress,
specific_body_force,
micro_porosity_parameters,
mass_lumping,
explicit_hm_coupling_in_unsaturated_zone};
......
......@@ -10,14 +10,13 @@
#pragma once
#include "ParameterLib/Parameter.h"
#include <Eigen/Dense>
#include <memory>
#include <utility>
#include <Eigen/Dense>
#include "ComputeMicroPorosity.h"
#include "MaterialLib/MPL/MaterialSpatialDistributionMap.h"
#include "ParameterLib/Parameter.h"
namespace MaterialLib
{
......@@ -55,6 +54,8 @@ struct RichardsMechanicsProcessData
/// A vector of displacement dimension's length.
Eigen::Matrix<double, DisplacementDim, 1> const specific_body_force;
std::optional<MicroPorosityParameters> micro_porosity_parameters;
bool const apply_mass_lumping;
/// If set, improves convergence of the global Newton method in unsaturated
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment