ENH: Updated solvers to use simpleControl and pimpleControl

This commit is contained in:
andy
2011-04-14 17:45:20 +01:00
parent a1577b8aa8
commit 656bbf5308
117 changed files with 461 additions and 656 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -30,6 +30,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -41,17 +42,17 @@ int main(int argc, char *argv[])
#include "createMesh.H" #include "createMesh.H"
#include "createFields.H" #include "createFields.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nCalculating temperature distribution\n" << endl; Info<< "\nCalculating temperature distribution\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H" for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{ {
solve solve
( (

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -30,32 +30,30 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
#include "createFields.H"
# include "setRootCase.H" simpleControl simple(mesh);
# include "createTime.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
# include "createMesh.H"
# include "createFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nCalculating scalar transport\n" << endl; Info<< "\nCalculating scalar transport\n" << endl;
# include "CourantNo.H" #include "CourantNo.H"
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
# include "readSIMPLEControls.H" for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{ {
solve solve
( (

View File

@ -59,11 +59,9 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPIMPLEControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -79,7 +77,7 @@ int main(int argc, char *argv[])
#include "fuhsEqn.H" #include "fuhsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -15,7 +15,7 @@ surfaceScalarField phiU
phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf(); phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf();
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
surfaceScalarField rhorAUf(fvc::interpolate(rho*rAU)); surfaceScalarField rhorAUf(fvc::interpolate(rho*rAU));
@ -28,18 +28,10 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += p_rghEqn.flux(); phi += p_rghEqn.flux();
} }

View File

@ -9,7 +9,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn == -fvc::grad(p)); solve(UEqn == -fvc::grad(p));
} }

View File

@ -8,7 +8,7 @@
volScalarField rAU(1.0/UEqn.A()); volScalarField rAU(1.0/UEqn.A());
U = rAU*UEqn.H(); U = rAU*UEqn.H();
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phiv surfaceScalarField phiv
( (
@ -30,7 +30,7 @@
+ correction(fvm::ddt(psi, p) + fvm::div(phid, p)) + correction(fvm::ddt(psi, p) + fvm::div(phid, p))
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -40,18 +40,10 @@
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }
@ -72,7 +64,7 @@
+ fvc::div(phi) + fvc::div(phi)
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -82,18 +74,10 @@
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -62,10 +62,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -81,7 +79,7 @@ int main(int argc, char *argv[])
#include "hsEqn.H" #include "hsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=1; corr<=nCorr; corr++) for (int corr=1; corr<=pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -11,7 +11,7 @@ UEqn().relax();
volScalarField rAU(1.0/UEqn().A()); volScalarField rAU(1.0/UEqn().A());
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn() == -fvc::grad(p)); solve(UEqn() == -fvc::grad(p));
} }

View File

@ -5,12 +5,12 @@ rho.relax();
U = rAU*UEqn().H(); U = rAU*UEqn().H();
if (nCorr <= 1) if (pimple.nCorr() <= 1)
{ {
UEqn.clear(); UEqn.clear();
} }
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phid surfaceScalarField phid
( (
@ -22,7 +22,7 @@ if (transonic)
) )
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -33,18 +33,10 @@ if (transonic)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi == pEqn.flux(); phi == pEqn.flux();
} }
@ -59,7 +51,7 @@ else
+ fvc::ddtPhiCorr(rAU, rho, U, phi) + fvc::ddtPhiCorr(rAU, rho, U, phi)
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
// Pressure corrector // Pressure corrector
fvScalarMatrix pEqn fvScalarMatrix pEqn
@ -71,18 +63,10 @@ else
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -56,10 +56,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -70,7 +68,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();
@ -80,7 +78,7 @@ int main(int argc, char *argv[])
#include "hEqn.H" #include "hEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -50,14 +50,14 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readPIMPLEControls.H"
pimpleControl pimple(mesh);
#include "setInitialrDeltaT.H" #include "setInitialrDeltaT.H"
#include "createFields.H" #include "createFields.H"
#include "createZones.H" #include "createZones.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
pimpleControl pimple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
@ -65,10 +65,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -81,7 +79,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();
@ -93,7 +91,7 @@ int main(int argc, char *argv[])
#include "hEqn.H" #include "hEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -1,6 +1,6 @@
scalar maxDeltaT scalar maxDeltaT
( (
pimpleDict.lookupOrDefault<scalar>("maxDeltaT", GREAT) pimple.dict().lookupOrDefault<scalar>("maxDeltaT", GREAT)
); );
volScalarField rDeltaT volScalarField rDeltaT

View File

@ -1,4 +1,6 @@
{ {
const dictionary& pimpleDict = pimple.dict();
scalar maxCo scalar maxCo
( (
pimpleDict.lookupOrDefault<scalar>("maxCo", 0.8) pimpleDict.lookupOrDefault<scalar>("maxCo", 0.8)
@ -29,7 +31,7 @@
/((2*maxCo)*mesh.V()*rho.dimensionedInternalField()) /((2*maxCo)*mesh.V()*rho.dimensionedInternalField())
); );
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phid surfaceScalarField phid
( (

View File

@ -15,7 +15,7 @@ pZones.addResistance(UEqn());
volScalarField rAU(1.0/UEqn().A()); volScalarField rAU(1.0/UEqn().A());
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn() == -fvc::grad(p)); solve(UEqn() == -fvc::grad(p));
} }

View File

@ -6,12 +6,12 @@ rho.relax();
volScalarField rAU(1.0/UEqn().A()); volScalarField rAU(1.0/UEqn().A());
U = rAU*UEqn().H(); U = rAU*UEqn().H();
if (nCorr <= 1) if (pimple.nCorr() <= 1)
{ {
UEqn.clear(); UEqn.clear();
} }
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phid surfaceScalarField phid
( (
@ -24,7 +24,7 @@ if (transonic)
); );
mrfZones.relativeFlux(fvc::interpolate(psi), phid); mrfZones.relativeFlux(fvc::interpolate(psi), phid);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -35,18 +35,10 @@ if (transonic)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi == pEqn.flux(); phi == pEqn.flux();
} }
@ -62,7 +54,7 @@ else
); );
mrfZones.relativeFlux(fvc::interpolate(rho), phi); mrfZones.relativeFlux(fvc::interpolate(rho), phi);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
// Pressure corrector // Pressure corrector
fvScalarMatrix pEqn fvScalarMatrix pEqn
@ -74,18 +66,10 @@ else
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -61,10 +61,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -75,7 +73,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();
@ -85,7 +83,7 @@ int main(int argc, char *argv[])
#include "hEqn.H" #include "hEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -9,7 +9,7 @@ UEqn.clear();
bool closedVolume = false; bool closedVolume = false;
if (transonic) if (simple.transonic())
{ {
surfaceScalarField phid surfaceScalarField phid
( (
@ -17,7 +17,7 @@ if (transonic)
fvc::interpolate(psi)*(fvc::interpolate(U) & mesh.Sf()) fvc::interpolate(psi)*(fvc::interpolate(U) & mesh.Sf())
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -32,7 +32,7 @@ if (transonic)
pEqn.solve(); pEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi == pEqn.flux(); phi == pEqn.flux();
} }
@ -43,7 +43,7 @@ else
phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf()); phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
closedVolume = adjustPhi(phi, U, p); closedVolume = adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -54,7 +54,7 @@ else
pEqn.solve(); pEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi -= pEqn.flux(); phi -= pEqn.flux();
} }

View File

@ -11,7 +11,7 @@ UEqn.clear();
bool closedVolume = false; bool closedVolume = false;
if (transonic) if (simple.transonic())
{ {
surfaceScalarField phid surfaceScalarField phid
( (
@ -20,7 +20,7 @@ if (transonic)
); );
mrfZones.relativeFlux(fvc::interpolate(psi), phid); mrfZones.relativeFlux(fvc::interpolate(psi), phid);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
tmp<fvScalarMatrix> tpEqn; tmp<fvScalarMatrix> tpEqn;
@ -37,7 +37,7 @@ if (transonic)
tpEqn().solve(); tpEqn().solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi == tpEqn().flux(); phi == tpEqn().flux();
} }
@ -50,7 +50,7 @@ else
closedVolume = adjustPhi(phi, U, p); closedVolume = adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
tmp<fvScalarMatrix> tpEqn; tmp<fvScalarMatrix> tpEqn;
@ -67,7 +67,7 @@ else
tpEqn().solve(); tpEqn().solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi -= tpEqn().flux(); phi -= tpEqn().flux();
} }

View File

@ -36,6 +36,7 @@ Description
#include "RASModel.H" #include "RASModel.H"
#include "MRFZones.H" #include "MRFZones.H"
#include "thermalPorousZones.H" #include "thermalPorousZones.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -48,16 +49,16 @@ int main(int argc, char *argv[])
#include "createZones.H" #include "createZones.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -33,6 +33,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "basicPsiThermo.H" #include "basicPsiThermo.H"
#include "RASModel.H" #include "RASModel.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -44,16 +45,16 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();

View File

@ -12,9 +12,9 @@ UEqn.clear();
bool closedVolume = false; bool closedVolume = false;
if (transonic) if (simple.transonic())
{ {
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
surfaceScalarField phid surfaceScalarField phid
( (
@ -54,7 +54,7 @@ if (transonic)
pEqn.solve(); pEqn.solve();
} }
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi == phic + pEqn.flux(); phi == phic + pEqn.flux();
} }
@ -62,7 +62,7 @@ if (transonic)
} }
else else
{ {
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
phi = fvc::interpolate(rho*U) & mesh.Sf(); phi = fvc::interpolate(rho*U) & mesh.Sf();
closedVolume = adjustPhi(phi, U, p); closedVolume = adjustPhi(phi, U, p);
@ -88,7 +88,7 @@ else
} }
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }
@ -119,7 +119,7 @@ rho = thermo.rho();
rho = max(rho, rhoMin); rho = max(rho, rhoMin);
rho = min(rho, rhoMax); rho = min(rho, rhoMax);
if (!transonic) if (!simple.transonic())
{ {
rho.relax(); rho.relax();
} }

View File

@ -35,6 +35,7 @@ Description
#include "RASModel.H" #include "RASModel.H"
#include "mixedFvPatchFields.H" #include "mixedFvPatchFields.H"
#include "bound.H" #include "bound.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -46,20 +47,20 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();
if (!transonic) if (!simple.transonic())
{ {
rho.storePrevIter(); rho.storePrevIter();
} }

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -38,6 +38,7 @@ Description
#include "OSspecific.H" #include "OSspecific.H"
#include "magnet.H" #include "magnet.H"
#include "electromagneticConstants.H" #include "electromagneticConstants.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -65,7 +66,8 @@ int main(int argc, char *argv[])
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "createFields.H" #include "createFields.H"
#include "readSIMPLEControls.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -73,7 +75,7 @@ int main(int argc, char *argv[])
runTime++; runTime++;
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
solve(fvm::laplacian(murf, psi) + fvc::div(murf*Mrf)); solve(fvm::laplacian(murf, psi) + fvc::div(murf*Mrf));
} }

View File

@ -9,7 +9,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -75,15 +75,13 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p_rgh.storePrevIter(); p_rgh.storePrevIter();
} }
@ -92,7 +90,7 @@ int main(int argc, char *argv[])
#include "TEqn.H" #include "TEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -10,7 +10,7 @@
surfaceScalarField buoyancyPhi(rAUf*ghf*fvc::snGrad(rhok)*mesh.magSf()); surfaceScalarField buoyancyPhi(rAUf*ghf*fvc::snGrad(rhok)*mesh.magSf());
phi -= buoyancyPhi; phi -= buoyancyPhi;
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -21,18 +21,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
// Calculate the conservative fluxes // Calculate the conservative fluxes
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();

View File

@ -8,7 +8,7 @@
UEqn().relax(); UEqn().relax();
if (momentumPredictor) if (simple.momentumPredictor())
{ {
solve solve
( (

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -48,6 +48,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "RASModel.H" #include "RASModel.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -60,16 +61,16 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p_rgh.storePrevIter(); p_rgh.storePrevIter();
// Pressure-velocity SIMPLE corrector // Pressure-velocity SIMPLE corrector

View File

@ -11,7 +11,7 @@
surfaceScalarField buoyancyPhi(rAUf*ghf*fvc::snGrad(rhok)*mesh.magSf()); surfaceScalarField buoyancyPhi(rAUf*ghf*fvc::snGrad(rhok)*mesh.magSf());
phi -= buoyancyPhi; phi -= buoyancyPhi;
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -22,7 +22,7 @@
p_rghEqn.solve(); p_rghEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
// Calculate the conservative fluxes // Calculate the conservative fluxes
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();

View File

@ -9,7 +9,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -62,10 +62,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -76,7 +74,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p_rgh.storePrevIter(); p_rgh.storePrevIter();
} }
@ -85,7 +83,7 @@ int main(int argc, char *argv[])
#include "hEqn.H" #include "hEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -25,7 +25,7 @@
+ fvc::div(phi) + fvc::div(phi)
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -35,18 +35,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
// Calculate the conservative fluxes // Calculate the conservative fluxes
phi += p_rghEqn.flux(); phi += p_rghEqn.flux();

View File

@ -8,7 +8,7 @@
UEqn().relax(); UEqn().relax();
if (momentumPredictor) if (simple.momentumPredictor())
{ {
solve solve
( (

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -33,6 +33,7 @@ Description
#include "basicPsiThermo.H" #include "basicPsiThermo.H"
#include "RASModel.H" #include "RASModel.H"
#include "fixedGradientFvPatchFields.H" #include "fixedGradientFvPatchFields.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -45,16 +46,16 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p_rgh.storePrevIter(); p_rgh.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();

View File

@ -14,7 +14,7 @@
surfaceScalarField buoyancyPhi(rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); surfaceScalarField buoyancyPhi(rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
phi -= buoyancyPhi; phi -= buoyancyPhi;
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -24,7 +24,7 @@
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell)); p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
p_rghEqn.solve(); p_rghEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
// Calculate the conservative fluxes // Calculate the conservative fluxes
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -35,6 +35,7 @@ Description
#include "RASModel.H" #include "RASModel.H"
#include "fixedGradientFvPatchFields.H" #include "fixedGradientFvPatchFields.H"
#include "radiationModel.H" #include "radiationModel.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -48,16 +49,16 @@ int main(int argc, char *argv[])
#include "createRadiationModel.H" #include "createRadiationModel.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p_rgh.storePrevIter(); p_rgh.storePrevIter();
rho.storePrevIter(); rho.storePrevIter();

View File

@ -48,6 +48,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "RASModel.H" #include "RASModel.H"
#include "simpleControl.H"
template<class Type> template<class Type>
void zeroCells void zeroCells
@ -74,16 +75,16 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
laminarTransport.lookup("lambda") >> lambda; laminarTransport.lookup("lambda") >> lambda;
@ -121,7 +122,7 @@ int main(int argc, char *argv[])
adjustPhi(phi, U, p); adjustPhi(phi, U, p);
// Non-orthogonal pressure corrector loop // Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -131,7 +132,7 @@ int main(int argc, char *argv[])
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(); pEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi -= pEqn.flux(); phi -= pEqn.flux();
} }
@ -184,7 +185,7 @@ int main(int argc, char *argv[])
adjustPhi(phia, Ua, pa); adjustPhi(phia, Ua, pa);
// Non-orthogonal pressure corrector loop // Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix paEqn fvScalarMatrix paEqn
( (
@ -194,7 +195,7 @@ int main(int argc, char *argv[])
paEqn.setReference(paRefCell, paRefValue); paEqn.setReference(paRefCell, paRefValue);
paEqn.solve(); paEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phia -= paEqn.flux(); phia -= paEqn.flux();
} }

View File

@ -11,7 +11,7 @@ UEqn().relax();
volScalarField rAU(1.0/UEqn().A()); volScalarField rAU(1.0/UEqn().A());
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn() == -fvc::grad(p)); solve(UEqn() == -fvc::grad(p));
} }

View File

@ -1,6 +1,6 @@
U = rAU*UEqn().H(); U = rAU*UEqn().H();
if (nCorr <= 1) if (pimple.nCorr() <= 1)
{ {
UEqn.clear(); UEqn.clear();
} }
@ -11,7 +11,7 @@ phi = (fvc::interpolate(U) & mesh.Sf())
adjustPhi(phi, U, p); adjustPhi(phi, U, p);
// Non-orthogonal pressure corrector loop // Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
// Pressure corrector // Pressure corrector
fvScalarMatrix pEqn fvScalarMatrix pEqn
@ -23,18 +23,10 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= pEqn.flux(); phi -= pEqn.flux();
} }

View File

@ -11,7 +11,7 @@ UEqn().relax();
rAU = 1.0/UEqn().A(); rAU = 1.0/UEqn().A();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn() == -fvc::grad(p)); solve(UEqn() == -fvc::grad(p));
} }

View File

@ -50,7 +50,7 @@
pcorrTypes pcorrTypes
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pcorrEqn fvScalarMatrix pcorrEqn
( (
@ -60,7 +60,7 @@
pcorrEqn.setReference(pRefCell, pRefValue); pcorrEqn.setReference(pRefCell, pRefValue);
pcorrEqn.solve(); pcorrEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= pcorrEqn.flux(); phi -= pcorrEqn.flux();
} }

View File

@ -1,6 +1,6 @@
U = rAU*UEqn().H(); U = rAU*UEqn().H();
if (nCorr <= 1) if (pimple.nCorr() <= 1)
{ {
UEqn.clear(); UEqn.clear();
} }
@ -14,7 +14,7 @@ if (p.needReference())
fvc::makeAbsolute(phi, U); fvc::makeAbsolute(phi, U);
} }
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -25,18 +25,10 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= pEqn.flux(); phi -= pEqn.flux();
} }

View File

@ -60,7 +60,6 @@ int main(int argc, char *argv[])
{ {
#include "readControls.H" #include "readControls.H"
#include "CourantNo.H" #include "CourantNo.H"
pimple.read();
// Make the fluxes absolute // Make the fluxes absolute
fvc::makeAbsolute(phi, U); fvc::makeAbsolute(phi, U);
@ -89,7 +88,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
} }
@ -97,7 +96,7 @@ int main(int argc, char *argv[])
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -1,5 +1,6 @@
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
const dictionary& pimpleDict = pimple.dict();
const bool correctPhi = const bool correctPhi =
pimpleDict.lookupOrDefault("correctPhi", false); pimpleDict.lookupOrDefault("correctPhi", false);

View File

@ -56,10 +56,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -68,7 +66,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
} }
@ -76,7 +74,7 @@ int main(int argc, char *argv[])
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -26,14 +26,13 @@
mesh mesh
); );
# include "createPhi.H" #include "createPhi.H"
label pRefCell = 0; label pRefCell = 0;
scalar pRefValue = 0.0; scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("SIMPLE"), pRefCell, pRefValue); setRefCell(p, mesh.solutionDict().subDict("SIMPLE"), pRefCell, pRefValue);
singlePhaseTransportModel laminarTransport(U, phi); singlePhaseTransportModel laminarTransport(U, phi);
autoPtr<incompressible::RASModel> turbulence autoPtr<incompressible::RASModel> turbulence

View File

@ -7,7 +7,7 @@
adjustPhi(phi, U, p); adjustPhi(phi, U, p);
// Non-orthogonal pressure corrector loop // Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -18,7 +18,7 @@
pEqn.solve(); pEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi -= pEqn.flux(); phi -= pEqn.flux();
} }

View File

@ -6,13 +6,7 @@
if (pZones.size()) if (pZones.size())
{ {
// nUCorrectors for pressureImplicitPorosity // nUCorrectors for pressureImplicitPorosity
if (mesh.solutionDict().subDict("SIMPLE").found("nUCorrectors")) nUCorr = simple.dict().lookupOrDefault<int>("nUCorrectors", 0);
{
nUCorr = readInt
(
mesh.solutionDict().subDict("SIMPLE").lookup("nUCorrectors")
);
}
if (nUCorr > 0) if (nUCorr > 0)
{ {

View File

@ -11,7 +11,7 @@ UEqn.clear();
phi = fvc::interpolate(U) & mesh.Sf(); phi = fvc::interpolate(U) & mesh.Sf();
adjustPhi(phi, U, p); adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++)
{ {
tmp<fvScalarMatrix> tpEqn; tmp<fvScalarMatrix> tpEqn;
@ -35,7 +35,7 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
tpEqn().solve(); tpEqn().solve();
} }
if (nonOrth == nNonOrthCorr) if (nonOrth == simple.nNonOrthCorr())
{ {
phi -= tpEqn().flux(); phi -= tpEqn().flux();
} }

View File

@ -34,6 +34,7 @@ Description
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "RASModel.H" #include "RASModel.H"
#include "porousZones.H" #include "porousZones.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -42,6 +43,9 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
simpleControl simple(mesh);
#include "createFields.H" #include "createFields.H"
#include "createPorousZones.H" #include "createPorousZones.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
@ -50,12 +54,10 @@ int main(int argc, char *argv[])
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
// Pressure-velocity SIMPLE corrector // Pressure-velocity SIMPLE corrector

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -32,6 +32,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "RASModel.H" #include "RASModel.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -43,16 +44,16 @@ int main(int argc, char *argv[])
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
simpleControl simple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (simple.loop())
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readSIMPLEControls.H"
p.storePrevIter(); p.storePrevIter();
// Pressure-velocity SIMPLE corrector // Pressure-velocity SIMPLE corrector

View File

@ -74,11 +74,9 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPIMPLEControls.H"
#include "readChemistryProperties.H" #include "readChemistryProperties.H"
#include "readAdditionalSolutionControls.H" #include "readAdditionalSolutionControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
pimple.read();
runTime++; runTime++;
@ -94,7 +92,7 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++) for (pimple.start(); pimple.loop(); pimple++)
{ {
if (nOuterCorr != 1) if (pimple.nOuterCorr() != 1)
{ {
p.storePrevIter(); p.storePrevIter();
} }
@ -106,7 +104,7 @@ int main(int argc, char *argv[])
#include "hsEqn.H" #include "hsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -12,7 +12,7 @@
pZones.addResistance(UEqn); pZones.addResistance(UEqn);
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn == -fvc::grad(p)); solve(UEqn == -fvc::grad(p));
} }

View File

@ -32,7 +32,7 @@
+ massSource.SuTot() + massSource.SuTot()
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -42,18 +42,10 @@
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -11,7 +11,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn == -fvc::grad(p)); solve(UEqn == -fvc::grad(p));
} }

View File

@ -74,10 +74,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPISOControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -101,7 +99,7 @@ int main(int argc, char *argv[])
#include "hsEqn.H" #include "hsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -3,7 +3,7 @@ rho = thermo.rho();
volScalarField rAU(1.0/UEqn.A()); volScalarField rAU(1.0/UEqn.A());
U = rAU*UEqn.H(); U = rAU*UEqn.H();
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phid 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 fvScalarMatrix pEqn
( (
@ -28,18 +28,10 @@ if (transonic)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi == pEqn.flux(); phi == pEqn.flux();
} }
@ -54,7 +46,7 @@ else
+ fvc::ddtPhiCorr(rAU, rho, U, phi) + fvc::ddtPhiCorr(rAU, rho, U, phi)
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -67,18 +59,10 @@ else
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -9,7 +9,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -15,7 +15,7 @@ surfaceScalarField phiU
phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf(); phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf();
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -30,18 +30,10 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += p_rghEqn.flux(); phi += p_rghEqn.flux();
} }

View File

@ -69,11 +69,9 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setMultiRegionDeltaT.H" #include "setMultiRegionDeltaT.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -96,7 +94,7 @@ int main(int argc, char *argv[])
#include "hsEqn.H" #include "hsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=1; corr<=nCorr; corr++) for (int corr=1; corr<=pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -10,7 +10,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn == -fvc::grad(p)); solve(UEqn == -fvc::grad(p));
} }

View File

@ -3,7 +3,7 @@ rho = thermo.rho();
volScalarField rAU(1.0/UEqn.A()); volScalarField rAU(1.0/UEqn.A());
U = rAU*UEqn.H(); U = rAU*UEqn.H();
if (transonic) if (pimple.transonic())
{ {
surfaceScalarField phid 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 fvScalarMatrix pEqn
( (
@ -28,18 +28,10 @@ if (transonic)
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi == pEqn.flux(); phi == pEqn.flux();
} }
@ -54,7 +46,7 @@ else
+ fvc::ddtPhiCorr(rAU, rho, U, phi) + fvc::ddtPhiCorr(rAU, rho, U, phi)
); );
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -67,18 +59,10 @@ else
pEqn.solve pEqn.solve
( (
mesh.solver mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
(
p.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += pEqn.flux(); phi += pEqn.flux();
} }

View File

@ -67,10 +67,8 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readTimeControls.H"
#include "readPIMPLEControls.H"
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -89,7 +87,7 @@ int main(int argc, char *argv[])
#include "hsEqn.H" #include "hsEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -16,7 +16,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve(UEqn == -fvc::grad(p)); solve(UEqn == -fvc::grad(p));
} }

View File

@ -36,6 +36,7 @@ Description
#include "barotropicCompressibilityModel.H" #include "barotropicCompressibilityModel.H"
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -52,6 +53,8 @@ int main(int argc, char *argv[])
#include "compressibleCourantNo.H" #include "compressibleCourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
pimpleControl pimple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
@ -65,13 +68,13 @@ int main(int argc, char *argv[])
runTime++; runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
for (int outerCorr=0; outerCorr<nOuterCorr; outerCorr++) for (int outerCorr=0; outerCorr<pimple.nOuterCorr(); outerCorr++)
{ {
#include "rhoEqn.H" #include "rhoEqn.H"
#include "gammaPsi.H" #include "gammaPsi.H"
#include "UEqn.H" #include "UEqn.H"
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -1,5 +1,5 @@
{ {
if (nOuterCorr == 1) if (pimple.nOuterCorr() == 1)
{ {
p = p =
( (
@ -26,7 +26,7 @@
#include "resetPhivPatches.H" #include "resetPhivPatches.H"
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pEqn fvScalarMatrix pEqn
( (
@ -37,16 +37,12 @@
- fvm::laplacian(rAUf, p) - fvm::laplacian(rAUf, p)
); );
if (corr == nCorr-1 && nonOrth == nNonOrthCorr) pEqn.solve
{ (
pEqn.solve(mesh.solver(p.name() + "Final")); mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth)))
} );
else
{
pEqn.solve(mesh.solver(p.name()));
}
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phiv += (phiGradp + pEqn.flux())/rhof; phiv += (phiGradp + pEqn.flux())/rhof;
} }
@ -82,9 +78,9 @@
U = HbyA - rAU*fvc::grad(p); U = HbyA - rAU*fvc::grad(p);
// Remove the swirl component of velocity for "wedge" cases // Remove the swirl component of velocity for "wedge" cases
if (piso.found("removeSwirl")) if (pimple.dict().found("removeSwirl"))
{ {
label swirlCmpt(readLabel(piso.lookup("removeSwirl"))); label swirlCmpt(readLabel(pimple.dict().lookup("removeSwirl")));
Info<< "Removing swirl component-" << swirlCmpt << " of U" << endl; Info<< "Removing swirl component-" << swirlCmpt << " of U" << endl;
U.field().replace(swirlCmpt, 0.0); U.field().replace(swirlCmpt, 0.0);

View File

@ -5,5 +5,3 @@ scalar maxAcousticCo
readScalar(runTime.controlDict().lookup("maxAcousticCo")) readScalar(runTime.controlDict().lookup("maxAcousticCo"))
); );
#include "readPISOControls.H"

View File

@ -16,7 +16,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -44,6 +44,7 @@ Description
#include "interfaceProperties.H" #include "interfaceProperties.H"
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -60,6 +61,8 @@ int main(int argc, char *argv[])
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
pimpleControl pimple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
@ -113,7 +116,7 @@ int main(int argc, char *argv[])
turbulence->correct(); turbulence->correct();
// --- Outer-corrector loop // --- Outer-corrector loop
for (int oCorr=0; oCorr<nOuterCorr; oCorr++) for (int oCorr=0; oCorr<pimple.nOuterCorr(); oCorr++)
{ {
#include "alphaEqnsSubCycle.H" #include "alphaEqnsSubCycle.H"
@ -122,7 +125,7 @@ int main(int argc, char *argv[])
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<oimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -4,7 +4,7 @@
tmp<fvScalarMatrix> p_rghEqnComp; tmp<fvScalarMatrix> p_rghEqnComp;
if (transonic) if (pimple.transonic())
{ {
p_rghEqnComp = p_rghEqnComp =
( (
@ -39,7 +39,7 @@
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf(); )*rAUf*mesh.magSf();
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqnIncomp fvScalarMatrix p_rghEqnIncomp
( (
@ -55,18 +55,10 @@
) )
*p_rghEqnComp() *p_rghEqnComp()
+ p_rghEqnIncomp, + p_rghEqnIncomp,
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
oCorr == nOuterCorr-1
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
dgdt = dgdt =
(pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1)) (pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))

View File

@ -1,15 +1,8 @@
#include "readPISOControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
label nAlphaCorr label nAlphaCorr(readLabel(pimple.dict().lookup("nAlphaCorr")));
(
readLabel(piso.lookup("nAlphaCorr"))
);
label nAlphaSubCycles label nAlphaSubCycles(readLabel(pimple.dict().lookup("nAlphaSubCycles")));
(
readLabel(piso.lookup("nAlphaSubCycles"))
);
if (nAlphaSubCycles > 1 && nOuterCorr != 1) if (nAlphaSubCycles > 1 && nOuterCorr != 1)
{ {
@ -19,14 +12,8 @@
<< exit(FatalError); << exit(FatalError);
} }
bool correctPhi = true; bool correctPhi =
if (piso.found("correctPhi")) pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
{
correctPhi = Switch(piso.lookup("correctPhi"));
}
bool checkMeshCourantNo = false; bool checkMeshCourantNo =
if (piso.found("checkMeshCourantNo")) pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
{
checkMeshCourantNo = Switch(piso.lookup("checkMeshCourantNo"));
}

View File

@ -41,6 +41,7 @@ Description
#include "interfaceProperties.H" #include "interfaceProperties.H"
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -56,6 +57,8 @@ int main(int argc, char *argv[])
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
pimpleControl pimple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
@ -71,7 +74,7 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
// --- Outer-corrector loop // --- Outer-corrector loop
for (int oCorr=0; oCorr<nOuterCorr; oCorr++) for (int oCorr=0; oCorr<pimple.nOuterCorr(); oCorr++)
{ {
#include "alphaEqnsSubCycle.H" #include "alphaEqnsSubCycle.H"
@ -80,7 +83,7 @@ int main(int argc, char *argv[])
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -39,7 +39,7 @@
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf(); )*rAUf*mesh.magSf();
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqnIncomp fvScalarMatrix p_rghEqnIncomp
( (
@ -55,18 +55,10 @@
) )
*p_rghEqnComp() *p_rghEqnComp()
+ p_rghEqnIncomp, + p_rghEqnIncomp,
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
oCorr == nOuterCorr-1
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
dgdt = dgdt =
(pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1)) (pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))

View File

@ -1,14 +1,13 @@
#include "readPISOControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
label nAlphaCorr label nAlphaCorr
( (
readLabel(piso.lookup("nAlphaCorr")) readLabel(pimple.dict().lookup("nAlphaCorr"))
); );
label nAlphaSubCycles label nAlphaSubCycles
( (
readLabel(piso.lookup("nAlphaSubCycles")) readLabel(pimple.dict().lookup("nAlphaSubCycles"))
); );
if (nAlphaSubCycles > 1 && nOuterCorr != 1) if (nAlphaSubCycles > 1 && nOuterCorr != 1)

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -44,6 +44,7 @@ Description
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "fvcSmooth.H" #include "fvcSmooth.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -52,9 +53,11 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
pimpleControl pimple(mesh);
#include "correctPhi.H" #include "correctPhi.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialrDeltaT.H" #include "setInitialrDeltaT.H"
@ -65,8 +68,6 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPISOControls.H"
runTime++; runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
@ -76,14 +77,20 @@ int main(int argc, char *argv[])
twoPhaseProperties.correct(); twoPhaseProperties.correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
turbulence->correct(); turbulence->correct();
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
runTime.write(); runTime.write();

View File

@ -1,6 +1,8 @@
label nAlphaCorr(readLabel(piso.lookup("nAlphaCorr"))); const dictionary& pimpleDict = pimple.dict();
label nAlphaSubCycles(readLabel(piso.lookup("nAlphaSubCycles"))); label nAlphaCorr(readLabel(pimpleDict.lookup("nAlphaCorr")));
label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
if (nAlphaSubCycles > 1) if (nAlphaSubCycles > 1)
{ {

View File

@ -1,6 +1,6 @@
scalar maxDeltaT scalar maxDeltaT
( (
piso.lookupOrDefault<scalar>("maxDeltaT", GREAT) pimple.dict().lookupOrDefault<scalar>("maxDeltaT", GREAT)
); );
volScalarField rDeltaT volScalarField rDeltaT

View File

@ -1,52 +1,54 @@
{ {
const dictionary& pimpleDict = pimple.dict();
scalar maxCo scalar maxCo
( (
piso.lookupOrDefault<scalar>("maxCo", 0.9) pimpleDict.lookupOrDefault<scalar>("maxCo", 0.9)
); );
scalar maxAlphaCo scalar maxAlphaCo
( (
piso.lookupOrDefault<scalar>("maxAlphaCo", 0.2) pimpleDict.lookupOrDefault<scalar>("maxAlphaCo", 0.2)
); );
scalar rDeltaTSmoothingCoeff scalar rDeltaTSmoothingCoeff
( (
piso.lookupOrDefault<scalar>("rDeltaTSmoothingCoeff", 0.1) pimpleDict.lookupOrDefault<scalar>("rDeltaTSmoothingCoeff", 0.1)
); );
label nAlphaSpreadIter label nAlphaSpreadIter
( (
piso.lookupOrDefault<label>("nAlphaSpreadIter", 1) pimpleDict.lookupOrDefault<label>("nAlphaSpreadIter", 1)
); );
scalar alphaSpreadDiff scalar alphaSpreadDiff
( (
piso.lookupOrDefault<scalar>("alphaSpreadDiff", 0.2) pimpleDict.lookupOrDefault<scalar>("alphaSpreadDiff", 0.2)
); );
scalar alphaSpreadMax scalar alphaSpreadMax
( (
piso.lookupOrDefault<scalar>("alphaSpreadMax", 0.99) pimpleDict.lookupOrDefault<scalar>("alphaSpreadMax", 0.99)
); );
scalar alphaSpreadMin scalar alphaSpreadMin
( (
piso.lookupOrDefault<scalar>("alphaSpreadMin", 0.01) pimpleDict.lookupOrDefault<scalar>("alphaSpreadMin", 0.01)
); );
label nAlphaSweepIter label nAlphaSweepIter
( (
piso.lookupOrDefault<label>("nAlphaSweepIter", 5) pimpleDict.lookupOrDefault<label>("nAlphaSweepIter", 5)
); );
scalar rDeltaTDampingCoeff scalar rDeltaTDampingCoeff
( (
piso.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1.0) pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1.0)
); );
scalar maxDeltaT scalar maxDeltaT
( (
piso.lookupOrDefault<scalar>("maxDeltaT", GREAT) pimpleDict.lookupOrDefault<scalar>("maxDeltaT", GREAT)
); );
volScalarField rDeltaT0("rDeltaT0", rDeltaT); volScalarField rDeltaT0("rDeltaT0", rDeltaT);
@ -130,7 +132,7 @@
label nAlphaSubCycles label nAlphaSubCycles
( (
readLabel(piso.lookup("nAlphaSubCycles")) readLabel(pimpleDict.lookup("nAlphaSubCycles"))
); );
rSubDeltaT = rDeltaT*nAlphaSubCycles; rSubDeltaT = rDeltaT*nAlphaSubCycles;

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -43,6 +43,7 @@ Description
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "MRFZones.H" #include "MRFZones.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -51,11 +52,13 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "createMRFZones.H" #include "createMRFZones.H"
#include "readTimeControls.H" #include "readTimeControls.H"
pimpleControl pimple(mesh);
#include "correctPhi.H" #include "correctPhi.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
@ -66,7 +69,6 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPISOControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "alphaCourantNo.H" #include "alphaCourantNo.H"
@ -81,13 +83,17 @@ int main(int argc, char *argv[])
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
#include "zonePhaseVolumes.H" #include "zonePhaseVolumes.H"
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
turbulence->correct(); turbulence->correct();

View File

@ -17,7 +17,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -19,7 +19,7 @@
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf(); )*rAUf*mesh.magSf();
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for(int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -30,13 +30,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select(corr == nCorr-1 && nonOrth == nNonOrthCorr)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();
} }

View File

@ -16,7 +16,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -1,12 +1,6 @@
label nAlphaCorr label nAlphaCorr(readLabel(pimple.dict().lookup("nAlphaCorr")));
(
readLabel(piso.lookup("nAlphaCorr"))
);
label nAlphaSubCycles label nAlphaSubCycles(readLabel(pimple.dict().lookup("nAlphaSubCycles")));
(
readLabel(piso.lookup("nAlphaSubCycles"))
);
if (nAlphaSubCycles > 1) if (nAlphaSubCycles > 1)
{ {
@ -19,7 +13,7 @@ if (nAlphaSubCycles > 1)
!(++alphaSubCycle).end(); !(++alphaSubCycle).end();
) )
{ {
# include "alphaEqn.H" #include "alphaEqn.H"
rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi; rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi;
} }
@ -27,7 +21,7 @@ if (nAlphaSubCycles > 1)
} }
else else
{ {
# include "alphaEqn.H" #include "alphaEqn.H"
} }
interface.correct(); interface.correct();

View File

@ -34,7 +34,7 @@
adjustPhi(phi, U, pcorr); adjustPhi(phi, U, pcorr);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix pcorrEqn fvScalarMatrix pcorrEqn
( (
@ -44,7 +44,7 @@
pcorrEqn.setReference(pRefCell, pRefValue); pcorrEqn.setReference(pRefCell, pRefValue);
pcorrEqn.solve(); pcorrEqn.solve();
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= pcorrEqn.flux(); phi -= pcorrEqn.flux();
} }

View File

@ -128,7 +128,7 @@
( (
p, p,
p_rgh, p_rgh,
mesh.solutionDict().subDict("PISO"), mesh.solutionDict().subDict("PIMPLE"),
pRefCell, pRefCell,
pRefValue pRefValue
); );

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -39,6 +39,7 @@ Description
#include "interfaceProperties.H" #include "interfaceProperties.H"
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -47,10 +48,12 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createDynamicFvMesh.H" #include "createDynamicFvMesh.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "readTimeControls.H" #include "readTimeControls.H"
pimpleControl pimple(mesh);
#include "correctPhi.H" #include "correctPhi.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
@ -105,13 +108,17 @@ int main(int argc, char *argv[])
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
turbulence->correct(); turbulence->correct();

View File

@ -18,7 +18,7 @@
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf(); )*rAUf*mesh.magSf();
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -29,13 +29,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select(corr == nCorr-1 && nonOrth == nNonOrthCorr)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();
} }

View File

@ -1,14 +1,6 @@
# include "readTimeControls.H" #include "readTimeControls.H"
# include "readPISOControls.H"
bool correctPhi = true; bool correctPhi =
if (piso.found("correctPhi")) pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
{ bool checkMeshCourantNo =
correctPhi = Switch(piso.lookup("correctPhi")); pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
}
bool checkMeshCourantNo = false;
if (piso.found("checkMeshCourantNo"))
{
checkMeshCourantNo = Switch(piso.lookup("checkMeshCourantNo"));
}

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -44,6 +44,7 @@ Description
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "interpolationTable.H" #include "interpolationTable.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -52,7 +53,9 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readPISOControls.H"
pimpleControl pimple(mesh);
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "readTimeControls.H" #include "readTimeControls.H"
@ -60,6 +63,7 @@ int main(int argc, char *argv[])
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
@ -80,13 +84,17 @@ int main(int argc, char *argv[])
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
turbulence->correct(); turbulence->correct();

View File

@ -18,7 +18,7 @@
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf(); )*rAUf*mesh.magSf();
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -29,13 +29,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select(corr == nCorr-1 && nonOrth == nNonOrthCorr)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi -= p_rghEqn.flux(); phi -= p_rghEqn.flux();
} }

View File

@ -22,7 +22,7 @@
pZones.addResistance(UEqn); pZones.addResistance(UEqn);
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -45,6 +45,7 @@ Description
#include "twoPhaseMixture.H" #include "twoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "porousZones.H" #include "porousZones.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -53,11 +54,13 @@ int main(int argc, char *argv[])
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "createPorousZones.H" #include "createPorousZones.H"
#include "readTimeControls.H" #include "readTimeControls.H"
pimpleControl pimple(mesh);
#include "correctPhi.H" #include "correctPhi.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
@ -68,7 +71,6 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPISOControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "alphaCourantNo.H" #include "alphaCourantNo.H"
@ -82,13 +84,17 @@ int main(int argc, char *argv[])
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
turbulence->correct(); turbulence->correct();

View File

@ -1,12 +1,6 @@
label nAlphaCorr const dictionary& pimpleDict = pimple.dict();
( label nAlphaCorr(readLabel(pimpleDict.lookup("nAlphaCorr")));
readLabel(piso.lookup("nAlphaCorr")) label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
);
label nAlphaSubCycles
(
readLabel(piso.lookup("nAlphaSubCycles"))
);
if (nAlphaSubCycles > 1) if (nAlphaSubCycles > 1)
{ {
@ -19,7 +13,7 @@ if (nAlphaSubCycles > 1)
!(++alphaSubCycle).end(); !(++alphaSubCycle).end();
) )
{ {
# include "alphaEqns.H" #include "alphaEqns.H"
rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi; rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi;
} }
@ -27,7 +21,7 @@ if (nAlphaSubCycles > 1)
} }
else else
{ {
# include "alphaEqns.H" #include "alphaEqns.H"
} }
interface.correct(); interface.correct();

View File

@ -150,7 +150,7 @@
( (
p, p,
p_rgh, p_rgh,
mesh.solutionDict().subDict("PISO"), mesh.solutionDict().subDict("PIMPLE"),
pRefCell, pRefCell,
pRefValue pRefValue
); );

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -36,6 +36,7 @@ Description
#include "threePhaseMixture.H" #include "threePhaseMixture.H"
#include "threePhaseInterfaceProperties.H" #include "threePhaseInterfaceProperties.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -45,12 +46,14 @@ int main(int argc, char *argv[])
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readGravitationalAcceleration.H" #include "readGravitationalAcceleration.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
pimpleControl pimple(mesh);
#include "correctPhi.H" #include "correctPhi.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -59,7 +62,6 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readPISOControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "alphaCourantNo.H" #include "alphaCourantNo.H"
@ -74,13 +76,18 @@ int main(int argc, char *argv[])
#include "alphaEqnsSubCycle.H" #include "alphaEqnsSubCycle.H"
#define twoPhaseProperties threePhaseProperties #define twoPhaseProperties threePhaseProperties
// --- Pressure-velocity PIMPLE corrector loop
for (pimple.start(); pimple.loop(); pimple++)
{
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }
}
#include "continuityErrs.H" #include "continuityErrs.H"

View File

@ -17,7 +17,7 @@
UEqn.relax(); UEqn.relax();
if (momentumPredictor) if (pimple.momentumPredictor())
{ {
solve solve
( (

View File

@ -11,15 +11,11 @@ surfaceScalarField rhoPhi
); );
{ {
label nAlphaCorr const dictionary& pimpleDict = pimple.dict();
(
readLabel(piso.lookup("nAlphaCorr"))
);
label nAlphaSubCycles label nAlphaCorr(readLabel(pimpleDict.lookup("nAlphaCorr")));
(
readLabel(piso.lookup("nAlphaSubCycles")) label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
);
surfaceScalarField phic(mag(phi/mesh.magSf())); surfaceScalarField phic(mag(phi/mesh.magSf()));
phic = min(interface.cAlpha()*phic, max(phic)); phic = min(interface.cAlpha()*phic, max(phic));
@ -44,7 +40,7 @@ surfaceScalarField rhoPhi
#include "alphaEqn.H" #include "alphaEqn.H"
} }
if (nOuterCorr == 1) if (pimple.nOuterCorr() == 1)
{ {
interface.correct(); interface.correct();
} }

View File

@ -98,7 +98,7 @@
( (
p, p,
p_rgh, p_rgh,
mesh.solutionDict().subDict("PISO"), mesh.solutionDict().subDict("PIMPLE"),
pRefCell, pRefCell,
pRefValue pRefValue
); );

View File

@ -56,27 +56,25 @@ int main(int argc, char *argv[])
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
#include "readGravitationalAcceleration.H" #include "readGravitationalAcceleration.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H" #include "createFields.H"
#include "readTimeControls.H" #include "readTimeControls.H"
pimpleControl pimple(mesh);
#include "../interFoam/correctPhi.H" #include "../interFoam/correctPhi.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
pimpleControl pimple(mesh);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.run()) while (runTime.run())
{ {
#include "readPIMPLEControls.H"
#include "readTimeControls.H" #include "readTimeControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
pimple.read();
runTime++; runTime++;
@ -92,7 +90,7 @@ int main(int argc, char *argv[])
#include "UEqn.H" #include "UEqn.H"
// --- PISO loop // --- PISO loop
for (int corr=0; corr<nCorr; corr++) for (int corr=0; corr<pimple.nCorr(); corr++)
{ {
#include "pEqn.H" #include "pEqn.H"
} }

View File

@ -23,7 +23,7 @@
const volScalarField& vDotcP = vDotP[0](); const volScalarField& vDotcP = vDotP[0]();
const volScalarField& vDotvP = vDotP[1](); const volScalarField& vDotvP = vDotP[1]();
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++)
{ {
fvScalarMatrix p_rghEqn fvScalarMatrix p_rghEqn
( (
@ -35,18 +35,10 @@
p_rghEqn.solve p_rghEqn.solve
( (
mesh.solver mesh.solver(p_rgh.select(pimple.finalInnerIter(corr, nonOrth)))
(
p_rgh.select
(
pimple.finalIter()
&& corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
)
); );
if (nonOrth == nNonOrthCorr) if (nonOrth == pimple.nNonOrthCorr())
{ {
phi += p_rghEqn.flux(); phi += p_rghEqn.flux();
} }

Some files were not shown because too many files have changed in this diff Show More