OGS
CapillaryPressureSaturation.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <limits>
14#include <string>
15
16namespace MaterialLib
17{
18namespace PorousMedium
19{
22{
23public:
30 CapillaryPressureSaturation(const double Sr, const double Sg_r,
31 const double Smax, const double Pc_max)
32 : _saturation_r(Sr),
34 _saturation_max(Smax),
35 _pc_max(Pc_max)
36 {
37 }
38 virtual ~CapillaryPressureSaturation() = default;
39
41 virtual std::string getName() const = 0;
42
44 virtual double getCapillaryPressure(const double saturation) const = 0;
46 virtual double getSaturation(const double capillary_pressure) const = 0;
47
49 virtual double getdPcdS(const double saturation) const = 0;
50
53 virtual double getd2PcdS2(const double saturation) const = 0;
54
55protected:
56 const double _saturation_r;
57 const double _saturation_nonwet_r;
59 const double _saturation_max;
60 const double _pc_max;
61
68 const double _minor_offset = std::numeric_limits<double>::epsilon();
69};
70
71} // namespace PorousMedium
72} // namespace MaterialLib
virtual std::string getName() const =0
Get model name.
virtual double getd2PcdS2(const double saturation) const =0
CapillaryPressureSaturation(const double Sr, const double Sg_r, const double Smax, const double Pc_max)
virtual double getdPcdS(const double saturation) const =0
Get the derivative of the capillary pressure with respect to saturation.
virtual double getCapillaryPressure(const double saturation) const =0
Get capillary pressure.
virtual double getSaturation(const double capillary_pressure) const =0
Get saturation.