From 5b4cd73e551b56196c411a15356fe9746363489c Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 26 Mar 2011 21:48:15 +0000 Subject: [PATCH] PIMPLE: Rationalised loop structure Automated the caching of "finalIteration". --- .../solvers/combustion/fireFoam/fireFoam.C | 22 ++- .../solvers/combustion/fireFoam/pEqn.H | 2 +- .../solvers/combustion/rhoReactingFoam/pEqn.H | 12 +- .../rhoReactingFoam/rhoReactingFoam.C | 20 ++- .../solvers/compressible/rhoPimpleFoam/pEqn.H | 4 +- .../rhoLTSPimpleFoam/rhoLTSPimpleFoam.C | 23 ++-- .../rhoPimpleFoam/rhoPimpleFoam.C | 19 +-- .../rhoPorousMRFPimpleFoam/pEqn.H | 4 +- .../rhoPorousMRFPimpleFoam.C | 19 +-- .../buoyantBoussinesqPimpleFoam/TEqn.H | 2 +- .../buoyantBoussinesqPimpleFoam/UEqn.H | 3 +- .../buoyantBoussinesqPimpleFoam.C | 19 +-- .../buoyantBoussinesqPimpleFoam/pEqn.H | 2 +- .../heatTransfer/buoyantPimpleFoam/UEqn.H | 3 +- .../buoyantPimpleFoam/buoyantPimpleFoam.C | 19 +-- .../heatTransfer/buoyantPimpleFoam/hEqn.H | 2 +- .../heatTransfer/buoyantPimpleFoam/pEqn.H | 2 +- .../solvers/incompressible/pimpleFoam/pEqn.H | 2 +- .../pimpleFoam/pimpleDyMFoam/pEqn.H | 2 +- .../pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C | 21 ++- .../incompressible/pimpleFoam/pimpleFoam.C | 19 +-- .../LTSReactingParcelFoam.C | 15 +- .../lagrangian/LTSReactingParcelFoam/pEqn.H | 2 +- .../coalChemistryFoam/coalChemistryFoam.C | 21 ++- .../lagrangian/coalChemistryFoam/pEqn.H | 4 +- .../lagrangian/reactingParcelFoam/pEqn.H | 4 +- .../reactingParcelFoam/reactingParcelFoam.C | 21 ++- .../interPhaseChangeFoam.C | 10 +- .../multiphase/interPhaseChangeFoam/pEqn.H | 2 +- .../multiphase/twoLiquidMixingFoam/pEqn.H | 2 +- .../twoLiquidMixingFoam/twoLiquidMixingFoam.C | 19 +-- .../cfdTools/general/include/addFinalIter.H | 5 - .../general/include/removeFinalIter.H | 4 - .../cfdTools/general/pimpleLoop/pimpleLoop.H | 128 ++++++++++++++++++ 34 files changed, 260 insertions(+), 198 deletions(-) delete mode 100644 src/finiteVolume/cfdTools/general/include/addFinalIter.H delete mode 100644 src/finiteVolume/cfdTools/general/include/removeFinalIter.H create mode 100644 src/finiteVolume/cfdTools/general/pimpleLoop/pimpleLoop.H diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 6240cadb0e..2d814226da 100644 --- a/applications/solvers/combustion/fireFoam/fireFoam.C +++ b/applications/solvers/combustion/fireFoam/fireFoam.C @@ -33,8 +33,8 @@ Description #include "hsCombustionThermo.H" #include "turbulenceModel.H" #include "combustionModel.H" - #include "radiationModel.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -57,7 +57,7 @@ int main(int argc, char *argv[]) while (runTime.run()) { - #include "readPISOControls.H" + #include "readPIMPLEControls.H" #include "readTimeControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" @@ -68,14 +68,13 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); diff --git a/applications/solvers/combustion/fireFoam/pEqn.H b/applications/solvers/combustion/fireFoam/pEqn.H index e0d120e9e3..74b3cdc958 100644 --- a/applications/solvers/combustion/fireFoam/pEqn.H +++ b/applications/solvers/combustion/fireFoam/pEqn.H @@ -33,7 +33,7 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) p_rgh.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/combustion/rhoReactingFoam/pEqn.H b/applications/solvers/combustion/rhoReactingFoam/pEqn.H index ee03ece751..21f5ec080b 100644 --- a/applications/solvers/combustion/rhoReactingFoam/pEqn.H +++ b/applications/solvers/combustion/rhoReactingFoam/pEqn.H @@ -45,9 +45,9 @@ p.select ( ( - finalIter - && corr == nCorr-1 - && nonOrth == nNonOrthCorr + pimpleCorr.finalIter() + && corr == nCorr-1 + && nonOrth == nNonOrthCorr ) ) ) @@ -89,9 +89,9 @@ p.select ( ( - finalIter - && corr == nCorr-1 - && nonOrth == nNonOrthCorr + pimpleCorr.finalIter() + && corr == nCorr-1 + && nonOrth == nNonOrthCorr ) ) ) diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C index 7b160ec666..6c7f8a8cb5 100644 --- a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C +++ b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C @@ -36,6 +36,7 @@ Description #include "rhoChemistryModel.H" #include "chemistrySolver.H" #include "multivariateScheme.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -69,14 +70,14 @@ int main(int argc, char *argv[]) #include "chemistry.H" #include "rhoEqn.H" - for (label oCorr=1; oCorr <= nOuterCorr; oCorr++) + // --- Pressure-velocity PIMPLE corrector loop + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - #include "UEqn.H" #include "YEqn.H" #include "hsEqn.H" @@ -86,11 +87,6 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } turbulence->correct(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H index 08ce8f140b..4029b8fc8d 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H @@ -37,7 +37,7 @@ if (transonic) ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) @@ -75,7 +75,7 @@ else ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C index 20870bc650..06bcced406 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C @@ -38,6 +38,7 @@ Description #include "basicPsiThermo.H" #include "turbulenceModel.H" #include "fvcSmooth.H" +#include "pimpleLoop.H" #include "bound.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -70,20 +71,21 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); + #include "UEqn.H" #include "hEqn.H" @@ -92,13 +94,6 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - - turbulence->correct(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C index b91675f761..f399ae40cb 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C @@ -37,6 +37,7 @@ Description #include "basicPsiThermo.H" #include "turbulenceModel.H" #include "bound.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -64,14 +65,13 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H index b24e0a8d5d..9eee6f7cfa 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H @@ -40,7 +40,7 @@ if (transonic) p.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) @@ -81,7 +81,7 @@ else p.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C index a410cf5248..94e3f67e59 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C @@ -39,6 +39,7 @@ Description #include "bound.H" #include "MRFZones.H" #include "porousZones.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -69,14 +70,13 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/TEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/TEqn.H index 9a835792a4..dbfc61739f 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/TEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/TEqn.H @@ -12,7 +12,7 @@ ); TEqn.relax(); - TEqn.solve(mesh.solver(T.select(finalIter))); + TEqn.solve(); rhok = 1.0 - beta*(T - TRef); } diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/UEqn.H index 20a05e5cd4..df6f90ac02 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/UEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/UEqn.H @@ -21,7 +21,6 @@ - ghf*fvc::snGrad(rhok) - fvc::snGrad(p_rgh) )*mesh.magSf() - ), - mesh.solver(U.select(finalIter)) + ) ); } diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C index 54519906a4..6a57e839c5 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C @@ -48,6 +48,7 @@ Description #include "fvCFD.H" #include "singlePhaseTransportModel.H" #include "RASModel.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -77,14 +78,13 @@ int main(int argc, char *argv[]) #include "setDeltaT.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H index 897ce2a097..363ac11fb1 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H @@ -26,7 +26,7 @@ p_rgh.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H index 8c6a3f7671..c8b9f13180 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H @@ -21,7 +21,6 @@ - ghf*fvc::snGrad(rho) - fvc::snGrad(p_rgh) )*mesh.magSf() - ), - mesh.solver(U.select(finalIter)) + ) ); } diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C index 167ca4e741..6f947b5e25 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C @@ -37,6 +37,7 @@ Description #include "basicRhoThermo.H" #include "turbulenceModel.H" #include "fixedGradientFvPatchFields.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -70,14 +71,13 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); rho = thermo.rho(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/hEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/hEqn.H index 94537508b3..3125cc3ffa 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/hEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/hEqn.H @@ -9,7 +9,7 @@ ); hEqn.relax(); - hEqn.solve(mesh.solver(h.select(finalIter))); + hEqn.solve(); thermo.correct(); } diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H index c6d1ad5e3c..343ff2b800 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H @@ -40,7 +40,7 @@ p_rgh.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/incompressible/pimpleFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pEqn.H index b2e29e4407..8326f35a6b 100644 --- a/applications/solvers/incompressible/pimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pEqn.H @@ -27,7 +27,7 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H index 74045cabb7..88a0056e77 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pEqn.H @@ -30,7 +30,7 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) p.select ( ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C index 011c0a3f23..b606af5c79 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C @@ -36,6 +36,7 @@ Description #include "singlePhaseTransportModel.H" #include "turbulenceModel.H" #include "dynamicFvMesh.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -83,15 +84,14 @@ int main(int argc, char *argv[]) #include "meshCourantNo.H" } - // --- PIMPLE loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C index 75552ba411..af5a929e33 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C @@ -35,6 +35,7 @@ Description #include "fvCFD.H" #include "singlePhaseTransportModel.H" #include "turbulenceModel.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -60,14 +61,13 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << nl << endl; // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C index dc1c09e744..4e47de7572 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C @@ -46,6 +46,7 @@ Description #include "timeActivatedExplicitSource.H" #include "SLGThermo.H" #include "fvcSmooth.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -87,12 +88,14 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" - // --- PIMPLE loop - for (int oCorr=0; oCorrcorrect(); #include "UEqn.H" @@ -104,8 +107,6 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - - #include "removeFinalIter.H" } if (runTime.write()) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index c25c63df0b..edfb943848 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -46,7 +46,7 @@ ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C index f32be6214b..56eca74811 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C +++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C @@ -45,6 +45,7 @@ Description #include "timeActivatedExplicitSource.H" #include "radiationModel.H" #include "SLGThermo.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -89,15 +90,14 @@ int main(int argc, char *argv[]) #include "chemistry.H" #include "rhoEqn.H" - // --- PIMPLE loop - for (int oCorr=0; oCorrcorrect(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 80b73d8956..0e5cb3e1fe 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -32,7 +32,7 @@ if (transonic) ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) @@ -71,7 +71,7 @@ else ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H index 5599e861bb..15999a1798 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H @@ -32,7 +32,7 @@ if (transonic) ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) @@ -71,7 +71,7 @@ else ( p.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C index fb89974a62..f938d0f22b 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C @@ -38,6 +38,7 @@ Description #include "chemistrySolver.H" #include "radiationModel.H" #include "SLGThermo.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -77,15 +78,14 @@ int main(int argc, char *argv[]) #include "chemistry.H" #include "rhoEqn.H" - // --- PIMPLE loop - for (int oCorr=0; oCorrcorrect(); rho = thermo.rho(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } if (runTime.write()) diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C index e4fdb00535..949be33c58 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C +++ b/applications/solvers/multiphase/interPhaseChangeFoam/interPhaseChangeFoam.C @@ -46,6 +46,7 @@ Description #include "interfaceProperties.H" #include "phaseChangeTwoPhaseMixture.H" #include "turbulenceModel.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -83,10 +84,13 @@ int main(int argc, char *argv[]) turbulence->correct(); // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorrcorrect(); - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } runTime.write(); diff --git a/src/finiteVolume/cfdTools/general/include/addFinalIter.H b/src/finiteVolume/cfdTools/general/include/addFinalIter.H deleted file mode 100644 index 5e4cac2d7b..0000000000 --- a/src/finiteVolume/cfdTools/general/include/addFinalIter.H +++ /dev/null @@ -1,5 +0,0 @@ -if (finalIter) -{ - mesh.data::add("finalIteration", true); -} - diff --git a/src/finiteVolume/cfdTools/general/include/removeFinalIter.H b/src/finiteVolume/cfdTools/general/include/removeFinalIter.H deleted file mode 100644 index db56e97557..0000000000 --- a/src/finiteVolume/cfdTools/general/include/removeFinalIter.H +++ /dev/null @@ -1,4 +0,0 @@ -if (finalIter) -{ - mesh.data::remove("finalIteration"); -} diff --git a/src/finiteVolume/cfdTools/general/pimpleLoop/pimpleLoop.H b/src/finiteVolume/cfdTools/general/pimpleLoop/pimpleLoop.H new file mode 100644 index 0000000000..94e179f16f --- /dev/null +++ b/src/finiteVolume/cfdTools/general/pimpleLoop/pimpleLoop.H @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::pimpleLoop + +Description + PIMPLE loop class to formalise the iteration and automate the handling + of the "finalIteration" mesh data entry. + +\*---------------------------------------------------------------------------*/ + +#ifndef pimpleLoop_H +#define pimpleLoop_H + +#include "fvMesh.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class pimpleLoop Declaration +\*---------------------------------------------------------------------------*/ + +class pimpleLoop +{ + // Private data + + //- Reference to the mesh + fvMesh& mesh_; + + //- Number of PIMPLE correctors + const int nCorr_; + + //- Current PIMPLE corrector + int corr_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + pimpleLoop(const pimpleLoop&); + + //- Disallow default bitwise assignment + void operator=(const pimpleLoop&); + + +public: + + // Constructors + + //- Construct from components + pimpleLoop(fvMesh& mesh, const int nCorr) + : + mesh_(mesh), + nCorr_(nCorr), + corr_(0) + {} + + + //- Destructor + ~pimpleLoop() + {} + + + // Member Functions + + bool loop() + { + if (finalIter()) + { + mesh_.data::add("finalIteration", true); + } + + return corr_ < nCorr_; + } + + bool finalIter() const + { + return corr_ == nCorr_-1; + } + + + // Member Operators + + void operator++(int) + { + if (finalIter()) + { + mesh_.data::remove("finalIteration"); + } + + corr_++; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //