Convergence Information
• 28 Jul 2022
• Dark
Light

# Convergence Information

• Dark
Light

Article Summary

The convergence tolerances for timestepping (unsteady and pseudotimestepping) runs in Flood Modeller are defined by the variables htol (stage tolerance) and qtol (flow tolerance), which are specified either in the datafile or 1D Simulation file (ief) via the 1D simulation interface.

For stage tolerance, htol is always compared with dh, where dh is the difference in water levels between iterations.

The quantity compared with the flow tolerance qtol is determined as follows at each node:

1. If the mean model flow is less than 1m3 /s, then |dq| is compared.

2. If the mean model flow exceeds 1m3 /s, and the average nodal flow exceeds 10 × the mean model flow, then |dq/(average nodal flow)| is compared.

3. If the mean model flow exceeds 1m3 /s, and the average nodal flow is less than 10 × the mean model flow, then |dq/(mean model flow)| is compared.

Where:

• dq is the flow difference between the current and previous iteration at the given node.

• Mean model flow is the mean flow over all nodes in the model at the current timestep.

• Average nodal flow is the weighted average (in the ratio 9:1) of the average nodal flow from the previous iteration and the flow at the current iteration for the given node.

• The absolute value of the flow is always considered (i.e. is independent of direction).

Thus for all models htol has units of metres (i.e. maximum allowable change in water level to define convergence).For most models qtol has no units and qtol × 100 can be interpreted as the percentage allowable change in flow to define convergence. For models with a very small mean flow (<1 m3 /s) then qtol has units of m3 /s and is the maximum allowable change in flow to define convergence. When a model does not converge, the values which are compared to htol and qtol at which the worst non-converged node are written to the diagnostics file along with the appropriate node labels ('MAX DH' and 'MAX DQ'). When writing the supplementary results file, it is also the values that are compared with htol and qtol at each node which are output to the dh and dQ convergence values respectively.

HRATIO and QRATIO are not used to control iterations but provide diagnostic information to the user. They are generally defined as the maximum relative change in level or flow between time steps as follows:

HRATIO = | (HNEW(i)-HOLD(i))/ HOLD(i) |

QRATIO = | (QNEW(i)-QOLD(i))/ QOLD(i) |

Where i ranges from 1 to NNODES, H and Q refer to stage and flow respectively, NEW and OLD refer to the current and previous timesteps respectively and NNODES is the total number of nodes in the model.

If the value of HOLD or QOLD is very small (< 0.01) then the respective denominator is set to 0.01. The maximum HRATIO and QRATIO are output to the diagnostics file at each non-convergent timestep.

Note that, for situations where flows or levels can approach zero, and particularly for tidal models, the results from HRATIO and QRATIO can become misleading. For instance a QRATIO of 5000 will result when QOLD=0 and QNEW=50m3 /s - but the model may well have converged very accurately at this node. Similarly a HRATIO of 30 results when HOLD=0.001mAD and HNEW=0.30m (again the model may have converged well at this node). Users are thus advised to concentrate primarily on the 'MAX DH' and 'MAX DQ' values/locations, although HRATIO and QRATIO may provide additional useful information, e.g. in locating areas of rapidly changing level or flow.

In order to allow the user to monitor the progression of the 1D hydraulic calculations, Flood modeller displays convergence information graphically when a simulation is being carried out. The graphical display also shows the number of iterations required at each time step along with total model inflows and outflows. Periods during the simulation where the model has not converged are shown in a different colour. A typical output of a 1D model run is shown below:

If either htol or qtol is exceeded at any node in the model, then the model solution is deemed not to be converging and a further iteration at the current timestep is performed (subject to the minimum and maximum number of iterations specified in the ief file). If convergence is not attained after the maximum number of timesteps, computations move on to the next time step and a warning message is written to the diagnostic output. You should ensure that an important part of the simulation has not been invalidated. If non-convergence continues to occur then the simulation should be aborted.

If too large a time step is used then necessary detail in the hydrograph may be missed or numerical instabilities may occur. The use of too small a time step may lead to excessive computation times. The optimum time step can be determined by carrying out trial runs with a range of time steps and selecting the largest time step at which the results do not change between runs. This time step may change as the model evolves and it is important to periodically confirm that the results are independent of time step size.

### Pseudo Time Stepping Steady Runs

For the pseudo time stepping method the graphical display is not available. Convergence ratios are displayed in the Message Log after each pseudo time-step. These, and the 'MAX DQ' and 'MAX DH' values as described above, are also written to the diagnostics file. The user is therefore able to monitor the progress of the computations and after every five pseudo time steps decide whether to continue iterations with the same or a new time step.

The time steps used in pseudo time stepping runs can depend on the accuracy of the initial conditions, model parameters and response times and current values of the convergence ratios. For example an initial time step of 20 seconds may be required for the first 50 iterations of a model with poor initial conditions to bring the flow convergence ratio down from 1 x 10-1 to 3 x 10-4. The time step should then be progressively increased until the solution ceases to change significantly. This could entail 20 iterations at 50 seconds, 10 iterations at 100 seconds, 10 iterations at 200 seconds and finally 10 iterations at 500 seconds.