From d7b9cea87c4326d6e82659fb0f94584d528b173b Mon Sep 17 00:00:00 2001 From: Andrew Heather <a.heather@opencfd.co.uk> Date: Mon, 19 Mar 2018 13:56:32 +0000 Subject: [PATCH] BUG: IsoAdvector - updated use of pos/neg as reported by Johan Roenby. See #775 --- .../isoAdvection/isoAdvection/isoAdvection.C | 16 ++++++++-------- .../solvers/isoAdvection/isoCutFace/isoCutFace.C | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C index e039b0b5724..d149e0c5ef6 100644 --- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C +++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoAdvection/isoAdvection.C @@ -615,8 +615,8 @@ void Foam::isoAdvection::limitFluxes() const scalar aTol = 1.0e-12; // Note: tolerances const scalar maxAlphaMinus1 = 1; // max(alphaNew - 1); const scalar minAlpha = -1; // min(alphaNew); - const label nUndershoots = 20; // sum(neg(alphaNew + aTol)); - const label nOvershoots = 20; // sum(pos(alphaNew - 1 - aTol)); + const label nUndershoots = 20; // sum(neg0(alphaNew + aTol)); + const label nOvershoots = 20; // sum(pos0(alphaNew - 1 - aTol)); cellIsBounded_ = false; // Loop number of bounding steps @@ -682,8 +682,8 @@ void Foam::isoAdvection::limitFluxes() scalarField alphaNew(alpha1In_ - fvc::surfaceIntegrate(dVf_)()); label maxAlphaMinus1 = max(alphaNew - 1); scalar minAlpha = min(alphaNew); - label nUndershoots = sum(neg(alphaNew + aTol)); - label nOvershoots = sum(pos(alphaNew - 1 - aTol)); + label nUndershoots = sum(neg0(alphaNew + aTol)); + label nOvershoots = sum(pos0(alphaNew - 1 - aTol)); Info<< "After bounding number " << n + 1 << " of time " << mesh_.time().value() << ":" << endl; Info<< "nOvershoots = " << nOvershoots << " with max(alphaNew-1) = " @@ -792,7 +792,7 @@ void Foam::isoAdvection::boundFromAbove fluidToPassOn*mag(phi[fi]*dt)/dVftot; nFacesToPassFluidThrough += - pos(dVfmax[fi] - fluidToPassThroughFace); + pos0(dVfmax[fi] - fluidToPassThroughFace); fluidToPassThroughFace = min(fluidToPassThroughFace, dVfmax[fi]); @@ -1014,9 +1014,9 @@ void Foam::isoAdvection::applyBruteForceBounding() { alpha1_ = alpha1_ - *pos(alpha1_ - snapAlphaTol) - *neg(alpha1_ - (1.0 - snapAlphaTol)) - + pos(alpha1_ - (1.0 - snapAlphaTol)); + *pos0(alpha1_ - snapAlphaTol) + *neg0(alpha1_ - (1.0 - snapAlphaTol)) + + pos0(alpha1_ - (1.0 - snapAlphaTol)); alpha1Changed = true; } diff --git a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C index 33d4e7f412c..83292012a0d 100644 --- a/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C +++ b/src/finiteVolume/fvMatrices/solvers/isoAdvection/isoCutFace/isoCutFace.C @@ -362,7 +362,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea { // If all face cuttings were in the past and cell is filling up (Un0>0) // then face must be full during whole time interval - tIntArea = magSf*dt*pos(Un0); + tIntArea = magSf*dt*pos0(Un0); return tIntArea; } @@ -373,7 +373,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea // If all cuttings are in the future but non of them within [0,dt] then // if cell is filling up (Un0 > 0) face must be empty during whole time // interval - tIntArea = magSf*dt*(1 - pos(Un0)); + tIntArea = magSf*dt*(1 - pos0(Un0)); return tIntArea; } @@ -398,7 +398,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea // If Un0 > 0 cell is filling up and it must initially be empty. // If Un0 < 0 cell must initially be full(y immersed in fluid A). time = firstTime; - initialArea = magSf*(1.0 - pos(Un0)); + initialArea = magSf*(1.0 - pos0(Un0)); tIntArea = initialArea*time; cutPoints(fPts, pTimes, time, FIIL); } @@ -470,7 +470,7 @@ Foam::scalar Foam::isoCutFace::timeIntegratedArea { // FIIL will leave the face at lastTime and face will be fully in fluid // A or fluid B in the time interval from lastTime to dt. - tIntArea += magSf*(dt - lastTime)*pos(Un0); + tIntArea += magSf*(dt - lastTime)*pos0(Un0); } return tIntArea; -- GitLab