50 "Using value {:g} for nonwetting phase residual saturation in "
51 "capillary pressure model.",
63 "The exponent parameter of BrooksCorey capillary pressure "
64 "saturation model, m, must not be smaller than 1");
69 return std::make_unique<BrooksCoreyCapillaryPressureSaturation>(
70 pd, Sr, Sg_r, Smax, m, Pc_max);
95 "Using value {:g} for nonwetting phase residual saturation in "
96 "capillary pressure model.",
106 if (m < 0. || m > 1.0)
109 "The exponent parameter of van Genuchten capillary pressure "
110 "saturation model, m, must be in an interval of [0, 1]");
115 bool has_regularized =
false;
116 if (
auto const has_regularized_conf =
120 DBUG(
"capillary pressure model: {:s}",
121 (*has_regularized_conf) ?
"true" :
"false");
122 has_regularized = *has_regularized_conf;
124 return std::make_unique<VanGenuchtenCapillaryPressureSaturation>(
125 pd, Sr, Sg_r, Smax, m, Pc_max, has_regularized);
134 if (type ==
"BrooksCorey")
138 if (type ==
"vanGenuchten")
153 return std::make_unique<CapillaryPressureSaturationCurve>(
158 "The capillary pressure saturation models {:s} are unavailable.\nThe "
159 "available types are: \n\tBrooksCorey, \n\tvanGenuchten,",
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
T peekConfigParameter(std::string const ¶m) const
std::optional< T > getConfigParameterOptional(std::string const ¶m) const
T getConfigParameter(std::string const ¶m) const
ConfigTree getConfigSubtree(std::string const &root) const
void checkConfigParameter(std::string const ¶m, std::string_view const value) const
Class for strong monotonic curves.
std::unique_ptr< CapillaryPressureSaturation > createCapillaryPressureModel(BaseLib::ConfigTree const &config)
static std::unique_ptr< CapillaryPressureSaturation > createVanGenuchten(BaseLib::ConfigTree const &config)
static std::unique_ptr< CapillaryPressureSaturation > createBrooksCorey(BaseLib::ConfigTree const &config)
std::unique_ptr< CurveType > createPiecewiseLinearCurve(BaseLib::ConfigTree const &config)