From 32d46dc30c1f5509b859e061667f6e4ec2ced527 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Tue, 8 Jul 2008 14:45:31 +0200 Subject: [PATCH] add in UEqn.H, pEqn.H for simpleFoam as well --- .../solvers/incompressible/simpleFoam/UEqn.H | 11 ++++ .../solvers/incompressible/simpleFoam/pEqn.H | 34 ++++++++++++ .../incompressible/simpleFoam/simpleFoam.C | 52 ++----------------- 3 files changed, 48 insertions(+), 49 deletions(-) create mode 100644 applications/solvers/incompressible/simpleFoam/UEqn.H create mode 100644 applications/solvers/incompressible/simpleFoam/pEqn.H diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H new file mode 100644 index 00000000000..e6fb6bf89ed --- /dev/null +++ b/applications/solvers/incompressible/simpleFoam/UEqn.H @@ -0,0 +1,11 @@ + // Solve the Momentum equation + + tmp<fvVectorMatrix> UEqn + ( + fvm::div(phi, U) + + turbulence->divDevReff(U) + ); + + UEqn().relax(); + + solve(UEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/pEqn.H b/applications/solvers/incompressible/simpleFoam/pEqn.H new file mode 100644 index 00000000000..abdfaff3fcd --- /dev/null +++ b/applications/solvers/incompressible/simpleFoam/pEqn.H @@ -0,0 +1,34 @@ + p.boundaryField().updateCoeffs(); + + volScalarField AU = UEqn().A(); + U = UEqn().H()/AU; + UEqn.clear(); + phi = fvc::interpolate(U) & mesh.Sf(); + adjustPhi(phi, U, p); + + // Non-orthogonal pressure corrector loop + for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + { + fvScalarMatrix pEqn + ( + fvm::laplacian(1.0/AU, p) == fvc::div(phi) + ); + + pEqn.setReference(pRefCell, pRefValue); + pEqn.solve(); + + if (nonOrth == nNonOrthCorr) + { + phi -= pEqn.flux(); + } + } + +# include "continuityErrs.H" + + // Explicitly relax pressure for momentum corrector + p.relax(); + + // Momentum corrector + U -= fvc::grad(p)/AU; + U.correctBoundaryConditions(); + diff --git a/applications/solvers/incompressible/simpleFoam/simpleFoam.C b/applications/solvers/incompressible/simpleFoam/simpleFoam.C index c604d958706..6fb4f3312d0 100644 --- a/applications/solvers/incompressible/simpleFoam/simpleFoam.C +++ b/applications/solvers/incompressible/simpleFoam/simpleFoam.C @@ -26,8 +26,7 @@ Application simpleFoam Description - Steady-state solver for incompressible, turbulent flow of non-Newtonian - fluids. + Steady-state solver for incompressible, turbulent flow \*---------------------------------------------------------------------------*/ @@ -41,14 +40,11 @@ int main(int argc, char *argv[]) { # include "setRootCase.H" - # include "createTime.H" # include "createMesh.H" # include "createFields.H" # include "initContinuityErrs.H" - //mesh.clearPrimitives(); - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; @@ -63,50 +59,8 @@ int main(int argc, char *argv[]) // Pressure-velocity SIMPLE corrector { - // Momentum predictor - - tmp<fvVectorMatrix> UEqn - ( - fvm::div(phi, U) - + turbulence->divDevReff(U) - ); - - UEqn().relax(); - - solve(UEqn() == -fvc::grad(p)); - - p.boundaryField().updateCoeffs(); - volScalarField AU = UEqn().A(); - U = UEqn().H()/AU; - UEqn.clear(); - phi = fvc::interpolate(U) & mesh.Sf(); - adjustPhi(phi, U, p); - - // Non-orthogonal pressure corrector loop - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) - { - fvScalarMatrix pEqn - ( - fvm::laplacian(1.0/AU, p) == fvc::div(phi) - ); - - pEqn.setReference(pRefCell, pRefValue); - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi -= pEqn.flux(); - } - } - -# include "continuityErrs.H" - - // Explicitly relax pressure for momentum corrector - p.relax(); - - // Momentum corrector - U -= fvc::grad(p)/AU; - U.correctBoundaryConditions(); +# include "UEqn.H" +# include "pEqn.H" } turbulence->correct(); -- GitLab