diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H index 2675fe5257468234272f84a52ff807b09a368b35..2cf0f637a8ef347364abe96adc84a4b0dacd5339 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H @@ -35,7 +35,7 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) - == + == fvOptions(psi, p, rho.name()) ); @@ -62,13 +62,12 @@ else while (pimple.correctNonOrthogonal()) { - // Pressure corrector fvScalarMatrix pEqn ( fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(rhorAUf, p) - == + == fvOptions(psi, p, rho.name()) ); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H index cb7329026c14349c2711f65a5eaf2e85a0a61673..17ce7e89f7ef60e6c37912a7f2c01b2de088c5ab 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimpleDyMFoam/pEqn.H @@ -36,7 +36,7 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rhorAUf, p) - == + == fvOptions(psi, p, rho.name()) ); @@ -68,7 +68,7 @@ else fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(rhorAUf, p) - == + == fvOptions(psi, p, rho.name()) ); diff --git a/applications/solvers/lagrangian/sprayFoam/UEqn.H b/applications/solvers/lagrangian/sprayFoam/UEqn.H index 6a12aae3bc7444fa8dcfe408848cb9005c1f958a..a5618ba859179ede755cd0407c0232023f4f3d93 100644 --- a/applications/solvers/lagrangian/sprayFoam/UEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/UEqn.H @@ -1,22 +1,24 @@ - fvVectorMatrix UEqn - ( - fvm::ddt(rho, U) - + fvm::div(phi, U) - + turbulence->divDevRhoReff(U) - == - rho.dimensionedInternalField()*g - + parcels.SU(U) - + fvOptions(rho, U) - ); +// Solve the Momentum equation - UEqn.relax(); +tmp<fvVectorMatrix> UEqn +( + fvm::ddt(rho, U) + + fvm::div(phi, U) + + turbulence->divDevRhoReff(U) + == + rho.dimensionedInternalField()*g + + parcels.SU(U) + + fvOptions(rho, U) +); - fvOptions.constrain(UEqn); +UEqn().relax(); - if (pimple.momentumPredictor()) - { - solve(UEqn == -fvc::grad(p)); +fvOptions.constrain(UEqn()); - fvOptions.correct(U); - K = 0.5*magSqr(U); - } +if (pimple.momentumPredictor()) +{ + solve(UEqn() == -fvc::grad(p)); + + fvOptions.correct(U); + K = 0.5*magSqr(U); +} diff --git a/applications/solvers/lagrangian/sprayFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/pEqn.H index 338f29f538f9b6417d0294af2c61f815fed7a878..a29c87b2390d4804d6653231db07e1a78f769802 100644 --- a/applications/solvers/lagrangian/sprayFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/pEqn.H @@ -1,10 +1,18 @@ rho = thermo.rho(); +rho = max(rho, rhoMin); +rho = min(rho, rhoMax); +rho.relax(); -volScalarField rAU(1.0/UEqn.A()); +volScalarField rAU(1.0/UEqn().A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); volVectorField HbyA("HbyA", U); -HbyA = rAU*UEqn.H(); +HbyA = rAU*UEqn().H(); + +if (pimple.nCorrPISO() <= 1) +{ + UEqn.clear(); +} if (pimple.transonic()) { @@ -13,9 +21,9 @@ if (pimple.transonic()) "phid", fvc::interpolate(psi) *( - (fvc::interpolate(rho*HbyA) & mesh.Sf()) - + rhorAUf*fvc::ddtCorr(rho, U, phi) - )/fvc::interpolate(rho) + (fvc::interpolate(HbyA) & mesh.Sf()) + + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + ) ); fvOptions.makeRelative(fvc::interpolate(psi), phid); @@ -77,6 +85,17 @@ else #include "rhoEqn.H" #include "compressibleContinuityErrs.H" +// Explicitly relax pressure for momentum corrector +p.relax(); + +// Recalculate density from the relaxed pressure +rho = thermo.rho(); +rho = max(rho, rhoMin); +rho = min(rho, rhoMax); +rho.relax(); +Info<< "rho max/min : " << max(rho).value() + << " " << min(rho).value() << endl; + U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); fvOptions.correct(U); diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H deleted file mode 100644 index 8aba61102694fd2bcbb364980632cd3e1c54b29e..0000000000000000000000000000000000000000 --- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H +++ /dev/null @@ -1,98 +0,0 @@ -rho = thermo.rho(); - -volScalarField rAU(1.0/UEqn.A()); -surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); - -volVectorField HbyA("HbyA", U); -HbyA = rAU*UEqn.H(); - -if (pimple.transonic()) -{ - surfaceScalarField phid - ( - "phid", - fvc::interpolate(psi) - *( - ( - (fvc::interpolate(rho*HbyA) & mesh.Sf()) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) - )/fvc::interpolate(rho) - ) - ); - - fvc::makeRelative(phid, psi, U); - fvOptions.makeRelative(fvc::interpolate(psi), phid); - - while (pimple.correctNonOrthogonal()) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvm::div(phid, p) - - fvm::laplacian(rhorAUf, p) - == - parcels.Srho() - + fvOptions(psi, p, rho.name()) - ); - - pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - - if (pimple.finalNonOrthogonalIter()) - { - phi == pEqn.flux(); - } - } -} -else -{ - surfaceScalarField phiHbyA - ( - "phiHbyA", - ( - (fvc::interpolate(HbyA) & mesh.Sf()) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) - ) - ); - - fvc::makeRelative(phiHbyA, rho, U); - fvOptions.makeRelative(fvc::interpolate(rho), phiHbyA); - - while (pimple.correctNonOrthogonal()) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvc::div(phiHbyA) - - fvm::laplacian(rhorAUf, p) - == - parcels.Srho() - + fvOptions(psi, p, rho.name()) - ); - - pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - - if (pimple.finalNonOrthogonalIter()) - { - phi = phiHbyA + pEqn.flux(); - } - } -} - -#include "rhoEqn.H" -#include "compressibleContinuityErrs.H" - -U = HbyA - rAU*fvc::grad(p); -U.correctBoundaryConditions(); -fvOptions.correct(U); -K = 0.5*magSqr(U); - -{ - rhoUf = fvc::interpolate(rho*U); - surfaceVectorField n(mesh.Sf()/mesh.magSf()); - rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf)); -} - -if (thermo.dpdt()) -{ - dpdt = fvc::ddt(p) - fvc::div(fvc::meshPhi(rho, U), p); -}