Variable time step capabilities have been added to the unsteady flow engine for both one-dimensional (1D) and two-dimensional (2D) unsteady flow modeling.  In HEC-RAS Version 6.0, two new options are available.  The first option is a variable time step based on monitoring Courant numbers (or residence time within a cell). The second variable time step option is a method that allows users to define a table of dates and time step divisors.  The variable time step option can be used to improve model stability, as well as reduce computational time (however, not all models will be faster with the use of the variable time step).

These new Variable Time Step options are accessed from the Unsteady Flow Analysis window (and also by going to the Computational Options and Tolerances window).  From the Unsteady Flow Analysis window (Figure 5-2), from the Computation Settings section, there is a new ellipse  button located to the right of the Computation Interval dropdown menu. The ellipse button (Figure 5-2) provides users access to these new Variable Time Step options.

Figure 5-2. Button for Variable Time Step Option Shown on Unsteady Flow Analysis Window.
 

From the Unsteady Flow Analysis window (Figure 5-2), from the Computation Settings section, click the new Variable Time Step control editor ellipsis button. The modified HEC-RAS Unsteady Computation Options and Tolerances window opens to the new Advanced Time Step Control tab (Figure 5-3). Alternatively, users can open the window and navigate to the new tab from the Options | Computation Options and Tolerances menu command.

As shown in Figure 5-3, the new Advanced Time Step Control tab now has three different methods for selecting and controlling the computational time step: (i) Fixed Time Step (default); (ii) Adjust Time Step Based on Courant, which is a variable time step based on the Courant number; and (iii) Adjust Time Step Based on Time Series of Divisors, which is a variable time step based on a user entered table of dates, times, and time step divisors. The two new variable time step options (Courant number and Time Step Divisor) are discussed in the following sections.

.

Figure 5-3. Variable Time Step Editor within the Computational Options and Tolerances.

Courant Number Method

The first new variable time step option is to use the Courant number method, from the new Advanced Time Step Control tab. In the example shown in Figure 5-2 and Figure 5-3, the Courant number is being used for the variable time step.  To use this method, select the Adjust Time Step Based on Courant option and provide the following information:

  • Maximum Courant: This is the maximum Courant number allowed at any 2D cell or 1D cross section.  If the maximum Courant number is exceeded, then the time step is cut in half for the very next time interval.  Because HEC-RAS uses an implicit solution scheme, Courant numbers can be greater than one and still maintain a stable and accurate solution.  In general, if the flood wave is rising and falling slowly (depth and velocity are changing slowly), the model can handle extremely high Courant numbers.  For these types of cases, users may be able to enter a Maximum Courant number as high as 5.0 or more.  However, if the flood wave changes very rapidly (depth and velocity are changing very quickly over time), then the Maximum Courant number will need to be set closer to 1.0.  The example shown in Figure 5-3 was for a Dam break type of flood wave, and in this type of scenario depth and velocity change extremely rapidly.  In this example, because of the rapid changes in depth and velocity, the Maximum Courant number was set to 1.0.
  • Minimum Courant: This is the minimum Courant number threshold for 2D cells and 1D cross sections.  If the Courant number at all locations falls below the Minimum Courant number, then the time step will be doubled.  However, the time step will only be doubled if the current time step has been used for enough time steps in a row to satisfy the user entered criteria called “Number of steps below Minimum before doubling” (see below for an explanation of this field).  The “Minimum Courant” value should always be less than half of the “Maximum Courant” value.  If the Minimum Courant value is equal to or larger than half the Maximum Courant value, the software will flip back and forth between halving and doubling the time steps.  In the example shown in Figure 5-3, since the Maximum Courant number was set to 1.0, the Minimum Courant was set to 0.45 (less than half of the maximum), which allowed the model to stay stable, but also run faster.
  • Number of steps below Minimum before doubling: This field is used to enter the integer number of time steps in which the Courant number must be below the user specified minimum before the time step can be increased.  This can prevent the model from increasing the time step too quickly and/or from flipping back and forth between time steps. Typical values for this field may be in the range of 5 to 10.
  • Maximum number of doubling base time step: This field is used to enter the maximum number of times the base time step can be doubled.  For example, if the base computation interval is 10 seconds, and the user wants to allow it to go up to 40 seconds, then the value for this field would be 2 (i.e., the time step can be doubled twice: 10 to 20 to 40 seconds).  The value displayed in the box to the right of the user entered value is what the entered maximum time step will end up being.



NOTE: The HEC-RAS software requires that all time steps end up exactly hitting the Mapping Output Interval.  This requirement is because output for HEC-RAS Mapper must be written to the output file for all cross sections, storage areas, and 2D cells at the mapping interval.  Because of this fact, if users enter a Maximum number of doubling base time step that results in a computation interval that does not exactly land on the mapping output interval, then the unsteady flow computational program will compute its own time steps that work with the parameters entered in the Adjust Time Step Based on Courant section.  Furthermore, the base time step will be changed to something close to what was entered, but when doubling it, all values will still line up with the mapping output interval.  Therefore, when the model runs it will list what time step it is currently using in the message window of the computational output window.


  • Maximum number of halving base time step: This field is used to enter the maximum number of times that the base computation interval can be cut in half.  For example, if the base computation interval is 10 seconds, and the user wants to allow it to go down to 2.5 seconds, then the maximum number of halving value would need to be set to 2 (i.e., the time step can be cut in half twice: 10 to 5 to 2.5 seconds). The value displayed in the box to the right of the user entered value is what the entered maximum time step will end up being.
  • Select the Courant Methodology: For the Courant number method, the default approach for computing the Courant number is to take the velocity times the time step divided by the length (between 1D cross sections, or between two 2D cells).  For 2D, the velocity is taken from each face and the length is the distance between the two cell centers across that face.  For 1D, the velocity is taken as the average velocity from the main channel at the cross section, and the length is the distance between that cross section and the next cross section downstream.

User Defined Dates/Time versus Time Step Divisor

Another option available from the Advanced Time Step Control tab is to set the variable time step control based on a user defined table of dates and times verses a time step divisor (Figure 5-4).


 Figure 5-4. User Defined Variable Time Step Table.

As shown in Figure 5-4, the user can select the “Adjust Time Step Based on Time Series of Divisors” option from the Advanced Time Step Control tab.  When this option is selected the user must enter a table of Dates and Times verses time step Divisors.  The first date/time in the table must be equal to the starting date/time of the simulation period.  To use this method, enter a base time step equal to the maximum time step desired during the run.  Then in the table, under the Divisor column, enter the integer number to divide that time step by for the current date/time in the table.  Once a time step is set for a date/time, the Unsteady Flow Analysis compute will use that time step until the user sets a new one.

In the example shown in Figure 5-4, the base computational interval was set at 1 minute.  Based on the table of dates/times and Divisors entered, the actual time steps that will be used are displayed in the first column labelled “Time Step”.

The Time Step Divisor method for controlling the time step requires much more knowledge by the user about the events being modelled, the system being routed through, as well as knowledge of velocities, cross section spacing, and 2D cell sizes.  However, if done correctly, this method can be a very powerful tool for decreasing model run times and improving accuracy.