
[Sponsors] 
June 26, 2009, 13:54 
How can deltaT exceed the limitation of courant?

#1 
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
Hi, All foamers,
In OF Users Guide, the selection of deltaT is depend on courant. I follows this rule, and set my deltaT to under 0.00005, this works fine on turbDyMFoam. but there seems no such limit in Fluent, in Fluent, I used the same mesh, but I can set "time step size" to 0.005, and have no problem in getting a reasonable solution. And this can save a lot of computation effort. I wonder whether there will be any possible method to reduce the number of time points needed in OpenFOAM? And Thanks! Last edited by yuhai; June 27, 2009 at 11:53. 

June 27, 2009, 04:51 

#2  
Senior Member
Daniel WEI (老魏)
Join Date: Mar 2009
Location: Beijing, China
Posts: 689
Blog Entries: 9
Rep Power: 14 
Quote:
Keep Courant number below 1, or even 0.1.
__________________
~ Daniel WEI  Boeing Research & Technology  China Beijing, China 

June 27, 2009, 08:35 

#3  
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
Quote:
Time Step Size: The time step size is the magnitude of . Since the FLUENT formulation is fully implicit, there is no stability criterion that needs to be met in determining . However, to model transient phenomena properly, it is necessary to set at least one order of magnitude smaller than the smallest time constant in the system being modeled. A good way to judge the choice of is to observe the number of iterations FLUENT needs to converge at each time step. The ideal number of iterations per time step is 1020. If FLUENT needs substantially more, the time step is too large. If FLUENT needs only a few iterations per time step, may be increased. Frequently a timedependent problem has a very fast ``startup'' transient that decays rapidly. It is thus often wise to choose a conservatively small for the first 510 time steps. may then be gradually increased as the calculation proceeds. For timeperiodic calculations, you should choose the time step based on the time scale of the periodicity. For a rotor/stator model, for example, you might want 20 time steps between each blade passing. For vortex shedding, you might want 20 steps per period. 

June 27, 2009, 09:22 

#4 
Senior Member
Daniel WEI (老魏)
Join Date: Mar 2009
Location: Beijing, China
Posts: 689
Blog Entries: 9
Rep Power: 14 
There are 2 reasons for choosing a small time step:
1. For stability; 2. For accuracy; Do use a small time step, I mean small enough, to get a "good" result. A good test is to compare deltat1 with deltat2, and see if the results' differences are small enough. This is especially for transient and turbulent problems, about which we care not only to the vortex shedding cycle, but also ACCURACY. A famous example is cylinder flow, where St is very easy to be right, but Cd is not.
__________________
~ Daniel WEI  Boeing Research & Technology  China Beijing, China Last edited by lakeat; June 27, 2009 at 10:32. 

June 27, 2009, 12:00 

#5 
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
As I have said, the result of Fluent with deltaT 0,005 could already give a good fit with experiment result.
Well, for OpenFOAM, stability needs 0.0001, and a good result needs 0,00005. My question should be expressed like, what could be the possible reason that makes the two solvers perform so differently? 50 to 100 times deltaT gap is far more a question of accuracy. 

June 28, 2009, 02:31 

#6  
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,911
Rep Power: 28 
Quote:
Best,
__________________
Alberto Passalacqua GeekoCFD  A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM  An opensource implementation of quadraturebased moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. 

June 28, 2009, 08:10 

#7 
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
Thanks for the hints, Alberto.
 ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss limitedLinearV 1; div(phi,k) Gauss limitedLinear 1; div(phi,epsilon) Gauss limitedLinear 1; div(phi,omega) Gauss limitedLinear 1; div(phi,R) Gauss limitedLinear 1; div(R) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev(grad(U).T()))) 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; laplacian(DomegaEff,omega) Gauss linear corrected; laplacian((rho*(1A(U))),p) Gauss linear corrected; laplacian(alphaEff,h) Gauss linear corrected; laplacian(rAU,p) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; }  solvers { p PCG { preconditioner { type DILU; } minIter 0; maxIter 10000; tolerance 1e10; relTol 0; }; pFinal PCG { preconditioner { type DILU; } minIter 0; maxIter 10000; tolerance 1e10; relTol 0; }; U BiCGStab { preconditioner { type DILU; } minIter 0; maxIter 10000; tolerance 1e10; relTol 0; }; k BiCGStab { preconditioner { type DILU; } tolerance 1e10; relTol 0; minIter 0; maxIter 10000; }; epsilon BiCGStab { preconditioner { type DILU; } tolerance 1e10; relTol 0; minIter 0; maxIter 10000; }; omega BiCGStab { preconditioner { type DILU; } tolerance 1e10; relTol 0; minIter 0; maxIter 10000; }; R BiCGStab { preconditioner { type DILU; } tolerance 1e10; relTol 0; minIter 0; maxIter 10000; }; nuTilda BiCGStab { preconditioner { type DILU; } tolerance 1e10; relTol 0; minIter 0; maxIter 10000; }; } PISO { nCorrectors 4; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; }  in OpenFOAM turbDyMFOAM, the max Co reports to be 0.15 to 0.3 (depends on the rotation). Fluent: Unsteady Formulation: 1st order implicit Time: Unsteady Formulation: implicit Discretization: second Order upwind .................................................. ............................... is there any other need to be posted? greet 

June 28, 2009, 14:13 

#8 
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,911
Rep Power: 28 
Hi,
the schemes are pretty much standard. You might try to see what happens switching to "upwind" for the divergence schemes, but this will lower the order of accuracy. Might the difference be in the algorithm or approach (what do you use in FLUENT?) to represent the rotation? Best,
__________________
Alberto Passalacqua GeekoCFD  A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM  An opensource implementation of quadraturebased moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. 

June 28, 2009, 20:18 

#9  
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
Quote:
I have tried upwind, but I don't think that can let OpenFOAM exceed the maxCo=1, in my case, 0.00005 means maxCo about 0.150.3, and the setting 0.005 in fluent means maxCo more than 15...........if I could calc in this way. In Fluent, It is Sliding Mesh Model. greets 

June 28, 2009, 21:26 

#10 
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,911
Rep Power: 28 
Hi,
I think the condition you notice on your time step in OpenFOAM due to some other reason than the time integration scheme, to which, strictly speaking, the Courant number refers. Using Euler's scheme you should not have the limitation. This, however, does not mean that you do not have limitations on the time step due to other factors in the algorithm (think for example to a nonlinear source term whose value might become very large: it might compromise the stability if the time step becomes too big in an iterative solver). I would try to understand what are the differences in the algorithms used in the two codes, to explain why you see such a difference. Best,
__________________
Alberto Passalacqua GeekoCFD  A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM  An opensource implementation of quadraturebased moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. 

June 30, 2009, 08:17 

#11 
Member
Hai Yu
Join Date: Mar 2009
Location: Harbin
Posts: 67
Rep Power: 10 
Thanks Alberto. Pls let me know if you have any new ideas.


Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Differences between serial and parallel runs  carsten  OpenFOAM Bugs  11  September 12, 2008 11:16 
IcoFoam parallel woes  msrinath80  OpenFOAM Running, Solving & CFD  9  July 22, 2007 02:58 
Courant utility does not always use correct deltat  schmidt_d  OpenFOAM Bugs  0  June 5, 2007 11:45 
pls help fluctuating residuals due to courant no  sagar  CFX  3  March 28, 2006 01:10 
Could anybody help me see this error and give help  liugx212  OpenFOAM Running, Solving & CFD  3  January 4, 2006 19:07 