
[Sponsors] 
March 14, 2013, 15:47 
SteadyState and Transient Solvers

#1 
New Member
Thomas
Join Date: Nov 2012
Posts: 5
Rep Power: 6 
Could someone please explain the differences between steadystate solvers and Transient solvers also when is best to use each (specifically pisoFoam and SimpleFoam).
So far I understand that SteadyState is much faster and transient uses a timestep deltaT. But I am struggling to find any information past this. Thanks in advance. 

March 14, 2013, 17:11 

#2 
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 8 
Greetings Thomas,
The terms steady state and transient have to do on if time is a parameter or not (very roughly). This has to do with the phenomena that you are studying.....if your physical flow does not change over time then you can see it as steady state. So in either case you must know before you do the simulation if your "real" flow is steady or transient and then procceed with the solvers you talked about. Poiseuille flow for example is treated as steady state. Regards, Nickolas 

March 14, 2013, 17:18 

#3 
New Member
Thomas
Join Date: Nov 2012
Posts: 5
Rep Power: 6 
Thanks for clearing this up for me. One thing remains though, how can turbulent flow be considered steady state?
Tom 

March 14, 2013, 17:35 

#4 
Member
Nickolas P
Join Date: Oct 2010
Location: Greece
Posts: 30
Rep Power: 8 
Well in the way you are posing this is very general. Maybe you can tell some information on what you have in mind to simulate. For example, if you process is a continuous process but the phenomena created are turbulent (very high Reynolds number) you can approximate it as steady state (since it is continuous) and insert a turbulent model such the Reynolds averaged stresses.
But all these are very general assumptions. With simpleFoam solver, which is steady state, you can switch between laminar and turbulent flow. Nickolas 

March 14, 2013, 17:58 

#5 
New Member
Thomas
Join Date: Nov 2012
Posts: 5
Rep Power: 6 
I am doing air flow over a small air vehicle. Reynolds 120,000 15deg angle of attack. Would I be right in saying that due to the air flow separation and turbulence this would be a noncontinuous simulation?


January 21, 2014, 05:16 
time evolution PisoFoam

#6 
Member
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 6 
Hello there,
I am struggling a little bit with the meaning of time in transient solvers like PisoFoam. I am new to openfoam and I am checking pisofoam for a transient newtonian flow. The problem is that whenever I decrease the time step on a pressuredriven flow the steady state is reached faster and the time scale changes dramatically. When I compare my results with analytic ones I find drastic differences, like if time would be scaled by a factor. Does someone know if the time that openFoam prints has a physical direct meaning? 

January 21, 2014, 16:37 

#7 
Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,978
Blog Entries: 39
Rep Power: 108 
Greetings to all!
@Heliana: I got your private message and went looking for any posts you had made about this question. There are a few very important details that I need to ask, in order to assess what might be the problem:
Bruno
__________________


February 25, 2014, 12:35 

#8 
Member
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 6 
Hello Bruno!!
I am so sorry for the late reply, i was on holidays :S My case is a pressure driven Newtonian flow. This is how I defined the mesh: Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM Extend Project: Open Source CFD   \\ / O peration  Version: 1.6ext   \\ / A nd  Web: www.extendproject.de   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 0.01; vertices ( (0 0 0) // 0 (1 0 0) // 1 (0 0.5 0) // 2 (1 0.5 0) // 3 //Front (0 0 0.01) // 4 (1 0 0.01) // 5 (0 0.5 0.01) // 6 (1 0.5 0.01) // 7 ); blocks ( hex (0 1 3 2 4 5 7 6) (50 20 1) simpleGrading (1 1 1)) These are the answers: 1. I studied the three tutorials 2. in the cavity case I compared also time scales between simpleFoam and pisoFoam and I found time differences regarding the time needed to get to steady state. 3. I checked both simpleFoam and pisoFoam for this case. Always simpleFoam would take importantly more time to get to steady state than pisoFoam (by a factor of approx. 100). 4. what do you mean by flow speeds? 5. these are my files more or less for pisoFoam controlDict Code:
FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application pisoFoam; //startFrom latestTime; startFrom startTime; startTime 0; stopAt endTime; endTime 0.001; deltaT 1e6; writeControl adjustableRunTime; writeInterval 0.0001; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; adjustTimeStep no; maxCo 0.7; maxDeltaT 0.001;} Code:
FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; /* grad(U) Gauss linear;*/ } divSchemes { default none; div(phi,U) Gauss upwind; /* div(phi,k) Gauss limitedLinear 1;*/ /* div(phi,epsilon) Gauss limitedLinear 1;*/ /* div(phi,R) Gauss limitedLinear 1;*/ /* div(R) Gauss linear;*/ /* div(phi,nuTilda) Gauss limitedLinear 1;*/ div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected; laplacian((1A(U)),p) Gauss linear corrected; /* laplacian(DkEff,k) Gauss linear corrected;*/ /* laplacian(DepsilonEff,epsilon) Gauss linear corrected;*/ /* laplacian(DREff,R) Gauss linear corrected;*/ /* laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;*/ } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.2.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG; preconditioner DIC; tolerance 1e08; relTol 0; } pFinal { solver PCG; preconditioner DIC; tolerance 1e06; relTol 0; } U { solver PBiCG; preconditioner DILU; tolerance 1e08; relTol 0; } } /*SIMPLE*/ /*{*/ /* nNonOrthogonalCorrectors 0;*/ /* pRefCell 0;*/ /* pRefValue 0;*/ /* residualControl*/ /* {*/ /* p 1e8;*/ /* U 1e8;*/ /* }*/ /*}*/ PISO { nCorrectors 5; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; residualControl { p 1e2; U 1e2; } } relaxationFactors { fields { p 0.3; } equations { U 0.7; } } Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.2.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver PCG; preconditioner DIC; tolerance 1e08; relTol 0; } pFinal { solver PCG; preconditioner DIC; tolerance 1e06; relTol 0; } U { solver PBiCG; preconditioner DILU; tolerance 1e08; relTol 0; } } /*SIMPLE*/ /*{*/ /* nNonOrthogonalCorrectors 0;*/ /* pRefCell 0;*/ /* pRefValue 0;*/ /* residualControl*/ /* {*/ /* p 1e8;*/ /* U 1e8;*/ /* }*/ /*}*/ PISO { nCorrectors 5; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; residualControl { p 1e2; U 1e2; } } relaxationFactors { fields { p 0.3; } equations { U 0.7; } } Sorry uff it all sounds like too much. From simpleFoam to pisoFoam I changed the ddtSchemes from steadyState to Euler. in simpleFoam the div(phi,U) is bounded Gauss upwind and in pisoFoam it is just gauss upwind and fvSolution is the same. Actually the most different is fvSchemes for simpleFoam: Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 2.2.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) bounded Gauss upwind; div(phi,k) bounded Gauss upwind; div(phi,epsilon) bounded Gauss upwind; div(phi,R) bounded Gauss upwind; div(R) Gauss linear; div(phi,nuTilda) bounded Gauss upwind; div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected; laplacian((1A(U)),p) Gauss linear corrected; laplacian(DkEff,k) Gauss linear corrected; laplacian(DepsilonEff,epsilon) Gauss linear corrected; laplacian(DREff,R) Gauss linear corrected; laplacian(DnuTildaEff,nuTilda) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } sorry for the overload!! :s have a nice day!! heliana Last edited by wyldckat; March 2, 2014 at 10:15. Reason: Added [CODE][/CODE] 

March 2, 2014, 11:39 

#9  
Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,978
Blog Entries: 39
Rep Power: 108 
Hi Heliana,
Quote:
Code:
convertToMeters 0.01; With a "MaxCo" set to 0.7, the maximum velocity should be... I haven't done the math, but likely the maximum allowed velocity in the "U" field would be something like 0.1 to 0.01 m/s. The values for the "U" field I don't have time to setup these cases myself, but I assume you're basing yourself on the tutorial "incompressible/pisoFoam/ras/cavity", correct? If you could share the cases, it would it easier for anyone to see and test this. Best regards, Bruno
__________________


March 5, 2014, 10:01 

#10 
Member
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 6 
Hello Bruno,
Thank you for answering. Well I am using a better mesh, more uniform, and I am actually working more studying a pressure driven flow through a simple pipe. I am also very much aware of the convertToMetres command, though I tried to simplify more my mesh file. Now that the mesh is better I still find differences regarding the evolution of velocity when I decrease the timeStep / Courant number. Does that make sense? I mean for every timestep I use the velocity I am waiting for is eventually reached, but with low timesteps (1e6) the steady state is reached faster which tends to be similar to the analytic result. What do you think? Thank you for your patience 

March 5, 2014, 15:54 

#11  
Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,978
Blog Entries: 39
Rep Power: 108 
Hi Heliana,
Quote:
Because if you are enforcing a fixed time step and are not careful with keeping the Courant Number below the 0.5 mark, then your solution is simply wrong. There is a specific line that tells you this, namely the one mentioning the word "continuity". If you look at that line in each time step, what values are you getting? Best regards, Bruno
__________________


March 6, 2014, 05:09 

#12 
Member
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 6 
Hi Bruno!
Well, I have been using really low time steps, in the order of 10^6 amd for the time continuity errors I get something like this: time step continuity errors : sum local = 1.17661e22, global = 9.15827e25, cumulative = 3.50451e17 DICPCG: Solving for p, Initial residual = 1.33849e07, Final residual = 1.33849e07, No Iterations 0 time step continuity errors : sum local = 3.74667e22, global = 9.26575e25, cumulative = 3.50451e17 Which sounds pretty low. I am going to adjustTimeStep to see what happens I will let you know then ! Cheers, Heliana 

March 6, 2014, 15:54 

#13 
Member
Eric Robertson
Join Date: Jul 2012
Posts: 95
Rep Power: 8 
A more basic way of classifying the differences is this:
If you care about observing timeaccurate flow development, then you would use a transient solver (pisoFoam, pimpleFoam, etc) with a 2ndorder temporal scheme. If you only care about reaching a "steadystate" and do not wish to observe anything that goes on between the beginning and end states, then it is much better to choose one of the steadystate solvers (simpleFoam etc). Transient solvers generally go handinhand with DES and LES simulations, while steadystate solvers are better coupled with RANS simulations. 

March 6, 2014, 18:14 

#14 
Senior Member
Pete Bachant
Join Date: Jun 2012
Location: NH, USA
Posts: 167
Rep Power: 7 
Can you expand on the importance of the order of the temporal scheme? It seems many of the OpenFOAM tutorials for pimpleFoam use an Euler scheme for time discretization.


March 6, 2014, 20:29 

#15  
Member
Eric Robertson
Join Date: Jul 2012
Posts: 95
Rep Power: 8 
Quote:
One example where having a 2ndorder temporal scheme is important is when predicting the Strouhal number (St) of oscillation in the flow past a sphere using DES or LES. This is simply a measure of wake shedding frequencies. If you choose Euler, at the very least you'll certainly experience a lag/errors in the time history of St with respect to experiment. 

March 7, 2014, 18:59 

#16  
Senior Member
Pete Bachant
Join Date: Jun 2012
Location: NH, USA
Posts: 167
Rep Power: 7 
Quote:


March 7, 2014, 20:32 

#17  
Member
Eric Robertson
Join Date: Jul 2012
Posts: 95
Rep Power: 8 
Quote:
In cases where backward is unstable, you may desire to use CrankNicolson and blend it with Euler (using the coefficient 0 to 1) if that doesn't work either. 

March 11, 2014, 06:21 

#18 
Member
Heliana Cardenas
Join Date: Jul 2013
Posts: 30
Rep Power: 6 
Hi guys, thank you so much for answering, it has been really helpful... Well, I was checking my files and I found a mistake I have made (i feel really embarrassed). I was using relaxation factors so my transients were affected... when I removed them it worked just fine.
My goal is actually use the viscoelasticFluidFoam solver using a modified Maxwell model, and that is suposed to be a transient solver as far as I understood. Is any of you familiar with that solver?? cheers ! 

March 11, 2014, 15:31 

#19 
Senior Member
Pete Bachant
Join Date: Jun 2012
Location: NH, USA
Posts: 167
Rep Power: 7 
Is that a general principlethat relaxation factors should not be used on unsteady problems?


March 25, 2014, 23:24 

#20 
Member
Eric Robertson
Join Date: Jul 2012
Posts: 95
Rep Power: 8 
It is still acceptable to use relaxation factors on unsteady problems, but their use is often problemdependent. I would do a small study to determine what's right for your case, and it often comes down to how much stability you need vs. how much accuracy you desire.


Tags 
pisofoam, simplefoam, steadystate, transient 
Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Steady State Vs Transient answers  Kushagra  CFX  25  July 23, 2017 03:20 
error message  cuteapathy  CFX  14  March 20, 2012 07:45 
Steady state vs. mean transient analysis of flow behind a circular cylinder  Heini  Main CFD Forum  1  June 9, 2011 06:47 
Mass Diffusion: Transient and Steady State BC  rval  CFX  3  November 19, 2008 01:52 
Transient vs Steady State  Adam  CFX  1  April 12, 2007 11:34 