
[Sponsors] 
April 20, 2010, 09:23 
Steady State solver for High Mach No flows

#1 
Senior Member
KGN
Join Date: Oct 2009
Location: Chennai, India
Posts: 121
Rep Power: 16 
Hi all,
I want to solve supersonic(M=2.5) & transonic(M=0.9) flow over BodyTail missile configuration. Only one steady state compressible flow solver is available in OpenFOAM which is "rhoSimpleFoam", but when i used this for supersonic case, the solution starts diverging after few iterations. I searched in the forum, but not able to get any answer for this problem. sonicFoam is good for transonic and supersonic case but this is a transient solver, so using it to solve a steady flow problem takes a lot of time. So is there a way to convert the "sonicFoam" to steady flow solver. Answer for this question will help many people, because i searched in the forum and saw no solid answer. mecbe 

April 21, 2010, 00:19 

#2 
Senior Member
KGN
Join Date: Oct 2009
Location: Chennai, India
Posts: 121
Rep Power: 16 
Hi all,
Any answers... 

April 21, 2010, 02:34 

#3 
Senior Member
Mark Olesen
Join Date: Mar 2009
Location: https://olesenm.github.io/
Posts: 1,695
Rep Power: 40 

April 21, 2010, 02:39 

#4 
Senior Member
KGN
Join Date: Oct 2009
Location: Chennai, India
Posts: 121
Rep Power: 16 
Hi Olesen,
Thank you very much for the reply. The under relaxation i used for rho is 0.01. But i didn't bound rho. Can you tell the syntax for that. 

April 21, 2010, 04:50 

#5  
Senior Member
Mark Olesen
Join Date: Mar 2009
Location: https://olesenm.github.io/
Posts: 1,695
Rep Power: 40 
Quote:
Somewhere near the beginning (eg, in createFields.H) Code:
dimensionedScalar rhoMax ( mesh.solutionDict().subDict("SIMPLE").lookup("rhoMax") ); dimensionedScalar rhoMin ( mesh.solutionDict().subDict("SIMPLE").lookup("rhoMin") ); Code:
rho = thermo.rho(); rho = max(rho, rhoMin); rho = min(rho, rhoMax); rho.relax(); 

April 21, 2010, 05:03 

#6 
New Member
Join Date: Feb 2010
Posts: 24
Rep Power: 16 
Hi,
I am also very interested in solving transonic and supersonic problems in OF. I have also never got the rhoSimpleFoam solver working on these problems, but also did not spend much time on it. Just a remark: Genrally I also use sonicFoam for these problems. Perhaps it is obvious for most users, but if the simulation is started with upwind discretization of the convection terms, the timestep can be increased to speed it up a little. Mainly up to CourantNumber = 10 is stable in my calculations. Regards 

April 21, 2010, 06:04 

#7 
Senior Member
KGN
Join Date: Oct 2009
Location: Chennai, India
Posts: 121
Rep Power: 16 
Hi,
I made the changes to the code and compiled it. But still the solution diverges after few iterations. Is there any solutions? Is there a way to convert "sonicFoam" as steady state solver. cheers mecbe 

April 24, 2010, 11:07 

#8 
Member

Hi Foamers,
I experienced sonicFoam for subsonic/transonic cases. I regret that there is no adaptating timestep I ran with very low timestep 1e08 and experienced very very long computations for a really simple 2D airfoil. If you can share you experience, that would be nice Concerning rhoSimpleFoam, there is a boolean 'transonic' that you can put in your fvSolution file with SIMPLE settings. That will change the way it solves the equations (because transonic equations are strongly nonlinear). But I am not sure rhoSimpleFoam will solve your supersonic flows Hope it'll help, don't forget to update your results 

April 26, 2010, 14:33 

#9 
Senior Member
KGN
Join Date: Oct 2009
Location: Chennai, India
Posts: 121
Rep Power: 16 
Hi,
I used sonicFoam to solve the problem, its working for comparatively large time step i.e. Courant No < 10. Using upwind scheme for divergence operator. But i compared the results with the fluent, the velocity is matching but the pressure is under predicted by OpenFoam (50% less). Wat may be the problem. 

February 23, 2012, 18:51 

#10 
Member
Stefano Wahono
Join Date: Aug 2010
Location: Melbourne, Australia
Posts: 42
Rep Power: 15 
I experienced the same problem with getting a converged solution with OpenFOAM when simulating a supersonic fully expanded jet on a turbojet engine nozzle (Mach 1 at Nozzle exit plane). I used a 2D axisymmetric model.
However, I managed to get it to converged lately using rhoSimpleFoam using the following strategies: 1. Ramp up the inlet mass flow rate very slowly (in my case I ramp up the mDot at inlet from 1 per cent of intended flow rate to 100 per cent over 6000 iterations). 0/U: turbxit { type timeVaryingFlowRateInletVelocity; flowRate 0.00625; fileName "turbxitflowrate.dat"; outOfBounds clamp; value (0 0 0); } 2. Use Gauss Upwind for all convective schemes over the ramp period  more numerical diffusion is good to damp out any initial oscillation in the pressure field and localised strong gradients in the flowfield. 3. Use very low UnderRelaxation Factors (URF) over the ramp period. Just try to get the initial starting flow to develop all the way to the outlet boundary. p 0.01; rho 0.005; U 0.7; k 0.3; epsilon 0.3; h 0.7; When your flow is not transonic, you can put URF for rho to 1. 4. When I switched to 2nd order gauss linearUpwind scheme later in the run (about 10,000 iterations), I used face limiter on all gradient and flux reconstruction schemes. gradSchemes { default cellLimited Gauss pointLinear 1; limitedGrad(U) cellMDLimited Gauss pointLinear 1; limitedGrad(h) cellLimited Gauss linear 1; limitedGrad(k) cellLimited Gauss pointLinear 1; limitedGrad(epsilon) cellLimited Gauss pointLinear 1; } divSchemes { div(phi,U) Gauss linearUpwindV limitedGrad(U); div(phi,h) Gauss linearUpwind limitedGrad(h); div(phi,epsilon) Gauss linearUpwind limitedGrad(epsilon); div(phi,k) Gauss linearUpwind limitedGrad(k); div((muEff*dev2(grad(U).T()))) Gauss linear; div((muEff*dev2(T(grad(U))))) Gauss linear; div(U,p) Gauss linear; } 5. Do not use standard KE for high transonic flow  never worked for me. 6. If possible use lowRE mesh  avoid wall function for mut. BC at wall: mut: type calculated alphat: type calculated epsilon: type compressible::epsilonWallFunction k: type fixedValue; value uniform 1e12; 7. If you expect strong shocks in the flowfield, rhoSimpleFoam will never ever work. Need density based solver. Unfortunately to my understanding, no densitybased solver for steady state currently exists in OpenFOAM. Anyone wants to contribute? Thank you. Regards, Stefano
__________________
Stefano Wahono Defence Science and Technology Organisation Propulsion Systems 

July 6, 2021, 03:56 

#11 
Senior Member
Giles Richardson
Join Date: Jun 2012
Location: Cambs UK
Posts: 101
Rep Power: 13 
Hi Stefano,
do you have any (more recent) experience on getting the rhoSimpleFoam solver to work on transonic flows with shocks? Im struggling awith a particularly difficult case, in terms of convergence, and could do with some advice about solver settings and/or schemes. Thanks Giles. 

Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Probable bug with laplacian steady state  novyno  OpenFOAM  1  November 23, 2009 19:31 
Steady state version of interFoam  anger  OpenFOAM Running, Solving & CFD  1  October 1, 2009 12:49 
Development of a Low mach PISO solver  nishant_hull  OpenFOAM Programming & Development  0  August 25, 2009 12:48 
Monitor point values in a steady state simulation  Kushagra  CFX  2  July 13, 2008 20:03 
Transient vs Steady State  Adam  CFX  1  April 12, 2007 11:34 