Product(s): | OpenFlows FLOOD |
Version(s): | 10.03.XX.XX |
Area: | Modeling |
How to setup the model time step in MOHID Water engine?
The time step (for OpenFlows FLOOD MOHID Water engine for coastal applications) is defined by the user (and maintained constant during the simulation. It must comply with the convergence condition by Courant–Friedrichs–Lewy (CFL), which may be commonly known as the Courant number.
As MOHID Water uses a ADI (Alternating direction implicit) semi-implicit method it can handle Courant numbers higher than 1 (which is this the stability condition for explicit methods). This method is an advantage as (on top of being more precise than explicit methods) it allows for higher time steps. For the MOHID Water engine, the time step should be defined so that the Courant number is under 4 which guarantees precision as well as stability. The Courant number may be higher than 4, as long as the user keeps track of the model precision (e.g. by comparing results running with a Courant number of 4 with simulations using a higher Courant number).
The Courant number can be computed as equal to:
C x DT / dx
where DT is the time step (DT) which must be defined taking into account the computational grid cell size (dx) and shallow wave celerity (C) within the model domain. C can be calculated as the square root of g (Gravitational acceleration) times the maximum water depth in the model domain.
When you run a model simulation, during the initialization, the Courant number is computed by the model and written in the log file (the one you show in the image above) and should look something like this:
---------------------- HYDRODYNAMICS ---------------------
Courant Number is : 3.96559492246800
In Grid Cell[i,j] : 60 1
You need to check the Courant number in your simulation and reduce it to around 4, by reducing the time step (in the Model configuration file) - see below (note: the time step shown below is simply an example, you'll have to set your time step so that the Courant number is lower then 4.)
When you setup the time step in Model options you're actually setting the half time step, thus the maximum Courant appears to be double than it should. You can see this a caution procedure. As the engine uses a semi-implicit algorithm, each time step is divided in half. For the first half of the time step, it computes velocities and water levels in one direction explicitly and for the other direction it solves it implicitly. In the second half, it alternates it. Where in the first half an explicit scheme was used, it is now implicit, and where it was implicit it is now explicit.