From 89335fa1ce8fab041956ef70dad5e62aab6894a5 Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Mon, 18 Apr 2011 11:47:44 +0100 Subject: [PATCH] ENH: Further solver PIMPLE updates --- .../solvers/combustion/PDRFoam/PDRFoam.C | 36 ++++++++++++------- .../solvers/combustion/PDRFoam/UEqn.H | 2 +- .../solvers/combustion/PDRFoam/pEqn.H | 20 +++++++---- .../solvers/combustion/XiFoam/XiFoam.C | 8 +++-- .../coldEngineFoam/coldEngineFoam.C | 29 +++++++++------ .../dieselEngineFoam/dieselEngineFoam.C | 11 +++--- .../combustion/dieselFoam/dieselFoam.C | 8 +++-- .../solvers/combustion/engineFoam/UEqn.H | 2 +- .../combustion/engineFoam/engineFoam.C | 27 +++++++++----- .../solvers/combustion/engineFoam/pEqn.H | 22 +++++++----- .../solvers/combustion/fireFoam/fireFoam.C | 7 ++-- .../combustion/reactingFoam/reactingFoam.C | 7 ++-- .../rhoReactingFoam/rhoReactingFoam.C | 7 ++-- .../rhoPimpleFoam/rhoPimpleFoam.C | 5 ++- .../rhoPorousMRFPimpleFoam.C | 5 ++- .../buoyantBoussinesqPimpleFoam.C | 5 ++- .../buoyantPimpleFoam/buoyantPimpleFoam.C | 9 +++-- .../pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C | 5 ++- .../incompressible/pimpleFoam/pimpleFoam.C | 5 ++- .../shallowWaterFoam/shallowWaterFoam.C | 1 + .../coalChemistryFoam/coalChemistryFoam.C | 7 ++-- .../UEqn.H | 2 +- .../pEqn.H | 13 ++----- .../porousExplicitSourceReactingParcelFoam.C | 30 ++++++++++------ .../reactingParcelFilmFoam.C | 7 ++-- .../reactingParcelFoam/reactingParcelFoam.C | 9 +++-- .../cavitatingFoam/cavitatingFoam.C | 7 ++-- .../compressibleInterFoam.C | 7 ++-- .../interFoam/MRFInterFoam/MRFInterFoam.C | 7 ++-- .../interFoam/interDyMFoam/interDyMFoam.C | 7 ++-- .../solvers/multiphase/interFoam/interFoam.C | 7 ++-- .../porousInterFoam/porousInterFoam.C | 7 ++-- .../interMixingFoam/interMixingFoam.C | 7 ++-- .../MRFMultiphaseInterFoam.C | 7 ++-- .../multiphaseInterFoam/multiphaseInterFoam.C | 7 ++-- .../multiphase/settlingFoam/settlingFoam.C | 5 ++- .../twoLiquidMixingFoam/twoLiquidMixingFoam.C | 5 ++- 37 files changed, 241 insertions(+), 121 deletions(-) diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C index 2f11a8db1ac..a213c9f9687 100644 --- a/applications/solvers/combustion/PDRFoam/PDRFoam.C +++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C @@ -64,6 +64,7 @@ Description #include "ignition.H" #include "Switch.H" #include "bound.H" +#include "pimpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -81,6 +82,8 @@ int main(int argc, char *argv[]) #include "compressibleCourantNo.H" #include "setInitialDeltaT.H" + pimpleControl pimple(mesh); + scalar StCoNum = 0.0; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -90,7 +93,6 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "readPISOControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" @@ -98,26 +100,34 @@ int main(int argc, char *argv[]) Info<< "\n\nTime = " << runTime.timeName() << endl; #include "rhoEqn.H" - #include "UEqn.H" - // --- PISO loop - for (int corr=1; corr<=nCorr; corr++) + // --- Pressure-velocity PIMPLE corrector loop + for (pimple.start(); pimple.loop(); pimple++) { - #include "bEqn.H" - #include "ftEqn.H" - #include "huEqn.H" - #include "hEqn.H" + #include "UEqn.H" - if (!ign.ignited()) + // --- PISO loop + for (int corr=1; corr<=pimple.nCorr(); corr++) { - hu == h; + #include "bEqn.H" + #include "ftEqn.H" + #include "huEqn.H" + #include "hEqn.H" + + if (!ign.ignited()) + { + hu == h; + } + + #include "pEqn.H" } - #include "pEqn.H" + if (pimple.turbCorr()) + { + turbulence->correct(); + } } - turbulence->correct(); - runTime.write(); Info<< "\nExecutionTime = " diff --git a/applications/solvers/combustion/PDRFoam/UEqn.H b/applications/solvers/combustion/PDRFoam/UEqn.H index deb00a31210..70912c7cfae 100644 --- a/applications/solvers/combustion/PDRFoam/UEqn.H +++ b/applications/solvers/combustion/PDRFoam/UEqn.H @@ -9,7 +9,7 @@ volSymmTensorField invA(inv(I*UEqn.A() + drag->Dcu())); - if (momentumPredictor) + if (pimple.momentumPredictor()) { U = invA & (UEqn.H() - betav*fvc::grad(p)); U.correctBoundaryConditions(); diff --git a/applications/solvers/combustion/PDRFoam/pEqn.H b/applications/solvers/combustion/PDRFoam/pEqn.H index 9488e60e728..3c6a6341f9d 100644 --- a/applications/solvers/combustion/PDRFoam/pEqn.H +++ b/applications/solvers/combustion/PDRFoam/pEqn.H @@ -3,7 +3,7 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); U = invA & UEqn.H(); -if (transonic) +if (pimple.transonic()) { surfaceScalarField phid ( @@ -15,7 +15,7 @@ if (transonic) ) ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( @@ -24,9 +24,12 @@ if (transonic) - fvm::laplacian(rho*invA, p) ); - pEqn.solve(); + pEqn.solve + ( + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + ); - if (nonOrth == nNonOrthCorr) + if (nonOrth == pimple.nNonOrthCorr()) { phi == pEqn.flux(); } @@ -41,7 +44,7 @@ else + fvc::ddtPhiCorr(rAU, rho, U, phi) ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( @@ -50,9 +53,12 @@ else - fvm::laplacian(rho*invA, p) ); - pEqn.solve(); + pEqn.solve + ( + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + ); - if (nonOrth == nNonOrthCorr) + if (nonOrth == pimple.nNonOrthCorr()) { phi += pEqn.flux(); } diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C index 26c1cbd0603..fc3658269a2 100644 --- a/applications/solvers/combustion/XiFoam/XiFoam.C +++ b/applications/solvers/combustion/XiFoam/XiFoam.C @@ -88,10 +88,11 @@ int main(int argc, char *argv[]) runTime++; Info<< "Time = " << runTime.timeName() << nl << endl; + #include "rhoEqn.H" + // --- Pressure-velocity PIMPLE corrector loop for (pimple.start(); pimple.loop(); pimple++) { - #include "rhoEqn.H" #include "UEqn.H" #include "ftEqn.H" @@ -110,7 +111,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } rho = thermo.rho(); diff --git a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C index 89cc360d9f3..bb1f3f20182 100644 --- a/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C +++ b/applications/solvers/combustion/coldEngineFoam/coldEngineFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,6 +35,7 @@ Description #include "basicPsiThermo.H" #include "turbulenceModel.H" #include "OFstream.H" +#include "pimpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -51,13 +52,14 @@ int main(int argc, char *argv[]) #include "setInitialDeltaT.H" #include "startSummary.H" + pimpleControl pimple(mesh); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; while (runTime.run()) { - #include "readPISOControls.H" #include "readEngineTimeControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" @@ -71,17 +73,24 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" - #include "UEqn.H" - - // --- PISO loop - for (int corr=1; corr<=nCorr; corr++) + // --- Pressure-velocity PIMPLE corrector loop + for (pimple.start(); pimple.loop(); pimple++) { - #include "hEqn.H" - #include "pEqn.H" + #include "UEqn.H" + + // --- PISO loop + for (int corr=1; corr<=pimple.nCorr(); corr++) + { + #include "hEqn.H" + #include "pEqn.H" + } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } } - turbulence->correct(); - runTime.write(); #include "logSummary.H" diff --git a/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C b/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C index 467f7ef9d71..94ab9289994 100644 --- a/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C +++ b/applications/solvers/combustion/dieselEngineFoam/dieselEngineFoam.C @@ -79,10 +79,6 @@ int main(int argc, char *argv[]) Info<< "Crank angle = " << runTime.theta() << " CA-deg" << endl; mesh.move(); - const_cast<volPointInterpolation&> - ( - volPointInterpolation::New(mesh) - ).updateMesh(); dieselSpray.evolve(); @@ -122,9 +118,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } #include "logSummary.H" #include "spraySummary.H" diff --git a/applications/solvers/combustion/dieselFoam/dieselFoam.C b/applications/solvers/combustion/dieselFoam/dieselFoam.C index 35d3a304b26..7fd74102476 100644 --- a/applications/solvers/combustion/dieselFoam/dieselFoam.C +++ b/applications/solvers/combustion/dieselFoam/dieselFoam.C @@ -101,6 +101,7 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" + // --- Pressure-velocity PIMPLE corrector loop for (pimple.start(); pimple.loop(); pimple++) { #include "UEqn.H" @@ -112,9 +113,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } #include "spraySummary.H" diff --git a/applications/solvers/combustion/engineFoam/UEqn.H b/applications/solvers/combustion/engineFoam/UEqn.H index 64dd52b1b0a..eff9e1a5d28 100644 --- a/applications/solvers/combustion/engineFoam/UEqn.H +++ b/applications/solvers/combustion/engineFoam/UEqn.H @@ -5,7 +5,7 @@ + turbulence->divDevRhoReff(U) ); - if (momentumPredictor) + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); } diff --git a/applications/solvers/combustion/engineFoam/engineFoam.C b/applications/solvers/combustion/engineFoam/engineFoam.C index 4fedd9b92ce..b92da026517 100644 --- a/applications/solvers/combustion/engineFoam/engineFoam.C +++ b/applications/solvers/combustion/engineFoam/engineFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,6 +58,7 @@ Description #include "Switch.H" #include "OFstream.H" #include "mathematicalConstants.H" +#include "pimpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -75,13 +76,14 @@ int main(int argc, char *argv[]) #include "setInitialDeltaT.H" #include "startSummary.H" + pimpleControl pimple(mesh); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; while (runTime.run()) { - #include "readPISOControls.H" #include "readEngineTimeControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" @@ -94,11 +96,11 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" - #include "UEqn.H" - - // --- PISO loop - for (int corr=1; corr<=nCorr; corr++) + // --- Pressure-velocity PIMPLE corrector loop + for (pimple.start(); pimple.loop(); pimple++) { + #include "UEqn.H" + #include "ftEqn.H" #include "bEqn.H" #include "huEqn.H" @@ -109,10 +111,17 @@ int main(int argc, char *argv[]) hu == h; } - #include "pEqn.H" - } + // --- PISO loop + for (int corr=1; corr<=pimple.nCorr(); corr++) + { + #include "pEqn.H" + } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } #include "logSummary.H" diff --git a/applications/solvers/combustion/engineFoam/pEqn.H b/applications/solvers/combustion/engineFoam/pEqn.H index 78a90c2357d..1b75a933981 100644 --- a/applications/solvers/combustion/engineFoam/pEqn.H +++ b/applications/solvers/combustion/engineFoam/pEqn.H @@ -3,7 +3,7 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); U = rAU*UEqn.H(); -if (transonic) +if (pimple.transonic()) { surfaceScalarField phid ( @@ -12,18 +12,21 @@ if (transonic) *((fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U)) ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( fvm::ddt(psi, p) - + fvm::div(phid, p, "div(phid,p)") + + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) ); - pEqn.solve(); + pEqn.solve + ( + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + ); - if (nonOrth == nNonOrthCorr) + if (nonOrth == pimple.nNonOrthCorr()) { phi == pEqn.flux(); } @@ -34,7 +37,7 @@ else phi = fvc::interpolate(rho) *((fvc::interpolate(U) & mesh.Sf()) - fvc::meshPhi(rho, U)); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( @@ -43,9 +46,12 @@ else - fvm::laplacian(rho*rAU, p) ); - pEqn.solve(); + pEqn.solve + ( + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + ); - if (nonOrth == nNonOrthCorr) + if (nonOrth == pimple.nNonOrthCorr()) { phi += pEqn.flux(); } diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 4bef0f80eac..a517eccde11 100644 --- a/applications/solvers/combustion/fireFoam/fireFoam.C +++ b/applications/solvers/combustion/fireFoam/fireFoam.C @@ -81,9 +81,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } rho = thermo.rho(); diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C index 14539b6fe6a..ca156c3f7f3 100644 --- a/applications/solvers/combustion/reactingFoam/reactingFoam.C +++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C @@ -81,9 +81,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } if (runTime.write()) { diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C index 539fe9d9386..9c22e63c511 100644 --- a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C +++ b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C @@ -83,9 +83,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } rho = thermo.rho(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C index 746fb1224f4..a5e92c84795 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleFoam.C @@ -83,7 +83,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C index 5195655a339..ad9e04cc7ea 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C @@ -88,7 +88,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C index adb08c1ee5b..ce177dfeb9d 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C @@ -95,7 +95,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C index ca7724f101e..3c3eb76ac01 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C @@ -88,11 +88,14 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); - - rho = thermo.rho(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } + rho = thermo.rho(); + runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C index 6b5901eac86..3bedfc756dc 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleDyMFoam/pimpleDyMFoam.C @@ -101,7 +101,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C index 215947c1e85..8d7bcc372dd 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C @@ -79,7 +79,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); diff --git a/applications/solvers/incompressible/shallowWaterFoam/shallowWaterFoam.C b/applications/solvers/incompressible/shallowWaterFoam/shallowWaterFoam.C index f3131fbf632..a86a3977b38 100644 --- a/applications/solvers/incompressible/shallowWaterFoam/shallowWaterFoam.C +++ b/applications/solvers/incompressible/shallowWaterFoam/shallowWaterFoam.C @@ -57,6 +57,7 @@ int main(int argc, char *argv[]) #include "CourantNo.H" + // --- Pressure-velocity PIMPLE corrector loop for (pimple.start(); pimple.loop(); pimple++) { surfaceScalarField phiv("phiv", phi/fvc::interpolate(h)); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C index ac0cfb7cf8d..3d0eabcef8e 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C +++ b/applications/solvers/lagrangian/coalChemistryFoam/coalChemistryFoam.C @@ -103,9 +103,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } rho = thermo.rho(); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H index 35394576f88..e52431f1e88 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H @@ -12,7 +12,7 @@ pZones.addResistance(UEqn); - if (momentumPredictor) + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); } diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index 27921d63965..63d746fe79f 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -32,7 +32,7 @@ + massSource.SuTot() ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( @@ -42,17 +42,10 @@ pEqn.solve ( - mesh.solver - ( - p.select - ( - corr == nCorr-1 - && nonOrth == nNonOrthCorr - ) - ) + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) ); - if (nonOrth == nNonOrthCorr) + if (nonOrth == pimple.nNonOrthCorr()) { phi += pEqn.flux(); } diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C index 35dfc7e616f..638d83da0c7 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/porousExplicitSourceReactingParcelFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,6 +49,7 @@ Description #include "porousZones.H" #include "timeActivatedExplicitSource.H" #include "SLGThermo.H" +#include "pimpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -70,6 +71,8 @@ int main(int argc, char *argv[]) #include "compressibleCourantNo.H" #include "setInitialDeltaT.H" + pimpleControl pimple(mesh); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; @@ -77,7 +80,6 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "readPISOControls.H" #include "readAdditionalSolutionControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" @@ -90,18 +92,26 @@ int main(int argc, char *argv[]) #include "chemistry.H" #include "rhoEqn.H" - #include "UEqn.H" - #include "YEqn.H" - #include "hsEqn.H" - // --- PISO loop - for (int corr=0; corr<nCorr; corr++) + // --- Pressure-velocity PIMPLE corrector loop + for (pimple.start(); pimple.loop(); pimple++) { - #include "pEqn.H" + #include "UEqn.H" + #include "YEqn.H" + #include "hsEqn.H" + + // --- PISO loop + for (int corr=0; corr<pimple.nCorr(); corr++) + { + #include "pEqn.H" + } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } } - turbulence->correct(); - rho = thermo.rho(); if (runTime.write()) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C index 6d0a023ef03..6ae930c7a72 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C @@ -98,9 +98,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } rho = thermo.rho(); diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C index 0525585c171..ae2a06a363b 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C @@ -92,11 +92,14 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); - - rho = thermo.rho(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } + rho = thermo.rho(); + if (runTime.write()) { chemistry.dQ()().write(); diff --git a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C index d0b15b3c11f..64eb38f71ef 100644 --- a/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C +++ b/applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C @@ -78,9 +78,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C index 146293e72ca..d8204d7f2d9 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C @@ -88,12 +88,15 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } } rho = alpha1*rho1 + alpha2*rho2; - turbulence->correct(); - runTime.write(); Info<< "ExecutionTime = " diff --git a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C index 8eff1637e24..14fa1cfe7a0 100644 --- a/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C +++ b/applications/solvers/multiphase/interFoam/MRFInterFoam/MRFInterFoam.C @@ -93,9 +93,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C index 5bda42694bb..84d6552f02a 100644 --- a/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C +++ b/applications/solvers/multiphase/interFoam/interDyMFoam/interDyMFoam.C @@ -118,9 +118,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/interFoam/interFoam.C b/applications/solvers/multiphase/interFoam/interFoam.C index 8104cdde826..d74283cea57 100644 --- a/applications/solvers/multiphase/interFoam/interFoam.C +++ b/applications/solvers/multiphase/interFoam/interFoam.C @@ -93,9 +93,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C index 5059e559733..2d1b874c155 100644 --- a/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C +++ b/applications/solvers/multiphase/interFoam/porousInterFoam/porousInterFoam.C @@ -94,9 +94,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C b/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C index 496e2772ea8..498d180aa0b 100644 --- a/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C +++ b/applications/solvers/multiphase/interMixingFoam/interMixingFoam.C @@ -87,12 +87,15 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } + + if (pimple.turbCorr()) + { + turbulence->correct(); + } } #include "continuityErrs.H" - turbulence->correct(); - runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" diff --git a/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C index 85198665c6d..e731c2579bb 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C +++ b/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C @@ -85,9 +85,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C index f9d92768eca..533466ef1f6 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C +++ b/applications/solvers/multiphase/multiphaseInterFoam/multiphaseInterFoam.C @@ -82,9 +82,12 @@ int main(int argc, char *argv[]) { #include "pEqn.H" } - } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } + } runTime.write(); diff --git a/applications/solvers/multiphase/settlingFoam/settlingFoam.C b/applications/solvers/multiphase/settlingFoam/settlingFoam.C index ac45f62edf1..483cb276cdf 100644 --- a/applications/solvers/multiphase/settlingFoam/settlingFoam.C +++ b/applications/solvers/multiphase/settlingFoam/settlingFoam.C @@ -81,7 +81,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - #include "kEpsilon.H" + if (pimple.turbCorr()) + { + #include "kEpsilon.H" + } } runTime.write(); diff --git a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C index 89ab5aebb3f..39587a007bc 100644 --- a/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C +++ b/applications/solvers/multiphase/twoLiquidMixingFoam/twoLiquidMixingFoam.C @@ -81,7 +81,10 @@ int main(int argc, char *argv[]) #include "pEqn.H" } - turbulence->correct(); + if (pimple.turbCorr()) + { + turbulence->correct(); + } } runTime.write(); -- GitLab