diff --git a/MaterialLib/CMakeLists.txt b/MaterialLib/CMakeLists.txt index 3aa2d4822778e6418ab945dde0ef7e6d301afaa8..3b1e47b060a26f7f23139743d003f4e2cc317d1d 100644 --- a/MaterialLib/CMakeLists.txt +++ b/MaterialLib/CMakeLists.txt @@ -16,6 +16,8 @@ append_source_files(SOURCES Fluid/WaterVaporProperties) append_source_files(SOURCES MPL) append_source_files(SOURCES MPL/Properties) +append_source_files(SOURCES MPL/Properties/CapillaryPressureSaturation) +append_source_files(SOURCES MPL/Properties/RelativePermeability) append_source_files(SOURCES MPL/Components) append_source_files(SOURCES MPL/Utils) diff --git a/MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.cpp diff --git a/MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationBrooksCorey.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationBrooksCorey.h diff --git a/MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.cpp diff --git a/MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationLiakopoulos.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationLiakopoulos.h diff --git a/MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.cpp diff --git a/MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateSaturationVanGenuchten.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/CreateSaturationVanGenuchten.h diff --git a/MaterialLib/MPL/Properties/SaturationBrooksCorey.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.cpp similarity index 100% rename from MaterialLib/MPL/Properties/SaturationBrooksCorey.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.cpp diff --git a/MaterialLib/MPL/Properties/SaturationBrooksCorey.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h similarity index 100% rename from MaterialLib/MPL/Properties/SaturationBrooksCorey.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h diff --git a/MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp similarity index 97% rename from MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp index 304243c4fd16069a5586ef150bbadfc88df3e00f..cb71c908b4546d94d768125113af42862d55e747 100644 --- a/MaterialLib/MPL/Properties/SaturationLiakopoulos.cpp +++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.cpp @@ -12,7 +12,8 @@ * */ -#include "MaterialLib/MPL/Properties/SaturationLiakopoulos.h" +#include "SaturationLiakopoulos.h" + #include "MaterialLib/MPL/Medium.h" #include "MathLib/MathTools.h" diff --git a/MaterialLib/MPL/Properties/SaturationLiakopoulos.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h similarity index 100% rename from MaterialLib/MPL/Properties/SaturationLiakopoulos.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h diff --git a/MaterialLib/MPL/Properties/SaturationVanGenuchten.cpp b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp similarity index 100% rename from MaterialLib/MPL/Properties/SaturationVanGenuchten.cpp rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.cpp diff --git a/MaterialLib/MPL/Properties/SaturationVanGenuchten.h b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h similarity index 67% rename from MaterialLib/MPL/Properties/SaturationVanGenuchten.h rename to MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h index cbaff22c6ab6cff2ff07d012b67a2db36cc5ab5b..07ffd95c53feaf14a792fbb0a51bedf789d6722d 100644 --- a/MaterialLib/MPL/Properties/SaturationVanGenuchten.h +++ b/MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h @@ -15,20 +15,44 @@ namespace MaterialPropertyLib class Medium; class Phase; class Component; - -/// The van Genuchten soil characteristics function. -/// -/// This property must be a medium property, it computes the saturation of the -/// wetting phase as function of capillary pressure. +/** + * \brief The van Genuchten capillary pressure model: + * + * \f[p_c(S)=p_b (S_e^{-1/m}-1)^{1-m}\f] + * with + * \f[S_e=\frac{S-S_r}{S_{\mbox{max}}-S_r}\f] + * where + * \f{eqnarray*}{ + * &p_b& \mbox{ entry pressure,}\\ + * &S_r& \mbox{ residual saturation,}\\ + * &S_{\mbox{max}}& \mbox{ maximum saturation,}\\ + * &m \in [0,1) & \mbox{ exponent.}\\ + * \f} + * + * Note in some expressions, a parameter of \f$n\f$ is introduced, where + * \f[n=1/(1-m)\f]. + * + * If \f$\alpha\f$ instead of \f$p_b\f$ is available, \f$p_b\f$ can + * be calculated + * as + * \f[p_b=\rho g/\alpha\f]. + * + * If the capillary pressure is known, the saturation can be + * obtained by this model with + * \f[S(p_c)=\left \{ + * \begin{array}{1} + * S_{\mbox{max}},\, p_c < 0,\\ + * \left( \left(\dfrac{p_c}{p_b}\right)^{\frac{1}{1-m}} +1\right)^{-m} + * (S_{\mbox{max}}-S_r) +S_r,\, p_c \geq 0 + \end{array} + * \right. + * \f]. + * + * class SaturationVanGenuchten handles the computations associated + * with \f$S(p_c)\f$. + */ class SaturationVanGenuchten final : public Property { -private: - Medium* _medium = nullptr; - double const _S_L_res; - double const _S_L_max; - double const _m; - double const _p_b; - public: SaturationVanGenuchten(double const residual_liquid_saturation, double const residual_gas_saturation, @@ -63,5 +87,12 @@ public: ParameterLib::SpatialPosition const& /*pos*/, double const /*t*/, double const /*dt*/) const override; + +private: + Medium* _medium = nullptr; + double const _S_L_res; + double const _S_L_max; + double const _m; + double const _p_b; }; } // namespace MaterialPropertyLib diff --git a/MaterialLib/MPL/Properties/CreateProperties.h b/MaterialLib/MPL/Properties/CreateProperties.h index d850f25e3c760587ed162bd29e77db89d55337d2..bd5ded9c85eae08858b2cd629a76d6de0017cc5f 100644 --- a/MaterialLib/MPL/Properties/CreateProperties.h +++ b/MaterialLib/MPL/Properties/CreateProperties.h @@ -11,6 +11,10 @@ */ #pragma once +#include "CapillaryPressureSaturation/CreateSaturationBrooksCorey.h" +#include "CapillaryPressureSaturation/CreateSaturationLiakopoulos.h" +#include "CapillaryPressureSaturation/CreateSaturationVanGenuchten.h" + #include "CreateBishopsPowerLaw.h" #include "CreateBishopsSaturationCutoff.h" #include "CreateConstant.h" @@ -22,11 +26,11 @@ #include "CreateParameterProperty.h" #include "CreatePermeabilityOrthotropicPowerLaw.h" #include "CreatePorosityFromMassBalance.h" -#include "CreateRelPermBrooksCorey.h" -#include "CreateRelPermLiakopoulos.h" -#include "CreateRelPermVanGenuchten.h" -#include "CreateSaturationBrooksCorey.h" +#include "CapillaryPressureSaturation/CreateSaturationBrooksCorey.h" #include "CreateSaturationDependentSwelling.h" -#include "CreateSaturationLiakopoulos.h" -#include "CreateSaturationVanGenuchten.h" +#include "CapillaryPressureSaturation/CreateSaturationLiakopoulos.h" +#include "CapillaryPressureSaturation/CreateSaturationVanGenuchten.h" #include "CreateTransportPorosityFromMassBalance.h" +#include "RelativePermeability/CreateRelPermBrooksCorey.h" +#include "RelativePermeability/CreateRelPermLiakopoulos.h" +#include "RelativePermeability/CreateRelPermVanGenuchten.h" diff --git a/MaterialLib/MPL/Properties/Properties.h b/MaterialLib/MPL/Properties/Properties.h index 7680ddec571b93bfd1b228d565ec78d8ed097d02..3278ea9a98f18c791d1cfe1ecd09b0c5e6a80658 100644 --- a/MaterialLib/MPL/Properties/Properties.h +++ b/MaterialLib/MPL/Properties/Properties.h @@ -14,6 +14,9 @@ #include "BishopsPowerLaw.h" #include "BishopsSaturationCutoff.h" #include "Constant.h" +#include "CapillaryPressureSaturation/SaturationBrooksCorey.h" +#include "CapillaryPressureSaturation/SaturationLiakopoulos.h" +#include "CapillaryPressureSaturation/SaturationVanGenuchten.h" #include "CurveProperty.h" #include "DupuitPermeability.h" #include "ExponentialProperty.h" @@ -21,11 +24,9 @@ #include "LinearProperty.h" #include "ParameterProperty.h" #include "PorosityFromMassBalance.h" -#include "RelPermBrooksCorey.h" -#include "RelPermLiakopoulos.h" -#include "RelPermVanGenuchten.h" -#include "SaturationBrooksCorey.h" +#include "RelativePermeability/RelPermBrooksCorey.h" +#include "RelativePermeability/RelPermLiakopoulos.h" +#include "RelativePermeability/RelPermVanGenuchten.h" + #include "SaturationDependentSwelling.h" -#include "SaturationLiakopoulos.h" -#include "SaturationVanGenuchten.h" #include "TransportPorosityFromMassBalance.h" diff --git a/MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.cpp diff --git a/MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermBrooksCorey.h rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermBrooksCorey.h diff --git a/MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.cpp diff --git a/MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermLiakopoulos.h rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermLiakopoulos.h diff --git a/MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.cpp b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.cpp similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.cpp diff --git a/MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.h b/MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.h similarity index 100% rename from MaterialLib/MPL/Properties/CreateRelPermVanGenuchten.h rename to MaterialLib/MPL/Properties/RelativePermeability/CreateRelPermVanGenuchten.h diff --git a/MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp similarity index 98% rename from MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp index 1023b585e12f39ae9afb9c83baf0968c33a43471..136b54bf8272dca748ec52317f64a3ac2c0565fe 100644 --- a/MaterialLib/MPL/Properties/RelPermBrooksCorey.cpp +++ b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.cpp @@ -12,12 +12,13 @@ * */ -#include "MaterialLib/MPL/Properties/RelPermBrooksCorey.h" -#include "MaterialLib/MPL/Medium.h" +#include "RelPermBrooksCorey.h" #include <algorithm> #include <cmath> +#include "MaterialLib/MPL/Medium.h" + namespace MaterialPropertyLib { RelPermBrooksCorey::RelPermBrooksCorey( diff --git a/MaterialLib/MPL/Properties/RelPermBrooksCorey.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h similarity index 100% rename from MaterialLib/MPL/Properties/RelPermBrooksCorey.h rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h diff --git a/MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp similarity index 98% rename from MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp index fd59bd66f875a3a5cf67a819e0f50aea5d4ee01b..db6677073e267850bb24ac798bcacb8018cec5f5 100644 --- a/MaterialLib/MPL/Properties/RelPermLiakopoulos.cpp +++ b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.cpp @@ -11,12 +11,13 @@ * */ -#include "MaterialLib/MPL/Properties/RelPermLiakopoulos.h" -#include "MaterialLib/MPL/Medium.h" +#include "RelPermLiakopoulos.h" #include <algorithm> #include <cmath> +#include "MaterialLib/MPL/Medium.h" + namespace MaterialPropertyLib { /** diff --git a/MaterialLib/MPL/Properties/RelPermLiakopoulos.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h similarity index 100% rename from MaterialLib/MPL/Properties/RelPermLiakopoulos.h rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h diff --git a/MaterialLib/MPL/Properties/RelPermVanGenuchten.cpp b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp similarity index 100% rename from MaterialLib/MPL/Properties/RelPermVanGenuchten.cpp rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.cpp diff --git a/MaterialLib/MPL/Properties/RelPermVanGenuchten.h b/MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h similarity index 100% rename from MaterialLib/MPL/Properties/RelPermVanGenuchten.h rename to MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h diff --git a/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp b/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp index ef6a7cc65edc84fdee3284a61f2496b2b8150aaf..cbc94cf535d5676e6361863641e9a66057a87f64 100644 --- a/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp +++ b/Tests/MaterialLib/TestMPLRelPermBrooksCorey.cpp @@ -15,7 +15,7 @@ #include "Tests/TestTools.h" #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/RelPermBrooksCorey.h" +#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermBrooksCorey.h" TEST(MaterialPropertyLib, RelPermBrooksCorey) { diff --git a/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp b/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp index d4e089d0202d1dd29f99810a15793ac4ba67d48e..87c314c722370572a94fcaa56fdfaf1018ffec64 100644 --- a/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp +++ b/Tests/MaterialLib/TestMPLRelPermLiakopoulos.cpp @@ -15,7 +15,7 @@ #include "Tests/TestTools.h" #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/RelPermLiakopoulos.h" +#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermLiakopoulos.h" TEST(MaterialPropertyLib, RelPermLiakopoulos) { diff --git a/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp b/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp index c4bd061fccfa5225f619048e975005dcfd25348d..af74c52fcba797e26cd279d1abdd89ef60f3482d 100644 --- a/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp +++ b/Tests/MaterialLib/TestMPLRelPermVanGenuchten.cpp @@ -10,7 +10,7 @@ #include <gtest/gtest.h> #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/RelPermVanGenuchten.h" +#include "MaterialLib/MPL/Properties/RelativePermeability/RelPermVanGenuchten.h" #include "TestMPL.h" #include "Tests/TestTools.h" diff --git a/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp b/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp index 0e05921695dfeadd94dca2caf684f89303003624..4dfa8a9f92f826d9c32fc995ed0672749531ec5d 100644 --- a/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp +++ b/Tests/MaterialLib/TestMPLSaturationBrooksCorey.cpp @@ -15,7 +15,7 @@ #include "Tests/TestTools.h" #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/SaturationBrooksCorey.h" +#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationBrooksCorey.h" TEST(MaterialPropertyLib, SaturationBrooksCorey) { diff --git a/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp b/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp index 2fc3f0a2a75765cd3d408d0f3810d488730af5f2..f64b1c560bb728c879655cdfa6718ab8886f4d6a 100644 --- a/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp +++ b/Tests/MaterialLib/TestMPLSaturationLiakopoulos.cpp @@ -15,7 +15,7 @@ #include "Tests/TestTools.h" #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/SaturationLiakopoulos.h" +#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationLiakopoulos.h" TEST(MaterialPropertyLib, SaturationLiakopoulos) { diff --git a/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp b/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp index d4c6365fa34a70a126a7d2492fbb54e475189b65..824f1b84742850c7a0b05bed134951b076091d81 100644 --- a/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp +++ b/Tests/MaterialLib/TestMPLSaturationVanGenuchten.cpp @@ -10,7 +10,7 @@ #include <gtest/gtest.h> #include "MaterialLib/MPL/Medium.h" -#include "MaterialLib/MPL/Properties/SaturationVanGenuchten.h" +#include "MaterialLib/MPL/Properties/CapillaryPressureSaturation/SaturationVanGenuchten.h" #include "TestMPL.h" #include "Tests/TestTools.h"