OGS
SaturationLiakopoulos.h
Go to the documentation of this file.
1
13#pragma once
14
15#include <limits>
16
19
20namespace MaterialPropertyLib
21{
22class Medium;
23class Phase;
24class Component;
36class SaturationLiakopoulos final : public Property
37{
38private:
48 const double residual_liquid_saturation_ = 0.2;
49 const double parameter_a_ = 1.9722e-11;
50 const double parameter_b_ = 2.4279;
51 const double p_cap_max_ = std::pow(
53
54public:
55 explicit SaturationLiakopoulos(std::string name)
56 {
57 name_ = std::move(name);
58 }
59
60 void checkScale() const override
61 {
62 if (!std::holds_alternative<Medium*>(scale_))
63 {
65 "The property 'SaturationLiakopoulos' is implemented on the "
66 "'media' scale only.");
67 }
68 }
69
72 PropertyDataType value(VariableArray const& variable_array,
73 ParameterLib::SpatialPosition const& /*pos*/,
74 double const /*t*/,
75 double const /*dt*/) const override;
76 PropertyDataType dValue(VariableArray const& variable_array,
77 Variable const variable,
78 ParameterLib::SpatialPosition const& /*pos*/,
79 double const /*t*/,
80 double const /*dt*/) const override;
81 PropertyDataType d2Value(VariableArray const& variable_array,
82 Variable const variable1, Variable const variable2,
83 ParameterLib::SpatialPosition const& /*pos*/,
84 double const /*t*/,
85 double const /*dt*/) const override;
86};
87
88} // 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
A well known soil characteristics function.
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
Definition Property.h:31