# Steady-State and Transient Solvers

 User Name Remember Me Password
 Register Blogs Members List Search Today's Posts Mark Forums Read

 March 14, 2013, 15:47 Steady-State and Transient Solvers #1 New Member   Thomas Join Date: Nov 2012 Posts: 5 Rep Power: 4 Could someone please explain the differences between steady-state solvers and Transient solvers also when is best to use each (specifically pisoFoam and SimpleFoam). So far I understand that Steady-State 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: 6 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: 4 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: 6 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: 4 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 non-continuous simulation?

 January 21, 2014, 05:16 time evolution PisoFoam #6 New Member   Heliana Cardenas Join Date: Jul 2013 Posts: 20 Rep Power: 4 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 pressure-driven 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?

 February 25, 2014, 12:35 #8 New Member   Heliana Cardenas Join Date: Jul 2013 Posts: 20 Rep Power: 4 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.6-ext | | \\ / A nd | Web: www.extend-project.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))``` So it has 3050 cells. 2D model. 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 1e-6; 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((1|A(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 1e-08; relTol 0; } pFinal { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0; } U { solver PBiCG; preconditioner DILU; tolerance 1e-08; relTol 0; } } /*SIMPLE*/ /*{*/ /* nNonOrthogonalCorrectors 0;*/ /* pRefCell 0;*/ /* pRefValue 0;*/ /* residualControl*/ /* {*/ /* p 1e-8;*/ /* U 1e-8;*/ /* }*/ /*}*/ PISO { nCorrectors 5; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; residualControl { p 1e-2; U 1e-2; } } 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 1e-08; relTol 0; } pFinal { solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0; } U { solver PBiCG; preconditioner DILU; tolerance 1e-08; relTol 0; } } /*SIMPLE*/ /*{*/ /* nNonOrthogonalCorrectors 0;*/ /* pRefCell 0;*/ /* pRefValue 0;*/ /* residualControl*/ /* {*/ /* p 1e-8;*/ /* U 1e-8;*/ /* }*/ /*}*/ PISO { nCorrectors 5; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; residualControl { p 1e-2; U 1e-2; } } relaxationFactors { fields { p 0.3; } equations { U 0.7; } }``` 7. turbulence Model, Newtonian, RASmodel, laminar, turbulence off. 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((1|A(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 ; }``` what do you think?? 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: 8,511
Blog Entries: 34
Rep Power: 86
Hi Heliana,

Quote:
 Originally Posted by heliana60 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).
Something is definitely not right here. Did you notice that the mesh is being scaled down by a factor of 0.01?
Code:
`convertToMeters 0.01;`
And that the cells are not uniformly shaped? The number of cells over Y should be 25 and not 20.

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.

Quote:
 Originally Posted by heliana60 4. what do you mean by flow speeds?
The values for the "U" field

I don't have time to set-up 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 New Member   Heliana Cardenas Join Date: Jul 2013 Posts: 20 Rep Power: 4 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 time-step I use the velocity I am waiting for is eventually reached, but with low time-steps (1e-6) 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: 8,511
Blog Entries: 34
Rep Power: 86
Hi Heliana,

Quote:
 Originally Posted by heliana60 I still find differences regarding the evolution of velocity when I decrease the timeStep / Courant number. Does that make sense? I mean for every time-step I use the velocity I am waiting for is eventually reached, but with low time-steps (1e-6) the steady state is reached faster which tends to be similar to the analytic result.
The trick to ascertain what is right and what is wrong is usually to use the following settings in "controlDict" (when using a transient solver, that is):
1. Use:
Code:
`adjustTimeStep yes;`
To let the solver adjust the time step automatically.
2. Use:
Code:
`maxCo          0.5;`
It's the value that usually works for most of the cases. In certain situations, this value should be lower and in others it can be higher, but that depends on one's experience on this topic.
Using these settings you'll get a more accurate indication of what is correct.

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 New Member   Heliana Cardenas Join Date: Jul 2013 Posts: 20 Rep Power: 4 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.17661e-22, global = 9.15827e-25, cumulative = 3.50451e-17 DICPCG: Solving for p, Initial residual = 1.33849e-07, Final residual = 1.33849e-07, No Iterations 0 time step continuity errors : sum local = 3.74667e-22, global = 9.26575e-25, cumulative = 3.50451e-17 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 R Join Date: Jul 2012 Location: Mississippi State University Posts: 75 Rep Power: 5 A more basic way of classifying the differences is this: -If you care about observing time-accurate flow development, then you would use a transient solver (pisoFoam, pimpleFoam, etc) with a 2nd-order temporal scheme. -If you only care about reaching a "steady-state" 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 steady-state solvers (simpleFoam etc). Transient solvers generally go hand-in-hand with DES and LES simulations, while steady-state solvers are better coupled with RANS simulations. wyldckat, Sherlock_1812, heliana60 and 1 others like this.

March 6, 2014, 18:14
#14
Senior Member

Pete Bachant
Join Date: Jun 2012
Location: NH, USA
Posts: 108
Rep Power: 5
Quote:
 Originally Posted by msuaeronautics A more basic way of classifying the differences is this: -If you care about observing time-accurate flow development, then you would use a transient solver (pisoFoam, pimpleFoam, etc) with a 2nd-order temporal scheme.
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 R
Join Date: Jul 2012
Location: Mississippi State University
Posts: 75
Rep Power: 5
Quote:
 Originally Posted by pbachant 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.
Many of the OpenFOAM tutorials possibly use Euler because it is the most stable, and they leave it up to the user to change to a higher order if desired. You might also notice that many of the tutorials come with very coarse grids- all of these just for ease of use.

One example where having a 2nd-order 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: 108
Rep Power: 5
Quote:
 Originally Posted by msuaeronautics Many of the OpenFOAM tutorials possibly use Euler because it is the most stable, and they leave it up to the user to change to a higher order if desired. You might also notice that many of the tutorials come with very coarse grids- all of these just for ease of use. One example where having a 2nd-order 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.
Which temporal scheme in OpenFOAM would you recommend for use with PIMPLE and a low Re mesh on an airfoil?

March 7, 2014, 20:32
#17
Member

Eric R
Join Date: Jul 2012
Location: Mississippi State University
Posts: 75
Rep Power: 5
Quote:
 Originally Posted by pbachant Which temporal scheme in OpenFOAM would you recommend for use with PIMPLE and a low Re mesh on an airfoil?
Personally, I make it a point to use three-point backward differencing (denoted by the keyword backward) for every transient problem of mine. It's generally very stable and appears to be slightly more accurate and less computationally expensive than Crank-Nicolson.

In cases where backward is unstable, you may desire to use Crank-Nicolson and blend it with Euler (using the coefficient 0 to 1) if that doesn't work either.

 March 11, 2014, 06:21 #18 New Member   Heliana Cardenas Join Date: Jul 2013 Posts: 20 Rep Power: 4 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: 108 Rep Power: 5 Is that a general principle--that relaxation factors should not be used on unsteady problems?

March 25, 2014, 23:24
#20
Member

Eric R
Join Date: Jul 2012
Location: Mississippi State University
Posts: 75
Rep Power: 5
Quote:
 Originally Posted by pbachant Is that a general principle--that relaxation factors should not be used on unsteady problems?
It is still acceptable to use relaxation factors on unsteady problems, but their use is often problem-dependent. 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, steady-state, transient

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post cuteapathy CFX 14 March 20, 2012 07:45 Heini Main CFD Forum 1 June 9, 2011 06:47 rval CFX 3 November 19, 2008 01:52 Kushagra CFX 6 July 6, 2008 22:41 Adam CFX 1 April 12, 2007 11:34

All times are GMT -4. The time now is 23:06.

 Contact Us - CFD Online - Top