|
[Sponsors] |
January 29, 2016, 18:12 |
Courant in implicit unsteady
|
#1 |
Member
Alberto
Join Date: Aug 2015
Posts: 31
Rep Power: 11 |
I've read the Courant must be smalller than 1 in explicit simulations, but I have no idea what time step I should use in an implicit one. Do I have to consider the Courant? How should I consider it?
Thx. |
|
February 2, 2016, 14:16 |
|
#2 |
Senior Member
Reza
Join Date: Mar 2009
Location: Appleton, WI
Posts: 116
Rep Power: 17 |
Courant number condition in explicit solvers is necessary because if the time step is larger than what CFL conditions dictates, the solution will be unstable and the error will grow exponentially the longer you run the simulation.
Implicit solvers don't have this issue of instability, and the solver is always stable no matter how large the time step or the Courant number. However, this doesn't mean accurate. To have an "accurate" solution, you mostly need a timestep-dependency study to see what is the largest timestep that gives you accurate enough solution. In general, you want your time step size to be smaller than any inherent unsteadiness in the problem. |
|
February 2, 2016, 14:38 |
|
#3 |
Member
Alberto
Join Date: Aug 2015
Posts: 31
Rep Power: 11 |
Thx for answering. I have read that the explicit unsteady model only can be used with no turbulent flows, and my problem is turbulent so I need to use the implicit unsteady I guess.
However I would like to understand the difference between both, explicit and implicit unsteady. Could you explain? Thx again. |
|
February 2, 2016, 15:12 |
|
#4 |
Senior Member
Reza
Join Date: Mar 2009
Location: Appleton, WI
Posts: 116
Rep Power: 17 |
The big picture difference is how these methods use the information available from the solution at the previous time steps. I hope I can explain the difference well enough without getting too technical :-)
An explicit method, only uses the information from the previous time step(s) to find what the solution is at the current time step. These methods are usually fast as the only unknown is the state of the system at the node that we are solving for, so there is no need to solve for a linear algebraic set of equations for example. Lets see if I can draw this in a picture :-) Code:
t+dt * | t *-----*-----* i-1 i i+1 On the other hand, and implicit method, not only uses the information from the previous step(s), it also uses (currently unknown) information at the current time step as well. Because the result at any node, in implicit methods, depends on the unknown information at the neighboring nodes as well as the known information from the previous time step(s), these methods are usually slower and they require some sort of a solver for a set of algebraic equations. Code:
t+dt *-----*-----* | t * i-1 i i+1 Most problems can be stated in both explicit and implicit method. However, because explicit solver only uses information from the previous steps, it relies on the time step being small enough that the state of the system doesn't change much. This shows itself mathematically in form of the CFL condition (or Courant number being less than a number that depends on the method of discretizing time-dependent term in the equation. It can be 1 for one method, 1.2 for another, for example. But most of the time this number is a bit more than 1, so that's why most people refer to this condition as Courant number being less than 1). Implicit solvers don't have this issue, but they, in general, are more complex and take longer for a single time step. So, for example, let's imagine you can solve a problem with an explicit solver, but you'll need to use at least 10,000 time steps (let's say this is when Courant number is 1). However, you can also solve the same problem with only 100 steps of an implicit solver (so Courant number will be 100). The choice is yours to decide which one to use: if the implicit solver will solve a step in less than 10 seconds, for example, but the explicit solver will take 0.2 seconds for each time step, then you'll be better off using the implicit solver (100 * 10 < 10000 * 0.2), but if the explicit solver will only take 0.005 seconds for each step, then the explicit solver will be faster (100 * 10 > 10000 * 0.005) and you should choose that solver. Some problems are inherently such that an explicit solver won't be able to handle just because the state of each node is too dependent on the states of its neighbors at the current time that no matter how small you choose the time step, the solution will diverge with an explicit solver. The only example I can think of right now for this is when you try to couple a fluid flow with a structural problem (FSI). If the flow is incompressible, then an explicit solver will never work no matter how small the Courant number. I hope this helps :-) |
|
February 2, 2016, 15:26 |
|
#5 |
Member
Alberto
Join Date: Aug 2015
Posts: 31
Rep Power: 11 |
Thx for answering so fast and clarifying.
|
|
Tags |
courant, implicit, time step |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
same geometry,structured and unstructured mesh,different behaviour. | sharonyue | OpenFOAM Running, Solving & CFD | 13 | January 2, 2013 23:40 |
ddt explicit or implicit with courant number!! | mrshb4 | OpenFOAM | 0 | December 13, 2010 12:13 |
Problem with implicit unsteady solver | CCMuser | STAR-CCM+ | 2 | March 3, 2010 12:20 |
Courant Number in unsteady problems... | vandadt | FLUENT | 0 | November 8, 2009 17:12 |
Could anybody help me see this error and give help | liugx212 | OpenFOAM Running, Solving & CFD | 3 | January 4, 2006 19:07 |