OGS
RelPermBrooksCoreyNonwettingPhase.h
Go to the documentation of this file.
1
13#pragma once
14
15#include <string>
16
19
20namespace MaterialPropertyLib
21{
22class Medium;
23class Phase;
24class Component;
35{
36private:
40 const double exponent_;
41
42public:
44 const double residual_liquid_saturation,
45 const double residual_gas_saturation,
46 const double min_relative_permeability,
47 const double exponent);
48
49 void checkScale() const override
50 {
51 if (!std::holds_alternative<Medium*>(scale_))
52 {
54 "The property 'RelPermBrooksCoreyNonwettingPhase' is "
55 "implemented on the 'media' scale only.");
56 }
57 }
58
61 PropertyDataType value(VariableArray const& variable_array,
63 double const t, double const dt) const override;
64 PropertyDataType dValue(VariableArray const& variable_array,
65 Variable const variable,
67 double const t, double const dt) const override;
68};
69
70} // 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 non-wetting phase proposed by Brooks&Corey.
RelPermBrooksCoreyNonwettingPhase(std::string name, const double residual_liquid_saturation, const double residual_gas_saturation, const double min_relative_permeability, const double exponent)
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