volScalarField rAUrel(1.0/UrelEqn().A()); volVectorField HbyA("HbyA", Urel); HbyA = rAUrel*UrelEqn().H(); if (pimple.nCorrPISO() <= 1) { UrelEqn.clear(); } surfaceScalarField phiHbyA ( "phiHbyA", (fvc::interpolate(HbyA) & mesh.Sf()) + fvc::ddtPhiCorr(rAUrel, Urel, phi) ); adjustPhi(phiHbyA, Urel, p); // Non-orthogonal pressure corrector loop while (pimple.correctNonOrthogonal()) { // Pressure corrector fvScalarMatrix pEqn ( fvm::laplacian(rAUrel, p) == fvc::div(phiHbyA) ); pEqn.setReference(pRefCell, pRefValue); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) { phi = phiHbyA - pEqn.flux(); } } #include "continuityErrs.H" p.relax(); // Momentum corrector Urel = HbyA - rAUrel*fvc::grad(p); Urel.correctBoundaryConditions(); fvOptions.correct(Urel);