3volScalarField rAU(1.0 / Ueqn.A());
4volScalarField rAtU(1.0 / (1.0 / rAU - Ueqn.H1()));
5volVectorField HbyA(constrainHbyA(rAU* Ueqn.H(), U, p));
11bool closedVolume =
false;
13surfaceScalarField phiHbyA(
"phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
14MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
16volScalarField rhorAtU(
"rhorAtU", rho* rAtU);
19constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
21if (simple.transonic())
23 surfaceScalarField phid
26 (fvc::interpolate(psi) / fvc::interpolate(rho))*phiHbyA
29 fvc::interpolate(rho * (rAtU - rAU)) * fvc::snGrad(p) * mesh.magSf()
30 - fvc::interpolate(psi * p) * phiHbyA / fvc::interpolate(rho);
31 HbyA -= (rAU - rAtU) * fvc::grad(p);
33 while (simple.correctNonOrthogonal())
39 - fvm::laplacian(rhorAtU, p)
41 fvOptions(psi, p, rho.name())
47 pressureControl.refCell(),
48 pressureControl.refValue()
50 presidual = pEqn.solve().initialResidual();
52 if (simple.finalNonOrthogonalIter())
54 phi = phiHbyA + pEqn.flux();
60 closedVolume = adjustPhi(phiHbyA, U, p);
61 phiHbyA += fvc::interpolate(rho * (rAtU - rAU)) * fvc::snGrad(p) * mesh.magSf();
62 HbyA -= (rAU - rAtU) * fvc::grad(p);
64 while (simple.correctNonOrthogonal())
69 - fvm::laplacian(rhorAtU, p)
71 fvOptions(psi, p, rho.name())
75 pressureControl.refCell(),
76 pressureControl.refValue()
78 presidual = pEqn.solve().initialResidual();
80 if (simple.finalNonOrthogonalIter())
82 phi = phiHbyA + pEqn.flux();
89#include "incompressible/continuityErrs.H"
94U = HbyA - rAtU * fvc::grad(p);
95U.correctBoundaryConditions();
98bool pLimited = pressureControl.limit(p);
104 p += (initialMass - fvc::domainIntegrate(psi * p))
105 / fvc::domainIntegrate(psi);
108if (pLimited || closedVolume)
110 p.correctBoundaryConditions();
115if (!simple.transonic())