OGS
RelPermBrooksCorey.h
Go to the documentation of this file.
1
13#pragma once
14
17
18namespace MaterialPropertyLib
19{
20class Medium;
21class Phase;
22class Component;
32class RelPermBrooksCorey final : public Property
33{
34private:
38 const double exponent_;
39
40public:
41 RelPermBrooksCorey(std::string name,
42 const double /*residual_liquid_saturation*/,
43 const double /*residual_gas_saturation*/,
44 const double /*min_relative_permeability_liquid_*/,
45 const double /*exponent*/
46 );
47
48 void checkScale() const override
49 {
50 if (!std::holds_alternative<Medium*>(scale_))
51 {
53 "The property 'RelPermBrooksCorey' is implemented on the "
54 "'media' scale only.");
55 }
56 }
57
60 PropertyDataType value(VariableArray const& variable_array,
62 double const t, double const dt) const override;
63 PropertyDataType dValue(VariableArray const& variable_array,
64 Variable const variable,
66 double const t, double const dt) const override;
67};
68
69} // 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
Relative permeability function of the wetting phase proposed by Brooks&Corey.
RelPermBrooksCorey(std::string name, const double, const double, const double, const double)
PropertyDataType dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &pos, double const t, double const dt) const override
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