OGS
CapillaryPressureVanGenuchten.h
Go to the documentation of this file.
1
12#pragma once
13
15
16namespace MaterialPropertyLib
17{
18class Medium;
19class Phase;
20class Component;
21
43{
44public:
46 double const residual_liquid_saturation,
47 double const residual_gas_saturation,
48 double const exponent,
49 double const p_b,
50 double const maximum_capillary_pressure);
51
52 void checkScale() const override
53 {
54 if (!std::holds_alternative<Medium*>(scale_))
55 {
57 "The property 'CapillaryPressureVanGenuchten' is implemented "
58 "on the 'media' scale only.");
59 }
60 }
61
63 PropertyDataType value(VariableArray const& variable_array,
65 double const t,
66 double const dt) const override;
67
69 PropertyDataType dValue(VariableArray const& variable_array,
70 Variable const variable,
72 double const t,
73 double const dt) const override;
74
75private:
76 double const S_L_res_;
77 double const S_L_max_;
78 double const m_;
79 double const p_b_;
80 double const p_cap_max_;
81};
82} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:26
double const S_L_res_
Residual saturation of liquid phase.
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
double const S_L_max_
Maximum saturation of liquid phase.
CapillaryPressureVanGenuchten(std::string name, double const residual_liquid_saturation, double const residual_gas_saturation, double const exponent, double const p_b, double const maximum_capillary_pressure)
virtual PropertyDataType value() const
Definition Property.cpp:76
std::variant< Medium *, Phase *, Component * > scale_
Definition Property.h:297
std::variant< double, Eigen::Matrix< double, 2, 1 >, Eigen::Matrix< double, 3, 1 >, Eigen::Matrix< double, 2, 2 >, Eigen::Matrix< double, 3, 3 >, Eigen::Matrix< double, 4, 1 >, Eigen::Matrix< double, 6, 1 >, Eigen::MatrixXd > PropertyDataType
Definition Property.h:31