OGS
RelPermVanGenuchten.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
8
10{
11class Medium;
12class Phase;
13class Component;
14
19class RelPermVanGenuchten final : public Property
20{
21private:
22 double const S_L_res_;
23 double const S_L_max_;
24 double const k_rel_min_;
25 double const m_;
26
27public:
28 RelPermVanGenuchten(std::string name,
29 double const residual_liquid_saturation,
30 double const residual_gas_saturation,
31 double const min_relative_permeability_liquid,
32 double const exponent);
33
34 void checkScale() const override
35 {
36 if (!std::holds_alternative<Medium*>(scale_))
37 {
39 "The property 'RelativePermeabilityVanGenuchten' is "
40 "implemented on the 'media' scale only.");
41 }
42 }
43
46 PropertyDataType value(VariableArray const& variable_array,
48 double const t, double const dt) const override;
49 PropertyDataType dValue(VariableArray const& variable_array,
50 Variable const variable,
52 double const t, double const dt) const override;
53};
54} // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition Error.h:19
This class defines components (substances).
Definition Component.h:18
virtual PropertyDataType value() const
std::variant< Medium *, Phase *, Component * > scale_
RelPermVanGenuchten(std::string name, double const residual_liquid_saturation, double const residual_gas_saturation, double const min_relative_permeability_liquid, double const 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