OGS
SaturationVanGenuchtenWithVolumetricStrain.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;
43{
44public:
46 std::string name,
47 double const residual_liquid_saturation,
48 double const residual_gas_saturation,
49 double const exponent,
50 double const p_b,
51 double const e_0,
52 double const e_m,
53 double const a,
54 double const d_diff);
55
56 void checkScale() const override
57 {
58 if (!std::holds_alternative<Medium*>(scale_))
59 {
61 "The property 'SaturationVanGenuchtenWithVolumetricStrain' is "
62 "implemented on the 'media' scale only.");
63 }
64 }
65
68 PropertyDataType value(VariableArray const& variable_array,
70 double const t, double const dt) const override;
71 PropertyDataType dValue(VariableArray const& variable_array,
72 Variable const variable,
74 double const t, double const dt) const override;
75
76private:
77 double const S_L_res_;
78 double const S_L_max_;
79 double const m_;
80 double const p_b_;
81 double const e_0_;
82 double const e_m_;
83 double const a_;
84 double const d_diff_;
85};
86} // 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_
SaturationVanGenuchtenWithVolumetricStrain(std::string name, double const residual_liquid_saturation, double const residual_gas_saturation, double const exponent, double const p_b, double const e_0, double const e_m, double const a, double const d_diff)
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