OGS
SaturationVanGenuchten.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
7
9{
10class Medium;
11class Phase;
12class Component;
40class SaturationVanGenuchten final : public Property
41{
42public:
43 SaturationVanGenuchten(std::string name,
44 double const residual_liquid_saturation,
45 double const residual_gas_saturation,
46 double const pressure_exponent,
47 double const saturation_exponent,
48 double const p_b);
49
50 void checkScale() const override
51 {
52 if (!std::holds_alternative<Medium*>(scale_))
53 {
55 "The property 'SaturationVanGenuchten' is implemented on the "
56 "'media' scale only.");
57 }
58 }
59
62 PropertyDataType value(VariableArray const& variable_array,
63 ParameterLib::SpatialPosition const& /*pos*/,
64 double const /*t*/,
65 double const /*dt*/) const override;
66 PropertyDataType dValue(VariableArray const& variable_array,
67 Variable const variable,
68 ParameterLib::SpatialPosition const& /*pos*/,
69 double const /*t*/,
70 double const /*dt*/) const override;
71 PropertyDataType d2Value(VariableArray const& variable_array,
72 Variable const variable1, Variable const variable2,
73 ParameterLib::SpatialPosition const& /*pos*/,
74 double const /*t*/,
75 double const /*dt*/) const override;
76
77private:
78 double const S_L_res_;
79 double const S_L_max_;
80 double const m_;
81 double const n_;
82 double const p_b_;
83};
84} // 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_
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