**This method uses a variable time step.** The time step the user enters on the Job Control dialog, Dt, is the maximum allowable time step the program should use during the simulation. The program will select the current time step based on the minimum of the smallest conduit Courant number at the beginning of each long time step Dt, and the smallest junction time step. The model determines the number of equal length small time steps required to equal Dt.

This method uses a variable time step. The time step the user enters on the Job Control dialog, Dt, is the maximum allowable time step the program should use during the simulation. The program will select the current time step based on the minimum of the smallest conduit Courant number at the beginning of each long time step Dt, and the smallest junction time step. The model determines the number of equal length small time steps required to equal Dt.

The conduit Courant number (C#) is:

**Equation 28**:

for enclosed conduits, and

**Equation 29**:

for open channels.

The junction time step (**J#**) is:

**Equation 30: **

If the smallest C# or J# equals or exceeds , the program will use only one small time step. If the smallest C# or J# is less than the program will then compute the number of small time steps required to equal . The procedure used is:

- At the start of the simulation a time step of Dt/2 is used, or 2 small time steps.
- Subsequently, the small time step is based on the current smallest conduit C# or junction time step J#.
- When convergence fails the time step is halved.

In summary, the model works between minimum [0.9·C#, J#] and Dt. The number of small time steps is always a whole number.

The sequence of flow computations in the links and head calculations at the nodes can be summarized as:

- Determine the next time step size. Find the new step based on the preceding time step’s conduit velocity and depth using equations 28, 29 and 30 depending on the type of conduit. Find the number of time steps within this time step based on the calculated minimum C#, and the Dt input on the Job Control dialog.
- Compute the first iteration discharge at t+Dt in all links based on preceding time step values of the head at connecting junctions.
- Compute the first iteration flow transfers by weirs, orifices, and pumps at time t+Dt based on preceding time step values of head at transfer junctions.
- Compute the first iteration head at all nodes at time t+Dt based on the average of initial time step flow and first iteration flow in all connecting conduits, plus flow transfers at the current time step.
- Repeat steps 2 through 4 with new estimates for conduit flows and junction heads until all conduits and junctions converge. If the number of iterations exceeds ITMAX halve the time step.