implementing the CFL criterion
Hi all,
I am currently exploring how I should convert my current NS solver to more strictly step within the CFL criterion. Currently I have to generate CFD results at specified times (i.e t0, t1, t2, ... tN) but sometimes I need to make smaller steps. I know that the CFL condition is determined by the velocity feild. But I am thinking that the CFL condition is also determined by the output of the mass conservation calculation -- unfortunately the way that I have implemented the mass conversation calculation I have to give it a time step. It seems that I should iteratively adjust the time step size by seeing what the results of the mass conservation calculation are for each of the time step sizes. This seems a bit wasteful though. How do other people determine what the CFL condition is for their simulations? PS. I am using dt < dc / |u|, where dt is the time step, dc is the cell width and |u| is the maximum velocity in the velocity field after the mass conservation correction. Thanks for any suggestions -ben houston. http://www.exocortex.org/ben |
Re: implementing the CFL criterion
You need to look at the smallest time step over the entire mesh including all flow directions. As in dtmin = min[(dx/|u|), (dy/|v|),(dz/|w|)].
I can usually get away with running a practical time step that's a fraction of the result, dtuseful = c*dtmin, 0.4 < c < 0.8 typically. Unless your flow is very time-dependent, you should be able to do a time step with dtuseful, accept the result, then use that result to determine dtuseful for the next time step. That is, you normally won't need to iterate within a time step to change the time step. Hope this helps. |
All times are GMT -4. The time now is 23:22. |