Go to the documentation of this file.00001 {
00002 volScalarField rAU = 1.0/UEqn.A();
00003 surfaceScalarField rAUf = fvc::interpolate(rAU);
00004
00005 U = rAU*UEqn.H();
00006 surfaceScalarField phiU("phiU", (fvc::interpolate(U) & mesh.Sf()));
00007
00008 if (p_rgh.needReference())
00009 {
00010 fvc::makeRelative(phiU, U);
00011 adjustPhi(phiU, U, p_rgh);
00012 fvc::makeAbsolute(phiU, U);
00013 }
00014
00015 phi = phiU +
00016 (
00017 fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
00018 - ghf*fvc::snGrad(rho)
00019 )*rAUf*mesh.magSf();
00020
00021 for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
00022 {
00023 fvScalarMatrix p_rghEqn
00024 (
00025 fvm::laplacian(rAUf, p_rgh) == fvc::div(phi)
00026 );
00027
00028 p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
00029
00030 p_rghEqn.solve
00031 (
00032 mesh.solver
00033 (
00034 p_rgh.select(corr == nCorr-1 && nonOrth == nNonOrthCorr)
00035 )
00036 );
00037
00038 if (nonOrth == nNonOrthCorr)
00039 {
00040 phi -= p_rghEqn.flux();
00041 }
00042 }
00043
00044 U += rAU*fvc::reconstruct((phi - phiU)/rAUf);
00045 U.correctBoundaryConditions();
00046
00047 #include <finiteVolume/continuityErrs.H>
00048
00049
00050 fvc::makeRelative(phi, U);
00051
00052 p == p_rgh + rho*gh;
00053
00054 if (p_rgh.needReference())
00055 {
00056 p += dimensionedScalar
00057 (
00058 "p",
00059 p.dimensions(),
00060 pRefValue - getRefCellValue(p, pRefCell)
00061 );
00062 p_rgh = p - rho*gh;
00063 }
00064 }