From 775fe1d596682a0f3ce0069ed96eaeeb52e499ac Mon Sep 17 00:00:00 2001 From: Sergio Ferraris Date: Mon, 8 Jun 2020 15:42:52 +0100 Subject: [PATCH] ENH: Adding finalOnLastPimpleIterOnly to allow Final solver in PIMPLE The PIMPLE option finalOnLastPimpleIterOnly allows the call the Final solver only in the last PIMPLE loop. The default is false which is the present behavior. --- .../pimpleControl/pimpleControl.C | 5 ++++- .../pimpleControl/pimpleControl.H | 6 +++++- .../pimpleControl/pimpleControlI.H | 16 +++++++++++++--- .../rhoPimpleFoam/RAS/cavity/system/fvSolution | 1 + 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C index 2559b9d67a..e49d3c75fc 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C @@ -50,6 +50,8 @@ bool Foam::pimpleControl::read() SIMPLErho_ = pimpleDict.getOrDefault("SIMPLErho", false); turbOnFinalIterOnly_ = pimpleDict.getOrDefault("turbOnFinalIterOnly", true); + finalOnLastPimpleIterOnly_ = + pimpleDict.getOrDefault("finalOnLastPimpleIterOnly", false); return true; } @@ -153,7 +155,8 @@ Foam::pimpleControl::pimpleControl corrPISO_(0), SIMPLErho_(false), turbOnFinalIterOnly_(true), - converged_(false) + converged_(false), + finalOnLastPimpleIterOnly_(false) { read(); diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H index 710f4c176f..1433215df8 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2017 OpenCFD Ltd. + Copyright (C) 2017-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -94,6 +94,10 @@ protected: //- Converged flag bool converged_; + //- Flag to indicate wheter the final solver is used only on the + // final pimple iter + bool finalOnLastPimpleIterOnly_; + // Protected Member Functions diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H index 944c2a2b46..344db63f93 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControlI.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -96,9 +97,18 @@ inline bool Foam::pimpleControl::finalIter() const inline bool Foam::pimpleControl::finalInnerIter() const { - return - corrPISO_ == nCorrPISO_ - && corrNonOrtho_ == nNonOrthCorr_ + 1; + bool finalInnerIter = + corrPISO_ == nCorrPISO_ + && corrNonOrtho_ == nNonOrthCorr_ + 1; + + if (finalOnLastPimpleIterOnly_) + { + return finalInnerIter && finalIter(); + } + else + { + return finalInnerIter; + } } diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution index f1ea496680..8c0b4fd798 100644 --- a/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution +++ b/tutorials/compressible/rhoPimpleFoam/RAS/cavity/system/fvSolution @@ -58,6 +58,7 @@ PIMPLE momentumPredictor yes; nOuterCorrectors 1; nCorrectors 2; + finalOnLastPimpleIterOnly true; nNonOrthogonalCorrectors 0; pMax 1.2e5;