Skip to content
Snippets Groups Projects
Unverified Commit 408b28d8 authored by Tom Fischer's avatar Tom Fischer Committed by GitHub
Browse files

Merge pull request #2829 from endJunction/MplPorosityMinMaxLimits

[MPL] User-provided limits for porosity.
parents 81ad41e2 f9758522
No related branches found
No related tags found
No related merge requests found
\copydoc MaterialPropertyLib::PorosityFromMassBalance::_phi_max
\copydoc MaterialPropertyLib::PorosityFromMassBalance::_phi_min
......@@ -29,6 +29,13 @@ std::unique_ptr<PorosityFromMassBalance> createPorosityFromMassBalance(
auto const& initial_porosity = ParameterLib::findParameter<double>(
parameter_name, parameters, 0, nullptr);
return std::make_unique<PorosityFromMassBalance>(initial_porosity);
//! \ogs_file_param{properties__property__PorosityFromMassBalance__minimal_porosity}
auto const& phi_min = config.getConfigParameter<double>("minimal_porosity");
//! \ogs_file_param{properties__property__PorosityFromMassBalance__maximal_porosity}
auto const& phi_max = config.getConfigParameter<double>("maximal_porosity");
return std::make_unique<PorosityFromMassBalance>(
initial_porosity, phi_min, phi_max);
}
} // namespace MaterialPropertyLib
......@@ -59,7 +59,7 @@ PropertyDataType PorosityFromMassBalance::value(
variable_array[static_cast<int>(Variable::porosity)]);
double const w = dt * (e_dot + p_eff_dot / K_SR);
return std::clamp((phi + alpha_b * w) / (1 + w), 0., 1.);
return std::clamp((phi + alpha_b * w) / (1 + w), _phi_min, _phi_max);
}
PropertyDataType PorosityFromMassBalance::dValue(
......
......@@ -29,11 +29,14 @@ private:
/// Parameter, which is used by FEM to set the initial porosity value.
ParameterLib::Parameter<double> const& _phi0;
double const _phi_min; //< Lower limit for the porosity.
double const _phi_max; //< Upper limit for the porosity.
public:
PorosityFromMassBalance(
ParameterLib::Parameter<double> const& initial_porosity)
: _phi0(initial_porosity)
ParameterLib::Parameter<double> const& initial_porosity,
double const phi_min, double const phi_max)
: _phi0(initial_porosity), _phi_min(phi_min), _phi_max(phi_max)
{
}
......
......@@ -79,6 +79,8 @@
<name>porosity</name>
<type>PorosityFromMassBalance</type>
<initial_porosity>phi0</initial_porosity>
<minimal_porosity>0</minimal_porosity>
<maximal_porosity>1</maximal_porosity>
</property>
<property>
<name>permeability</name>
......
......@@ -77,6 +77,8 @@
<name>porosity</name>
<type>PorosityFromMassBalance</type>
<initial_porosity>phi0</initial_porosity>
<minimal_porosity>0</minimal_porosity>
<maximal_porosity>1</maximal_porosity>
</property>
<property>
<name>permeability</name>
......
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