diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 6240cadb0e36fc9892a37573450179fb151a95ef..2d814226da8c797ea7ee9cca9b9276e35f3ce5f4 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - #include "UEqn.H" #include "ftEqn.H" @@ -86,11 +85,6 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } turbulence->correct(); diff --git a/applications/solvers/combustion/fireFoam/pEqn.H b/applications/solvers/combustion/fireFoam/pEqn.H index e0d120e9e303b722735dd2aae932ecd751b4bb4f..74b3cdc958e2967e86fac5575a320e609b3742fc 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 ee03ece751859dfdc4854bba69bca2ce6e15e2d2..21f5ec080bed99df90f85c70c54fde6d79cc381c 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 7b160ec666262f3c005895f415a9a640cf66a6c1..6c7f8a8cb5e7f3ce62a167469e394d50fa65ebd0 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 08ce8f140b3181a6cd853552339f03f96ba438e5..4029b8fc8dddc6c6c09082cb33c106e5a1392fe8 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 20870bc650a0b41906a4bc6033306e763c6798c7..06bcced40633352b106c0bb796db946663f2d4df 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p.storePrevIter(); rho.storePrevIter(); } + turbulence->correct(); + #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 b91675f761da4763764b6756a335cd9ce643f148..f399ae40cba82c6ff057a82062fa3be34a35bd6e 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p.storePrevIter(); @@ -88,11 +88,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 b24e0a8d5ddc00eea526690389b33fb62163c35c..9eee6f7cfa79061e044a76169ecc662315886866 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 a410cf5248fa0c75673d8842a89d5de1e1122691..94e3f67e59e8d8a4cbf2b9b940fc2db7bcf6cc4b 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p.storePrevIter(); @@ -93,11 +93,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 9a835792a4ec379bccfe2d933d34999c35b0a19a..dbfc61739f7d21e2d095ae55181831345fc05a75 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 20a05e5cd448366b05f8f9de882545190c31e8a0..df6f90ac02944f97767b2cbab770338d3762de6e 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 54519906a481cc48c873364a7036aab81c60dd96..6a57e839c5cf14178f7e3926bb71e6b44c2eb714 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p_rgh.storePrevIter(); @@ -100,11 +100,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 897ce2a0978c2b545f642f29a56dd4b89316e2bc..363ac11fb151e591630bd948763c0286e90572a5 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 8c6a3f7671aafa72e1bd3dc53cf8644d1345a642..c8b9f13180b2865af43e06ae49914ef6848e53da 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 167ca4e7411e6c4a698e2265622d880cc6b49302..6f947b5e25ed2ed5e4a88e5793189ada4f5f1f4d 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p_rgh.storePrevIter(); @@ -95,11 +95,6 @@ int main(int argc, char *argv[]) turbulence->correct(); 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 94537508b3725cc562118f196e2cca0de6664651..3125cc3ffa86ce120e7dbbf774c9b46941105418 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 c6d1ad5e3c80087b5757b4333f71e74d752cd0ff..343ff2b8008d669ef534b6f66bf061bdab0318ec 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 b2e29e4407cdd104a845149901f21a4189379bf8..8326f35a6b0b3dbe9262b3f05d58fb1c3a2c0e31 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 74045cabb7dfc05bfa3cac28d510f9ffa6bf4260..88a0056e772a51362f84b3c3113c4f70a7f638ff 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 011c0a3f23cb33e34912e3ae75a40c74e3be3778..b606af5c7973ef9c093b51b044f48cdf7481217d 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; 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); - } - if (nOuterCorr != 1) { p.storePrevIter(); @@ -106,11 +106,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 75552ba4111af83eee8ca7c354df8cef91d58164..af5a929e333619c5f79ebaeb48c4c129efb8aabe 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - if (nOuterCorr != 1) { p.storePrevIter(); @@ -82,11 +82,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 dc1c09e7440fd597a996da4fe09e0149877ba030..4e47de75722953c8407271290a22896d9d6cb483 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; oCorr<nOuterCorr; oCorr++) + // --- Pressure-velocity PIMPLE corrector loop + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - #include "addFinalIter.H" - turbulence->correct(); #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 c25c63df0b3c314414a6a3a85121a7ba0b22c8f6..edfb9438482bf39c2bbe9a59c2aeb52363c50afc 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 f32be6214b2a213a0370145040b4682e15cea103..56eca74811c2d90104c8db0669dbceba371ff881 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; 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" @@ -107,11 +107,6 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - - if (finalIter) - { - mesh.data::remove("finalIteration"); - } } turbulence->correct(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 80b73d8956503e663b35adbf25d548156dbdcd04..0e5cb3e1fe3acb5b9cc01998f24c8247488ab97c 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 5599e861bbeab83418529b55ee785c311afaabc7..15999a17985719c7f6bdc28ccc1a9cdfcf2d2a81 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 fb89974a622f0f0e8d00a6c0e61d88d704b47fd8..f938d0f22b0f3e3ed4ad81431e75aaa24edc2538 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; 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" @@ -99,11 +99,6 @@ int main(int argc, char *argv[]) turbulence->correct(); 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 e4fdb00535d6fe3d57ec8cac6d4083897f2c26dd..949be33c588c97c681eadce2120f22bd02995a53 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; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - #include "UEqn.H" // --- PISO loop diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H index 925e10aad2934deeb0c676025ff2ae42579c5ba5..59bc275540ee0f7c22e3675df5d3dac3ed22173c 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H +++ b/applications/solvers/multiphase/interPhaseChangeFoam/pEqn.H @@ -39,7 +39,7 @@ ( p_rgh.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H b/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H index 08f00fc185b794f4f821a4a08b563f72a074b618..4d7a6b986c81ae06185868ee2c7c0b6a346944f9 100644 --- a/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H +++ b/applications/solvers/multiphase/twoLiquidMixingFoam/pEqn.H @@ -29,7 +29,7 @@ ( p_rgh.select ( - finalIter + pimpleCorr.finalIter() && corr == nCorr-1 && nonOrth == nNonOrthCorr ) diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C index a5c2d9e7c60a124bf510d8b1cfb8f2c948ec6d37..32a25acafa5fe6f7367e5166d388e9f180c3dcdf 100644 --- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C +++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C @@ -34,6 +34,7 @@ Description #include "fvCFD.H" #include "twoPhaseMixture.H" #include "turbulenceModel.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -66,14 +67,13 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << nl << endl; // --- Pressure-velocity PIMPLE corrector loop - for (int oCorr=0; oCorr<nOuterCorr; oCorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { - bool finalIter = oCorr == nOuterCorr-1; - if (finalIter) - { - mesh.data::add("finalIteration", true); - } - twoPhaseProperties.correct(); #include "alphaEqn.H" @@ -87,11 +87,6 @@ int main(int argc, char *argv[]) } turbulence->correct(); - - 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 5e4cac2d7b82f52363ad62ba272147df440c3ae3..0000000000000000000000000000000000000000 --- 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 db56e975570e9cb88e8d44ff7d18c6d22731681f..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..94e179f16fa942840f7048e3c34390f40489d189 --- /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 <http://www.gnu.org/licenses/>. + +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 + +// ************************************************************************* //