OGS
SaturationVanGenuchten.h
Go to the documentation of this file.
1
9#pragma once
10
12
13namespace MaterialPropertyLib
14{
15class Medium;
16class Phase;
17class Component;
45class SaturationVanGenuchten final : public Property
46{
47public:
48 SaturationVanGenuchten(std::string name,
49 double const residual_liquid_saturation,
50 double const residual_gas_saturation,
51 double const pressure_exponent,
52 double const saturation_exponent,
53 double const p_b);
54
55 void checkScale() const override
56 {
57 if (!std::holds_alternative<Medium*>(scale_))
58 {
60 "The property 'SaturationVanGenuchten' is implemented on the "
61 "'media' scale only.");
62 }
63 }
64
67 PropertyDataType value(VariableArray const& variable_array,
68 ParameterLib::SpatialPosition const& /*pos*/,
69 double const /*t*/,
70 double const /*dt*/) const override;
71 PropertyDataType dValue(VariableArray const& variable_array,
72 Variable const variable,
73 ParameterLib::SpatialPosition const& /*pos*/,
74 double const /*t*/,
75 double const /*dt*/) const override;
76 PropertyDataType d2Value(VariableArray const& variable_array,
77 Variable const variable1, Variable const variable2,
78 ParameterLib::SpatialPosition const& /*pos*/,
79 double const /*t*/,
80 double const /*dt*/) const override;
81
82private:
83 double const S_L_res_;
84 double const S_L_max_;
85 double const m_;
86 double const n_;
87 double const p_b_;
88};
89} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:26
virtual PropertyDataType value() const
Definition Property.cpp:76
std::variant< Medium *, Phase *, Component * > scale_
Definition Property.h:297
The van Genuchten capillary pressure model.
PropertyDataType d2Value(VariableArray const &variable_array, Variable const variable1, Variable const variable2, ParameterLib::SpatialPosition const &, double const, double const) const override
Default implementation: 2nd derivative of any constant property is zero.
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override
SaturationVanGenuchten(std::string name, double const residual_liquid_saturation, double const residual_gas_saturation, double const pressure_exponent, double const saturation_exponent, double const p_b)
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