USGS


[Next Section] [Previous Section] [Table of Contents]

APPENDIX A: DIAGNOSING COMPUTATIONAL PROBLEMS IN FEQ

SECTION THREE


3. Failure during Steady-Flow Computations

FEQ can encounter problems with the steady-flow initial conditions. The two most frequent problems are step lengths that are too long and supercritical flow. If the computations fail, FEQ will output a list of values that document the general nature of the failure process. The solution to this failure is almost always interpolation of one or more intermediate cross sections between the last node completed and the node for which the computations failed to converge. If this approach fails, the problem is probably a channel that is steep enough to cause supercritical flow in the channel. If this is the case, then the partial inertia option can be used to allow the computations to continue. The steep branch is given an INERTIA value less than 1.0 but greater than 0.0. See Franz and Melching (1997), section 5.0, "Full, Dynamic Equations of Motion for One-Dimensional, Unsteady Flow in Open Channels," for details on the implications of using the partial-inertia option.

3.1 Missing depth

The missing depth error is often confusing to the user. An initial depth for each branch is needed in order to compute the steady water-surface profile. This depth is often given implicitly by assigning the exterior node for FEQ to obtain an initial water-surface elevation. FEQ takes the water-surface elevation from this elevation-source exterior node given by the user, and then subtracts the invert elevation for the downstream end of the branch currently being processed. If there is a typographical error in the input or the user makes a mistake in assigning a node, this difference in elevation may be negative, that is, the water-surface elevation from the elevation-source node is below the invert of the current branch. A negative depth is hydraulically impossible, so FEQ issues an error message indicating that the initial depth is missing. Some way must be found to give a starting elevation that will define a positive depth for each branch, or the missing initial depth error will result.

If a free node of a dummy branch is assigned a water-surface elevation equal to the exterior node of a real branch, it is recommended that the datum of the free node be set equal to the invert of the exterior node in the Free-Node Initial Conditions Block. Computational difficulties can be minimized by using a code 0 (zero) in the Backwater Analysis Block to relate the free node to the exterior node.

3.2 Maximum iterations exceeded

The error message that appears at the end of the output file is:

*ERR:95* MAXIMUM ITERATIONS EXCEEDED FOR BACKWATER ANALYSIS

One potential source of computational problems is the convergence tolerance for the steady-flow computations, EPSB. If the tolerance is too small, the computations may fail to converge even though they are as close to convergence as the precision of floating-point computations will permit. Appreciable variations in the floating-point precision can result for various computers even though they use the same number of bits for a single-precision, floating-point number. The most graphic example is IBM mainframe computers that use a hexadecimal representation instead of the IEEE binary representation used on most workstations and PC's. The floating hexadecimal representation has less precision than the binary representation, and the convergence tolerance may have to be increased by a factor of 10 or more as compared to workstations or PC's.

3.3 Initial conditions for tidal boundaries

In some cases, determining the initial conditions for tidal boundaries can present a major problem. This is often the case if one or more boundaries are subject to tidal fluctuations. These variations in tide levels can cause flows in both directions that are many times larger than any flood-induced flow. To minimize problems be sure to include the exit and entrance losses at the tidal boundary. Selection of the tidal boundary requires judgment, but it is wise to carry the cross section of the stream as far as the extent of a meaningful one-dimensional flow cross section allows. This will reduce the velocities at the tidal boundary and best represent the major inertial component of tidal flows. Steady flow is not present when tides are substantial. Therefore, the steady-flow computations must be started at some intermediate level fixed for the tide. The tide levels at the boundary must then be moved from this estimated value in a smooth manner to join the actual tidal sequence. The model must be run for many tide cycles with all other boundaries held constant in order to establish a reasonable approximation to the unsteady tidal-induced flows.

3.4 Table below range

This error results when table values for arguments outside the range of the table are required during the course of the FEQ computations. This error can usually be avoided by making sure that depth rather than water-surface elevation is used as the argument in the capacity tables for level-pool reservoirs. This choice is made in the Free-Node Initial Conditions Block where the user supplies the elevation for the datum from which the water levels in reservoirs are to be measured. If the elevation of this datum is given as 0.0, then the water level in the reservoir will be represented in terms of elevation. If the elevation is non-zero, then the water level will be represented in terms of depth from the point of zero storage. If the datum for the water level in the Free-Node Initial Conditions Block is zero for both the reservoir node and the inflow node, and if the first argument of the capacity table for the reservoir is not zero, then the elevation at zero volume is determined by FEQ in the capacity table and used as the datum for depth. The stored values of argument for the table depths will be adjusted and measured from this datum. A table will be output giving the table numbers that have been changed and the new data.

This option was added to FEQ to reduce the occurrence of table underflows with level-pool reservoirs. Negative depths are not allowed during the iterative solution procedure because there can be no physical analogue. In order to allow the computations to continue despite the temporary iterations to negative depths in earlier versions of FEQ, it was necessary to extend the capacity table to an elevation of 0.0 using small values of storage. By invoking the elevation-to-depth argument translation option as described above, FEQ can correct for negative depths internally. Elevation can be used as the argument for the capacity table externally, and depth will be used internally. If the user prefers to use elevation despite the advantages of translating the argument to depth, the first argument in the capacity table must be zero or the elevation for the inflow node can be slightly different than zero. This pattern will not invoke the elevation-to-depth conversion option.


[Next Section] [Previous Section] [Table of Contents]