25#ifndef DUMUX_MATERIAL_FLUIDMATRIX_TWO_P_INTERFACIAL_AREA_POLYNOMIAL_SECOND_ORDER_HH
26#define DUMUX_MATERIAL_FLUIDMATRIX_TWO_P_INTERFACIAL_AREA_POLYNOMIAL_SECOND_ORDER_HH
29#include <dune/common/exceptions.hh>
30#include <dune/common/float_cmp.hh>
44 template<
class Scalar>
50 Scalar
a00()
const {
return a00_; }
53 Scalar
a01()
const {
return a01_; }
56 Scalar
a02()
const {
return a02_; }
59 Scalar
a10()
const {
return a10_; }
62 Scalar
a11()
const {
return a11_; }
65 Scalar
a20()
const {
return a20_; }
70 return Dune::FloatCmp::eq(
a00(), p.
a00(), 1e-6)
71 && Dune::FloatCmp::eq(
a01(), p.
a01(), 1e-6)
72 && Dune::FloatCmp::eq(
a02(), p.
a02(), 1e-6)
73 && Dune::FloatCmp::eq(
a10(), p.
a10(), 1e-6)
74 && Dune::FloatCmp::eq(
a11(), p.
a11(), 1e-6)
75 && Dune::FloatCmp::eq(
a20(), p.
a20(), 1e-6);
79 Scalar a00_, a01_, a02_, a10_, a11_, a20_;
86 template<
class Scalar =
double>
89 const auto a00 = getParamFromGroup<Scalar>(paramGroup,
"A00", 0.0);
90 const auto a01 = getParamFromGroup<Scalar>(paramGroup,
"A01");
91 const auto a02 = getParamFromGroup<Scalar>(paramGroup,
"A02");
92 const auto a10 = getParamFromGroup<Scalar>(paramGroup,
"A10");
93 const auto a11 = getParamFromGroup<Scalar>(paramGroup,
"A11");
94 const auto a20 = getParamFromGroup<Scalar>(paramGroup,
"A20");
95 return {a00, a01, a02, a10, a11, a20};
109 template<
class Scalar>
112 const Scalar a00 = params.
a00();
113 const Scalar a10 = params.
a10();
114 const Scalar a20 = params.
a20();
115 const Scalar a11 = params.
a11();
116 const Scalar a01 = params.
a01();
117 const Scalar a02 = params.
a02();
119 return a00 + a10 * swe + a20 * swe*swe + a11*swe*pc + a01*pc + a02*pc*pc;
129 template<
class Scalar>
132 return params.
a11()*swe + params.
a01() + 2.0*params.
a02() * pc;
142 template<
class Scalar>
145 return params.
a11()*pc + params.
a10() + 2.0*params.
a20()*swe;
The infrastructure to retrieve run-time parameters from Dune::ParameterTrees.
Definition: brookscorey.hh:35
Implementation of the polynomial of second order relating specific interfacial area to wetting phase ...
Definition: polynomial2ndorder.hh:41
static Scalar darea_dpc(const Scalar swe, const Scalar pc, const Params< Scalar > ¶ms)
the derivative of specific interfacial area function w.r.t. capillary pressure
Definition: polynomial2ndorder.hh:130
static Params< Scalar > makeParams(const std::string ¶mGroup)
Construct from a subgroup from the global parameter tree.
Definition: polynomial2ndorder.hh:87
static Scalar darea_dsw(const Scalar swe, const Scalar pc, const Params< Scalar > ¶ms)
the derivative of specific interfacial area function w.r.t. saturation
Definition: polynomial2ndorder.hh:143
static Scalar area(const Scalar swe, const Scalar pc, const Params< Scalar > ¶ms)
The interfacial area.
Definition: polynomial2ndorder.hh:110
Definition: polynomial2ndorder.hh:46
Params(Scalar a00=0, Scalar a01=0, Scalar a02=0, Scalar a10=0, Scalar a11=0, Scalar a20=0)
Definition: polynomial2ndorder.hh:47
void setA20(Scalar a20)
Definition: polynomial2ndorder.hh:66
void setA02(Scalar a02)
Definition: polynomial2ndorder.hh:57
bool operator==(const Params &p) const
Definition: polynomial2ndorder.hh:68
Scalar a20() const
Definition: polynomial2ndorder.hh:65
Scalar a00() const
Definition: polynomial2ndorder.hh:50
Scalar a11() const
Definition: polynomial2ndorder.hh:62
void setA01(Scalar a01)
Definition: polynomial2ndorder.hh:54
Scalar a10() const
Definition: polynomial2ndorder.hh:59
Scalar a02() const
Definition: polynomial2ndorder.hh:56
void setA00(Scalar a00)
Definition: polynomial2ndorder.hh:51
void setA11(Scalar a11)
Definition: polynomial2ndorder.hh:63
Scalar a01() const
Definition: polynomial2ndorder.hh:53
void setA10(Scalar a10)
Definition: polynomial2ndorder.hh:60