OGS
RelPermLiakopoulos.h
Go to the documentation of this file.
1 
13 #pragma once
14 
15 #include "BaseLib/ConfigTree.h"
17 
18 namespace MaterialPropertyLib
19 {
20 class Medium;
21 class Phase;
22 class Component;
43 class RelPermLiakopoulos final : public Property
44 {
45 private:
55  const double residual_liquid_saturation_ = 0.2;
56  const double maximal_liquid_saturation_ = 1.;
57  const double parameter_a_ = 2.207;
58  const double parameter_b_ = 1.0121;
59 
60 public:
61  explicit RelPermLiakopoulos(std::string name);
62 
63  void checkScale() const override
64  {
65  if (!std::holds_alternative<Medium*>(scale_))
66  {
67  OGS_FATAL(
68  "The property 'RelPermLiakopoulos' is implemented on the "
69  "'media' scale only.");
70  }
71  }
72 
75  PropertyDataType value(VariableArray const& variable_array,
77  double const t, double const dt) const override;
78  PropertyDataType dValue(VariableArray const& variable_array,
79  Variable const variable,
81  double const t, double const dt) const override;
82 };
83 
84 } // namespace MaterialPropertyLib
#define OGS_FATAL(...)
Definition: Error.h:26
virtual PropertyDataType value() const
Definition: Property.cpp:72
std::variant< Medium *, Phase *, Component * > scale_
Definition: Property.h:287
Relative permeability function for the wetting phase of the Liakopoulos experiment.
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 > > PropertyDataType
Definition: Property.h:35
std::array< VariableType, static_cast< int >(Variable::number_of_variables)> VariableArray
Definition: VariableType.h:108