- 01 Jan 2024
- 4 Minutes to read
- Print
1D Simulations - Advanced Parameters Tab
- Updated on 01 Jan 2024
- 4 Minutes to read
- Print
The Advanced Parameters tab consists of further parameters that apply to 1D simulations.Note that the values of htol , qtol , theta and alpha may also be specified in the data file. Any such values set within the data file will override the defaults in the 1D simuation window, although any values altered within the latter will take precedence.
The parameters, meanings and their default values are as follows. Depending on the run type selected, different parameters will be enabled or disabled.
Parameter | Description | Default |
dflood | Height (m) of vertical walls added to the highest point on each river cross section to allow for flooding | 3 |
htol | Stage tolerance value (combination of absolute and relative) | 0.01 |
qtol | Flow tolerance value (combination of absolute and relative) | 0.01 |
minitr | Minimum number of iterations performed at each timestep | 3* |
maxitr | Maximum number of iterations performed at each timestep. May be increased to enhance likelihood of convergence. If increased, a prime number is recommended to trap cyclic non-convergent behaviour | 11** |
theta | Preissmann box weighting factor. A value of 1.0 gives a fully implicit numerical scheme. Allowed range 0.5-1.0 | 0.7 |
alpha | Under-relaxation parameter. Determines the weighting of the result towards the previous iteration. A value of 1 indicates no relaxation | 0.7 |
sconmx | Maximum allowable piezometric head above soffit level for symmetric conduits (metres) | 100 |
dltmax | Maximum transition gradient (∂Q/∂h) for lateral spills | 1 |
dilmax | Maximum transition gradient (∂Q/∂h) for in-line spills | 1000 |
swop | "Small number" that determines when to apply the "special case" equations for spill units | 0.001 |
weight | Under-relaxation parameter applied locally to spills | 0.1 |
Spill threshold | Difference in water levels either side of a spill (m), within which zero flow is applied over the segment. Can be used to stabilise spill flow | 10-6 |
dfloodb | Height (m) of vertical walls added to the highest point on each bridge cross section to allow for flooding | 10 |
pcmxvd | Percentage of total cross-section height at which dummy points are inserted to interpolate cross-section properties. May be relaxed to 10, for instance, to aid convergence at low depths | 2 |
nsbint | If the solution converges within an average of avitr iterations over nsbint successive timesteps during an Adaptive Timestepping simulation, then a doubling of the timestep is attempted | 1 |
avitr | Average iterations, see above | 3.5* |
pswide | Width (m) of triangular Preissmann slot (if Option chosen) | 0.1 |
psdeep | Depth (m) of triangular Preissmann slot (if Option chosen) | 1 |
Orifice linearisation head | Value entered here (in m) can help prevent oscillations at low head differences in orifice units | 0 |
*minitr had a default value of 2 prior to v4.4, at which point this default was increased to 3. As a knock-on effect, the default value of avitr was also increased from 3 to 3.5.
**maxitr had a default value of 6 prior to v4.0.
The below highlights some of the most commonly applied advanced parameters for improving a 1D model performance; explaining how each parameter is used within the 1D solver and providing guidance on how to adjust it to improve your model.
Alpha (default = 0.7)
Alpha is an under-relaxation parameter. It determines the weighting of the result towards the previous iteration, therefore increasing its value towards 1 will improve mass conservation. A value of exactly 1 indicates no relaxation (i.e. the ideal value), but the default value in the 1D solver is 0.7. Thus, the default setting is inherently mass non-conservative for a dynamic model. The allowable range for the alpha parameter is 0.5 to 1.
The following summarises how alpha is applied within the 1D solver:
Iteration 1
Solution is calculated - call it X1
Solution is then adjusted - call it Y1 = alpha.X1 + (1-alpha).Y0
[where Yi-1 is the adjusted solution at the previous iteration - in this case Y0 is that at the previous timestep (there is no iteration 0)]
Iteration 2
Solution is calculated: X2
Solution is then adjusted: Y2=alpha.X2 + (1-alpha).Y1
If minitr=2 and the solution is converged, then Y2 is the final output, else, the solver will proceed through further iterations until convergence is attained (subject to minitr) or maxitr is reached.
The final output, therefore, can be considered as Yn, after n iterations.
The reason for alpha (not defaulting to 1) is to smooth the solution between iterations to prevent sudden jumps and potential instabilities.
The downside is you've discarded a proportion of the "exact" results (inasmuch as the numerical solution is exact) to achieve this. A proportion of the final result will be from the previous timestep, and may also be from a non-converged iteration (unless alpha=1), hence there may be some mass balance violations. Hence, if your model can "get away" with alpha set to 1, then this is the ideal option. Alternatively, if model stability dictates using a value of alpha <1, then the recommended option is to increase the minimum number of iterations per timestep setting (minitr) to dilute this effect.
The interactive effect of alpha and minitr is highlighted in the following example:
If minitr=2 and alpha=0.7, then your result comprises:
70% of iteration 2
21% of iteration 1 (=30% of the previous iteration, which contained 70% of iteration 1 "exact" solution)
9% of the previous timestep [=(1-alpha)^minitr in general]
In summary, an option to improve an unstable model is to reduce alpha, but do so with caution, i.e. check this change doesn’t increase mass balance errors significantly. In practice, the effect on mass balance is usually greater with 1D networks containing reservoir units. This is due to the way in which the reservoir unit works (effectively a simple mass balance) as opposed to it being used for storage (e.g. modelling as rivers use the dynamic equations of motion).