Version 4.15

April 21, 1995: Corrected problem with varying lengths of character strings for file names.
Version 4.16
April 28, 1995: Added support of flap gate losses for submerged flow from a culvert. Needs further refinement for losses when they are increased to account for heavier gates than those used to develop the formula. More details given below with version 4.31.
Version 4.17
May 10, 1995: Blank lines are now echoed to the output.

Version 4.18

May 16, 1995: Correct HEC2X so that the NC card was processed so that values left blank on the NC card remained unchanged instead of being set to some large positive value to signal a missing value of Manning?s n.

Version 4.30

May 29, 1995: Added support for culverts with risers and for flow through orifices.

To input description update

Version 4.31
July 3, 1995: Changed manner of supporting flapgate losses. Previous method created abrupt changes in the submerged flows that did not make physical sense. This abruptness resulted from applying the losses to full-conduit flow only. Moved the losses to the departure reach and applied them to all submerged flows. The part-full conduit losses were estimated using a loss coefficient and a velocity head as if the conduit was flowing full. The head loss was applied to the flow area in the conduit in order to estimate a force in the simple momentum balance used in the departure reach.

To input description update

Version 4.32

July 11, 1995: Corrected error in controlling input of multiple conduits in MULCON and MULPIPE. Error caused misreading of pipes when the number of pipes was an integer multiple of 6.  Corrected error in computing normal depth in culvert barrels that caused an attempt to find the square root of a negative number when the barrel invert had an adverse slope and the barrel was non-prismatic.

Version 4.33
July 21, 1995: Corrected Fortran 90 compiler detected errors in declarations in subroutine SCNPRO. Apparently the errors had not caused problems to date.

Version 4.35
August 14, 1995: Corrected problem with SFAC in CULVERT command when the unit of length for the culvert pipe required an SFAC different than 1.0. This caused the routine that distributes the nodes along the barrel to fail. Corrected error in determining coefficients of discharge. Bell mouthed or beveled concrete pipe, denoted by culvert class, RCPTG, was corrected for projecting entrances when it should not have been. Also the coefficient of discharge for RCPTG for types 4 and 6 was incorrectly given the value of 0.95. The coefficient should be looked up in table 5 of Bodhaine (1968). The rounding/beveling value is then used based on the nature of the bell-mouthed or beveled end.

Version 4.36
September 26, 1995: Corrected problem in WSPROT14 caused by WSPRO?s outputting asterisks for Froude number and water surface elevation for flow over the road when there is no flow over the road. Also made code slightly more general to allow for user placing the cross sections labels off register with the field.

Version 4.37
November 14, 1995: Corrected problem caused by not turning off computation of sinuosity elements before a call to FEQX in the main program. This would lead to erroneous errors if an FEQX command followed a CHANNEL command.

Version 4.4
January 23, 1996: CHANRAT was found to give a result for free flow that was invalid. A problem in the SECANT subroutine used to solve the non-linear equation for the critical depth at the end of the prismatic channel would sometimes declare convergence when the residual was still much too large. The result was that the free flow would be too large and there would be an abrupt decrease in free flow value as the upstream head increased. Also there would be an abrupt decrease between the free flow and the first value of submerged flow for the upstream heads that had this problem. The problem was correcting by using a modified regula falsi root finding algorithm to find the critical depth instead of using the SECANT method. The submerged-flow solution was also changed to use modified regula falsi to find the flow rate.

Version 4.42
January 29, 1996: The option for saving a cross-section function table did not set the maximum unextrapolated argument value. This would only affect FEQUTL computations. This value only comes into use if cross sections are interpolated in FEQUTL using one or more cross-section function tables that were SAVED. This can happen in the barrel of a culvert and it could happen in XSINTERP. The error has appeared in one CULVERT example.
Version 4.45
February 2, 1996: Added estimated relative errors to CHANRAT tables. The relative error is based on using a power function as the fit between two points and estimating the error as the error in linear interpolation in that power function. Recall that a power function is a straight line on log-log graph paper when it is plotted. If the local power, also called the local exponent, varies only slightly then the estimated error is probably quite good. If the power varies significantly, then the estimate is subject to greater error. The submerged flow estimates appear to have an error of about 20 per cent as full submergence is approached and the estimates are too small.

Version 4.50
February 13, 1996: Changed CHANRAT and EMBANKQ input to allow optional input of LIPREC and MINPFD to request optimization of the interpolation in 2-D tables of type 6 or 13. LIPREC is a Linear Interpolation PRECision specification in terms of relative error. That is, LIPREC= 0.02 requests a maximum relative error in linear interpolation in the 2-D table of 2 per cent. MINPFD is the MINimum Partial Free Drop to be computed. MINPFD=0.01 states that the minimum value of partial free drop should be 0.01 of the free drop for a given upstream head. These two values follow after the specification of NFRAC and POWER and just before the first upstream head in the input. For EMBANKQ, where NFRAC and POWER are optional, LIPREC and MINPFD may appear without NFRAC and POWER.
Here is an example for CHANRAT:
TABLE#= 528
TYPE= 13 0.01
LABEL= Control for pond 6. U TO D
XSTAB#= 6530
LENGTH=000000100. MIDELEV= 643.
POWER= 1.5
LIPREC= 0.02
MINPFD= 0.01
1. NFRAC should have a value between 30 and 60 and is used to define a series of upstream heads as well as partial free drops to use in defining the final spacing.

2. POWER is not now used if table optimization is requested. However, it may be used in the future and is retained for consistency with past inputs.

3. Only two heads need be given. If more are given, only the first and last are used and all intermediate heads are skipped.

4. CHANRAT and EMBANKQ will try to meet the interpolation request but there may be some regions where it is exceeded. All the techniques used are approximate including the estimates of the errors. The techniques assume that the flow varies smoothly with head variations. Discontinuous changes or abrupt small scale variations will probably not be detected.

5. The default integration error tolerance in CHANRAT is reduced to 0.05 if table optimization is requested. If you explicitly set the integration error tolerance to a value different than the default, that value will be used. The smaller tolerance is used to get greater consistency in error estimates. Some of the lack of meeting the error tolerance is a result of the other tolerances in the computations. If they are too loose, erratic results, on the order of a fraction of a per cent, result. However, this is often enough to be a large part of a small relative error. Requesting relative errors smaller than 1 per cent is not wise and may not work. A 1 per cent error may only work with CHANRAT because most of its computations are double precision.

6. MINPFD should not be too small. 0.01 is probably small enough. This often gives a factor or four or so between the largest and smallest flow tabulated for a given upstream head. A MINPFD of 0.005 or less will probably show many locations with LIPREC exceeded. This is primarily the result of the difficulty of computing reliable flows when the drop is small, sometimes less than one-ten thousandth of a foot!

7. Using small minimum heads can result in there being many upstream heads. This is especially true in CHANRAT because the flow tends to increase with head roughly proportional to the cube of the head. The same can happen in EMBANKQ if the crest of the overflow section is similar to a triangular or parabolic crest. Again the flow increases close to the third power of the head. This requires close spacing at small heads in order to maintain a small uniform relative error.

8. If the errors reported in the output are larger than LIPREC by significant amounts, try increasing NFRAC to 60 or so. Do not go much larger because internal space may be exhausted. This can sometimes improve the results.

9. The methods used for EMBANKQ and CHANRAT are not yet available for CULVERT because the patterns in CULVERT are much more complex. However, observing the distribution of heads and partial free drops from CHANRAT and EMBANKQ should permit assigning better values to CULVERT. Currently, the partial free drops in CULVERT can only be controlled via POWER and NFRAC and that is somewhat limited.

10. The transition between high-head and low-head flows in EMBANKQ is somewhat rough, especially for GRAVEL surfaces. This comes about because the definition makes no mention of what do when close to the transition.  The transition region may show larger errors because it is currently possible to have a discontinuity in flow at the point of transition. This of course assumes that the standard tables are being used.

11. The standard tables in EMBWEIR.TAB and TYPE5.TAB have been refined. The coefficients for embankment-shaped weirs have been estimated with greater precision to avoid unwanted noise in the error computations. Please note that the precision of these numbers is more than 100 times the accuracy of the numbers. However, if they are recorded in the tables according to accuracy, high order noise is increased in the error evaluation. In the future these tables will be fitted with smooth function and then these functions will be evaluated and differentiated to full single precision before being tabulated in tables of type 4. The accuracy will still be the same but this will further lower the noise in error estimation. Keep this in mind when supplying alternative tables for weirs of different shapes. Make sure the coefficient variation is smooth and there are no sharp corners. Tables of type 4, those that have a continuous first derivative as well as the function, will probably work best. If LIPREC and MINPFD are not given, then the input should be as in previous versions. However, the output has been changed. CHANRAT and EMBANKQ now compute intermediate values to estimate the maximum relative error as well as the root-mean-square relative error for the 2-D table. You will probably find that the errors in interpolation are larger than expected.

To input description update for CHANRAT Command
To input description update for EMBANKQ Command

Version 4.51
April 2, 1996: Changed a convergence tolerance and extended the convergence testing when computing the subcritical inverse of a specific energy value in INVSE. Problems had arisen when the flow was close to critical. Also changed the estimate of the momentum and energy flux over the roadway in CULVERT. Problems were found when the roadway was really a weir that experienced submergence when the tailwater was at or near the crest. Totally invalid values of flux over the road would occur. The selection of the depth of flow used to estimate momentum and energy flux has been changed to make sure that the depth used is never less than the depth estimated for this purpose for free flow. We take this course of action because submergence reduces the flow and the flux for submerged flow should never be greater than for free flow. This change may affect the submerged flow fluxes in other cases. However, the region of submerged flow for usual flow over roads is quite limited. Thus only the last few flows might be affected.
Version 4.52
May 18, 1996: Discovered that FLAP_FORCE was not set to zero in all cases in CULVERT computations when no flapgate was present. May have affected some computations of type 7 flow, that is, cases where critical flow occurs at the end of the departure reach. Appears to have been present since version 4.31.

Version 4.60
October 18, 1996: Added command to compute pump rating curves (SFWMDPMP command see version 4.65).

To input description update

Version 4.65
January 31, 1997: Added command to compute pump loss tables and modified the SFWMDPMP command to include unit choice for flow. Changed SFWMDPMP to AXIALPMP.

To input description update

Version 4.66

February 21, 1997:
--Added vertical scale factor, VSCALE, and horizontal shift amount, HSHIFT, to FEQX cross sections.
--Added vertical scale factor, vertical shift, and horizontal scale factor to EMBANKQ.
--Added an argument scale factor to the input of function tables of type 2, 3,and 4. NOTE: The argument scale factor was placed after the function scale factor. This moved the SHIFT input item to the right. The SHIFT item is little used and may be discontinued. In any case if you are using it, you will have to move the SHIFT item to the right by 16 columns to leave space for the reading of the argument scale factor. See the FEQ update for an example.
--Added two new commands to create a bottom slot in a cross section. The commands are SETSLOT and CLRSLOT. The first command defines a bottom slot and this slot is add to ALL cross sections that FEQUTL encounters until the command CLRSLOT is found. Thus the addition of a bottom slot to a cross section is like a switch: either on or off. When it is on it will appear in all cross sections processed. The following is an example of these commands:

WSLOT= 2.0
NSLOT= 0.02
ESLOT= 20.0
; Cross sections on the right-hand side of Sumas River upstream
; Jones and Conchman Roads

The SETSLOT command has three associated values:
WSLOT gives the width of the slot at the top of the slot. The bottom width of the slot is zero.
NSLOT gives the Manning?s n for the slot.
ESLOT gives the bottom elevation of the slot.
The command CLRSLOT has no other values. All sections that occur after it will NOT have a slot added to them.  The slot will be added to the cross section at the minimum elevation point in the cross section. If there is more than one such minimum elevation point, the slot will be added at the minimum point that has the widest horizontal bottom adjacent to it. The slot has its own subsection, that is, an additional subsection is added to the cross section. Experience to date indicates the following:
1. The roughness of the slot should be made small.

2. The slot should be small relative to the width of the section when flows of major interest are present.

3. A constant value of the elevation of the bottom of the slot can be used for several cross sections along a channel. The slot should probably have a constant elevation between points of complete or partial control.

4. Expect additional computational problems as the water rises out of the slot. The change in width at this point is large.

5. Do not make the slot too shallow. Frequent messages about negative depths in a slotted section when the flow is in the slot or just emerging from the slot probably signals that the slot must be made deeper.

6. Expect that the slot option will be modified as experience with it accumulates.

7. FEQ does not know about the slot. FEQ will treat the bottom of the channel as being at the bottom of the slot. This means that the TAB option should be used when the branch descriptions are given. You may have to vary the elevation of the bottom of the slot in the course of model development. Explicit channel invert elevations in the branch description for a branch must be changed manually--an onerous and error prone task. Using the TAB option for elevation has FEQ do the work of extracting the current invert elevation from the cross sections.

8. Because FEQ treats the slot as part of the cross section, all depth values reported for a slotted section will be measured from the slot bottom. They will not represent the depth of water in the unslotted section. At a future release of FEQ and FEQUTL this may be changed so that FEQ does know that a slot is present and will remember the invert elevation of the section BEFORE the slot was added and will use that invert elevation in computing depth values reported to the user. Then negative depths in the output would signal that the water is in the slot. Internally FEQ would not use the negative depth in its computations because internally negative depths have no meaning. The negative depths would only appear in the output for the user.

To input description update

Version 4.67
May 23, 1997
--Changed convergence testing in subroutines SECANT and REGFAL so that argument convergence would be in relative terms. This was done to bring these two root-finding routines into agreement with the others in FEQUTL. This also means that the convergence testing is independent of scale. This may change the output tables from GRITTER, UFGATE, and EXPCON.

--Added use of global EPSF and EPSARG to CRITQ, INVTSE, and GRITTER. These routines had local values of the convergence values. May affect output tables from CRITQ, GRITTER and UFGATE.

--Changed returned value for FISE and FRIT to a residual in relative terms so that the root-finding routines will use a relative criterion for convergence. These changes may change the output tables from CRITQ and GRITTER.

--Added support for metric units to CHANRAT. The default tolerance is now set depending on the value of GRAV, the acceleration due to gravity. The convergence tolerance is retained as an absolute tolerance. Thus the value given by the user, if the default is not used, must be in the units of length, feet or meters, in use. The same is true of the absolute tolerance for detection of normal depth.

--Added another global convergence tolerance to the header block for FEQUTL. In previous versions there were two values: EPSARG, a relative tolerance for changes to the root being sought. That is, whenever the absolute value of the relative change to the current estimate of the root was less then EPSARG, the routine would declare convergence. EPSF, a relative tolerance for the residual function value. This tolerance was to be used to decide if a residual function was essentially zero in a relative sense. Thus the residual function itself had to return a relative value. In some cases EPSF was used for functions that did not return a relative value. This would cause problems when moving between units of measurement because some uses of EPSF would be independent of these units and others would be dependent on these units. Consequently, EPSF could not describe both. The new convergence tolerance, EPSABS, is to be used in those cases in which the residual function returns a length value. Thus when switching to using meters for the length unit, EPSF will remain unchanged but EPSABS must be changed to reflect the larger length unit. In the US standard unit system, EPSABS has the same numeric value as EPSF but has a different meaning. The US standard unit system, selected by giving ENGLISH in the units field, has these typical values:

EPSF= 1.E-4

The typical values for metric corresponding to these are:

EPSF= 1.E-4

If EPSABS is omitted it will be given the value of EPSF if UNITS=ENGLISH and the value 0.3048*EPSF if UNITS=METRIC.
--Comparisons were made for results from CULVERT, EMBANKQ, and CHANRAT after the various convergence tolerance changes were made. Few differences were found and most of them were in the least significant digit of the output value. Thus it appears that the changes had essentially no effect on the results.

--Changed some tolerances at the limit of near zero depth from EPSF to EPSABS. This may change computational failure conditions slightly but should not affect successful runs. Such small depths in either case clearly indicate an error condition.

--Modified the Preissman slot, that is the slot in the top of a closed conduit, to reflect the unit system. The maximum slot level is 150 meters, not quite the same as the 500 feet used in the US unit system. However, a round number is indicative of a value set by fiat and not by measurement or method. The slot detection code was modified also to find the vertical diameter of closed conduits. The slot width used for detection of closed conduits remains at 0.07 feet or 0.021336 meters. A slot width larger than this will not be detected and FEQUTL will treat the cross-section function table as being a normal open channel and not a closed conduit in any context in which a closed conduit must be detected.

--Changed the means for eliminating close values of depth in computing cross section tables. Previous versions had used an absolute tolerance for the minimum difference between adjacent depths. This has been changed to a relative tolerance to be scale independent.

--Added elimination of close values of depth when interpolating cross section tables using command XSINTERP. Uses the same routine as in computing the cross section function tables. This avoids having depth entries in the interpolated table that differ from the previous depth by amounts that are often close to the limit of numeric representation in the hardware. Such close values serve no purpose and only confuse review of the output.

--Closed conduits now output the computed value of invert elevation even if it is small. Previous versions set the invert elevation to 0.0 if the elevation was smaller than 0.001 in absolute value. Recall that replacing a closed conduit with a polygon that matches the area of the closed conduit, yields small excursions OUTSIDE the closed conduit boundary at some points. At the invert of the closed conduit this means that the invert of the cross section function table will be slightly below the true invert. Thus if the true invert was given as elevation 0.0, which is often done since the invert elevation in the cross-section function table is often overridden in the FEQ input, the invert elevation printed in the cross-section function table will be a small negative value. This value is now printed no matter how small it is.

--Modified the computation of the piezometric level at a culvert exit for flows of type 6. The argument in the USGS basis document was scale dependent. Added a factor to get the correct result when the METRIC unit option is used.

--Changed various output formats to gain greater precision in output of values. In some cases the output values will have a precision far greater than the accuracy of the result can support. This is done so that consistency of results can be checked and so that sufficient decimals will be output in both unit systems. The process of changing formats is not complete and will take place over the next few versions as time permits.

--HEC2X command has been modified to convert units from metric to english or from english to metric under user control. The default action is to NOT convert the elevations and offsets on the cross section. Adding the word CONVERT after the MODE response will cause conversion of units. The conversion of station values is governed by SFAC only and is set by the user.

--Provided additional options following the unit system selection in the standard header to force FEQUTL to use the more exact value for the factor in Manning?s equation. The factor is technically the cube root of the number of feet in a meter which to single precision in a 32-bit IEEE floating point representation is about 1.485919. For nearly all practical purposes this can be taken as 1.49. However, in the practical purpose of comparing output using the metric and the US standard set of units, we get annoying differences when using 1.49 in the US set because the metric set has the exact value of 1.0 in the metric form of the equation. The differences are small but they confuse the search for other causes of differences in results.

--Also provided an option to use an equation to compute the value of g given a latitude and an elevation. This happens whenever the more exact value for the factor in Manning?s equation is requested. Again for all practical purposes g is 32.2 f/s or 9.815 m/s with an error less than 0.2 per cent for the US. However, when searching for the reason for differences between results using two sets of units, making sure that the value of GRAV is the same everywhere is helpful.
An example is:

where the columns are as follows:

1-8: UNITS=
18-25: EXACT
26-35: value of latitude in degrees
36--45: value of elevation in units corresponding to UNITS.

FEQUTL now reports the value of the factor in Manning?s equation, NFAC, and the value of gravity, GRAV, used in its computations. If only the UNITS value is given, the default case, the values are as follows:

NFAC = 1.49
GRAV = 32.2
NFAC = 1.0
GRAV = 9.81456

The value of GRAV is within a fraction of a percent of the values anywhere that FEQ will be used.

--Comments on support for metric units:
All the commands in the standard example file, FEQUTL.EXM, have been checked to some extent. Not every output value has been compared.  Subtle differences can appear in the results even though the two sets of units are made as equal as the software and hardware will allow. For example, in FEQX, DZLIM may cause different spacing in a cross-section function table because small differences in internal value can cause one set of units to interpolate an additional point. This effect is more significant with CULVERT. Flow in culverts involves several different flow patterns, not all of which agree in value at their adjacent limits. Thus FEQUTL has many decision rules for detecting the limits and what to do at the limits to make the flow transition smoother. These limits are, from the point of view of the software, exact. Any small deviation beyond a limit invokes a new flow case. Small differences, on the order of 0.001 foot or less can sometimes change the flow type that is reported. In some cases the flow type will differ but the flows will be essentially the same. There may be cases in which the difference results in a local difference in flows. This just means that comparisons made between flows obtained from an identical structure using two different unit sets may not agree to the desired level of precision at all levels in all cases. A difference could reflect the presence of a term that is scale dependent that was not detected in my limited testing. On the other hand, it could just reflect the effect of being close to one of the boundaries between flow types. It is likely that some undetected scale dependent values remain at some points in the commands in FEQUTL.

To input description update

Version 4.68
May 29, 1997
--Modified SECANT to have both the relative and absolute test for the changes to the current estimate of the root.

--Modified FHPL in EXPCON to use the total head to compute the relative residual instead of the depth.