diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H index 00581cd30243c8a2dff97c451105502005c5e25c..95395d97d4b319c4e3703b4d92c15d61b981b011 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/createFields.H @@ -234,4 +234,4 @@ label pRefCell = 0; scalar pRefValue = 0.0; - setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue); + setRefCell(p, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/pEqn.H b/applications/solvers/multiphase/twoPhaseEulerFoam/pEqn.H index 82fc1280c10a80193838323412b3de9a93f47709..53d11f9e0692520c75b9bc68d0e11ebe4215626a 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/pEqn.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/pEqn.H @@ -58,7 +58,7 @@ alphaf*rUaAf/rhoa + betaf*rUbAf/rhob ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) { fvScalarMatrix pEqn ( @@ -66,9 +66,13 @@ ); pEqn.setReference(pRefCell, pRefValue); - pEqn.solve(); - if (nonOrth == nNonOrthCorr) + pEqn.solve + ( + mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + ); + + if (nonOrth == pimple.nNonOrthCorr()) { surfaceScalarField SfGradp(pEqn.flux()/Dp); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/readPPProperties.H b/applications/solvers/multiphase/twoPhaseEulerFoam/readPPProperties.H index c1b319cbc96c9613a5d379b020b564204d55207e..a655736c547dba34301da4bf6dae5de97b534511 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/readPPProperties.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/readPPProperties.H @@ -10,27 +10,12 @@ ) ); - scalar preAlphaExp - ( - readScalar(ppProperties.lookup("preAlphaExp")) - ); + scalar preAlphaExp(readScalar(ppProperties.lookup("preAlphaExp"))); - scalar alphaMax - ( - readScalar(ppProperties.lookup("alphaMax")) - ); + scalar alphaMax(readScalar(ppProperties.lookup("alphaMax"))); - scalar expMax - ( - readScalar(ppProperties.lookup("expMax")) - ); + scalar expMax(readScalar(ppProperties.lookup("expMax"))); - dimensionedScalar g0 - ( - ppProperties.lookup("g0") - ); + dimensionedScalar g0(ppProperties.lookup("g0")); - Switch packingLimiter - ( - ppProperties.lookup("packingLimiter") - ); + Switch packingLimiter(ppProperties.lookup("packingLimiter")); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H b/applications/solvers/multiphase/twoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H index 7116c7450d2a37633b1be1d8fe1b9a4f28ee4d03..a345c4e53bc97e5b3ad14ddaf653805a78a75571 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H @@ -1,6 +1,5 @@ #include "readTimeControls.H" - #include "readPISOControls.H" - int nAlphaCorr(readInt(pisoDict.lookup("nAlphaCorr"))); + int nAlphaCorr(readInt(pimple.dict().lookup("nAlphaCorr"))); - Switch correctAlpha(pisoDict.lookup("correctAlpha")); + Switch correctAlpha(pimple.dict().lookup("correctAlpha")); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C index 24f55327eea53a24c5dfc9548013473505c22394..17cf2e7ec0c8ef742ce5351a1af2ec4667ac332c 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseEulerFoam.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 @@ -42,6 +42,8 @@ Description #include "phaseModel.H" #include "kineticTheoryModel.H" +#include "pimpleControl.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) @@ -58,6 +60,8 @@ int main(int argc, char *argv[]) #include "CourantNo.H" #include "setInitialDeltaT.H" + pimpleControl pimple(mesh); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; @@ -71,26 +75,33 @@ int main(int argc, char *argv[]) runTime++; Info<< "Time = " << runTime.timeName() << nl << endl; - #include "alphaEqn.H" - - #include "liftDragCoeffs.H" + // --- Pressure-velocity PIMPLE corrector loop + for (pimple.start(); pimple.loop(); pimple++) + { + #include "alphaEqn.H" - #include "UEqns.H" + #include "liftDragCoeffs.H" - // --- PISO loop - for (int corr=0; corr<nCorr; corr++) - { - #include "pEqn.H" + #include "UEqns.H" - if (correctAlpha && corr<nCorr-1) + // --- PISO loop + for (int corr=0; corr<pimple.nCorr(); corr++) { - #include "alphaEqn.H" + #include "pEqn.H" + + if (correctAlpha && !pimple.finalIter()) + { + #include "alphaEqn.H" + } } - } - #include "DDtU.H" + #include "DDtU.H" - #include "kEpsilon.H" + if (pimple.turbCorr()) + { + #include "kEpsilon.H" + } + } #include "write.H" diff --git a/tutorials/multiphase/twoPhaseEulerFoam/bed/system/fvSolution b/tutorials/multiphase/twoPhaseEulerFoam/bed/system/fvSolution index 50d3809fbedefa06da254d49a9a4bf885bc3606c..3fc3db5f29e49bdc0fb121678df442b15a116b43 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/bed/system/fvSolution +++ b/tutorials/multiphase/twoPhaseEulerFoam/bed/system/fvSolution @@ -21,7 +21,7 @@ solvers { solver GAMG; tolerance 1e-08; - relTol 0; + relTol 0.1; smoother DIC; nPreSweeps 0; nPostSweeps 2; @@ -32,7 +32,22 @@ solvers mergeLevels 1; } - "(Ua|Ub|Theta|k|epsilon)" + pFinal + { + $p; + tolerance 1e-08; + relTol 0; + } + + "(k|epsilon)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0.1; + } + + "(k|epsilon)Final" { solver PBiCG; preconditioner DILU; @@ -40,7 +55,15 @@ solvers relTol 0; } - "(alpha|beta)" + alpha + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0.1; + } + + alphaFinal { solver PBiCG; preconditioner DILU; @@ -49,7 +72,7 @@ solvers } } -PISO +PIMPLE { nCorrectors 2; nNonOrthogonalCorrectors 0; diff --git a/tutorials/multiphase/twoPhaseEulerFoam/bed2/system/fvSolution b/tutorials/multiphase/twoPhaseEulerFoam/bed2/system/fvSolution index ac04ffc4e34f2cd286fe35496c511f05f4786dde..3fc3db5f29e49bdc0fb121678df442b15a116b43 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/bed2/system/fvSolution +++ b/tutorials/multiphase/twoPhaseEulerFoam/bed2/system/fvSolution @@ -21,7 +21,7 @@ solvers { solver GAMG; tolerance 1e-08; - relTol 0; + relTol 0.1; smoother DIC; nPreSweeps 0; nPostSweeps 2; @@ -32,7 +32,22 @@ solvers mergeLevels 1; } - "(Ua|Ub|Theta|k|epsilon)" + pFinal + { + $p; + tolerance 1e-08; + relTol 0; + } + + "(k|epsilon)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0.1; + } + + "(k|epsilon)Final" { solver PBiCG; preconditioner DILU; @@ -40,7 +55,15 @@ solvers relTol 0; } - "(alpha|beta)" + alpha + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0.1; + } + + alphaFinal { solver PBiCG; preconditioner DILU; @@ -49,7 +72,7 @@ solvers } } -PISO +PIMPLE { nCorrectors 2; nNonOrthogonalCorrectors 0; @@ -59,15 +82,5 @@ PISO pRefValue 0; } -relaxationFactors -{ - Ua 1; - Ub 1; - alpha 1; - beta 1; - Theta 1; - "(k|epsilon)" 1; -} - // ************************************************************************* // diff --git a/tutorials/multiphase/twoPhaseEulerFoam/bubbleColumn/system/fvSolution b/tutorials/multiphase/twoPhaseEulerFoam/bubbleColumn/system/fvSolution index 87e79cf796dce5ca07539d50b7dbb9533affde9f..3fc3db5f29e49bdc0fb121678df442b15a116b43 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/bubbleColumn/system/fvSolution +++ b/tutorials/multiphase/twoPhaseEulerFoam/bubbleColumn/system/fvSolution @@ -21,7 +21,7 @@ solvers { solver GAMG; tolerance 1e-08; - relTol 0; + relTol 0.1; smoother DIC; nPreSweeps 0; nPostSweeps 2; @@ -32,7 +32,22 @@ solvers mergeLevels 1; } - "(Ua|Ub|Theta|k|epsilon)" + pFinal + { + $p; + tolerance 1e-08; + relTol 0; + } + + "(k|epsilon)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0.1; + } + + "(k|epsilon)Final" { solver PBiCG; preconditioner DILU; @@ -40,7 +55,15 @@ solvers relTol 0; } - "(alpha|beta)" + alpha + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-10; + relTol 0.1; + } + + alphaFinal { solver PBiCG; preconditioner DILU; @@ -49,12 +72,12 @@ solvers } } -PISO +PIMPLE { nCorrectors 2; nNonOrthogonalCorrectors 0; nAlphaCorr 2; - correctAlpha no; + correctAlpha yes; pRefCell 0; pRefValue 0; }