ENH: Time: access to libs
[OpenFOAM-2.0.x.git] / applications / solvers / heatTransfer / chtMultiRegionFoam / chtMultiRegionSimpleFoam / fluid / pEqn.H
blob862581ef790689a49475e6254d39de6f238e8437
2     rho = thermo.rho();
3     rho = max(rho, rhoMin[i]);
4     rho = min(rho, rhoMax[i]);
5     rho.relax();
7     volScalarField rAU(1.0/UEqn().A());
8     surfaceScalarField rhorAUf("(rho*(1|A(U)))", fvc::interpolate(rho*rAU));
10     U = rAU*UEqn().H();
11     UEqn.clear();
13     phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
14     bool closedVolume = adjustPhi(phi, U, p_rgh);
15     dimensionedScalar compressibility = fvc::domainIntegrate(psi);
16     bool compressible = (compressibility.value() > SMALL);
18     surfaceScalarField buoyancyPhi(rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
19     phi -= buoyancyPhi;
21     // Solve pressure
22     for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
23     {
24         fvScalarMatrix p_rghEqn
25         (
26             fvm::laplacian(rhorAUf, p_rgh) == fvc::div(phi)
27         );
29         p_rghEqn.setReference
30         (
31             pRefCell,
32             compressible ? getRefCellValue(p_rgh, pRefCell) : pRefValue
33         );
35         p_rghEqn.solve();
37         if (nonOrth == nNonOrthCorr)
38         {
39             // Calculate the conservative fluxes
40             phi -= p_rghEqn.flux();
42             // Explicitly relax pressure for momentum corrector
43             p_rgh.relax();
45             // Correct the momentum source with the pressure gradient flux
46             // calculated from the relaxed pressure
47             U -= rAU*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rhorAUf);
48             U.correctBoundaryConditions();
49         }
50     }
52     p = p_rgh + rho*gh;
54     #include "continuityErrs.H"
56     // For closed-volume cases adjust the pressure level
57     // to obey overall mass continuity
58     if (closedVolume && compressible)
59     {
60         p += (initialMass - fvc::domainIntegrate(thermo.rho()))
61             /compressibility;
62         p_rgh = p - rho*gh;
63     }
65     rho = thermo.rho();
66     rho = max(rho, rhoMin[i]);
67     rho = min(rho, rhoMax[i]);
68     rho.relax();
70     Info<< "Min/max rho:" << min(rho).value() << ' '
71         << max(rho).value() << endl;
73     // Update thermal conductivity
74     K = thermo.Cp()*turb.alphaEff();