From f38564fd09464ab193cb3ed2ec0f153208e0cf8e Mon Sep 17 00:00:00 2001 From: Gabriel Gerlero Date: Mon, 7 Aug 2023 17:27:00 -0300 Subject: [PATCH] Handle saturated theta values --- .../BrooksAndCorey/BrooksAndCorey.C | 9 +++++---- libraries/unsaturatedFlowModels/LETd/LETd.C | 2 +- libraries/unsaturatedFlowModels/LETxs/LETxs.C | 2 +- .../VanGenuchten/VanGenuchten.C | 8 +++----- tests/test_exhaustible/0/theta | 2 +- tests/test_parallelization/serial/0/theta | 2 +- tests/test_validity/base/0/theta | 2 +- .../moistureDiffusivityFoam/validity/base/0/theta | 2 +- .../dispersionTest/0/Utheta | 8 ++++---- .../dispersionTest/0/ampholyte.TARTRAZINE | 8 ++++---- .../dispersionTest/0/theta | 13 ++++++------- 11 files changed, 28 insertions(+), 30 deletions(-) diff --git a/libraries/unsaturatedFlowModels/BrooksAndCorey/BrooksAndCorey.C b/libraries/unsaturatedFlowModels/BrooksAndCorey/BrooksAndCorey.C index 98bb97d..df8dc79 100644 --- a/libraries/unsaturatedFlowModels/BrooksAndCorey/BrooksAndCorey.C +++ b/libraries/unsaturatedFlowModels/BrooksAndCorey/BrooksAndCorey.C @@ -54,7 +54,9 @@ Foam::Pmt::unsaturatedFlowModels::BrooksAndCorey::BrooksAndCorey Foam::tmp Foam::Pmt::unsaturatedFlowModels::BrooksAndCorey::C() { - volScalarField p{-pc0_*pow(frac_.eff(), -alpha_)}; + auto eff = min(frac_.eff(), 1 - 1e-7); + + volScalarField p{-pc0_*pow(eff, -alpha_)}; return -neg(p + pc0_)*(frac_.max() - frac_.min())/(alpha_*p*pow(-p/pc0_, 1/alpha_)); } @@ -62,8 +64,7 @@ Foam::Pmt::unsaturatedFlowModels::BrooksAndCorey::C() Foam::tmp Foam::Pmt::unsaturatedFlowModels::BrooksAndCorey::M() { - volScalarField eff{frac_.eff()}; + auto eff = min(frac.eff(), 1 - 1e-7); - return medium_.K()/phase_.mu()*pow(eff, n_ + l_ - 1) - + neg0(1 - eff)*dimensionedScalar{dimArea/dimDynamicViscosity, One}; + return medium_.K()/phase_.mu()*pow(eff, n_ + l_ - 1); } diff --git a/libraries/unsaturatedFlowModels/LETd/LETd.C b/libraries/unsaturatedFlowModels/LETd/LETd.C index 91ebedb..56151dd 100644 --- a/libraries/unsaturatedFlowModels/LETd/LETd.C +++ b/libraries/unsaturatedFlowModels/LETd/LETd.C @@ -48,7 +48,7 @@ Foam::Pmt::unsaturatedFlowModels::LETd::LETd Foam::tmp Foam::Pmt::unsaturatedFlowModels::LETd::D() { - volScalarField Swp{frac_.eff()}; + volScalarField Swp{min(frac._eff(), 1 - 1e-7)}; return Dwt_*pow(Swp, L_)/(pow(Swp, L_) + E_*pow(1 - Swp, T_)); } diff --git a/libraries/unsaturatedFlowModels/LETxs/LETxs.C b/libraries/unsaturatedFlowModels/LETxs/LETxs.C index 9747987..a8cb08a 100644 --- a/libraries/unsaturatedFlowModels/LETxs/LETxs.C +++ b/libraries/unsaturatedFlowModels/LETxs/LETxs.C @@ -57,7 +57,7 @@ Foam::Pmt::unsaturatedFlowModels::LETxs::LETxs Foam::tmp Foam::Pmt::unsaturatedFlowModels::LETxs::D() { - volScalarField Swp{frac_.eff()}; + volScalarField Swp{min(frac_.eff(), 1 - 1e-7)}; auto Swir = frac_.min()/frac_.max(); return diff --git a/libraries/unsaturatedFlowModels/VanGenuchten/VanGenuchten.C b/libraries/unsaturatedFlowModels/VanGenuchten/VanGenuchten.C index 60dc5a7..49232b2 100644 --- a/libraries/unsaturatedFlowModels/VanGenuchten/VanGenuchten.C +++ b/libraries/unsaturatedFlowModels/VanGenuchten/VanGenuchten.C @@ -65,7 +65,7 @@ Foam::Pmt::unsaturatedFlowModels::VanGenuchten::VanGenuchten Foam::tmp Foam::Pmt::unsaturatedFlowModels::VanGenuchten::C() { - volScalarField Se{frac_.eff()}; + volScalarField Se{min(frac_.eff(), 1 - 1e-7)}; return 1/pc0_*m_/(1 - m_)*(frac_.max() - frac_.min())*pow(Se, 1/m_)*pow((1 - pow(Se, 1/m_)), m_); } @@ -73,9 +73,7 @@ Foam::Pmt::unsaturatedFlowModels::VanGenuchten::C() Foam::tmp Foam::Pmt::unsaturatedFlowModels::VanGenuchten::M() { - volScalarField Se{frac_.eff()}; + volScalarField Se{min(frac_.eff(), 1 - 1e-7)}; - return - pos(1 - Se)*medium_.K()/phase_.mu()*pow(Se, l_)*pow(1 - pow(1 - pow(Se, 1/m_), m_), 2) - + neg0(1 - Se)*dimensionedScalar{dimArea/dimDynamicViscosity, One}; + return medium_.K()/phase_.mu()*pow(Se, l_)*pow(1 - pow(1 - pow(Se, 1/m_), m_), 2); } diff --git a/tests/test_exhaustible/0/theta b/tests/test_exhaustible/0/theta index ccc3cd4..bd0d112 100644 --- a/tests/test_exhaustible/0/theta +++ b/tests/test_exhaustible/0/theta @@ -16,7 +16,7 @@ boundaryField left { type exhaustible; - value uniform 0.6999999; //= 0.7 - 1e-7 + value uniform 0.7; remaining 2e-8; } right diff --git a/tests/test_parallelization/serial/0/theta b/tests/test_parallelization/serial/0/theta index 0ad26a7..6ee46c1 100644 --- a/tests/test_parallelization/serial/0/theta +++ b/tests/test_parallelization/serial/0/theta @@ -16,7 +16,7 @@ boundaryField left { type fixedValue; - value uniform 0.6999999; //= 0.7 - 1e-7 + value uniform 0.7; } right { diff --git a/tests/test_validity/base/0/theta b/tests/test_validity/base/0/theta index 0ad26a7..6ee46c1 100644 --- a/tests/test_validity/base/0/theta +++ b/tests/test_validity/base/0/theta @@ -16,7 +16,7 @@ boundaryField left { type fixedValue; - value uniform 0.6999999; //= 0.7 - 1e-7 + value uniform 0.7; } right { diff --git a/tutorials/moistureDiffusivityFoam/validity/base/0/theta b/tutorials/moistureDiffusivityFoam/validity/base/0/theta index 0ad26a7..6ee46c1 100644 --- a/tutorials/moistureDiffusivityFoam/validity/base/0/theta +++ b/tutorials/moistureDiffusivityFoam/validity/base/0/theta @@ -16,7 +16,7 @@ boundaryField left { type fixedValue; - value uniform 0.6999999; //= 0.7 - 1e-7 + value uniform 0.7; } right { diff --git a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/Utheta b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/Utheta index 0e3de49..a89b7dc 100644 --- a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/Utheta +++ b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/Utheta @@ -23,18 +23,18 @@ boundaryField } inletU { - type zeroGradient; + type zeroGradient; } inletD { - type zeroGradient; + type zeroGradient; } outletD { - type zeroGradient; + type zeroGradient; } outletU { - type zeroGradient; + type zeroGradient; } } diff --git a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/ampholyte.TARTRAZINE b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/ampholyte.TARTRAZINE index 0407acb..9d78cc6 100644 --- a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/ampholyte.TARTRAZINE +++ b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/ampholyte.TARTRAZINE @@ -33,12 +33,12 @@ boundaryField } outletD { - type inletOutlet; - inletValue uniform 0.0; + type inletOutlet; + inletValue uniform 0.0; } outletU { - type inletOutlet; - inletValue uniform 0.0; + type inletOutlet; + inletValue uniform 0.0; } } diff --git a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/theta b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/theta index 0d6e627..d094e62 100644 --- a/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/theta +++ b/tutorials/moistureDiffusivityTransportFoam/dispersionTest/0/theta @@ -2,7 +2,6 @@ FoamFile { version 2.0; format ascii; - arch "LSB;label=32;scalar=64"; class volScalarField; location "0"; object theta; @@ -24,20 +23,20 @@ boundaryField } inletU { - type fixedValue; - value uniform 0.6999999; + type fixedValue; + value uniform 0.7; } inletD { - type fixedValue; - value uniform 0.6999999; + type fixedValue; + value uniform 0.7; } outletD { - type zeroGradient; + type zeroGradient; } outletU { - type zeroGradient; + type zeroGradient; } }