We have a need to run a pressu
We have a need to run a pressure\density based compressible steady state solver. I have been fighting with rhoSimpleFoam for a few weeks now.
We would like to be able to specify: 2 inlets with TotalPressure using a fixed pressure. 2 outlets with possibilty of reverse flow and fixed static pressure. I am currently using totalPressure with fixed values for the inlets and outletInlet for the outlets in the p file. I am using pressureInletVelocity for the inlets and inletOutlet for the outlets with the values set to 0 for the U file. The flow field will develop a swirl as this runs. The geometry checks fine using checkMesh. This also runs fine in simpleFoam developing a fully converged solution. For some reason when we run it with the pressure\density solver like rhoSimpleFoam we get an instability in pressure\density after a few hundred steps. I have been able to change the instability by playing with the "phi = pEqn.flux()" statement in the the code, but never actually get rid of it. I think the problem may reside pressure\density equation for the SIMPLE solvers. Is OpenFoam capable of solving this type of problem? HAS ANYONE BEEN ABLE TO SOLVE A PROBLEM SIMILAR TO WHAT I HAVE DESCRIBED WITH A STEADY STATE SOLVER? 
I have noticed when someone as
I have noticed when someone asks a question about stability problems in rhoSimpleFoam or density correctors in steady state solvers they are never answered. Here are two other posts posing similar questions from other users that never got further response. If there is a problem with rhoSimpleFoam thats alright, but it would be nice to get some sort of response?
Just tell me there is a problem and no one currently has a solution. http://www.cfdonline.com/OpenFOAM_D...es/1/2068.html http://www.cfdonline.com/OpenFOAM_D...es/1/2718.html 
There's no problem in the solv
There's no problem in the solver. What you are seeing is that compressible flows are much more sensitive to solver setting, initial field, timestep and boundary conditions. Unless you get all the components right together, the solver will blow up in your case.
All in all, this just requires lots of care. Hrv 
Alright I can easily believe t
Alright I can easily believe that the problem is in my setup somewhere. Maybe someone would be so kind as to spot where my potential problems are. I will post my checkMesh, fvSolution, fvSchemes, and my 0 files. Please anyone with any ideas let me know what else I should try. No matter what I try I seem to get what looks very much like a low wave mode pressure instability after about 500600 steps.
Remember this mesh converges in simpleFoam. I also get much more stability by decreasing the pressure drop or increasing viscosity. checkMesh: Number of points: 124105 edges: 649440 faces: 979095 internal faces: 920158 cells: 453762 boundary patches: 19 point zones: 0 face zones: 0 cell zones: 0 Checking topology and geometry ... Point usage check OK. Upper triangular ordering OK. Topological cell zipup check OK. Face vertices OK. Faceface connectivity OK. Basic topo ok ... Checking patch topology for multiply connected surfaces ... Patch Faces Points Surface PeriodicCenter 816 875 ok (not multiply connected) PeriodicCombustor 16178 10957 ok (not multiply connected) PeriodicHoles 328 204 ok (not multiply connected) PeriodicPlenum2 2792 1522 ok (not multiply connected) PeriodicPlenum1 2046 1095 ok (not multiply connected) SmallTubes2 2538 1324 ok (not multiply connected) LargeTubes2 3107 1707 ok (not multiply connected) SmallTubes1 2078 1092 ok (not multiply connected) LargeTubes1 6047 3191 ok (not multiply connected) Wall6 1032 687 ok (not multiply connected) WallSet5 7102 3751 ok (not multiply connected) WallSet4 3742 2016 ok (not multiply connected) WallSet2 4455 2328 ok (not multiply connected) Wall3 860 957 ok (not multiply connected) Wall1 742 409 ok (not multiply connected) BCPressOutcenter 95 113 ok (not multiply connected) BCPressOut1 3088 2180 ok (not multiply connected) BCPressInlet2 1048 568 ok (not multiply connected) BCPressInlet1 843 461 ok (not multiply connected) Patch topo ok ... Topology check done. Domain bounding box: min = (1.42109e17 2.75474e51 0) max = (0.0757305 0.0245345 0.0245345) meters. Checking geometry... Boundary openness in xdirection = 4.32336e18 Boundary openness in ydirection = 8.77453e18 Boundary openness in zdirection = 3.35318e18 Boundary closed (OK). Max cell openness = 4.27239e22 Max aspect ratio = 2.58574. All cells OK. Minumum face area = 1.86851e09. Maximum face area = 1.79996e06. Face area magnitudes OK. Min volume = 3.02777e14. Max volume = 1.42021e09. Total volume = 1.34424e05. Cell volumes OK. Mesh nonorthogonality Max: 65.6633 average: 17.5979 Nonorthogonality check OK. Face pyramids OK. Max skewness = 119.41 percent. Face skewness OK. Minumum edge length = 5.08262e05. Maximum edge length = 0.00214438. All angles in faces are convex or less than 10 degrees concave. Face flatness (1 = flat, 0 = butterfly) : average = 0.999994 min = 0.999846 All faces are flat in that the ratio between projected and actual area is > 0.8 Geometry check done. Number of cells by type: hexahedra: 19560 prisms: 44800 wedges: 0 pyramids: 285 tet wedges: 0 tetrahedra: 389117 polyhedra: 0 Number of regions: 1 (OK). Mesh OK. fvSolution: (note I update the relaxation values to .2 on p and .6 on everything else after about 150 steps. It continues to run fine for another 400 steps) solvers { p AMG 1e06 0 100; U BICCG 1e06 0; h BICCG 1e06 0; k BICCG 1e08 0; epsilon BICCG 1e08 0; } SIMPLE { nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } relaxationFactors { p 0.05; rho 0.05; U 0.3; h 0.1; k 0.05; epsilon 0.05; } fvSchemes: ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; } divSchemes { default none; div(phi,U) Gauss limitedLinearV 1; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div(phi,h) Gauss limitedLinear 1; div((muEff*dev2(grad(U).T()))) Gauss linear; } laplacianSchemes { default none; laplacian(muEff,U) Gauss linear limited 0.5; laplacian((rhoA(U)),p) Gauss linear limited 0.5; laplacian(alphaEff,h) Gauss linear limited 0.5; laplacian(DkEff,k) Gauss linear limited 0.5; laplacian(DepsilonEff,epsilon) Gauss linear limited 0.5; laplacian(mut,U) Gauss linear limited 0.5; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; } Epsilon: (note I crash almost immediately when I run laminar. I also get increased stability by fiddling with viscosity.) dimensions [0 2 3 0 0 0 0]; internalField uniform 1.5; boundaryField { PeriodicCenter { type cyclic; } PeriodicCombustor { type cyclic; } PeriodicHoles { type cyclic; } PeriodicPlenum2 { type cyclic; } PeriodicPlenum1 { type cyclic; } SmallTubes2 { type zeroGradient; } LargeTubes2 { type zeroGradient; } SmallTubes1 { type zeroGradient; } LargeTubes1 { type zeroGradient; } Wall6 { type zeroGradient; } WallSet5 { type zeroGradient; } WallSet4 { type zeroGradient; } WallSet2 { type zeroGradient; } Wall3 { type zeroGradient; } Wall1 { type zeroGradient; } BCPressOutcenter { type inletOutlet; inletValue uniform 1.5; } BCPressOut1 { type inletOutlet; inletValue uniform 1.5; } BCPressInlet2 { type fixedValue; value uniform 1.5; } BCPressInlet1 { type fixedValue; value uniform 1.5; } k: dimensions [0 2 2 0 0 0 0]; internalField uniform 0.055; boundaryField { PeriodicCenter { type cyclic; } PeriodicCombustor { type cyclic; } PeriodicHoles { type cyclic; } PeriodicPlenum2 { type cyclic; } PeriodicPlenum1 { type cyclic; } SmallTubes2 { type zeroGradient; } LargeTubes2 { type zeroGradient; } SmallTubes1 } type zeroGradient; } LargeTubes1 { type zeroGradient; } Wall6 { type zeroGradient; } WallSet5 { type zeroGradient; } WallSet4 { type zeroGradient; } WallSet2 { type zeroGradient; } Wall3 { type zeroGradient; } Wall1 { type zeroGradient; } BCPressOutcenter { type inletOutlet; inletValue uniform .055; } BCPressOut1 } type inletOutlet; inletValue uniform .055; } BCPressInlet2 { type fixedValue; value uniform .055; } BCPressInlet1 { type fixedValue; value uniform .055; } p: (note I have also tried totalPressure and fixed value for the outlet) dimensions [1 1 2 0 0 0 0]; internalField uniform 102928; boundaryField { PeriodicCenter { type cyclic; } PeriodicCombustor { type cyclic; } PeriodicHoles { type cyclic; } PeriodicPlenum2 { type cyclic; } PeriodicPlenum1 { type cyclic; } SmallTubes2 { type zeroGradient; } LargeTubes2 { type zeroGradient; } SmallTubes1 { type zeroGradient; } LargeTubes1 { type zeroGradient; } Wall6 { type zeroGradient; } WallSet5 { type zeroGradient; } WallSet4 { type zeroGradient; } WallSet2 { type zeroGradient; } Wall3 { type zeroGradient; } Wall1 { type zeroGradient; } BCPressOutcenter { type fixedValue; value uniform 101325; } BCPressOut1 { type fixedValue; value uniform 101325; } BCPressInlet2 { type totalPressure; p0 uniform 104531; value uniform 104531; } BCPressInlet1 { type totalPressure; p0 uniform 104531; value uniform 104531; } T: dimensions [0 0 0 1 0 0 0]; internalField uniform 300; boundaryField { PeriodicCenter { type cyclic; } PeriodicCombustor { type cyclic; } PeriodicHoles { type cyclic; } PeriodicPlenum2 { type cyclic; } PeriodicPlenum1 { type cyclic; } SmallTubes2 { type zeroGradient; } LargeTubes2 { type zeroGradient; } SmallTubes1 { type zeroGradient; } LargeTubes1 { type zeroGradient; } Wall6 { type zeroGradient; } WallSet5 { type zeroGradient; } WallSet4 { type zeroGradient; } WallSet2 { type zeroGradient; } Wall3 { type zeroGradient; } Wall1 { type zeroGradient; } BCPressOutcenter { type inletOutlet; inletValue uniform 300; } BCPressOut1 { type inletOutlet; inletValue uniform 300; } BCPressInlet2 { type fixedValue; value uniform 300; } BCPressInlet1 { type fixedValue; value uniform 300; } U: (note I have also tried pressureInletOutletVelocity for the outlet) dimensions [0 1 1 0 0 0 0]; internalField uniform (1 0.1 0.1); boundaryField { PeriodicCenter { type cyclic; } PeriodicCombustor { type cyclic; } PeriodicHoles { type cyclic; } PeriodicPlenum2 { type cyclic; } PeriodicPlenum1 { type cyclic; } SmallTubes2 { type fixedValue; value uniform (0 0 0); } LargeTubes2 { type fixedValue; value uniform (0 0 0); } SmallTubes1 { type fixedValue; value uniform (0 0 0); } LargeTubes1 { type fixedValue; value uniform (0 0 0); } Wall6 { type fixedValue; value uniform (0 0 0); } WallSet5 { type fixedValue; value uniform (0 0 0); } WallSet4 { type fixedValue; value uniform (0 0 0); } WallSet2 { type fixedValue; value uniform (0 0 0); } Wall3 { type fixedValue; value uniform (0 0 0); } Wall1 { type fixedValue; value uniform (0 0 0); } BCPressOutcenter { type inletOutlet; inletValue uniform (0 0 0); } BCPressOut1 { type inletOutlet; inletValue uniform (0 0 0); } BCPressInlet2 { type pressureInletVelocity; phi phi; rho rho; value uniform (0 0 0); } BCPressInlet1 { type pressureInletVelocity; phi phi; rho rho; value uniform (0 0 0); } 
Even though this should be a l
Even though this should be a low mach number(<0.3) would it still make sense to experiment with the pressureTransmissive outlet BC since it seems to be a growing oscillating pressure wave in a cylinder that seems to be causing the problems???

Hi Daniel,
Your setup seem
Hi Daniel,
Your setup seems fine. Apart from that "low wave instabiltiy" what happens to the other fields, do they converge towards reasonable values, do they oscillate consequently too? You can always try to take the immoral and cowardly step of using upwind for all your variables. Maybe you might also try to tighten your pressure solver tolerance. Take it easy Pierre 
probably try one of the transi
probably try one of the transient codes like rhoSonicFoam and rhopSonicFoam. Using different codes helps spotting errors in the setup.
The total pressure boundary condition should be alright. markus 
Thank you very much for your r
Thank you very much for your replies,
We get the same thing when upwinding all values and I have tried playing with the tolerances of pressure, it still develops a unstable pressure wave. The problem with pressure is usually preluded by a sharp drop in the minimum Ux. A drop from around 33 to around 60. After a couple steps velocity is back to normal, but pressure develops a growing oscillating wave. Rho of course ocsillates with pressure. Temperature and velocity look pretty good for a few steps until variance in pressure begins driving them. We have played with rhoTurbFoam a little but haven't spent much time with the transient codes yet. 
As Markus suggested maybe rhop
As Markus suggested maybe rhopSonicFoam might help, as it uses a slightly different way of biulding fluxes. Quite a stable code I hear.
Pierre 
Does anyone have anything else
Does anyone have anything else we can try on this? We get the low wave pressure mode on both rhoTurbFoam and rhoSimpleFoam. It always develops in the channel(cylinder). It always develops after the swirling flow field begins to setup. We have tried more generic cases and the problem persists. The swirl develops then pressure oscillates and becomes unstable.
We have began trying rhopSonicFoam, but have not gotten very far. Any other suggestions would be a great help. Thanks 
Quote:
Did you solve your issue? If not, I will post my issue here. If affirmatively, I will try your solution. Regards, Guilherme 
Hi, the last comment before yours is from 2006. It is probably more convenient if you open a new thread, and maybe provide a sample case that reproduces the problem.
Best, 
Hi Alberto,
The last post is from 2006 but the user joined in 2009! Certainly I will open a new thread. Thanks. Regards, Guilherme 
Oh, I guess this is due to the forum migration.

solver for steady compressible flow in OpenFOAM 1.7.1
Hai all,
I am new to OpenFoam.With my experience in Fluent ( simulated supersonic flow at Mach number 2.2 over Gemini Reentry capsule) thought to try OF. Simulation condition of my Fluent work is steady, Density based, M=2.2, inviscid both inviscid and turbulent flow. So far , I converted my fluent mesh file (.msh) as OpenFOAM mesh file. For steady , compressible flow rhoSimpleFoam seems to be a equivalent solver, but in OpenFOAM 1.7.1 (which is the one I installed in my machine) only rhoPorousSimpleFoam solver is available. Kindly explain what does this porous in rhoPorousSimpleFoam means for, and suggest me with correct solver.. Thanks in advance. Quote:

rhoSimpleFoam is part of OpenFOAM 1.7.1

Dear Alberto,
I would like to thank you for your reply . And I feel very Sorry for my mistake., can you please suggest me any other solver other than rhoSimpleFoam for my case.. 
rhoSimpleFoam is the only compressible steady solver available.
There is rhoCentralFoam, which is suitable for viscid/inviscid flows with high Mach number, but it is unsteady. Similarly, sonicFoam is fine for transonic/supersonic turbulent unsteady flows. Best, 
Dear Alberto,
Thanks a lot for your reply.Now I decided the rhoSimpleFoam solver for my work. Sorry for bothering you again, Kindly send any test case for rhoSimpleFoam to my mail id rock.senthilkumar@gmail.com ., so that I can do any case study also. Quote:

Take a look at the tutorials :)

All times are GMT 4. The time now is 09:20. 