OGS
SaturationLiakopoulos.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
6#include <limits>
7
10
11namespace MaterialPropertyLib
12{
13class Medium;
14class Phase;
15class Component;
27class SaturationLiakopoulos final : public Property
28{
29private:
39 const double residual_liquid_saturation_ = 0.2;
40 const double parameter_a_ = 1.9722e-11;
41 const double parameter_b_ = 2.4279;
42 const double p_cap_max_ = std::pow(
44
45public:
46 explicit SaturationLiakopoulos(std::string name)
47 {
48 name_ = std::move(name);
49 }
50
51 void checkScale() const override
52 {
53 if (!std::holds_alternative<Medium*>(scale_))
54 {
56 "The property 'SaturationLiakopoulos' is implemented on the "
57 "'media' scale only.");
58 }
59 }
60
63 PropertyDataType value(VariableArray const& variable_array,
64 ParameterLib::SpatialPosition const& /*pos*/,
65 double const /*t*/,
66 double const /*dt*/) const override;
67 PropertyDataType dValue(VariableArray const& variable_array,
68 Variable const variable,
69 ParameterLib::SpatialPosition const& /*pos*/,
70 double const /*t*/,
71 double const /*dt*/) const override;
72 PropertyDataType d2Value(VariableArray const& variable_array,
73 Variable const variable1, Variable const variable2,
74 ParameterLib::SpatialPosition const& /*pos*/,
75 double const /*t*/,
76 double const /*dt*/) const override;
77};
78
79} // 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 dValue(VariableArray const &variable_array, Variable const variable, ParameterLib::SpatialPosition const &, double const, double const) const override
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.
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