View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000862 | OpenFOAM | Bug | public | 2013-05-21 10:37 | 2013-05-21 11:07 |
Reporter | Assigned To | ||||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | no change required | ||
Platform | Linux | OS | OpenSuse | OS Version | 11.3 |
Summary | 0000862: Intermediate phi, U fields cause pressure boundaries that depend on phi, U to behave incorrectly with nonOrth correctors. | ||||
Description | If the pressure boundary condition depend on phi or U (e.g. totalPressure) then the correctBoundaryConditions called at the end of the pressure solve will result in the pressure boundaries being evaluated incorrectly since the phi and U fields at that stage are intermediate. I.e. during the pressure evaluation for example U = UEqn.H()/UEqn.A() and phi = fvc::interpolate(U) & mesh.Sf(). If these value are then used to calculate totalPressure (or other boundaries that depend on the true velocity/flux) their evaluation will result in an incorrect pressure boundary. The problem is more pronounced when nonOrthogonal correctors are used and less pronounced when a PIMPLE solver with a large number of outer iterations is used. The problem can be addressed by defining new intermediate variables for U and phi, e.g. phiStar, Ustar, so that U and phi always refer to the latest velocity and flux fields. Storage is increased by an insignificant amount. | ||||
Steps To Reproduce | Any case using a totalPressure boundary on an inflow condition. | ||||
Tags | No tags attached. | ||||
|
This is already handled in 2.2.x, e.g. see the simpleFoam pEqn where we no longer update phi and U until the end of the pressure solve: volVectorField HbyA("HbyA", U); // note copy of U field HbyA = rAU*UEqn().H(); UEqn.clear(); // not updating phi, but phiHbyA surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(HbyA) & mesh.Sf()); |