-
Notifications
You must be signed in to change notification settings - Fork 0
/
pEqn0.H
41 lines (31 loc) · 898 Bytes
/
pEqn0.H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
volScalarField rAU(1.0/UEqn.A());
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U0, p0));
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(HbyA)
+ MRF.zeroFilter(fvc::interpolate(rAU)*fvc::ddtCorr(U0, phi0))
);
MRF.makeRelative(phiHbyA);
adjustPhi(phiHbyA, U0, p0);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p0, U0, phiHbyA, rAU, MRF);
// Non-orthogonal pressure corrector loop
while (piso.correctNonOrthogonal())
{
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::laplacian(rAU, p0) == fvc::div(phiHbyA)
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(mesh.solver(p0.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter())
{
phi0 = phiHbyA - pEqn.flux();
}
}
#include "continuityErrs0.H"
U0 = HbyA - rAU*fvc::grad(p0);
U0.correctBoundaryConditions();
fvOptions.correct(U0);