From f609ccd76f3dafc37f4bd6dfc91ffd3eadbd72dd Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Thu, 1 May 2014 16:11:03 +0100 Subject: [PATCH] fvOptions: Rationalise the rhoEqn.H so that all compressible solvers support mass-sources correctly --- .../solvers/compressible/sonicFoam/EEqn.H | 12 +++++++++++- .../solvers/compressible/sonicFoam/Make/options | 10 ++++++++-- .../solvers/compressible/sonicFoam/UEqn.H | 15 +++++++++++++-- .../solvers/compressible/sonicFoam/pEqn.H | 7 +++++++ .../sonicFoam/sonicDyMFoam/Make/options | 13 +++++++++---- .../compressible/sonicFoam/sonicDyMFoam/pEqn.H | 7 +++++++ .../sonicFoam/sonicDyMFoam/sonicDyMFoam.C | 4 +++- .../solvers/compressible/sonicFoam/sonicFoam.C | 4 +++- .../sonicLiquidFoam/compressibleContinuityErrs.H | 2 +- .../sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C | 2 +- src/finiteVolume/cfdTools/compressible/rhoEqn.H | 16 ++++++++++++++-- 11 files changed, 77 insertions(+), 15 deletions(-) diff --git a/applications/solvers/compressible/sonicFoam/EEqn.H b/applications/solvers/compressible/sonicFoam/EEqn.H index f10474c587a..73ce8373964 100644 --- a/applications/solvers/compressible/sonicFoam/EEqn.H +++ b/applications/solvers/compressible/sonicFoam/EEqn.H @@ -1,11 +1,21 @@ { - solve + fvScalarMatrix EEqn ( fvm::ddt(rho, e) + fvm::div(phi, e) + fvc::ddt(rho, K) + fvc::div(phi, K) + fvc::div(fvc::absolute(phi/fvc::interpolate(rho), U), p, "div(phiv,p)") - fvm::laplacian(turbulence->alphaEff(), e) + == + fvOptions(rho, e) ); + EEqn.relax(); + + fvOptions.constrain(EEqn); + + EEqn.solve(); + + fvOptions.correct(e); + thermo.correct(); } diff --git a/applications/solvers/compressible/sonicFoam/Make/options b/applications/solvers/compressible/sonicFoam/Make/options index f9c097c8748..b1663bb8243 100644 --- a/applications/solvers/compressible/sonicFoam/Make/options +++ b/applications/solvers/compressible/sonicFoam/Make/options @@ -1,6 +1,10 @@ EXE_INC = \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = \ @@ -9,5 +13,7 @@ EXE_LIBS = \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ - -lfiniteVolume \ - -lmeshTools + -lmeshTools \ + -lsampling \ + -lfvOptions \ + -lfiniteVolume diff --git a/applications/solvers/compressible/sonicFoam/UEqn.H b/applications/solvers/compressible/sonicFoam/UEqn.H index c002490b483..c4065161fe2 100644 --- a/applications/solvers/compressible/sonicFoam/UEqn.H +++ b/applications/solvers/compressible/sonicFoam/UEqn.H @@ -3,7 +3,18 @@ fvVectorMatrix UEqn fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + fvOptions(rho, U) ); -solve(UEqn == -fvc::grad(p)); -K = 0.5*magSqr(U); +UEqn.relax(); + +fvOptions.constrain(UEqn); + +if (pimple.momentumPredictor()) +{ + solve(UEqn == -fvc::grad(p)); + + fvOptions.correct(U); + K = 0.5*magSqr(U); +} diff --git a/applications/solvers/compressible/sonicFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/pEqn.H index 022abc466aa..693f9d60d39 100644 --- a/applications/solvers/compressible/sonicFoam/pEqn.H +++ b/applications/solvers/compressible/sonicFoam/pEqn.H @@ -16,6 +16,8 @@ surfaceScalarField phid ) ); +fvOptions.makeRelative(fvc::interpolate(psi), phid); + // Non-orthogonal pressure corrector loop while (pimple.correctNonOrthogonal()) { @@ -24,8 +26,12 @@ while (pimple.correctNonOrthogonal()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) + == + fvOptions(psi, p, rho.name()) ); + fvOptions.constrain(pEqn); + pEqn.solve(); if (pimple.finalNonOrthogonalIter()) @@ -39,4 +45,5 @@ while (pimple.correctNonOrthogonal()) U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); +fvOptions.correct(U); K = 0.5*magSqr(U); diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options index 263b9861edb..d374c750596 100644 --- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options +++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/Make/options @@ -1,10 +1,13 @@ EXE_INC = \ -I.. \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude + -I$(LIB_SRC)/dynamicMesh/lnInclude EXE_LIBS = \ -lfluidThermophysicalModels \ @@ -12,6 +15,8 @@ EXE_LIBS = \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ + -lmeshTools \ + -lsampling \ + -lfvOptions \ -lfiniteVolume \ - -ldynamicMesh \ - -lmeshTools + -ldynamicMesh diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H index b375f0e82a6..76e2a09a8f3 100644 --- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H +++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/pEqn.H @@ -19,6 +19,7 @@ surfaceScalarField phid ); fvc::makeRelative(phid, psi, U); +fvOptions.makeRelative(fvc::interpolate(psi), phid); for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) { @@ -27,8 +28,12 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) + == + fvOptions(psi, p, rho.name()) ); + fvOptions.constrain(pEqn); + pEqn.solve(); phi = pEqn.flux(); @@ -38,6 +43,8 @@ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); +fvOptions.correct(U); +K = 0.5*magSqr(U); { rhoUf = fvc::interpolate(rho*U); diff --git a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C index 62d4716fb5a..746f95d97c1 100644 --- a/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C +++ b/applications/solvers/compressible/sonicFoam/sonicDyMFoam/sonicDyMFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,6 +35,7 @@ Description #include "turbulenceModel.H" #include "motionSolver.H" #include "pimpleControl.H" +#include "fvIOoptionList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -44,6 +45,7 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" #include "createFields.H" + #include "createFvOptions.H" #include "createRhoUf.H" #include "initContinuityErrs.H" diff --git a/applications/solvers/compressible/sonicFoam/sonicFoam.C b/applications/solvers/compressible/sonicFoam/sonicFoam.C index 71d032d4223..04aab1d0d43 100644 --- a/applications/solvers/compressible/sonicFoam/sonicFoam.C +++ b/applications/solvers/compressible/sonicFoam/sonicFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,6 +34,7 @@ Description #include "psiThermo.H" #include "turbulenceModel.H" #include "pimpleControl.H" +#include "fvIOoptionList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -43,6 +44,7 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" #include "createFields.H" + #include "createFvOptions.H" #include "initContinuityErrs.H" pimpleControl pimple(mesh); diff --git a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/compressibleContinuityErrs.H b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/compressibleContinuityErrs.H index b7a816fe4e6..e264660cf47 100644 --- a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/compressibleContinuityErrs.H +++ b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/compressibleContinuityErrs.H @@ -1,5 +1,5 @@ { -# include "rhoEqn.H" + solve(fvm::ddt(rho) + fvc::div(phi)); } { scalar sumLocalContErr = diff --git a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C index eb0a4a0d9a2..acfb4d3b80f 100644 --- a/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C +++ b/applications/solvers/compressible/sonicFoam/sonicLiquidFoam/sonicLiquidFoam.C @@ -58,7 +58,7 @@ int main(int argc, char *argv[]) #include "readTimeControls.H" #include "compressibleCourantNo.H" - #include "rhoEqn.H" + solve(fvm::ddt(rho) + fvc::div(phi)); // --- Pressure-velocity PIMPLE corrector loop while (pimple.loop()) diff --git a/src/finiteVolume/cfdTools/compressible/rhoEqn.H b/src/finiteVolume/cfdTools/compressible/rhoEqn.H index 25ccb85aac6..353d027e97c 100644 --- a/src/finiteVolume/cfdTools/compressible/rhoEqn.H +++ b/src/finiteVolume/cfdTools/compressible/rhoEqn.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,7 +30,19 @@ Description \*---------------------------------------------------------------------------*/ { - solve(fvm::ddt(rho) + fvc::div(phi)); + fvScalarMatrix rhoEqn + ( + fvm::ddt(rho) + + fvc::div(phi) + == + fvOptions(rho) + ); + + fvOptions.constrain(rhoEqn); + + rhoEqn.solve(); + + fvOptions.correct(rho); } // ************************************************************************* // -- GitLab