Objects and Methods

Reach

The Reach object models open channel flow. It contains User Methods to control how open channel flow is modeled. With these methods, the user can choose from very simple to very complex routing equations, and include or exclude the modeling of diversion, gains or losses, return flow, inflow, the management of stage and volume calculations. The reach can solve downstream in all cases, and it can solve upstream for some Routing methods.

General Slots

Inflow

Type: Series

Units: FLOW

Description: flow rate at entrance of the object

Information:

I/O: May be set as input or linked to another object.

Links: May be linked to the Outflow of any object.

Outflow

Type: Series

Units: FLOW

Description: flow rate at exit of the object

Information:

I/O: May be set as input (for certain Routing methods) or linked to another object.

Links: May be linked to the Inflow of any object.

User Methods

Routing

The Routing method determines how the flow is calculated. It can also effect what dispatch methods and user categories are available for use. Some of the Routing methods may only solve downstream (for outflow), while others may solve either upstream or downstream.

No Routing

No Routing is the default method for this category. This method involves a simple mass balance. It triggers the selection of dispatch methods which perform the actual calculations. It is the only method for which local Inflow may be calculated.

Slots Specific to This Method

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

Information: Enters at the bottom of the reach (i.e. is added directly to the outflow calculated by the method).

I/O: Optional; if not input and not linked, it is set to zero.

Links: May be linked to the Return Flow slot on any object, the Outflow slot on a Groundwater Storage object, the Excess GW Outflow slot on the Groundwater Storage object, or the Surface Return Flow slot on a WaterUser.

The calculations are executed by the dispatch methods solveNRInflow, solveNROutflow, and solveNRLocalInflow.

Time Lag

Inflows are lagged by a specified time to calculate outflows. This method can be solved upstream or downstream and therefore causes dispatching with either a known inflow or a known outflow. The lagtime can be any length of time.

Slots Specific to This Method

LagTime

Type: Scalar

Units: TIME

Description: lagtime or travel time of a flow change through the reach

Information:

I/O: Required input

Links: Not linkable

Following is a sample equation for Outflow:

where (-1) means the value at the previous timestep.

Following is the equation for flow fraction:

This method can also solve for inflow, given outflow.

Note: It is possible to set up a combination of input values for inflow and outflow which do not match. This will cause an error. An error will also result if the timestep is 1 Month and the Lag Time is not in months, or if the timestep is not 1 Month and the Lag Time is in months.

Variable Time Lag

Behaves similarly to Time Lag routing except that the Lag Time is allowed to vary as a function of the day of the year and the flow rate. This method may only solve downstream.

Slots Specific to This Method

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

Information: Enters at the bottom of the reach (i.e. is added directly to the outflow calculated by the method).

I/O: Optional; if not input and not linked, it is set to zero.

Links: May be linked to the Return Flow slot on any object, the Outflow slot on a Groundwater Storage object, the Excess GW Outflow slot on the Groundwater Storage object, or the Surface Return Flow slot on a WaterUser.

Variable Lag Time

Type: Series

Units: TIME

Description: value of the Lag Time interpolated from the Variable LagTime Table.

Information:

I/O: Output only

Links: Not linkable

Variable LagTime Table

Type: Table

Units: TIME VS. Flow VS. TIME

Description: a table relating the day of the year, flow rate, and the lag time

Information: Data must be entered in blocks of increasing flow for each given day for the interpolation method to work correctly. January 1 is represented by a 1, February 1 as 32, etc. Following is an example table.

Day of Year | Flow Rate | Lag Time |
---|---|---|

1 | 500 | 1.0 |

1 | 550 | .9 |

1 | 600 | .8 |

32 | 500 | 2.0 |

32 | 550 | 1.7 |

32 | 600 | 1.5 |

60 | 500 | 2.1 |

60 | 550 | 1.9 |

60 | 600 | 1.6 |

I/O: Required input

Links: Not linkable

This method executes when the Inflow is known for the current timestep. The Inflow value is then used to calculate the Variable Lag Time. Outflow values can then be solved for at the timesteps corresponding to the Variable Lag Time. Following is a sample calculation:

where flowFrac1 and flowFrac2 to are calculated by the following equations:

In these equations, the integer value of a number means that the number is truncated after the decimal point with no rounding.

Since the lag time can vary with every timestep, it possible that more the one Inflow can contribute to a particular Outflow. Return Flow and Total Gain Loss may then be added to the calculated Outflow value.

Impulse Response

This function solves for the outflow from a reach given inflow.

Slots Specific to This Method

Lag Coeff

Type: Table

Units: NO UNITS

Description: impulse response coefficients

Information:

I/O: Required input

Links: Not linkable

Num. of Coeff

Type: Scalar

Units: NO UNITS

Description: number of impulse response coefficients

Information:

I/O: Required input

Links: Not linkable

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

Information: Enters at the bottom of the reach (i.e. is added directly to the outflow calculated by the method).

I/O: Optional; if not input and not linked, it is set to zero.

Links: May be linked to the Return Flow slot on any object, the Outflow slot on a Groundwater Storage object, the Excess GW Outflow slot on the Groundwater Storage object, or the Surface Return Flow slot on a WaterUser.

There must be the same number of values in the Lag Coeff table as the value given in Num of Coeff in order to successfully dispatch at any timestep. If any needed value is invalid, an error will occur, and the run will stop.

The general equation for this method is as follows:

Note: If a new value is set for Inflow at a given timestep, the reach will re-dispatch to solve for a new Outflow at that timestep only. It will not, in general, re-solve for Outflow at every timestep that is affected by the new Inflow. For example, say the Outflow at timestep t is a function of the Inflow at t, t - 1, and t - 2. If a new Inflow value is set at timestep t - 2, the reach will redispatch and solve for a new Outflow at t - 2, but it will not re-dispatch at timesteps t - 1 and t. Thus the final Outflow values at t - 1 and t will not correspond to the updated Inflow value at t - 2. If this type of redispatching across multiple timesteps is required, the Step Response routing method should be used; see “Step Response”.

Step Response

The step response method is a simple routing method which computes outflow for the current timestep and future timesteps given inflow values. The total number of outflows computed will be equal to the number of lag coefficients. The outflow will be computed as the sum of the routed inflows plus whatever sources or sinks may be available.

Slots Specific to This Method

Return Flow

Type: Series

Units: Flow

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero

Lag Coeff

Type: Table

Units: No Units

Description: step response coefficients

Information: The number of Lag Coefficients must be equal to the value in the Num. of Coeff slot.

I/O: Required input

Links: Not Linkable

Num. of Coeff

Type: Scalar Slot

Units: No Units

Description: number of step response coefficients

I/O: Required Input

Links: Not Linkable

The general calculations for this method are very similar to the Impulse Response routing method.

1. First, the outflow for the current timestep is calculated.

2. The method will then move on to the first future outflow. At this stage, outflow will be computed using the same equation only now, t will be incremented to t+1, t-1 incremented to t, etc. The total Gain Loss term will be the Total Gain Loss for timestep t+1.

3. In the situation where the method is looking for an inflow for a timestep that is actually past the current timestep and this value is not valid, this inflow will be assumed to be zero. If the inflow is not valid for a previous timestep, the calculation will exit and the method will move on to the next future timestep.

Variable Step Response

The Variable Step Response method is a variation of the Step Response routing method which computes outflow for the current timestep and future timesteps given inflow values. The total number of outflows computed will be equal to the number of lag coefficients. The outflow will be computed as the sum of the routed inflows plus whatever sources or sinks may be available. In the Step Response method, a single set of lag coefficients is used. In the Variable Step Response method, multiple sets of lag coefficients are used dependent on the inflows to the reach.

Slots Specific to This Method

Return Flow

Type: Series

Units: Flow

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero

Variable Lag Coefficients

Type: Table Slot

Units: Column Map Values - Flow, Table values - No Units

Description: A table defining the step response coefficients for each inflow threshold is shown.

Information: This table has a Column Map which means that each column has an associated numerical value (with units). This numerical value is displayed on as the column label. Columns are added and deleted from this table using the Column menu with the following options: Set Number of Columns, Append Column, Delete Column and Delete Last Column. User units, scale, type, and precision for the Column Map (i.e. the column heading values) are defined in the unit scheme for Flow unit types. Column map values are set from the Column, Set Column Value menu option. When a column value is changed, the columns will re-order to ensure that the column values are increasing left to right. The sum of coefficients in each column should equal 1.0. This can easily be verified by adding a summary row at the bottom of the table using the View, Show Column Sum Row menu option. When used in the Variable Step Response method, the column map values are used as a stair step lookup, e.g. an Inflow of 500cfs uses the first column, an inflow of 10,000cfs uses the second column, and an inflow of 120,000cfs uses the third column. Therefore, the column map values need not bound the highest expected flows; flows greater than the largest column map value use the right most column.

Note: The left-most set of coefficients should represent the minimum flow in the reach.

I/O: Required Input

Links: Not Linkable

This Routing method is executed from the SolveOutflow dispatch method, i.e. it only solves for the Outflow given the Inflows, not vice versa.

Note: Local Inflows are added to the top of the reach and are routed with the Inflows.

In the following, Inflow refers to the sum of the Inflow and Local Inflow slot. The variable ncoeff is the number of rows in the Variable Lag Coefficients slot. The outflows will be calculated using the following algorithm:

For each t from (t = 0, i.e current timestep) to (t = current timestep + (ncoeff - 1))

End for

Each C coefficient is selected from the appropriate column of the Variable Lag Coefficients slot based on the value of the Inflow with which it is multiplied. For a particular evaluation of the equation, the sum of the coefficients does not necessarily equal 1.0. But, mass is preserved over time. Using the above sample table, if the Inflow at the current timestep t, is 12,000cfs and the Inflow at t-1 is 8,000cfs, C0 is 0.30 and C1 is 0.35 using the above table.

If the method is looking for an inflow for a timestep that is actually past the current timestep and the value is not valid, this inflow will be assumed to be zero. If the inflow is not valid for a previous timestep, the calculation will exit the method without calculating an outflow, post a warning message, and move on to the next timestep.

Muskingum

The Muskingum method is a simple storage routing method which solves for the propagation of flow waves based on a lag time and attenuation factor.

Note: This method must have Inflow and Outflow known at the timestep before the first routing timestep.

The Muskingum method only allows for one routing segment, but allows for Local Inflows, Diversions, and Return Flow. The Muskingum with Segments method (described next) allows for multiple segments, but no Diversions, Local Inflows, or Return Flows.

Slots Specific to This Method

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero.

Following is the general equation for this method:

where outflow and outflow(-1) are the current and previous outflows respectively as with inflow and inflow(-1).

Muskingum with Segments

Following is the general equation for this method:

where Outflow and Outflow(-1) are the current and previous outflows respectively as with Inflow and Inflow(‑1).

You can further discretize the reach into n sub-reaches for better control over attenuation.

Note: The routing parameters (either directly as C0,C1,and C2 or as K and X) are specified by the Routing Parameters category and the same parameters are used for each segment in the reach.

This routing method is called from the Solve Outflow dispatch method. That is, when Muskingum with Segments is selected, the only dispatch method is Solve Outflow. This routing method also includes optional Bank Storage, Gain Loss, Outflow Adjust, and Stage calculations.

Note: All these calculations occur after the routing has occurred, based on the routed flow.

Slots Specific to This Method

Number of Segments in Reach

Type: Scalar

Units: None

Description: Number of segments

Information: This parameter determines the number of columns in the Segment Outflow table. In the equations below, the number of segments is represented by the variable n.

I/O: Required input

Links: Not linkable

Outflow by Segment

Type: Agg Series

Units: FLOW

Description: Segment outflow. The segments are numbered upstream to downstream. The Outflow to one segment is the inflow to the next segment.

Information: The outflow from the reach is the outflow from the last segment. The columns in this slot will be resized to the number of segments input by the user, and the number of rows will be the number of timesteps in the run. At the beginning of the run, if the initial timestep Outflow by Segment is not known, the Outflow by Segment is set to the Reach Inflow or Outflow, if known.

Information: Input at Initial timestep, Output at other timesteps

I/O: Output only

Links: Not linkable

Method Details

First, the method checks the following:

1. The current timestep’s inflow is checked. It should be known or the dispatch method would not have been called.

2. If the previous Inflow is not known, the method exits and waits.

3. The Outflow by Segment from the previous timestep is checked for validity. If they are all valid from previous solutions, they are used directly and the method continues. If any of the Outflow by Segment are not valid, the following checks are made:

a. If the Outflow is not known and the last Outflow by Segment is known, then Outflow is set to that value. All other Outflow by Segments are also set to that value.

b. If the Outflow is not known, Outflow and each Outflow by Segment is set equal to the Inflow and the routing method exits. This scenario can occur the first time the reach dispatches. This situation is used when you would like the initial Outflow = Inflow.

c. If the Outflow is known (input or set by a rule), each Outflow by Segment is set equal to the Outflow and the method exits. This scenario can occur the first time the reach dispatches and achieves the need where initial Outflow is specified.

4. Then, the method executes the selected method in the Routing Parameters category to determine the C0,C1,and C2 parameters. These C0,C1,and C2 are used by each segment in the reach.

5. Next, the method sets up arrays of the variables I and O with the known information. The arrays have 2 rows (timesteps) and n columns (segments).

Note: I(t, 1) = Inflow. Table 23.1 shows the array with the variables. Those next to each other are set to the same value, for example O(t-1,2) = I(t-1,3).

Timestep | Reach | Segment 1 | Segment 2 | Segment3 | Reach | |||
---|---|---|---|---|---|---|---|---|

t-1 | Inflow(t-1) | I(t-1,1) | O(t-1,1) | I(t-1,2) | O(t-1,2) | I(t-1,3) | O(t-1,3) | Outflow(t-1) |

t | Inflow(t) | I(t,1) | O(t,1) | I(t,2) | O(t,2) | I(t,3) | O(t,3) | Outflow(t) |

6. Next, loop over each segment and compute the outflow for each segment upstream to downstream:

For (j=1 to Number of Segments)

Compute the Outflow from this segment

Set the inflow value for the next segment, I(t,j+1) = O(t,j)

End For

7. Set the slot Outflow by Segment[t,j] to the values stored in the O array.

8. Execute Reach Bank Storage and Reach GainLoss method using the routed flow (Outflow in the last segment)

9. Set the Reach Outflow equal to the last segment’s outflow plus Bank Storage Return flow plus Total Gain Loss.

10. Execute the selected Outflow Adjustment method and reset Outflow if necessary

Kinematic

This hydraulic routing method is a finite difference solution of the kinematic wave simplification to the St. Venant Equations. It requires a numerical grid to be specified by the user. The numerical approximation tends to result in a negative mass balance error (reaches lose water) in test models. To reduce the mass balance error, CADSWES recommends using the Kinematic Improved method; see “Kinematic Improved”.

Slots Specific to This Method

Delta X Computational Element Length

Type: Scalar

Units: LENGTH

Description: size of the x discretization

Information: This slot must be smaller than the Reach Length

I/O: Required input

Links: Not linkable

Distributed Depth Output

Type: Table Series

Units: LENGTH

Description: depth at upstream end of each element

Information: This value is calculated by the selected Depth to Flow method after calculating the Distributed Flow Output for the current segment at the current timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Celerity Output

Type: Table Series

Units: VELOCITY

Description: celerity(wave speed) at upstream end of each elements

Information: This value is calculated by the selected Depth to Flow method after calculating the Distributed Flow Output for the current segment at the current timestep. Celerity from the previous timestep is used to calculate Distributed Flow Output at the current timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Flow Output

Type: Table Series

Units: FLOW

Description: inflow value at the upstream end of each element

Information: This value is calculated using Celerity from the previous timestep at the current element according to the equation in step 1 below.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed TopWidth Output

Type: Table Series

Units: LENGTH

Description: width of top of water surface

Information: This value is calculated by the selected Depth to Flow method after calculating the Distributed Flow Output for the current segment at the current timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Velocity Output

Type: Table Series

Units: VELOCITY

Description: velocity at upstream end of each element

Information: This value is calculated by the selected Depth to Flow method after calculating the Distributed Flow Output for the current segment at the current timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Volume Output

Type: Table Series

Units: VOLUME

Description: volume contained in each element

Information: The volume in each segment is calculated as follows. Because this routing method is a numerical approximation, the segment outflow values will contain numerical error. This numerical error will accumulate in the Distributed Volume Output calculations. Thus this slot can be used to evaluate the overall mass balance error when using the Kinematic method.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Xsectional Area Output

Type: Table Series

Units: AREA

Description: area at upstream end of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Numerical Parameters Output

Type: Table

Units: VARIOUS

Description: Columns describing grid and Courant number of each element for the current timestep

Information: The rows of this table store the value of the Courant number with respect to distance. The number of rows used is based on the discretization parameters defined by the user, Number of each Length/Delta X. The number of rows in this table is currently limited to 500; therefore, the number of computational elements for each reach must not be greater than 500, i.e. Delta X must not be less than Reach Length/500. The first two columns are computed at the beginning of run. The Courant number is computed and updated every time the reach dispatches and routes the flow.

I/O: Output only

Links: Not linkable

Reach Length

Type: Scalar

Units: LENGTH

Description: total length of the reach, from upstream to downstream.

Information: This slot must be larger than Delta X

I/O: Required input

Links: Not linkable

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero.

The solution is a nonlinear numerical approximation to the following continuity and momentum equations.

Continuity

Momentum

For this numerical solution, accuracy increases as the Courant number approaches unity and decreases as the Courant number diverges from unity. The Courant number for each numerical grid section for the current timestep can be observed in the Numerical Parameters Output under the column labeled Courant. The Courant number is calculated as follows:

where c = wave celerity [L/T], t = routing time step[T], and x = spatial step size[L].

This hydraulic routing method also requires the user to select from another category of user selectable methods, Depth to Flow. The inputs for these methods are described under that user method category.

In the following method, a superscript refers to the timestep, and a subscript refers to the spatial location (element number) within the reach, upstream to downstream.

Note: This method is restricted to using a non-zero Inflow for the initial timestep. The Kinematic Improved method does not have this restriction; see “Kinematic Improved”.

1. At the start of the run this method sets all columns of the Distributed Flow Output at the initial timestep (Start Timestep - 1) equal to the initial Reach Inflow (i.e. the flow is the same at every element). It then calls the selected Depth to Flow method to calculate all flow parameters for each element at the initial timestep.

2. For each timestep within the run, it first sets the flow for the first element, as follows:

3. If Diversion or Local Inflow are not used, they are set to zero.

4. Then the selected Depth to Flow method is called calculate all flow parameter values for the first element using . The values are set in the first column of the Distributed Output table series slots.

5. The method then loops over all remaining elements in the reach, upstream to downstream, to carry out the finite difference approximation in the following steps.

a. Calculate the flow in the given element using the finite difference approximation of the kinematic wave simplification to the St. Venant Equations, which has the following form:

(This equation is a rearrangement of equation 9.6.6 in Chow et. al., 1988^{1} with a small modification to the calculation of celerity.)

b. Call the selected Depth to Flow method to calculate flow parameters using . The values are set in the Distributed Output table series slots. The primary value returned is the celerity (wave speed), .

c. Calculate the Distributed Volume Output, the volume of water within the element, as follows:

6. After calculating flow at the final element, all gains, losses and Return Flow are added to the final element flow to give the total Reach Outflow.

Kinematic Improved

This hydraulic routing method is a finite difference solution of the kinematic wave simplification to the St. Venant Equations. It requires a numerical grid to be specified by the user. The Kinematic Improved method is very similar to the Kinematic method. The only difference is in the flow value used to calculate celerity and other distributed output values for each element in the reach as detailed below. This formulation allows for a smaller Delta X Computational Element Length, which in turn reduces overall mass balance error when compared to the Kinematic method.

Slots Specific to This Method

Delta X Computational Element Length

Type: Scalar

Units: LENGTH

Description: size of the x discretization

Information: This slot must be smaller than the Reach Length

I/O: Required input

Links: Not linkable

Distributed Depth Output

Type: Table Series

Units: LENGTH

Description: depth at upstream end of each element

Information: This value is calculated by the selected Depth to Flow method using the average of the previous timestep flow at the current element and the current timestep flow at the upstream element.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Celerity Output

Type: Table Series

Units: VELOCITY

Description: celerity(wave speed) at upstream end of each elements

Information: This value is calculated by the selected Depth to Flow method using the average of the previous timestep flow at the current element and the current timestep flow at the upstream element.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Flow Output

Type: Table Series

Units: FLOW

Description: inflow value at the upstream end of each element

Information:

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed TopWidth Output

Type: Table Series

Units: LENGTH

Description: width of top of water surface

Information: This value is calculated by the selected Depth to Flow method using the average of the previous timestep flow at the current element and the current timestep flow at the upstream element.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Velocity Output

Type: Table Series

Units: VELOCITY

Description: velocity at upstream end of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Volume Output

Type: Table Series

Units: VOLUME

Description: volume contained in each element

Information: The volume in each segment is calculated as follows. Because this routing method is a numerical approximation, the segment outflow values will contain numerical error. This numerical error will accumulate in the Distributed Volume Output calculations. Thus this slot can be used to evaluate the overall mass balance error when using the Kinematic Improved method. The mass balance error can be reduced by reducing the size of Delta X Computational Length.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Xsectional Area Output

Type: Table Series

Units: AREA

Description: area at upstream end of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Numerical Parameters Output

Type: Table

Units: VARIOUS

Description: Columns describing grid and Courant number of each element for the current timestep

Information: The rows of this table store the value of the Courant number with respect to distance. The number of rows used is based on the discretization parameters defined by the user, Number of each Length/Delta X. The number of rows in this table is currently limited to 500; therefore, the number of computational elements for each reach must not be greater than 500, i.e. Delta X must not be less than Reach Length/500. The first two columns are computed at the beginning of run. The Courant number is computed and updated every time the reach dispatches and routes the flow.

I/O: Output only

Links: Not linkable

Reach Length

Type: Scalar

Units: LENGTH

Description: total length of the reach, from upstream to downstream.

Information: This slot must be larger than Delta X

I/O: Required input

Links: Not linkable

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero.

The solution is a nonlinear numerical approximation to the following continuity and momentum equations.

Continuity

Momentum

For this numerical solution, the total mass balance error will decrease as the Delta X Computational Element Length (x) decreases (number of segments increases). Decreasing x will reduce the dispersion in the numerical solution, resulting in higher peaks and lower valleys in the Reach Outflow. Decreasing x will also increase the Courant number. The Courant number for each numerical grid section for the current timestep can be observed in the Numerical Parameters Output under the column labeled Courant. The Courant number is calculated as follows:

where c = wave celerity [L/T], t = routing time step[T], and x = spatial step size[L].

This hydraulic routing method also requires the user to select from another category of user selectable methods, Depth to Flow. The inputs for these methods are described under that user method category.

In the method description below, a superscript refers to the timestep, and a subscript refers to the spatial location (element number) within the reach, upstream to downstream.

At the start of the run this method sets all columns of the Distributed Flow Output at the initial timestep (Start Timestep - 1) equal to the initial Reach Inflow (i.e. the flow is the same at every element). It then calls the selected Depth to Flow method to calculate all flow parameters for each element at the initial timestep.

For each timestep within the run, it first sets the flow for the first element, as follows:

If Diversion or Local Inflow are not used, they are set to zero.

Then the selected Depth to Flow method is called calculate all flow parameter values for the first element using . The values are set in the first columns of the Distributed Output table series slots.

The method then loops over all remaining elements in the reach, upstream to downstream, to carry out the finite difference approximation in the following steps.

a. Calculate the temporary flow value to use for flow parameter calculations.

b. Call the selected Depth to Flow method to calculate flow parameters using flowTemp. The values are set in the Distributed Output table series slots. The primary value returned is the celerity (wave speed), .

c. Calculate the flow in the given element using the finite difference approximation. This finite difference scheme is an implicit backward difference solution of the kinematic wave simplification to the St. Venant Equations and has the following form:

(This equation is a rearrangement of equation 9.6.6 in Chow et. al., 1988^{2}. Celerity is substituted using equation 9.3.11.)

d. Calculate the Distributed Volume Output, the volume of water within the element, as follows:

After calculating flow at the final element, all gains, losses and Return Flow are added to the final element flow to give the total Reach Outflow.

Muskingum-Cunge

This hydraulic routing method uses the Muskingum routing equation, but with X and K coefficients that are physically based, as an approximation to the diffusive flow equations.

Background

The standard form of the Muskingum equation is as follows:

When applied to a spatially distributed grid, the flow in grid i is as follows:

where t is the incremental timestep at which the calculation is occurring. In the standard Muskingum-Cunge equation, C0, C1, and C2 are functions of the Courant number C and Reynolds number D.

C and D are calculated as follows:

Q is the grid’s flow, So is the Energy Slope, c is the wave celerity, and Tw is the top width of the channel calculated for the given flow Q. The wave celerity c and Tw are found using the selected Depth to Flow method for the flow, Q, at the appropriate timestep (see “Depth to Flow” for details). The incremental timestep is specified by the user while the spatial distribution is calculated to keep the Courant number close to 1 for the reference discharge.

Slots Specific to This Method

Delta X Computational Element Length

Type: Scalar

Units: LENGTH

Description: size of the x discretization

Information: This slot is determined by the method, while it is input by the user for the other hydraulic routing methods.

I/O: Output only

Links: Not linkable

Distributed Celerity Output

Type: Table Series

Units: VELOCITY

Description: celerity(wave speed) at each elements

Information: The value displayed in each row is the value for the last incremental timestep for each run timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Depth Output

Type: Table Series

Units: LENGTH

Description: depth of each element

Information: The value displayed in each row is the value for the last incremental timestep for each run timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Flow Output

Type: Table Series

Units: FLOW

Description: flow value of each element

Information: The 0th column represents the flow to be routed (Inflow + Local Inflow - Diversion). The last column represents the routed flow and is copied to the outflow. This is actually the flow for the last incremental timestep and is NOT an average over the timestep.

Note: In the iteration, the method uses the current (t) and next timestep (t+1) rows to store the previous and current values: current row = previous incremental timestep, next row = current incremental timestep. At the end of each incremental timestep, the value is copied from the next timestep’s row to the current timestep’s row. The only effect visible to the user of this iteration mechanism is that the last row of the table is the same as the last minus one row; the last row is beyond the end of the run and can be ignored.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed MuskingumCunge Output

Type: Table

Units: VARIOUS

Description: holds output parameters of routing method.

Information: C0, C1, C2 are all reported here for the current timestep, along with D, C+D, X and K.

I/O: Output only.

Links: Not linkable

Distributed TopWidth Output

Type: Table Series

Units: LENGTH

Description: width of top of water surface

Information: The value displayed in each row is the value for the last incremental timestep for each run timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Velocity Output

Type: Table Series

Units: VELOCITY

Description: velocity of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Volume Output

Type: Table Series

Units: VOLUME

Description: volume contained in each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Xsectional Area Output

Type: Table Series

Units: AREA

Description: area of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Energy Slope

Type: Scalar

Units: NO UNITS

Description: slope of the reach from upstream to downstream (vertical/horizontal)

Information: Must be positive, used to calculate the routing distance step

I/O: Required input

Links: Not linkable

Extreme Flow Values

Type: Table

Units: FLOW

Description: base and max flow values expected during simulation run

Information: Used for calculation of the routing distance step

I/O: Required input

Links: Not linkable

Numerical Parameters Output

Type: Table

Units: VARIOUS

Description: Columns describing grid and Courant number of each element for the current timestep

Information: The rows of this table store the value of the Courant number with respect to distance. The number of rows used is based on the discretization parameters, Number of each Length/Delta X. The number of rows in this table is currently limited to 500.

I/O: Output only

Links: Not linkable

Reach Length

Type: Scalar

Units: LENGTH

Description: total length of the reach, from upstream to downstream.

Information:

I/O: Required input

Links: Not linkable

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero.

Routing Time Step

Type: Table

Units: TIME

Description: timestep used by method, in the equations below

Information: This must be smaller than the simulation timestep. The value should be larger than the estimated time of travel for a wave through the reach. It must result in an exact integer number of routing timesteps per simulation timestep.

I/O: Required input

Links: Not linkable

Max Iterations

Type: Scalar Slot

Units: none

Description: This values specifies the maximum number of iterations used by convergence algorithm to compute the reach outflow.

I/O: Input; defaults to 20 if not set by the user

Links: Not linkable

Method Details

The spatial distribution is automatically calculated by RiverWare. The incremental spatial step is determined such that the Courant number, C, will be close to one to reduce the effects of numerical dispersion. Since the discharge will vary for a simulation, the Courant number will also vary. To pick a value for the incremental spatial step that minimizes the effects of numerical dispersion, the user inputs maximum and minimum discharges expected for a simulation in the Extreme Values slot. The average of these two discharges is used as the reference discharge. The wave celerity, c, is then computed with this reference discharge using the selected Depth to flow; see “Depth to Flow” for details. The spatial step size, is computed with the input and the Courant number, C set to be 1.0.

The scheme is unconditionally stable for 0.0 <= X <= 0.5 or with D (cell Reynolds number) values less than unity. The cell Reynolds number, D, is defined as the ratio of hydraulic diffusivity to grid diffusivity, as follows:

where Q is the grid’s flow, So is the Energy Slope, c is the wave celerity, and Tw is the top width of the channel calculated for the given flow Q. Tw is found using the selected Depth to Flow method. X is related to D as follows:

The value of D for each numerical grid section for the current timestep can be observed in the Distributed MuskingumCunge Output table under the column labeled D.

Note: In this method if the flow result is very small or negative, C and D become 1, and X becomes 0.0. If the above equation for C0 results in a negative value, C and D are set to 1, and C0 is set to 0.

The value of C + D for each numerical grid section for the current timestep can be observed in the Distributed MuskingumCunge Output table under the column labeled C + D.

Method Steps

The method proceeds as follows.

1. Calculate the total inflow for the timestep (i.e. the inflow plus local inflow minus diversion) to the reach.

2. The method loops through the incremental timesteps, t, and the spatial grid, i, to find the flow at each element as follows.

a. FOR EACH incremental timestep, t

The inflow at each incremental timestep is determined by interpolating between the inflow for the previous day and the inflow for the current day. This is then set on the 0th column of the Distributed Flow Output slot

b. FOR EACH spatial step, i, in the grid

1. Estimate the flow using the three point method.

2. Using this flow, call the selected Depth to Flow method to determine ct, Twt, At.

3. Calculate and .

If the flow is zero, set and equal to 1.0.

4. If the following does not hold true: 0.0 <= <= 0.5, issue an error and stop the run. The scheme is not stable.

5. Calculate C0, C1, and C2.

6. Calculate a new using the Muskingum equation.

7. If the new is within convergence of the old , go to the next spatial step, otherwise determine a new using a four point scheme, as follows:

8. Return to step 2 and repeat until the flow, , converges.

c. END FOR loop over spatial step, i

d. Compute Distributed Volume Output for each element in the reach as the previous incremental timestep’s Distributed Volume Output plus the average spatial flow in the reach.

e. END FOR loop over incremental timestep, t

3. Using the value in the last column of the Distributed Flow Output slot, execute the bankstorage and gain loss calculations, add in Return Flow, and execute negative outflow adjustment calculations. Each may add or subtract water from the reach. Set the resulting flow on the Outflow slot.

4. Finally, compute and set the Total Outflow Storage as the sum of the previous Total Outflow Storage plus the Outflow converted to a volume.

Note: To assure the routing parameters are appropriately computed for the given inflow, the reference flow along with corresponding values for the wave celerity and top width are used to compute new values for the cell Reynolds number, D, and the Courant number, C at each timestep. However, changing C and D values in the middle of a simulation results in a volume conservation error. Test results show that this error can be significant for sharply rising and falling hydrograph but the total volume conservation error over a flood event is less than 1%. See “Muskingum-Cunge Improved” for details on a similar method that better conserves mass.

Muskingum-Cunge Improved

This hydraulic routing method is an improvement to the Muskingum-Cunge method in which the coefficients are adjusted to better conserve mass as proposed by Todini, 2007^{3}.

Background

The standard form of the Muskingum equation is as follows:

When applies to a spatially distributed grid, the flow in grid i is as follows:

where t is the incremental timestep at which the calculation is occurring. In the standard Muskingum-Cunge equation, C0, C1, and C2 are functions of the Courant number C and Reynolds number D.

C and D are calculated as follows:

Q is the grid’s flow, So is the Energy Slope, c is the wave celerity, and Tw is the top width of the channel calculated for the given flow Q. The wave celerity c and Tw are found using the selected Depth to Flow method for the flow, Q, at the appropriate timestep (see “Depth to Flow”). The incremental timestep is specified by the user while the spatial distribution is calculated to keep the Courant number close to 1 for the reference discharge.

In the variable parameter, Muskingum-Cunge routing method, the cell Reynolds number, D, and the Courant number, C change at each timestep for each cell. Changing C and D values in the middle of a simulation results in a volume conservation error and storage inconsistency at steady state as shown by Todini. See “Muskingum-Cunge” for details.

To mitigate this loss of mass, Todini rederived the equations (not shown) and calculated the coefficients as follows:

Where C* and D* are the corrected Courant number and Reynolds number, respectively, as follows:

The Muskingum-Cunge Improved method is an implementation of this scheme. Although Todini proposed relationships to define the channel parameters for common channel geometry, this method uses an iterative 3 and 4 point scheme and the selected Depth to Flow method to determine these same parameters (area, top width, depth, velocity, and celerity).

In addition, the reach inflow is used as the inflow to each incremental timestep. The Outflow is an average of the outflow over each incremental timestep. Full details of this method follow the slot descriptions.

Slots Specific to This Method

Delta X Computational Element Length

Type: 1X1 table slot

Units: Length

Description: size of the spatial discretization

Information: This slot is determined by the method, while it is input by the user for the other hydraulic routing methods.

I/O: Output only

Links: Not linkable

Distributed Celerity Output

Type: Table Series Slot

Units: Velocity

Description: celerity(wave speed) at each of the elements

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Courant Output

Type: Table Series Slot

Units: None

Description: The adjusted Courant value (C*) for each element in the reach.

Note: In the iteration, the method uses the current and next timestep rows to store the previous and current values: current row = previous incremental timestep, next row = current incremental timestep. At the end of each incremental timestep, the value is copied from the next timestep’s row to the current timestep’s row. The only effect visible to the user of this iteration mechanism is that the last row of the table is the same as the last minus one row; the last row is beyond the end of the run and can be ignored.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Depth Output

Type: Table Series Slot

Units: Length

Description: depth of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Flow Output

Type: Table Series Slot

Units: Flow

Description: Flow value of each element in the reach.

Information: The 0th column represents the flow to be routed (Inflow + Local Inflow - Diversion). The last column represents the routed flow; but the flow value displayed in each row is the flow in the last incremental timestep for each run timestep. This is not necessarily the same as the average over the run timestep. The Routed Flow slot holds this average over the incremental timesteps and is then used in subsequent calculations on the reach.

Note: In the iteration, the method uses the current and next timestep rows to store the previous and current values: current row = previous incremental timestep, next row = current incremental timestep. At the end of each incremental timestep, the value is copied from the next timestep’s row to the current timestep’s row. The only effect visible to the user of this iteration mechanism is that the last row of the table is the same as the last minus one row; the last row is beyond the end of the run and can be ignored.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed MuskingumCunge Output

Type: Table

Units: Various

Description: holds output parameters of routing method.

Information: C0, C1, C2 are all reported here for the current timestep, along with D, C+D, X and K.

Note: C and D are also stored in the Distributed Courant Output and Distributed Reynolds Output slots.

I/O: Output only

Links: Not linkable

Distributed Previous Flow Output

Type: Table Series Slot

Units: Flow

Description: The Distributed Flow Output offset by one timestep

Information: This slot is used to store the previous distributed flow so that if the reach dispatch more than once, the distributed flow is not lost. The value displayed in each row is the value for the last incremental timestep for each run timestep.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not Linkable

Distributed Reynolds Output

Type: Table Series Slot

Units: None

Description: The adjusted Reynolds number (D*) for each element in the reach

Note: In the iteration, the method uses the current and next timestep rows to store the previous and current values: current row = previous incremental timestep, next row = current incremental timestep. At the end of each incremental timestep, the value is copied from the next timestep’s row to the current timestep’s row. The only effect visible to the user of this iteration mechanism is that the last row of the table is the same as the last minus one row; the last row is beyond the end of the run and can be ignored.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not Linkable

Distributed TopWidth Output

Type: Table Series Slot

Units: Length

Description: width of top of water surface

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Velocity Output

Type: Table Series Slot

Units: Velocity

Description: velocity of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Volume Output

Type: Table Series Slot

Units: Volume

Description: volume contained in each spatial element of the reach

Information: The value displayed in each row is the value for the last incremental timestep for each run timestep. This volume is the end of timestep value.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Distributed Xsectional Area Output

Type: Table Series Slot

Units: Area

Description: area of each element

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Energy Slope

Type: Scalar

Units: No Units

Description: slope of the reach from upstream to downstream (vertical/horizontal)

Information: Must be positive

I/O: Required input

Links: Not linkable

Extreme Flow Values

Type: 1X1 Table

Units: Flow

Description: base and max flow values expected during simulation run.

Information: Used for calculation of the routing distance step

I/O: Required input

Links: Not linkable

Max Iterations

Type: 1X1 Table Slot

Units: none

Description: This values specifies the maximum number of iterations used by convergence algorithm to compute the reach outflow.

I/O: Input; defaults to 20 if not set by the user

Links: Not linkable

Numerical Parameters Output

Type: Table

Units: Various

Description: Columns describing grid and Courant number of each element for the current timestep

Information: The rows of this table store the value of the Courant number with respect to distance. The number of rows used is based on the discretization parameters, Number of each Length/Delta X. The number of rows in this table is currently limited to 500.

I/O: Output only

Links: Not linkable

Previous Outflow

Type: Series Slot

Units: Flow

Description: Previous Outflow

Information: This is the outflow from the reach, offset by one timestep

I/O: Output only

Links: Linkable

Reach Length

Type: 1X1 Table Slot

Units: Length

Description: total length of the reach, from upstream to downstream.

Information:

I/O: Required input

Links: Not linkable

Reach Volume

Type: Series Slot

Units: Volume

Description: The volume of water in the reach at the end of the timestep.

Information: This volume is calculated as the sum of the Distributed Volume Output for each row. It is the sum of water over each spatial step along the reach.

I/O: Output only

Links: Not linkable

Return Flow

Type: Series Slot

Units: Flow

Description: return flow into the reach

Information: Enters at the bottom of the reach (i.e. is added directly to the Routed Flow calculated by the method).

I/O: Optional; if not input and not linked, it is set to zero.

Routed Flow

Type: Series Slot

Units: Flow

Description: The flow in the reach after routing has occurred but before gain/loss, return flow or bankstorage is added.

Information: This is calculated by averaging the downstream most distributed outflow from the reach over each of the incremental timesteps

I/O: Output only

Links: Not linkable

Routing Time Step

Type: 1X1 Table Slot

Units: Time

Description: timestep used by method, in the equations below

Information: This must be smaller than the simulation timestep. The value should be larger than the estimated time of travel for a wave through the reach. It must result in an exact integer number of routing timesteps per simulation timestep.

I/O: Required input

Links: Not linkable

Total Outflow Storage

Type: Series Slot

Units: Volume

Description: Cumulative volume of outflow throughout the run.

Information: It is calculated as the previous Total Outflow Storage plus the Outflow converted to a volume

I/O: Output only

Links: Not linkable

Method Details

The incremental timestep is related to the spatial distribution as follows:

Since the discharge varies for a simulation, the Courant number will also vary. To pick a value for the incremental spatial step that minimizes the effects of numerical dispersion, the user inputs minimum and maximum discharges expected for a simulation in the Extreme Flow Values slot. The average of these two discharges is used as the reference discharge when computing the wave celerity, c, using the selected Depth to Flow method. Then, the incremental spatial step is determined with the Courant number, C, set equal to 1.0 to reduce the effects of numerical dispersion.

Note: This routing method loops over the incremental timestep which must be smaller than the run timestep. The values displayed in the Distributed Output slots are the values for the last incremental timestep. The incremental values are strictly internal and there is no way to show the values for intermediate incremental timesteps.

The method proceeds as follows.

1. Calculate the inflow (i.e. the inflow plus local inflow minus diversion) to the reach and set the flow in the 0th column of the Distributed Flow Output slot equal to this flow. This same inflow value is used for each incremental timestep (no interpolation is used as in the original, as this leads to a further mass inconsistency; see “Muskingum-Cunge”). Using this inflow, call the selected Depth to Flow method to determine c, Tw, and At. Calculate and using those values. Set the 0th column of the appropriate table series slot.

2. The method loops through the incremental timesteps, t, and the spatial grid, i, to find the flow at each element as follows.

3. FOR EACH incremental timestep, t

a. FOR EACH spatial step, i, in the grid

1. Estimate the flow using the three point method.

2. Using this flow, call the selected Depth to Flow method to determine ct, Twt, At.

3. Calculate and where .

If the flow is zero, set and equal to 1.0.

4. If the following does not hold true: 0.0 <= <= 0.5, issue an error and stop the run. The scheme is not stable.

5. Calculate C0, C1, and C2.

Note: and are from the previous incremental timestep and were stored in the appropriate cell of the respective table series slot.

6. Calculate a new using the Muskingum equation.

7. If the new is within convergence of the old , go to the next spatial step, otherwise determine a new using a four point scheme.

8. Return to step 2 and repeat until the flow, , converges. Once convergence occurs, set a temporary variable tempOutflowVolume to track the total volume of outflow (last column of the Distributed Flow Output slot, i.e. the bottom of the reach). Add to this total volume at each incremental timestep.

b. END FOR loop over spatial step, i

c. Compute Distributed Volume Output for each element in the reach, as follows:

4. END FOR loop over incremental timestep, t.

5. Next, the Routed Flow is calculated as the average outflow over the incremental timesteps. This is calculated by dividing the tempOutflowVolume by the run timestep. Then, sum up the Distributed Volume Output over space (i.e. a given row) and set this value on the Reach Volume slot.

6. Using the Routed Flow, execute the bankstorage and gain loss calculations, add in Return Flow, and execute negative outflow adjustment calculations. Each may add or subtract water from the reach. Set the resulting flow on the Outflow slot.

7. Finally, compute and set the Total Outflow Storage as the sum of the previous Total Outflow Storage plus the Outflow converted to a volume.

This method was implemented to achieve better mass conservation but is not guaranteed to fully conserve mass. Because the user selects the Extreme Flow values and Routing Timestep, there are circumstances where flow is not fully conserved. This is especially true when there are abrupt flow changes and flows that are zero. Testing has shown that mass is fully conserved in well behaved problems but not necessarily in real-world problems. Regardless, the mass conservation is much better than the original routing method.

MacCormack

This hydraulic routing method is a finite difference solution of the kinematic wave simplification to the St. Venant Equations. It requires a numerical grid to be specified by the user.

Slots Specific to This Method

Delta X Computational Element Length

Type: Scalar

Units: LENGTH

Description: size of the x discretization

Information: This slot must be smaller than the Reach Length.

I/O: Required input

Links: Not linkable

Distributed Celerity Output

Type: Table Series

Units: VELOCITY

Description: celerity(wave speed) at upstream end of each elements

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed Depth Output

Type: Table Series

Units: LENGTH

Description: depth at upstream end of each element

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed Flow Output

Type: Table Series

Units: FLOW

Description: inflow value at the upstream end of each element

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed TopWidth Output

Type: Table Series

Units: LENGTH

Description: width of top of water surface

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed Velocity Output

Type: Table Series

Units: VELOCITY

Description: velocity at upstream end of each element

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed Volume Output

Type: Table Series

Units: VOLUME

Description: volume contained in each element

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Distributed Xsectional Area Output

Type: Table Series

Units: AREA

Description: area at upstream end of each element

Information: This is a temporary slot that is not saved in the model file.

I/O: Output only

Links: Not linkable

Numerical Parameters Output

Type: Table

Units: VARIOUS

Description: Columns describing grid and Courant number of each element for the current timestep

Information: The rows of this table store the value of the Courant number with respect to distance. The number of rows used is based on the discretization parameters defined by the user, Number of each Length/Delta X. The number of rows in this table is currently limited to 500; therefore, the number of computational elements for each reach must not be greater than 500; that is, Delta X must not be less than Reach Length/500.

I/O: Output only

Links: Not linkable

Reach Length

Type: Scalar

Units: LENGTH

Description: total length of the reach, from upstream to downstream.

Information: This slot must be larger than Delta X

I/O: Required input

Links: Not linkable

Return Flow

Type: Series

Units: FLOW

Description: return flow into the reach

I/O: Optional; if not input and not linked, it is set to zero.

Routing Time Step

Type: Table

Units: TIME

Description: timestep used by method

Information: This must be smaller than the simulation timestep. The value should be larger than the estimated time of travel for a wave through the reach.

I/O: Required input

Links: Not linkable

The solution is a nonlinear numerical approximation to the following continuity and momentum equations.

Continuity

Momentum

For this numerical solution, accuracy increases as the Courant number approaches unity and decreases as the Courant number diverges from unity. The Courant number for each numerical grid section for the current timestep can be observed in the Numerical Parameters Output under the column labeled Courant. The Courant number is calculated as follows:

where c = wave celerity [L/T], t = routing time step[T], and x = spatial step size[L].

This hydraulic routing method also requires the user to select from another category of user selectable methods: Depth to Flow. The inputs for these methods are described under that user method category.

The algorithm uses is a predictor corrector scheme that is unstable for a Courant number greater than unity. The advantage of this scheme is that it is second order accurate and can minimize numerical diffusion. The general equations for this method are as follows.

Predictor

Corrector

Storage Routing

This method is a simple storage method that solves for outflows given current and previous inflow values. The reach is broken up into a user-specified number of linked segments and flows are calculated for each segment.

Note: This method is based on an empirical formula that uses a numeric approximation; therefore the method does not guarantee that mass balance will be preserved exactly.

Slots Specific to This Method

Number of Segments in Reach

Type: Scalar

Units: NOUNITS

Description: number of segments upstream to downstream

Information: This will determine the number of columns in the Segment Outflow table as well.

I/O: Required input

Links: Not linkable

Segment Outflow

Type: Table Series

Units: FLOW

Description: segment outflow

Information: The outflow from the reach is the outflow from the last segment. The columns in this table will be resized to the number of segments input by the user, and the number of rows will be the number of timesteps in the run.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Storage Time Coefficient

Type: Scalar

Units: NOUNITS

Description: value that is divided by the result of the average flow and exponent to arrive at time in storage

Information: The units of this slot should be Volumeexponent (a value should be used that is in (ft3)exponent). This coefficient may be determined by trial and error, and should not be negative. The value must correspond to a flow value in cfs and storage time in hours, regardless of the user units on other slots.

I/O: Required input

Links: Not linkable

Storage Time Exponent

Type: Scalar

Units: NOUNITS

Description: exponent of mean flow value.

Information: Usually between -1 and 1. The value must correspond to a flow value in cfs and storage time in hours, regardless of the user units on other slots.

I/O: Required input

Links: Not linkable

The algorithm proceeds as follows.

1. If the previous Inflow value is not known, the method exits.

2. The outflow value for each segment from the previous timestep is checked for validity. There are then three possible scenarios:

– If the segment outflows are not valid and previous Outflow is not valid, Outflow is set equal to inflow plus gain loss and the method exits.

– If the segment outflows are not valid, and previous Outflow is valid, set all segment outflows equal to previous Inflow, and continue the routing method.

– If the segment outflows are valid, continue the method.

3. Find the mean interior flow from the previous timestep as the average of all segment outflows.

4. Find the time of storage in the reach based on the following empirical formula(in cfs).

where storagetime is the time of storage in hours; coefficient and exponent are user input constants in the slots above; and meanfl is the average interior flow of the previous timestep.

Note: The storagetime calculation is always made with meanfl in units of cfs regardless of the user units on any flow slots. The values for Storage Time Coefficient and Storage Time Exponent should be set accordingly.

The time in storage can be used as a conversion from storage to outflow.

5. Find the number of routing phases, n. If the time of storage is greater than half of the simulation timestep, n is 1. Otherwise, n is calculated as follows:

If n is greater than 48 from this equation, n is set to 6.

6. The inflow into the first segment for each routing phase is calculated as follows:

7. For each routing phase, the outflow from each segment is calculated as follows:

This routing equation is based on the storage-outflow relation, storagetime, from above, and the continuity equation.

8. The inflow into the next segment is the average of the segments previous and current outflows

9. The current timestep’s Outflow for the object is equal to the last segment’s outflow.

Variable Storage Routing

This method is a simple storage method that solves for outflows given current and previous inflow values. The reach is broken up into a user-specified number of linked segments and flows are calculated for each segment. This method differs from the Storage Routing method only in the determination of the storagetime value. In this method, the storage time exponent and coefficient are found from a table lookup based on flow instead of constant values.

Note: This method is based on an empirical formula that uses a numeric approximation; therefore the method does not guarantee that mass balance will be preserved exactly.

Slots Specific to This Method

Flow Range

Type: Table

Units: FLOW

Description: the ranges of flow rates corresponding to the Variable Storage Time Tables

Information: The number of flow ranges allowed in this table is currently limited to 10. The columns of this table represent, in ascending order, the maximum flow rate for a specific flow range starting with 0 as the base. These columns are labeled Flow Range 1 - 10. Therefore, the first column represents a range of flows from 0 to the value input by the user in the Flow Range 1 column. The last flow range entered by the user should be a flow rate greater than any anticipated for the simulation. Otherwise, a value of 0.0 will be used for the Variable Storage Time slots for flows outside of this range. It is not necessary to utilize all 10 columns of this table. Use only the columns needed to designate the desired flow ranges.

I/O: Required input

Links: Not linkable

Number of Segments in Reach

Type: Scalar

Units: NOUNITS

Description: number of segments upstream to downstream

Information: This will determine the number of columns in the Segment Outflow table as well.

I/O: Required input

Links: Not linkable

Segment Outflow

Type: Table Series

Units: FLOW

Description: segment outflow

Information: The outflow from the reach is the outflow from the last segment. The columns in this table will be resized to the number of segments input by the user, and the number of rows will be the number of timesteps in the run.

I/O: Output only - This is a temporary slot that is not saved in the model file.

Links: Not linkable

Variable Storage Time Coefficient

Type: Series

Units: NOUNITS

Description: value that is divided by the result of the average flow and exponent to arrive at time in storage

Information: The units of this slot should be Volumeexponent (a value should be used that is in (ft3)exponent).

I/O: Output only

Links: Not linkable

Variable Storage Time Coefficient Table

Type: Table

Units: NOUNITS

Description: Variable Storage Time Coefficient for each specific Flow Range

Information: The columns of the table correspond to the flow ranges defined in Flow Range. The values must correspond to a flow value in cfs and storage time in hours, regardless of the user units on other slots.

I/O: Required input

Links: Not linkable

Variable Storage Time Exponent

Type: Series

Units: NOUNITS

Description: exponent of mean flow value.

Information: Usually between -1 and 1.

I/O: Output only

Links: Not linkable

Variable Storage Time Exponent Table

Type: Table

Units: NOUNITS

Description: Variable Storage Time Exponent for each specific Flow Range

Information: The columns of the table correspond to the flow ranges defined in Flow Range. The values must correspond to a flow value in cfs and storage time in hours, regardless of the user units on other slots.

I/O: Required input

Links: Not linkable

The algorithm proceeds as follows.

1. If the previous Inflow value is not known, the method exits.

2. The outflow value for each segment from the previous timestep is checked for validity. There are then three possible scenarios:

– If the segment outflows are not valid and previous Outflow is not valid, Outflow is set equal to inflow plus gain loss and the method exits.

– If the segment outflows are not valid, and previous Outflow is valid, set all segment outflows equal to previous Inflow, and continue the routing method.

– If the segment outflows are valid, continue the method.

3. Find the mean interior flow from the previous timestep as the average of all segment outflows.

4. Find the time of storage in the reach based on the following empirical formula(in cfs).

where storagetime is the time of storage in hours; coefficient and exponent are user input constants in the slots above; and meanfl is the average interior flow of the previous timestep.

Note: The storagetime calculation is always made with meanfl in units of cfs regardless of the user units on any flow slots. The values in the Variable Storage Time Coefficient Table and Variable Storage Time Exponent Table should be set accordingly.

The time in storage can be used as a conversion from storage to outflow.

5. Find the number of routing phases, n. If the time of storage is greater than half of the simulation timestep, n is 1. Otherwise, n is calculated as follows:

If n is greater than 48 from this equation, n is set to 6.

6. The inflow into the first segment for each routing phase is calculated as follows:

7. For each routing phase, the outflow from each segment is calculated as follows:

This routing equation is based on the storage-outflow relation, storagetime, from above, and the continuity equation, as follows:

8. The inflow into the next segment is the average of the segments previous and current outflows

9. The current timestep’s Outflow for the object is equal to the last segment’s outflow.

Modified Puls

The Modified Puls algorithm solves for the Reach Outflow given current and previous Inflow and Storage values using the following continuity equation, as follows:

Rewritten, this equation is as follows:

The equation has two unknowns, Storage and Outflow, both on the left side. In the Modified Puls method, the user specifies a tabular relationship of Storage versus Outflow in the Storage Outflow Table. Given this table of data, the set of Storage and Outflow can be found to satisfy the equation.

You can further discretize the reach into n sub-reaches for better control over the attenuation of the flood wave. The Storage Outflow Table is specified for the entire reach. Therefore, during the solution, the Storage in each subreach is assumed to be 1/n of the total storage. Each subreach is assumed to be identical and uniform.

This routing method is called from the Solve Storage Routing Outflow dispatch method. That is, when Modified Puls is selected, the only available dispatch method is Solve Storage Routing Outflow. This dispatch method solves downstream and includes optional Bank Storage, Gain Loss, Outflow Adjust, Stage, and Volume calculations.

Note: All these calculations occur after the routing has occurred, based on the routed flow.

Slots Specific to This Method

Number of Segments in Reach

Type: Scalar

Units: None

Description: Number of segments

Information: This parameter determines the number of columns in the Segment Outflow table. The travel time through a segment should be approximately equal to the timestep size. An estimate is to divide the reach length by the product of the wave celerity and timestep size. In the equations below, the number of segments is represented by the variable n.

I/O: Required input

Links: Not linkable

Outflow by Segment

Type: Agg Series

Units: FLOW

Description: Segment outflow. The segments are numbered upstream to downstream. The Outflow to one segment is the inflow to the next segment.

Information: The outflow from the reach is the outflow from the last segment. The columns in this slot will be resized to the number of segments input by the user, and the number of rows will be the number of timesteps in the run. At the beginning of the run, if the initial timestep Outflow by Segment is not known, the Outflow by Segment is set to the Reach Inflow or Outflow, if known.

Information: Input at Initial timestep, Output at other timesteps

I/O: Output only

Links: Not linkable

Storage by Segment

Type: Agg Series

Units: Volume

Description: Segment storage. The segments are numbered upstream to downstream, left to right.

Information: The columns in this table will be resized to the number of segments input by the user, and the number of rows will be the number of timesteps in the run.

I/O: Output only

Links: Not linkable

Storage Outflow Table

Type: Table

Units: Volume vs Flow

Description: The table relating Storage in the entire reach to the Outflow.

Information: The data must be monotonically increasing and cover the entire range of storage and flow values expected.

I/O: Input only

Links: Not Linkable

Storage Outflow Indication Table

Type: Table

Units: Volume vs Flow vs Flow

Description: This generated table repeats the Storage Outflow Table and then shows a third column for the Indication variable.

Information: This table is generated at the beginning of run by looking up each Storage and Outflow on the Storage Outflow Table. These become the first and second columns. The third column, the Indication, is computed by looking up each row’s Storage and Outflow and then computing the value.

Information: Thus, the Indication is for a single segment. All segments are assumed to be the same. In addition, the timestep length is assumed to be constant.

I/O: Output only. This table is read only.

Links: Not Linkable

Method Details

First, the method checks the following.

1. The current timestep’s inflow is checked. It should be known or the dispatch method would not have been called.

2. If the previous Inflow is not known, the method exits and waits.

3. The Outflow by Segment from the previous timestep is checked for validity. If they are all valid from previous solutions, they are used directly and the method continues. If any of the Outflow by Segment are not valid, the following checks are made:

a. If the Outflow is not known and the last Outflow by Segment is known, then Outflow is set to that value. All other Outflow by Segments are also set to that value.

b. Else, if the Outflow is not known, Outflow and each Outflow by Segment is set equal to the Inflow and the routing method exits. This scenario can occur the first time the reach dispatches. This situation is used when you would like the initial Outflow = Inflow.

c. If the Outflow is known (input or set by a rule), each Outflow by Segment is set equal to the Outflow and the method exits. This scenario can occur the first time the reach dispatches and achieves the need where initial Outflow is specified.

4. If the previous Storage values for each segment are not known, the method computes the previous Storage from the Storage Outflow Table.

5. Next, the method sets up arrays of the variables I, S, and O with the known information. The arrays will have 2 rows (timesteps) and n columns (segments).

Note: I(t, 1) = Inflow. Table 23.2 shows the array with the variables. Those next to each other are set to the same value, for example O(t-1,2) = I(t-1,3).

Timestep | Reach | Segment 1 | Segment 2 | Segment3 | Reach | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|

t-1 | Inflow(t-1) | I(t-1,1) | S(t-1,1) | O(t-1,1) | I(t-1,2) | S(t-1,2) | O(t-1,2) | I(t-1,3) | S(t-1,3) | O(t-1,3) | Outflow(t-1) |

t | Inflow(t) | I(t,1) | S(t,1) | O(t,1) | I(t,2) | S(t,2) | O(t,2) | I(t,3) | S(t,3) | O(t,3) | Outflow(t) |

6. Next, loop over each segment and compute the outflow and storage for each segment upstream to downstream:

For (j=1 to Number of Segments)

Compute the StorOutIndication variable.

If StorOutIndication is less than zero, reset it to zero.

Look up the StorOutIndication on the Storage Outflow Indication Table to find the Storage and Outflow.

Record the values found as S(t,j) and O(t,j).

Set the inflow value for the next segment, I(t,j+1) = O(t,j)

End For

7. Set the slots Storage by Segment[t,j], Outflow by Segment[t,j] to the values stored in the arrays.

8. Execute Reach Bank Storage and Reach GainLoss method using the routed flow (Outflow in the last segment)

9. Set the Reach Outflow equal to the last segment’s outflow plus Bank Storage Return flow plus Total Gain Loss.

10. Execute the selected Outflow Adjustment method and reset Outflow if necessary

11. Return to the Solve Storage Routing Outflow dispatch method.

Routing Parameters

This method category is dependent upon the selection of Muskingum outing in the Routing category. It enables the user to specify either the Muskingum K and X values or the C0, C1 and C2 coefficients. There is also the option of providing this data as a times series.

None

This is the default method. It performs no calculations. An error is posted in the beginning of the run if this method is selected.

Input K and X Values

This method is used to specify constant Muskingum K and X values.

Slots Specific to This Method

MuskingumCoefficientK

Type: Scalar Slot

Units: TIME

Description: lag time of the centroid of a flood wave

Information:

I/O: Required input

Links: Not linkable

MuskingumCoefficientX

Type: Scalar Slot

Units: NONE

Description: attenuation factor

Information:

I/O: Required input

Links: Not linkable

The Muskingum Coefficient K and Muskingum Coefficient X are used to calculated the C0, C1 and C2 coefficients by the following equations:

where t is the simulation timestep, K[Time] and X[no units] are the Muskingum coefficients.

Input Coefficients

This method is used to input the characteristic Muskingum coefficients directly. The coefficients are not allowed to vary with time.

Slots Specific to This Method

C0 C1 C2 Coefficients

Type: Table

Units: NOUNITS

Description: a table containing the three characteristic Muskingum coefficients

Information: A value for each coefficient is given in the first three columns of the table.

I/O: Required input

Links: Not linkable

The values in the C0, C1, C2 Coefficients slot are used directly in the Muskingum routing calculations.

Input Time Series K and X

This method is used to specify time variable data for K and X.

Slots Specific to This Method

Muskingum K Time Series

Type: Series

Units: TIME

Description: lag time of the centroid of a flood wave

Information:

I/O: Required input

Links: Not linkable

Muskingum X Time Series

Type: Series

Units: NONE

Description: attenuation factor

Information:

I/O: Required input

Links: Not linkable

The K value and X value are used to calculate the C0, C1, C2 coefficients by the following equations:

where t is the simulation timestep, K[Time] and X[no units] are the Muskingum coefficients.

Input Time Series Coefficients

This method is used to specify the characteristic Muskingum coefficients as a time series.

Slots Specific to This Method

C0 Time Series

Type: Series

Units: NOUNITS

Description: a time series range of C0 values

Information:

I/O: Required input

Links: Not linkable

C1 Time Series

Type: Series

Units: NOUNITS

Description: a time series range of C1 values

Information:

I/O: Required input

Links: Not linkable

C2 Time Series

Type: Series

Units: NOUNITS

Description: a time series range of C2 values

Information:

I/O: Required input

Links: Not linkable

The C0, C1, C2 values are used directly in the Muskingum routing calculations.

Local Inflow and Solution Direction

The Local Inflow and Solution Direction methods determine how the Local Inflow is calculated. This method category is available for all routing methods except Storage Routing and Variable Storage Routing. This category can also affect how the simulation dispatches (the solution direction). The user can limit what dispatch methods are available.

No Local Inflow, Solve Inflow or Outflow

This method is the default for the category, and should be selected when modeling of local inflow is not desired and the model should be able to solve for either inflow or outflow. There are no slots specifically associated with this method.

Specify Local Inflow, Solve Inflow or Outflow

This method treats Local Inflow as an optional input. It is not available for the Storage Routing or Variable Storage Routing methods.

When this method is selected, the Generate Local Inflows category becomes visible. Within this category, methods are available to generate the Local Inflow.

Slots Specific to This Method

Local Inflow

Type: Series

Units: FLOW

Description: local inflow into the reach

Information: Local Inflow is added to Inflow then the resulting flow is routed. Local Inflow is not included in the calculation of Available for Diversion.

I/O: Optional; if this slot is not linked and not input, it is set to zero.

Links: May be linked to the Outflow slot on any object, or an Expression Slot or Series Slot on a Data Object.

Local Inflow Adjust

Type: Series

Units: FLOW

Description: adjustment made to the local inflow

Information: Only used with the No Routing method. The functionality of this slot is discussed in the No Routing dispatch methods.

I/O: Output only

Links: Not linkable

Solve Inflow, Outflow or Local Inflow

This method is only available for the No Routing method, and allows local inflow to be a third variable in the Routing method. This method changes the dispatch conditions for the No Routing method so that two of the following parameters; Inflow, Outflow and Local Inflow must be known to solve for the third.

Slots Specific to This Method

Local Inflow

Type: Series

Units: FLOW

Description: local inflow into the reach

Information:

I/O: Optional; if this slot is not input, it will be solved for when both Inflow and Outflow are known. If it is input, when either Inflow or Outflow are known, the other will be solved for.

Links: May be linked to the Outflow slot on any object, or an Expression Slot or Series Slot on a Data Object.

Local Inflow Adjust

Type: Series

Units: FLOW

Description: adjustment made to the local inflow

Information: Only used with the No Routing method when Outflow or Local Inflow are solved for. The functionality of this slot is discussed in the No Routing dispatch methods.

I/O: Optional

Links: Not linkable

Contingent Local Inflow or Solve Outflow

This method is only available for the No Routing method, and allows local inflow to be a third variable in the Routing method when inflow and outflow are both known. This method changes the dispatch conditions for the No Routing method, so that either Inflow and Outflow must be known to solve for Local Inflow, or Inflow must be known to solve for the Outflow (and Local Inflow is assumed to be zero). This method is designed to allow for the use of non-continuous gaged data for reconciliation when it is available. It may be used by supplying Inflow for all timesteps, and supplying gage data at an object below the reach when it is available as outflow, and leaving the unknown data as NaN.

Slots Specific to This Method

Local Inflow

Type: Series

Units: FLOW

Description: local inflow into the reach

Information:

I/O: Optional; if this slot is not input but inflow and outflow are known, it will be solved for. If outflow is not known, the reach will solve for outflow given inflow assuming local inflow is zero. Or, the slot can be input and the reach will solve for outflow given inflow and local inflow.

Links: May be linked to the Outflow slot on any object, or a Series Slot on a Data Object.

Local Inflow Adjust

Type: Series

Units: FLOW

Description: adjustment made to the local inflow

Information: This slot is only used with the No Routing method.

I/O: Optional

Links: Not linkable

Solve Local Inflow or Outflow

This method is only available for the No Routing method, and allows local inflow to be a third variable in the Routing method when inflow and outflow are both known. This method changes the dispatch conditions for the No Routing method, so that either Inflow and Outflow must be known to solve for Local Inflow, or Inflow and Local Inflow must be known to solve for the Outflow.

Slots Specific to This Method

Local Inflow

Type: Series

Units: FLOW

Description: local inflow into the reach

Information:

I/O: Optional; if this slot is not specified but inflow and outflow are known, it will be solved for. Or, the slot can be specified and the reach will solve for outflow given inflow and local inflow.

Links: May be linked to the Outflow slot on any object, or a Series Slot on a Data Object.

Local Inflow Adjust

Type: Series

Units: FLOW

Description: adjustment made to the local inflow

Information: This slot is only used with the No Routing method.

I/O: Optional

Links: Not linkable

Specify Local Inflow, Solve Outflow

This method is available for the No Routing and Time Lag routing methods, and allows Local Inflow to be a second variable in the Routing method when Inflow is known. This method changes the available dispatch conditions. For the No Routing method, the available dispatch method is solveNROutflow. For Time Lag routing, the available dispatch method is solveTLOutflowDSOnly.

When this method is selected, the Generate Local Inflows category becomes visible. Within this category, methods are available to generate the Local Inflow.

Slots Specific to This Method

Local Inflow

Type: Series

Units: FLOW

Description: local inflow into the reach

Information:

I/O: Optional; if this slot is not input, it will default to zero. If it is input the reach will solve for outflow given inflow and Local Inflow.

Links: May be linked to the Outflow slot on any object, or an Expression Slot or Series Slot on a Data Object.

Local Inflow Adjust

Type: Series

Units: FLOW

Description: adjustment made to the local inflow

Information: This slot is only used with the No Routing method.

I/O: Optional

Links: Not linkable

No Local Inflow, Solve Outflow

This method is available for the No Routing and Time Lag routing methods. This method changes the available dispatch conditions. For the No Routing method, the available dispatch method is solveNROutflow. For Time Lag routing, the available dispatch method is solveTLOutflowDSOnly.

Slots Specific to This Method: None

Local Inflow MODFLOW Return

Note: RiverWare’s connection with MODFLOW is currently not functional. This method has been disabled and cannot be selected. An error will be posted at model load if this method was previously selected. Contact CADSWES for help.

This method is available when the Link to MODFLOW method is selected from the MODFLOW Link Category Reach (see “Link to MODFLOW”). The Local Inflow MODFLOW Return is added to the flow equations in the No Routing, Time Lag, Variable Time Lag, Muskingum-Cunge, and Muskingum-Cunge Improved methods. This method should be used in conjunction with the computational subbasin MODFLOW link methods; see “Computational Subbasin Functionality Guide” for details.

Slots Specific to This Method

Local Inflow MODFLOW Return

Type: Series Slot

Units: flow

Description: Surface water return flow entering the Reach. This inflow is from a surface water body represented in MODFLOW.

Information: Local Inflow comes in at the top of the Reach, and is added to the inflow before it is routed.

I/O: Output only

Links: Linkable

A return flow from a surface water body (e.g. riverside drain) represented in MODFLOW to a RiverWare Reach may be desired. When the Local Inflow MODFLOW Return method and the Link to MODFLOW method are selected (see “Link to MODFLOW”), a surface water return flow may be transferred from MODFLOW to the RiverWare Local Inflow MODFLOW Return slot through the computational subbasin framework. The MODFLOW segment source for the return flow may be specified on the computational subbasin, “Reach Gain Loss”.

Generate Local Inflows

This category contains methods that forecast the Local Inflow based on known inflow values. The user inputs the historical inflows to the reach and the methods adjust those values to represent a forecast. The methods in this category execute at the beginning of each timestep. This category is dependent on having either the Specify Local Inflow, Solve Inflow or Outflow; or the Specify Local Inflow, Solve Outflow method selected.

None

This method is the default for this category but does nothing.

Geometric Recession

On each timestep in the forecast period, this method will adjust the inflow hydrographs, input in the Deterministic Local Inflow slot, and write the results to the Local Inflow series slot.

Slots Specific to This Method

Deterministic Local Inflow

Type: Series

Units: FLOW

Description: This slots holds a timeseries of the actual Local Inflows to the reach. These values are then adjusted by the forecast method and set on the Local Inflow slot.

Information: At the end of the run, the Local Inflow slot will be identical to this slot.

I/O: Input only

Links: Not linkable

Period of Perfect Knowledge

Type: Scalar

Units: FLOW

Description: Number of timesteps for which the forecast will equal the Deterministic Local Inflow, i.e., the forecast is known with complete certainty.

Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.

I/O: Input only

Type: Not linkable

Recession Factor

Type: Scalar

Units: NONE

Description: A decimal value that is multiplied by the previous Local Inflow to determine the current value after the Period of Perfect Knowledge.

Information:

I/O: Input only

Links: Not linkable

The Deterministic Local Inflow slot values are input for each timestep on a reach. At the beginning of each timestep, the Geometric Recession method is selected. For each forecast timestep within the period of perfect knowledge, the Local Inflow is set to the Deterministic Local Inflow value. For each forecast timestep after the period of perfect knowledge, the Local Inflow is set by multiplying the value of the Local Inflow from the previous timestep by the constant recession factor.

A value for the Deterministic Local Inflow slot must be known at every timestep during the run. If forecasted Local Inflow values are desired past the end of the run, there must also be values in the Deterministic Local Inflow slot at timesteps past the end of the run. If values for Deterministic Local Inflow are not entered past the end of the run, the Local Inflows for these timesteps are assumed to be zero.

Exponential Recession

On each timestep in the forecast period, this method will adjust the inflow hydrographs, input in the Deterministic Local Inflow slot, and write the results to the Local Inflow series slot. The slot values of the Local Inflow will be the same as those in the Deterministic Local Inflow slot during the period of perfect knowledge. After the period of perfect knowledge, the Local Inflow slot values are recessed by a recession equation using the Deterministic Local Inflow slot value on the last day of perfect knowledge.

Slots Specific to This Method

Deterministic Local Inflow

Type: Series

Units: FLOW

Description: This slots holds a timeseries of the actual Local Inflows to the reach. These values are then adjusted by the forecast method and set on the Local Inflow slot.

Information: At the end of the run, the Local Inflow slot will be identical to this slot.

I/O: Input only

Links: Not linkable

Forecast Period

Type: Table

Units: NONE

Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.

Information:

I/O: Input only

Links: Not linkable

Period of Perfect Knowledge

Type: Scalar

Units: FLOW

Description: Number of timesteps for which the forecast will equal the Deterministic Local Inflow, i.e., the forecast is known with complete certainty.

Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.

I/O: Input only

Links: Not linkable

Minimum Forecasted Flow

Type: Series

Units: FLOW

Description: The minimum forecasted flow.

Information: If the computed value for Local Inflow is less than the Minimum Forecasted Flow, it is set to the Minimum Forecasted Flow.

I/O: Input only

Links: Not linkable

Low Flow Threshold

Type: Scalar

Units: FLOW

Description: The flow rate that dictates whether to use the Low Flow Recession Coefficient or the High Flow Recession Coefficient.

Information:

I/O: Input only

Links: Not linkable

Low Flow Recession Coefficient

Type: Scalar

Units: NONE

Description: The recession coefficient used when the Deterministic Local Inflow (at the end of the Period of Perfect Knowledge) is below or equal to the Low Flow Threshold.

Information:

I/O: Input only

Links: Not linkable

High Flow Recession Coefficient

Type: Scalar

Units: NONE

Description: The recession coefficient used when the Deterministic Local Inflow (at the end of the Period of Perfect Knowledge) is above the Low Flow Threshold.

Information:

I/O: Input only

Links: Not linkable

The Deterministic Local Inflow slot values are input for each timestep on a reach. At the beginning of each timestep, the Exponential Recession method is selected. For each forecast timestep within the period of perfect knowledge, the Local Inflow is set to the Deterministic Local Inflow value. For each forecast timestep after the period of perfect knowledge, the Local Inflow slot is set as follows.

where Deterministic Local Inflow is the value in the Deterministic Local Inflow slot at the end of the period of perfect knowledge, C is the recession coefficient, t is the elapsed time of the forecast period, and T is the total time from the end of the period of perfect knowledge to the end of the forecast period.

If Deterministic Local Inflow at the end of the period of perfect knowledge is negative, the Local Inflow at that timestep is exactly equal to the Deterministic Local Inflow. However, the Deterministic Local Inflow used in the recession equation is the last positive value for Deterministic Local Inflow. In the event that there is not a positive value for Deterministic Local Inflow, RiverWare issues a warning, and all values for Local Inflow within the forecast period will be set to the Minimum Forecasted Flow.

A value for the Deterministic Local Inflow slot must be known at every timestep during the run. If forecasted Local Inflow values are desired past the end of the run, there must also be values in the Deterministic Local Inflow slot at timesteps past the end of the run. If values for Deterministic Local Inflow are not entered past the end of the run, the Local Inflows for these timesteps are assumed to be zero.

Coefficient and Exponent

On each timestep in the forecast period, this method will adjust the inflow hydrographs, input in the Deterministic Local Inflow slot, and write the results to the Local Inflow series slot.

Slots Specific to This Method

Forecast Inflow Parameters

Type: Table

Units: None

Description: Table slot that contains four parameters used in the forecast inflow method. The first row contains the values for the increasing hydrograph, the second row contains values for the decreasing hydrograph. The first column contains coefficients, the second column contains exponents.

Information: 2X2 table

I/O: Input only

Links: not linkable

Deterministic Local Inflow

Type: Series

Units: FLOW

Description: This slots holds a timeseries of the actual Local Inflows to the reach. These values are then adjusted by the forecast method and set on the Local Inflow slot.

Information: At the end of the run, the Local Inflow slot will be identical to this slot. The logic below uses the Lower Bound on the Deterministic Local Inflow slot as a minimum value. This is specified slot configuration (View, then Configure menu). Consider setting this value as needed.

I/O: Input Only

Links: not linkable

Forecast Period

Type: Table

Units: None

Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.

Information:

I/O: Input only

Links: not linkable

The method works as follows: on the current timestep, the Local Inflow is set equal to the Deterministic Local Inflow. The method then loops through the remaining timesteps in the forecast period and sets the Local Inflow using the following formula starting at i = 1.

where KIi is the Deterministic Local Inflow at timestep i, LIi is the Local Inflow at timestep i, C is a coefficient and E is an exponent. The counter i represents the timestep beyond the current timestep. So, i = 1 is the current timestep + 1, i = 2 is the current timestep + 2, etc. The coefficient, C, and exponent, E, are the values in the Forecast Inflow Parameters slot.

Note: In the preceding formulas, there is a mathematical problem if KIi-1 is zero or very small. In this situation, the Local Inflow is set to the known inflow at the appropriate index. This allows the simulation to continue with reasonable values for the local inflow. The logic uses the Lower Bound on the Deterministic Local Inflow slot as the minimum value. This is specified on the slot configuration (select View, then Configure). If this value is specified it is checked, otherwise only 0.0 is used in the check. The logic is as follows.

If (Deterministic Local Inflow(i-1) = 0.0 OR

ABS(Deterministic Local Inflow(i-1)) < ABS(Lower Bound) ) )

Local Inflow(i) = Deterministic Local Inflow(i)

A value for the Deterministic Local Inflow slot must be known at every timestep during the run. If forecasted Local Inflow values are desired past the end of the run, there must also be values in the Deterministic Local Inflow slot at timesteps past the end of the run. If values for Deterministic Local Inflow are not entered past the end of the run, the Local Inflows for these timesteps are assumed to be zero.

Because this method is executed on each timestep and sets Local Inflow values at future timesteps, the Local Inflow slot at presimulation timesteps never get set. For lagged reaches, this can be a problem. To solve this, the user must input the correct values in the Local Inflow slot for the necessary presimulation timesteps.

Depth to Flow

This category is only available for the hydraulic routing methods: Kinematic, Muskingum-Cunge, Muskingum-Cunge Improved, and MacCormack routing. The methods in this category control how flow is translated into velocity, depth, area, top width and celerity for use in the Routing methods.

None

This method is the default for this category. It will result in an error if it is selected and a run is started.

Manning Trapezoid

This method models the channel geometry as a trapezoid.

Slots Specific to This Method

Bottom Width

Type: Scalar

Units: LENGTH

Description: width of the bottom of the channel

Information:

I/O: Required input

Links: Not linkable

Energy Slope

Type: Scalar

Units: NO UNITS

Description: Slope of the reach from upstream to downstream (vertical/horizontal)

Information: Must be positive

I/O: Required input

Links: Not linkable

Mannings Roughness n

Type: Scalar

Units: NO UNITS

Description: Manning’s roughness n, empirical representation of the roughness of the channel

Information:

I/O: Required input

Links: Not linkable

Side Slope

Type: Scalar

Units: NO UNITS

Description: Slope of the sides of the channel, S:1 (horizontal:vertical)

Information:

I/O: Required input

Links: Not linkable

This method uses Newtons method to find a depth corresponding to a given flow. See any open channel flow book for the equations relating flow and depth to the rest of the parameters for a trapezoidal channel. This method does not produce any output directly, rather the Routing method sets some output slots based on the results of this method.

Manning Wide Rectangle

This method models the channel as a wide rectangle.

Slots Specific to This Method

Bottom Width

Type: Scalar

Units: LENGTH

Description: width of the bottom of the channel

Information:

I/O: Required input

Links: Not linkable

Energy Slope

Type: Scalar

Units: NO UNITS

Description: Slope of the reach from upstream to downstream (vertical/horizontal)

Information: Must be positive

I/O: Required input

Links: Not linkable

Mannings Roughness n

Type: Scalar

Units: NO UNITS

Description: Manning’s roughness n, empirical representation of the roughness of the channel

Information:

I/O: Required input

Links: Not linkable

This is the simplest geometry to model. This method assumes that channel depth is negligible relative to channel width, and thus top width and the wetted perimeter are assumed to be equal to the bottom width. This method does not produce any output directly, rather the Routing method sets some output slots based on the flow parameter values calculated by this method.

If flow is zero, then all flow parameter values are zero. Otherwise the following values are calculated:

First the flow parameters and are set (see, for example, Chow et. al., 1988^{4}, p. 283).

where n is the Manning’s roughness coefficient, P is the wetted perimeter (here equal to the bottom width), and S0 is the energy slope.

where Q is the flow value passed in from the Routing method calling this method.

Power Function

This method models the channel geometry as separate functions relating flow to area, area to depth, and flow to top width. Velocity and celerity are derived from the values of these functions.

Note: The exponential calculations are carried out in RiverWare internal units. Flow is in cms, lengths are in m, areas are in m2, and velocity is in m/s. The values set in the Beta parameter slots, as set by the user, must be consistent with these units.

Slots Specific to This Method

Alpha for Area to Flow

Type: Scalar

Units: NO UNITS

Description: coefficient in area/flow conversion

Information:

I/O: Required input

Links: Not linkable

Alpha for Depth to Area

Type: Scalar

Units: NO UNITS

Description: coefficient in depth/area conversion

Information:

I/O: Required input

Links: Not linkable

Alpha for Top Width to Flow

Type: Scalar

Units: NO UNITS

Description: coefficient in topwidth/flow conversion

Information:

I/O: Required input

Links: Not linkable

Beta for Area to Flow

Type: Scalar

Units: NO UNITS

Description: exponent in area/flow conversion

Information: The value in this slot must correspond to flow in cms and area in m2.

I/O: Required input

Links: Not linkable

Beta for Depth to Area

Type: Scalar

Units: NO UNITS

Description: exponent in depth/area conversion

Information: The value in this slot must correspond to flow in area in m2 and depth in m.

I/O: Required input

Links: Not linkable

Beta for Top Width to Flow

Type: Scalar

Units: NO UNITS

Description: exponent in topwidth/flow conversion

Information: The value in this slot must correspond to flow in cms and TopWidth in m.

I/O: Required input

Links: Not linkable

The equations involved in this method are as follows:

All of the calculations are carried out in RiverWare internal units (SI units), and parameter values (with no units) should be set accordingly.

Stage

This category controls the calculation of river stage or elevation. Depending on the method selected, the upstream, downstream and/or average stage may be calculated.

Note: If stage values are linked or used together with other elevation values (as in surface water / ground water interfacing applications), RiverWare assumes that they all share the same datum.

None

This method is the default for this category. It performs no calculations. There are no slots specifically associated with this method.

Inflow Stage Table Look Up

This method finds the stage in the river from a table interpolation using the inflow. The user may select this method if Head Based Diversion is selected in the Diversion From Reach category. This method is only available when the Reach solves in the downstream direction only. As a result, for No Routing and Time Lag, this method is available only if the Specify Local Inflow, Solve Outflow or No Local Inflow, Solve Outflow method is selected. For the other Routing methods, the method is always available as these only solve downstream. See the following topics for details:

Slots Specific to This Method

Inflow Stage

Type: Series

Units: LENGTH

Description: Stage of reach

Information:

I/O: Output only

Links: May be linked to the Tailwater Base Elevation of a reservoir. In this case, the Reach computes the Inflow Stage which then propagates to the linked slot.

Inflow Stage Table

Type: Table

Units: FLOW versus LENGTH

Description: table to find reach stage from inflow

Information: In reality, this should represent the average stage in the reach

I/O: Required input

Links: Not linkable

Stage

Type: Series

Units: Length

Description: the average reach water surface elevation

Information: Values in this slot are output only, except in the case of a time lag in the Reach/Drain Elev Interp method of the Drain Water Surface Elevation method category. This requires that values for Stage are input for pre-dispatching timesteps needed by the time lag.

I/O: Output only

Links: Not linkable

Inflow Stage is calculated by using the Inflow with the Inflow Stage Table. The Stage slot, which is used in certain seepage calculations, is set equal to the Inflow Stage.

Stage Table Look Up

This method finds the stage in the river from a table interpolation. The user must select this method if Head Based Diversion is selected in the Diversion From Reach category.

Slots Specific to This Method

Inflow Stage

Type: Series

Units: LENGTH

Description: Stage of reach at upstream end

Information:

I/O: Output only

Links: May be linked to the Tailwater Base Elevation of a reservoir. In this case, the Reach computes the Inflow Stage which then propagates to the linked slot.

Inflow Stage Table

Type: Table

Units: FLOW versus LENGTH

Description: table to find reach stage from flow at upstream end of reach

Information:

I/O: Required input

Links: Not linkable

Outflow Stage

Type: Series

Units: LENGTH

Description: Stage of reach at downstream end

Information:

I/O: Output only

Links: May be linked to the Pool Elevation of a reservoir. In this case, the linked slot should compute the value which will then propagate to the Outflow Stage, for use in the Stage computation.

Outflow Stage Table

Type: Table

Units: FLOW versus LENGTH

Description: table to find reach stage from flow at downstream end of reach

Information:

I/O: Required input

Links: Not linkable

Stage

Type: Series

Units: Length

Description: the average reach water surface elevation

Information: Values in this slot are output only, except in the case of a time lag in the Reach/Drain Elev Interp method of the Drain Water Surface Elevation method category. This requires that values for Stage are input for pre-dispatching timesteps needed by the time lag.

I/O: Output only

Links: Not linkable

Inflow Stage and Outflow Stage are calculated by using the Inflow with the Inflow Stage Table and the Outflow with the Outflow Stage Table, respectively. The Stage slot, which is used in certain seepage calculations, is set equal to an average value whenever possible. If inflow and outflow stage values are known for the current time step, the stage is set as the average of these two values. If one of the values is not known for the current time step, a value is sought at the previous time step. The stage is then set as the average of a current time step stage value (either inflow or outflow) and the previous time step stage value (either inflow or outflow, corresponding to whichever is not available at the current time step). If a value from the previous time step is sought for but is not available--at the first time step of a model run, for example--no averaging is done. The stage slot value is set equal to whichever value is known at the current time step.

Note: When the reach is dispatched with solveNRInflow, solveNROutflow, or solveOutflow, the Stage Table Look Up user method is solved twice: once near the very beginning of dispatch and once near the very end. When the object dispatches the first time (for a given time step), the following process occurs.

1. The stage is calculated averaging a current flow value and a previous flow value.

2. Other user methods are solved, including seepage methods that may depend on the stage value.

3. The flow at the other end of the reach is determined (inflow for solveNRInflow or outflow for solveNROutflow and solveOutflow).

4. The stage is recalculated averaging available values for the current time step for both inflow and outflow.

Under this arrangement, the intermediate user methods will use an appropriately averaged value of stage for solution, but the final value in the stage slot is unlikely to represent the value used by those user methods. Also, any subsequent re-dispatch of the objects will cause Stage Table Look Up to average existing current inflow and outflow values at the beginning of dispatch. That value still may not equal the value found in the stage slot at the end of dispatch.

Note: The stage method Inflow Stage Table Look Up does not have this same dispatching pattern and should be considered if you wish to avoid this. See “Inflow Stage Table Look Up” for details.

Double solution of the Stage Table Look Up user method as described above does not occur in solveNRLocalInflow, solveTLInflow, solveTLOutflow, solveTLInflowOutflow, solveTLOutflowDSOnly, or solveStorTimeOutflow dispatch methods.

Input Stage

The Input Stage Method all0ows the user to input the average water surface elevation of the Reach for use in certain Seepage calculations.

Slots Specific to the Method

Stage

Type: Series

Units: Length

Description: The average reach water surface elevation

Information:

I/O: Required input

Links: Not linkable

Gage Based Stage

The Gage Based Stage method is used when a reach must be discretized, as may be the case with Gradient Seepage Methods. When gages are not available on the Reach element more distant gages must be used to determine the stage.

Slots Specific to This Method

Stage

Type: Series

Units: Length

Description: The average reach water surface elevation

Information:

I/O: Output only

Links: Not linkable

Upstream Gage Elev

Type: Series

Units: Length

Description: The elevation of the upstream gauge

Information: This is the elevation of a gauge which is not immediately adjacent to the Reach. It is some distance upstream.

I/O: Required input

Links: Not linkable

Downstream Gage Elev

Type: Series

Units: Length

Description: The elevation of the downstream gauge

Information: This is the elevation of a gauge which is not immediately adjacent to the Reach. It is some distance downstream.

I/O: Required input

Links: Not linkable

Distance Between Gages

Type: Table

Units: length

Description: The horizontal distance between upstream and downstream gauges

Information:

I/O: Required input

Links: Not linkable

Downstream Distance to Reach

Type: Table

Units: length

Description: The horizontal distance from the upstream gauge to the point on the Reach for which elevation is desired

Information:

I/O: Required input

Links: Not linkable

The difference between the upstream and downstream gage readings (the rise) divided by the distance between the gages (the run) provides the Reach gradient. When this is multiplied by the distance downstream from the upstream gage to the Reach element, it provides the change in elevation. This is subtracted from the upstream elevation for the Avg Stage.

Stage Adjustment

This category is only available when the Inflow Stage Table Look Up or Stage Table Lookup method is selected from the Stage category.

None

This method is the default for this category. It performs no calculations. There are no slots specifically associated with this method.

Stage Coefficient Weighting

This method adjusts the current stage to be a weighted sum of the previously computed current stage and previous timesteps’ stage values.

Slots Specific to This Method

Stage Weighting Coefficients

Type: Table

Units: None

Description: Coefficients used to weight previous temporary stage.

Information: The values in the table should sum to 1.0.

I/O: Required Input

Links: N/A

Stage Weighting Coefficients are defined in this table slot which contains a number of user-defined coefficients corresponding to the number of timesteps the user wants to include in the weighted sum. Previously computed Stage values are looked up for the current timestep and a number of previous timesteps, corresponding to the number of coefficients in the aforementioned table. Then, the adjusted Stage is computed as follows:

where the C0, C1,..., Cn are the Stage Weighting Coefficients.

If the Inflow Stage Table Look Up method is selected from Stage category, the tempStage(t) is the InflowStage(t).

If the Stage Table Look Up method is selected from Stage category, the tempStage(t) is the computed stage, which is typically the average of the InflowStage(t) and OutflowStage(t).

This method requires previous timestep values. At the start of the run (start to start+n), if these values are not available, the method will use only current timestep tempStage and assume coeffs are {1,...}. At timesteps after (start+n), if the previous values are invalid, a message will be posted and stop the run.

The default convergence on stage may be too loose for this method to work, depending on the magnitudes of stage values. The convergence percentage may have to be tightened from the default 0.01% to an order of magnitude less, 0.001%, or to an even more precise convergence percentage. Convergence is adjusted in the Configure menu as described “Configure Slot Dialog Functionality” in User Interface.

Volume

This category is only available for the Time Lag and Storage Routing methods.

None

This method is the default for this category. It performs no calculations. There are no slots specifically associated with this method.

Volume Table Lookup

This method finds the volume in the reach with a mass balance equation. An initial value for Reach Volume must be input by the user.

Slots Specific to This Method

Reach Volume

Type: Series

Units: VOLUME

Description: holds the volume of water in the reach at the current timestep

Note: Must be given a value at the initial timestep of the run in order to execute.

I/O: Output only

Links: Not linkable

The mass balance equation is as follows:

Apply Gain Loss

This method category controls how the (Variable) GainLoss Coeff is applied to find the Outflow. This category is only available for the Muskingum and Muskingum-Cunge routing methods.

Current Outflow

This method applies the (Variable) GainLoss Coeff to the total routed outflow, which is the way that the GainLoss Coeff is applied to most Routing methods. There are no slots specifically associated with this method.

The equation for the final outflow is as follows:

Previous Flow Average

This method applies the (Variable) GainLoss Coeff to the average of the previous timestep’s inflow and outflow. This is done in order to allow the Muskingum-Cunge and the Muskingum method to use the same equations for loss.

There are no slots specifically associated with this method.

The equation for the final outflow is as follows:

Gain Loss

This method category is used to model gains and/or losses in the Reach. It is available, as well as all the user methods contained within it, for all Routing methods.

Note: The equations given for each Gain Loss method may be slightly modified if the Previous Flow Average method is selected in the Apply Gain Loss category.

None

This is the default method. No calculations are performed and there are no slots associated with this method. It should be used if the user does not wish to model gains or losses.

Constant Gain Loss

Used when the gain or loss parameters do not vary with respect to time.

Slots Specific to This Method

GainLoss

Type: Table

Units: FLOW

Description: represents a given amount of flow that is gained or lost regardless of the flow rate in the reach

Information: A positive number represents a gain while a negative number represents a loss.

I/O: Optional; defaults to 0.0 if not input.

Links: Not linkable

GainLoss Coeff

Type: Table

Units: DECIMAL

Description: represents a given percentage of flow in the reach which is gained or lost

Information: Must be a number between -1 and 1. For example, a value of -0.1 means that 10% of the flow in the reach is lost. If solving upstream, must be greater than -1.

I/O: Optional; defaults to 0.0 if not input.

Links: Not linkable

Total GainLoss

Type: Series

Units: FLOW

Description: represents the total amount of flow that is gained or lost in a reach for a given timestep

Information: Applied to the bottom of the reach (it is added to the outflow value calculated from the Routing method).

I/O: Output only

Links: Not linkable

Variable Gain Loss

Used when a time series range of gain or loss parameters is required.

Slots Specific to This Method

Variable GainLoss

Type: Series

Units: FLOW

Description: represents a given amount of flow that is gained or lost regardless of the flow rate in the reach

Information: A positive number represents a gain while a negative number represents a loss.

I/O: Optional; defeats to 0.0 if not input.

Links: Not linkable

Variable GainLoss Coeff

Type: Series

Units: DECIMAL

Description: represents a given percentage of flow in the reach which is gained or lost

Information: Must be a number between -1 and 1. For example, a value of -0.1 means that 10% of the flow in the reach is lost. If solving upstream, must be greater than -1.

I/O: Optional; defaults to 0.0 if not input.

Links: Not linkable

Total GainLoss

Type: Series

Units: FLOW

Description: represents the total amount of flow that is gained or lost in a reach for a given timestep

Information: Applied to the bottom of the reach (it is added to the outflow value calculated from the Routing method).

I/O: Output only

Links: Not linkable

Seasonal Gain Loss Flow Table

Used to calculate the gain/loss parameters based on season and a range of flow rates.

Tip: The “Periodic and Flow based Gain Loss” performs similar computations to this method, but is easier to setup. Consider using that method instead!

Slots Specific to This Method

Date Range

Type: Table

Units: NO UNITS

Description: the actual days of the 366 day year that correspond to the Number of Seasons

Information: Each column of this table corresponds to a particular season and are labeled Season 1 - 12. The two rows labeled 0 and 1 respectively represent the beginning day and ending day of the season column. The allowable range for these inputs is 1 - 366. It is recommended to cover the entire year within the Number of Seasons columns quantified in that slot.

I/O: Required input

Links: Not linkable

Flow Range

Type: Table

Units: FLOW

Description: the ranges of flow rates corresponding to the Variable GainLoss Coeff Table and Variable GainLoss Table

Information: The number of flow ranges allowed in this table is currently limited to 10. The columns of this table represent, in ascending order, the maximum flow rate for a specific flow range starting with 0 as the base. These columns are labeled Flow Range 1 - 10. Therefore, the first column represents a range of flows from 0 to the value input by the user in the Flow Range 1 column. The last flow range entered by the user should be a flow rate greater than any anticipated for the simulation. Otherwise, a value of 0.0 will be used for flows outside of this range. It is not necessary to utilize all 10 columns of this table. Use only the columns needed to designate the desired flow ranges.

I/O: Required input

Links: Not linkable

Number of Season

Type: Scalar

Units: NO UNITS

Description: the number of seasons corresponding to the Variable GainLoss Coeff Table and Variable GainLoss Table

Information: The maximum number of seasons currently allowed in RiverWare is 12.

I/O: Required input

Links: Not linkable

Variable GainLoss

Type: Series

Units: FLOW

Description: represents a given amount of flow that is gained or lost regardless of the flow rate in the reach

Information: A positive number represents a gain while a negative number represents a loss.

I/O: Optional; if not input, it is obtained from the Variable GainLoss Table.

Links: Not linkable

Variable GainLoss Coeff

Type: Series

Units: DECIMAL

Description: represents a given percentage of flow in the reach which is gained or lost

Information: Must be a number between -1 and 1. For example, a value of -0.1 means that 10% of the flow in the reach is lost. If solving upstream, must be greater than -1.

I/O: Optional; if not input, it is obtained from the Variable GainLoss Coeff Table.

Links: Not linkable

Variable GainLoss Coeff Table

Type: Table

Units: TIME

Description: Variable GainLoss Coeff values for each specific Date Range and Flow Range

Information: The columns of the table correspond to the flow ranges defined in Flow Range, and the rows correspond to the seasons defined in Date Range.

I/O: Required input

Links: Not linkable

Variable GainLoss Table

Type: Table

Units: TIME

Description: Variable GainLoss values for each specific Date Range and Flow Range

Information: The columns of the table correspond to the flow ranges defined in Flow Range, and the rows correspond to the seasons defined in Date Range.

I/O: Required input

Links: Not linkable

Total GainLoss

Type: Series

Units: FLOW

Description: represents the total amount of flow that is gained or lost in a reach for a given timestep

Information: Applied to the bottom of the reach (it is added to the outflow value calculated from the Routing method).

I/O: Output only

Links: Not linkable

Interpolated Flow Gain Loss

This method is similar to the Seasonal Gain Loss Flow Table method except the data is based on the day of the year and the tables are interpolated to find values for gain-loss and the gain-loss coefficient.

The “Periodic and Flow based Gain Loss” performs similar computations to this method, but is easier to setup. Consider using that method instead!

Slots Specific to This Method

Interpolated GainLoss

Type: Series

Units: FLOW

Information: A positive number represents a gain while a negative number represents a loss. It is calculated by double interpolation of the Interpolated GainLoss Table

I/O: Output only

Links: Not linkable

Interpolated GainLoss Coeff

Type: Series

Units: FRACTION

Description: represents a given percentage of flow in the reach which is gained or lost

Information: Must be a number between -1 and 1. For example, a value of -0.1 means that 10% of the flow in the reach is lost. It is calculated by double interpolation of the Interpolated GainLoss Coeff Table.

I/O: Output only

Links: Not linkable

Interpolated GainLoss Coeff Table

Type: Table

Units: TIME VS. Flow VS. fraction

Description: A table relating the day of the year, flow rate, and the gain-loss coefficient

Information: Data must be entered in blocks of increasing flow for each given day for the interpolation method to work correctly. January 1 is represented by a 1, February 1 as 32, etc. Following is an example table.

Day of Year | Flow Rate | GainLoss Coeff |
---|---|---|

1 | 500 | .01 |

1 | 550 | .02 |

1 | 600 | .03 |

32 | 500 | .025 |

32 | 550 | .03 |

32 | 600 | .035 |

60 | 500 | .03 |

60 | 550 | .035 |

60 | 600 | .04 |

I/O: Required input

Links: Not linkable

Interpolated GainLoss Table

Type: Table

Units: Time vs. flow vs. flow

Description: a table relating the day of the year, the flow rate and the gain-loss value

Information: Data must be entered in blocks of increasing flow for each given day for the interpolation method to work correctly. January 1 is represented by a 1, February 1 as 32, etc. The table is set up in the same manner as the Interpolated GainLoss Coeff Table (shown above).

I/O: Required input

Links: Not linkable

Total GainLoss

Type: Series

Units: FLOW

I/O: Output only

Links: Not linkable

A 3D interpolation method is used to calculate a value for Interpolated GainLoss and Interpolated GainLoss Coeff using the Interpolated GainLoss Table and Interpolated GainLoss Coeff Table, respectively. Once these values are calculated Total GainLoss is set as follows:

Base Plus Fractional Loss

This method is used to model loss in a reach; it does not allow gain. Loss is calculated as base flow rate plus a proportion of the flow above the base. Loss is limited to be less than a maximum value. This method will be available for all Routing methods except Time Lag routing.

Slots Specific to This Method

Base Loss

Type: Periodic

Units: Time vs Flow

Description: Represents an amount of flow that is lost regardless of the flow rate in the reach. The method will limit the total loss to be less than or equal to the flow in the reach.

Information: A positive number represents a loss. A negative number results in an error.

I/O: Required Input

Links: Not linkable

Loss Fraction above Base

Type: Periodic

Units: Time vs Decimal

Description: This slot represents a fraction of the flow above the Base Loss that will be lost

Information: A positive number represents a loss; the value must be between 0 and 1 or an error is issued.

I/O: Required Input

Links: Not Linkable

Maximum Loss

Type: Scalar

Units: FLOW

Description: The maximum loss that can occur from the reach

Information: If not input, no maximum is used

I/O: Optional Input

Links: Not Linkable

Total GainLoss

Type: Series

Units: FLOW

Description: Represents the total amount of flow that is gained or lost in a reach for a given timestep

Information: A positive number represents a gain, a negative number represents a loss. The Total GainLoss is applied to the bottom of the reach (it is added to the outflow value calculated from the Routing method). In this method, a loss is represented by a negative number.

I/O: Output only

Links: Not linkable

Method Details

At the beginning of the method, the values for Base Loss and the Loss Fraction above Base are taken from the periodic slots and checked. As is typical with periodic slots, these slots can be configured to either lookup or interpolate. If either is invalid, the run aborts with an error. If the Base Loss is less than zero, the run aborts with an error. If the Loss Fraction above Base is less than 0 or greater than 1, the run aborts with an error.

On a reach, the Total GainLoss slot is used by other GainLoss methods. As a result, this method follows the same convention where a negative Total GainLoss represents a loss. Also, the flow used by the method is the flow in the reach after the routing has occurred. Thus, the Total GainLoss is the base loss plus the fractional loss associated with the flow above the base. Because the flow could be less than the base, the following formula is necessary to calculate the loss:

If Maximum Loss is NaN, then the Total GainLoss is set equal to the negative of the tempLoss value.

Otherwise, there is a valid Maximum Loss and the Total GainLoss is then set as follows:

Periodic Gain Loss

This method is used to model gain and/or loss in a reach. The gain and loss values are entered as periodic data for a given time range. Gains are entered as positive values and losses are entered as negative values. This method will be available for all Routing methods except Time Lag routing.

Slots Specific to This Method

Periodic GainLoss

Type: Periodic

Units: Time vs Flow

Description: Represents an amount of flow that is gained or lost regardless of the flow rate in the reach.

Information: A positive number represents a gain. A negative number results in a loss.

I/O: Required Input

Links: Not linkable

Total GainLoss

Type: Series

Units: FLOW

Description: Represents the total amount of flow that is gained or lost in a reach for a given timestep

Information: A positive number represents a gain, a negative number represents a loss. The Total GainLoss is applied to the bottom of the reach (it is added to the outflow value calculated from the Routing method). In this method, a loss is represented by a negative number.

I/O: Output only

Links: Not linkable

Method Details

At the beginning of the method, the value for Periodic GainLoss is taken from the periodic slot and checked. As is typical with periodic slots, this slot can be configured to either lookup or interpolate. If the value is invalid, the run aborts with an error.

This method follows the same convention as other GainLoss methods where a positive Total GainLoss represents a gain.

Periodic and Flow based Gain Loss

This method models Gain and Loss as a variable flow rate and fraction of the routed flow. Both the flow rate and the fraction are based on a date and flow rate, or could be specified by input or rules

Slots Specific to This Method

Periodic Gain Loss Table

Type: Periodic Slot with Numeric Header

Units: Header = Flow, Values = Flow

Description: The matrix that describes the amount of flow that should be gained or lost.

Information: This table has a “column map” which means that each column has an associated numerical value (with units) displayed as the column label. Columns are added and deleted from this table using the Column menu. User units, scale, type, and precision for the Column Map (i.e. the column heading values) are defined in the unit scheme for Flow unit types. Column map values are set from the Column, Set Column Value menu option. When a column value is changed, the columns will re-order to ensure that the column values are increasing left to right. The left-most set of values should represent the minimum flow in the reach. The right-most set of values should represent the largest flow expected. Values are interpolated across columns. The configuration of the slot controls how values are accessed across rows (Interpolate or Lookup). A sample shown in Figure 23.1. Extra columns have been added to lookup across flow ranges.

I/O: Required input

Links: Not linkable

Figure 23.1 Screenshot of a sample Periodic Gain Loss Table

Periodic Gain Loss Coeff Table

Type: Periodic Slot with Numeric Header

Units: Header = Flow, Values = Fraction

Description: The matrix defining the percentage of the routed flow that should be gained or lost.

Information: This table has a “column map” which means that each column has an associated numerical value (with units) displayed as the column label. Columns are added and deleted from this table using the Column menu. User units, scale, type, and precision for the Column Map (i.e. the column heading values) are defined in the unit scheme for Flow unit types. Column map values are set from the Column, Set Column Value menu option. When a column value is changed, the columns will re-order to ensure that the column values are increasing left to right. The left-most set of values should represent the minimum flow in the reach. The right-most set of values should represent the largest flow expected. Values are interpolated across columns. The configuration of the slot controls how values are accessed across rows (Interpolate or Lookup). A sample shown in Figure 23.2. Extra columns have not been added to allow it to interpolate across flow ranges.

I/O: Required Input

Links: Not Linkable

Figure 23.2 Screenshot of a sample Periodic Gain Loss Coeff Table

Variable GainLoss

Type: Series

Units: FLOW

Information: A positive number represents a gain while a negative number represents a loss.

I/O: Optional; can be input if needed. More likely it is obtained from the Periodic GainLoss Table.

Links: Linkable

Variable GainLoss Coeff

Type: Series

Units: FRACTION

Description: represents a given percentage of flow in the reach which is gained or lost

Information: Should be a number between -1 and 1. For example, a value of -0.1 means that 10% of the flow in the reach is lost. If solving upstream, it must be greater than -1.

I/O: Optional; can be input if needed. More likely it is obtained from the Periodic GainLoss Coeff Table.

Links: Not Linkable

Total GainLoss

Type: Series

Units: FLOW

Description: represents the total amount of flow that is gained (+value) or lost (- value) in a reach for a given timestep

I/O: Output only

Links: Not linkable

The method computes the Total Gain Loss as follows:

The flow to use is provided by the routing method as the “Routed Flow.”

flow = RoutedFlow

Variable Gain Loss = Periodic Gain Loss Table [timestep, flow]

Variable Gain Loss Coeff = Periodic Gain Loss Coeff Table [timestep, flow]

Total Gain Loss = Variable Gain Loss Coeff * flow + Variable Gain Loss

Note: When solving upstream, the computation is iterative as the gain loss depends on the upstream routed flow, which is what is what is being computed. Convergence is defined on the Outflow slot. Max iterations is based on the simulation max iterations.

The Total GainLoss is returned to the dispatch method where it is used in the mass computation. This method follows the same convention as other GainLoss methods where a positive Total GainLoss represents a gain.

Reach Bank Storage

The Reach Bank Storage category is used to model flow to/from storage within a reach. The Bank Storage Return is added/removed from the reach after the flow is routed but before Gain Loss is calculated.

The Reach Bank Storage category is available for all Routing methods except time lag methods.

None

This is the default method. It performs no bank storage calculations. There are no slots specifically associated with this method.

Average Flow Bank Storage

This method is designed to simulate hyporheic zone storage and return on Reach objects. It is similar to the bank storage on reservoir objects. The amount of bank storage is calculated as a function of flow rate.

Slots Specific to This Method

Average Flow Coefficient

Type: Table

Units: No Units

Description: A coefficient based on transmissivity of the surrounding aquifer and the relationship between river stage and flow rate

Information: Although the slot does not have a formal unit, the value in the slot has conceptual units of square root of seconds. Often this value is negative based on the equation below.

I/O: Required input

Links: Not linkable

Bank Storage Return

Type: Series

Units: FLOW

Description: The rate of return to the reach from bank storage

Information: A positive number represents a return to the reach while a negative number represents a loss to bank storage.

I/O: Output only

Links: Not linkable

Routed Flow

Type: Series

Units: Flow

Description: Flow rate used to calculate Bank Storage Return

Information: This represents the flow rate in the reach after Local Inflow, Seepage, and Diversion are added/removed and the flow is routed.

I/O: Output only

Links: Not linkable

Timesteps to Average

Type: Table

Units: No Units

Description: An integer number of timesteps to compute the average flow. This value must be greater than zero

I/O: Required input

Links: Not linkable

The routed flow average is the average flow over the number of timesteps specified in Timesteps to Average prior to the current timestep. For the first (timesteps to average - 1) timesteps, some routed flows are being set on timesteps prior to the initial timestep. These values, set equal to the routed flow at the initial timestep, are used so that calculations for routed flow average don’t used routed flows equal to zero. A warning message will remind users this is occurring.

Reach Seepage

The Reach Seepage category is used to model seepage from a reach. The seepage is calculated at the top (upstream) end of the reach. All methods allow seepage to be input or set by a rule. When input or set by a rule, seepage is not recalculated by the method.

This method is available only when No Routing is selected in the Routing category.

None

This is the default method. It performs no seepage calculations. There are no slots specifically associated with this method.

Proportional Seepage

Seepage is calculated as a fraction of the Inflow to the reach.

Slots Specific to This Method

Maximum Seepage

Type: Table

Units: FLOW

Description: represents the maximum amount of flow that can be lost as seepage

Information:

I/O: Required input

Links: Not linkable

Seepage

Type: Series

Units: FLOW

Description: The calculated amount of flow lost as seepage

Information: Subtracted from the Inflow value to calculate Outflow.

I/O: Input, Output, or Rule

Links: May be linked to the Inflow slot on the Groundwater Storage object.

Seepage Flow Fraction

Type: Table

Units: NO UNITS

Description: Represents the fraction of Inflow that is lost as seepage

Information: A decimal value which is greater than or equal to zero and less than one.

I/O: Required input

Links: Not linkable

Variable Seepage

This method uses variable parameters to model seepage. Seepage is calculated as a fraction of the Inflow for each time step.

Slots Specific to This Method

Maximum Seepage

Type: Table

Units: FLOW

Description: represents the maximum amount of flow that can be lost as seepage

Information:

I/O: Required input

Links: Not linkable

Seepage

Type: Series

Units: FLOW

Description: the calculated amount of flow lost as seepage

Information: Subtracted from the Inflow value to calculate Outflow.

I/O: Input, Output, or Rule

Links: May be linked to the Inflow slot on the Groundwater Storage object.

Variable Seepage Flow Fraction

Type: Series

Units: decimal

Description: a time series of values representing the fraction of Inflow that is lost as seepage

Information: Entered as a decimal value which is greater than or equal to zero but less than one.

I/O: Optional; defaults to 0.0 if not input.

Links: Not linkable

Horizontal Gradient Seepage

Each Reach may have horizontal seepage to multiple drains or shallow groundwater aquifers with unique drainage characteristics. Horizontal seepage to individual drains is calculated using Darcy’s Law, as follows:

The Seepage slot is set as the sum of horizontal seepage to all drains. An Aggregate Reach object can be used to simulate discrete reaches or reach segments for which varying seepage characteristics are known.

Slots Specific to the Method

Seepage

Type: Series

Units: Flow

Description: the calculated amount of flow lost as seepage

Information: Seepage is subtracted from the Inflow value to calculate Outflow.

I/O: Input, Output, or Rule

Links: May be linked to the Inflow slot on the Groundwater Storage object. This should only be done when groundwater is the only drain to which seepage flows.

Stage vs Horiz Bank Seepage Area

Type: Table

Units: Flow Vs. area

Description: relates the reach avg stage to the horizontal bank area through which seepage flows in the vertical direction to each drain

Information: The user can add additional columns when more than one drain is present. If the bank seepage area is constant, two extreme values for stage with the same bank seepage area will insure that tale interpolations return this value.

I/O: Required input

Links: Not linkable

Horiz Hydraulic Conductivity

Type: Table

Units: VELOCITY

Description: the horizontal hydraulic conductivity of the medium through which seepage flows

Information: The user can add additional columns when more than one drain is present.

I/O: Required input

Links: Not linkable

Distance to Drain

Type: Table

Units: length

Description: the horizontal distance from the reach to the drain.

Information: This value is assumed to be constant. The user can add additional columns when more than one drain is present.

I/O: Required input

Links: Not linkable

The Horizontal Gradient Seepage method requires that a Stage method be selected. It also has a dependent method category, the Drain Elevation method category. The reach horizontal bank seepage area through which seepage can flow to each drain in the horizontal direction is calculated using a stage/bank seepage area table interpolation. The horizontal hydraulic conductivity of the medium adjacent to each drain is entered by the user. The horizontal seepage gradient for each drain is calculated using the following equation:

Vertical Gradient Seepage

Vertical gradient seepage is also calculated using Darcy’s Law (see Horizontal Gradient Seepage Method).

Slots Specific to the Method

Seepage

Type: Series

Units: FLow

Description: the calculated amount of flow lost as seepage

Information: Seepage is subtracted from the Inflow value to calculate Outflow.

I/O: Input, Output, or Rule

Links: May be linked to the Inflow slot on the Groundwater Storage object if groundwater is the only drain to which seepage flows.

Vert Hydraulic Conductivity

Type: Table

Units: VELOCITY

Description: the vertical hydraulic conductivity of the medium through which seepage flows

Information:

I/O: Required input

Links: Not linkable

Vert Hydraulic Gradient

Type: Series

Units: No units

Description: the gradient through which seepage flows to the vertical drain

Information:

I/O: Required input

Links: Not linkable

Vert Channel Surface Area

Type: Series

Units: AREA

Description: the surface area of the reach channel bottom through which seepage may flow in the vertical direction

Information:

I/O: Required input

Links: Not linkable

Horizontal and Vertical Gradient Seepage

The Horizontal and Vertical Gradient Seepage Method is a composite of the Horizontal Gradient Seepage and Vertical Gradient Seepage methods. When it is selected all of the slots for the Horizontal Gradient and Vertical Gradient Seepage methods (above) are instantiated. The Horizontal and Vertical Gradient Seepage method sums horizontal and vertical seepages.

Seepage and Riparian Consumptive Use Loss

The Seepage and Riparian CU Loss Method is only available when Specify Local Inflow, Solve Outflow or No Local Inflow, Solve Outflow is selected from the Local Inflow and Solution Direction category. The Seepage and Riparian CU Loss Method sets the Leakage slot either from the user, as input or by a rule, or calculated from Seepage and Riparian CU Loss with the following calculation:

where n1, n2, n3, n4, and n5 are coefficients held in a table slot. For the Leakage calculation, if the inflow value is negative, it will be assumed to be zero.

The Seepage slot is set to the result of subtracting Riparian CU from the Leakage slot.

The Riparian CU Loss slot is set to the minimum of the Riparian CU and the Leakage. Here, if the calculated Leakage is negative it is assumed to be zero.

Note: The Leakage calculation uses the Inflow value in user units. The value set in the LogInflowCoeff column and the value and units in the InflowSqrdCoeff column of the Evaporation Data slot (n1 and n2), as set by the user, must be consistent with the user units for the Inflow slot. Changing the user units on the Inflow slot will produce a different result. There will not be an automatic conversion of the Coefficient values.

Slots Specific to the Method

Seepage

Type: Series

Units: Flow

Description: difference of Leakage and Riparian CU

Information: Subtracted from the Reach Inflow value to calculate Outflow.

I/O: Input, Output, or Rule

Links: Linkable

Leakage

Type: Series

Units: Flow

Description: amount of incoming water lost to various sources.

I/O: Input or Output.

Links: Linkable

Riparian CU

Type: Series

Units: Flow

Description: flow rate of the consumptive use in the riparian area

Information: Riparian CU is used in the Leakage calculation of the Reach and the Riparian CU Loss calculations.

I/O: Required Input

Links: Not linkable

Riparian CU Loss

Type: Series

Units: Flow

Description: the minimum of Leakage and Riparian CU

Information: Subtracted from the Reach Inflow value to calculate Outflow

I/O: Output only

Links: Not linkable

Seepage and Riparian CU Loss Coeff

Type: Table

Units: None, 1/Flow, None, None, None

Description: relates the month to a set of five coefficients with the following names and units: LogInflowCoeff [NONE], InflowSqrdCoeff[1/FLOW], InflowCoeff [NONE], CUCoeff [NONE], ParChanFlowCoeff[NONE]. the table has twelve rows, one for each month of the year.

Information: These coefficients are specific to the encoded Leakage equation. The values must be consistent with the user units for the Inflow slot. If the user units on the Inflow slot are changed, the values in this slot must be changed manually to correspond to the new units. Otherwise different results will be produced

I/O: Required Input

Links: Not linkable

Parallel Channel Flow

Type: Series

Units: Flow

Description: flow rate of upstream diversion to a parallel channel

Information: Available on Reach objects for use in Leakage calculations. Typically linked to flow in a parallel channel. Dispatch slot.

I/O: May be output or input. If it is not linked or user input, it will be assumed to be zero.

Links: Linkable

Head Based Seepage

A method to compute the river stage based on the reach inflow and outflow values must be selected in the Stage Calc Category. If no stage method is selected, the Head Based Seepage method will abort with an error. The Head Based Seepage method will compute the seepage based on the head in the river relative to the groundwater head. If the groundwater head is below the streambed elevation then the seepage will be computed based on the head in the river relative to the streambed bottom.

Seepage

Type: Series Slot

Units: flow

Description: The river loss or gain from groundwater

Information: A positive number represents a losing reach while a negative number represents a gaining reach

I/O: Input, Output, or Rule

Links: Usually linked to the groundwater object

Previous Water Table Elevation

Type: Series Slot

Units: length

Description: The previous elevation value computed by the connected groundwater object

Information: Seepage is computed based on the difference between the current river stage and the previous groundwater elevation

I/O: Output only

Links: Linked to the Previous Elevation slot on the connected groundwater object

Conductance

Type: Scalar slot

Units: area per time

Description: The riverbed conductance

Information: The conductance is defined as the hydraulic conductivity of the streambed material, multiplied by the width of the streambed bottom, multiplied by the length of the stream segment, divided by the streambed thickness (Conductance = KwL/m).

I/O: Input or computed as specified; see “Reach Conductance”.

Links: Not linkable

Streambed Elevation

Type: Scalar Slot

Units: length

Description: The elevation of the stream bed at the center of the reach segment (i.e. average stream bed elevation)

Information: Should have the same datum as Stage and the Previous Water Table Elevation

I/O: Required input

Links: Not linkable

Conductance Factor

Type: Series Slot with Periodic Input

Units: Fraction

Description: The Conductance is multiplied by this factor in the calculation Seepage. It can be used to model variable Conductance.

Information: If the slot is NaN, a default of 1 is used in the calculation of Seepage. The slot remain as NaN.

I/O: Optional input or rules

Links: Not typically linked

The Head Based Seepage Method computes the seepage to groundwater using one of the following equations.

• If the Previous Water Table Elevation is greater than the Streambed Elevation.

• If the water table elevation at the previous timestep is below the Streambed Elevation.

Note: The preceding equations use the water table elevation at the previous timestep. This simplification is done to avoid iteration problems that would result if the current groundwater elevation was used. A positive seepage is limited to be less than or equal to the Inflow to the reach.

Seepage Routing

The option to route seepage becomes visible after a method to calculate seepage is chosen.

No Routing

This is the default method which will not route seepage. The values for seepage are calculated depending on the user method chosen for seepage calculation. These values are contained in the Seepage slot.

Impulse Response

This method calculates the routed seepage based on the impulse response method of routing. This routing method makes visible a PreRouted seepage slot. This slot contains the values for seepage that have not been routed. The routed values are contained in the Seepage slot. If a link exists that links seepage to another object and a seepage routing method is chosen, the link will propagate the values of the routed seepage.

Note: This method computes the Seepage as a function of current and previous PreRouted Seepage. Because it uses previous timestep information, the computed Seepage may be more than the Inflow (or Outflow) and could lead to a negative Outflow (or Inflow). As always, Outflow = Inflow - Seepage + Sources - Sinks

SLOTS SPECIFIC TO THIS METHOD

Number of Coefficients

Type: Table

Units: NONE

Description: The integer number of lag coefficients to be used in the method.

I/O: Required input

Links: Not linkable

Lag Coefficients

Type: Table

Units: NONE

Description: The impulse response lag coefficients

Information: The number of lag coefficients must be the same as the value in the Number of Coefficients slot. The input will be in rows.

I/O: Required input.

Links: Not linkable.

PreRouted Seepage

Type: Series

Units: FLOW

Description: The seepage values before routing.

Information: This slot contains the values of seepage that have not been routed. The routed values will be contained in the Seepage slot.

I/O: Output

Links: Can be linked, but slot containing routed values is Seepage. If routed values are to be linked, then this slot should not be linked.

The Seepage (routed) will be calculated as follows:

where C is a lag coefficient and ncoeff is the number of lag coefficients.

One Timestep Seepage Lag

This method will apply the computed seepage to the next timestep.

SLOTS SPECIFIC TO THIS METHOD

Seepage from Previous Timestep Conditions

Type: Series

Units: Flow

Description: The seepage computed from the previous timestep’s conditions

Information:

I/O: Output Only

Links: Not linkable

Seepage is computed at each timestep, but the value is set at the next timestep, as follows.

When this method is selected, the timing of the seepage calculation is modified. For the solveNRInflow and solveNROutflow dispatch methods, the Seepage Routing method is called once near the beginning of the dispatch method. This call makes sure that there is a valid seepage that was computed at the previous timestep.

Note: If it is the first timestep in the run and there is no valid seepage, the method will use the current estimate of seepage and post a warning. (If you do not want to see this warning, input a seepage value for the first timestep.) When the Stage Table Lookup and Head Based Seepage are used, this estimate is the seepage based solely on the Inflow (for solveNROutflow) or Outflow (for solveNRInflow) to the reach.

When used with the Head Based Seepage method and solveNROutflow, a positive seepage is limited to be less than or equal to the inflow to the reach. The slot Seepage from Previous Timestep Conditions holds the lagged seepage. If the reach redispatches with a larger inflow, the seepage is reset to this value. This reverts the seepage to its original value instead of using the seepage constrained by a smaller inflow.

The selected Reach Seepage method is called near the end of the dispatch method after inflow and outflow are known. For the Stage Table Lookup and Head Based Seepage, this execution allows the seepage to be correctly computed based on both the inflow and outflow. The seepage is then set at the NEXT timestep.

Note: Seepage is a dispatch slot, so the reach may re-dispatch at the next timestep, depending on knowns and unknowns.

For the solveNRLocalInflow dispatch method, the seepage calculation is only called once near the beginning of the dispatch method as both inflow and outflow are known. Again, on the first timestep, if a valid seepage is not known, the estimate based on current values will be used.

Step Response

This method calculates the routed seepage based on the step response method of routing. The Seepage slot contains the values for seepage that have not been routed. The routed values are contained in the Routed Seepage slot. Typically, the Routed Seepage slot will be linked.

Note: This method removes the Seepage from the reach and then routes the Seepage. The routed seepage is stored in the Routed Seepage slot for the current and n future timesteps. As always, Outflow = Inflow - Seepage + Sources - Sinks

This seepage routing method is available for all seepage methods except Head Based Seepage.

Slots Specific to This Method

Lag Coefficients

Type: Table

Units: NONE

Description: The step response lag coefficients

Information: The input will be in rows.

I/O: Required input.

Links: Not linkable.

Routed Seepage

Type: Agg Series Slot

Units: Flow

Description: the seepage after it has been routed

Information:

I/O: Output Only

Links: Linkable

Future Seepage Timesteps

Type: Scalar

Units: None

Description: The number of timesteps in the future (i.e. past the timestep at which the object is dispatching) at which Routed Seepage will be computed and set.

Information: This slot must be an input integer and greater than or equal to 1. If you do not want it to set future timesteps, input a value of 1.

I/O: Required Input

Information: Not Linkable

This method sets values into the future as follows.

nCoeff = Number of rows in the Lag Coefficients table

nFutureTimesteps = Min (Future Seepage Timesteps, nCoeff)

For each timestep k from (t to (t + nFutureTimesteps - 1))

End for

Thus, the method computes and sets Routed Seepage forward nFutureTimesteps.

When the method is looking for a Seepage for a timestep that is past the dispatching timestep and the value is not valid, the Seepage is assumed to be zero. If the Seepage is not valid for a previous timestep, the calculation will exit the method and post a warning message. No Routed Seepage will be set.

Reach Conductance

Methods in this category allow you to choose how you wish to specify conductance. You can either give values for Conductance or give values for Hydraulic Conductivity and the geometry of the reach and the Conductance will be computed.

Specify Conductance

This is the default method and does not instantiate any new slots. You must specify the conductance value or an error will be issued.

Compute Conductance

This method allows you to specify hydraulic conductivity and the geometry.

The following slots are added

Hydraulic Conductivity

Type: Scalar

Units: Velocity

Description: Hydraulic conductivity of the streambed material

Information:

I/O: Required Input

Links: Not Linkable

Riverbed Thickness

Type: Scalar

Units: Length

Description: Thickness of the riverbed

Information: This value is used in the conductance calculation

I/O: Required Input

Links: Not Linkable

Seepage Area

Type: Scalar

Units: Area

Description: Area of the river that contributes to seepage

Information:

I/O: Required Input

Links: Not Linkable

At the start of the run, the information in these slots is used to compute the Conductance value according to the following equation:

If there are missing values in the above slots, an error will be issued and the run initialization will be stopped.

The resulting value is set on the scalar Conductance slot. If there are values already in the slot, they will be overwritten.

Note: The Conductance slot is registered as having a Source slot. When a slot has a source slot, it becomes read-only and displays a cross hatch over the data. It also provides a note indicating the source used to compute the data. This attribute is set at the start of the run, so you must initialize the model to see the display of this slot change. If you deselect this method, you must initialize the run again to unset the source slot.

Drain Elevation

The Drain Elevation category is dependent on the Horizontal and Horizontal and Vertical Gradient Seepage Methods. Each Reach may have horizontal seepage to multiple drains or shallow groundwater aquifers, each of which can have unique drainage characteristics. Drain related slots are designed so that users can add columns to provide information on each drain present. A drain may be a man-made drain or groundwater.

None

None is the default for the category, and will result in an error if it is selected and a run is started.

Constant

This method allows the user to set a constant drain elevation.

Slots Specific to the Method

Constant Drain WS Elev

Type: Table

Units: Length

Description: the elevation of the drain

Information: The user may add additional columns if more than one drain is present.

I/O: Required input

Links: Not linkable

Variable Input

This method allows the user to specify the drain elevation at each timestep.

Slots Specific to This Method

Variable Drain WS Elev

Type: AggSeries

Units: Length

Description: the drain elevation at each timestep

Information: The user may add additional columns if more than one drain is present.

I/O: Required input

Links: Not linkable

Flow Elevation Interpolation

This method calculates the drain elevation based upon flow through the drain (this method should be used only when drains are man-made as flow is unavailable for groundwater). A table interpolation of the Drain Flow vs Drain Elev table gives the elevation.

Slots for This Method

Drain Flow

Type: Agg Series

Units: Flow

Description: the flow through the drain

Information: The user may add additional columns if more than one drain is present.

I/O: Required input

Links: Not linkable

Drain Flow vs Drain Elev

Type: Table

Units: Flow vs. length

Description: a table relating the drain flow to the drain elevation

Information: The user may add additional columns if more than one drain is present.

I/O: Required Input

Links: Not linkable

Stage Elevation Interpolation

This method should be used when the drain or groundwater elevation depends on the Reach Avg Stage (water surface elevation). It calculates the drain elevation based upon a specified table relationship of Reach Avg Stage and Drain Elev. The user may also include a time lag using the Drain Time Lag slot representing a lagged relationship between the Reach and drain elevations.

Reach Stage vs Drain Elev

Type: Table

Units: length vs. length

Description: table relating the reach average stage (water surface elevation) to the drain elevation

Information: The user may add additional blocks of columns if more than one drain is present.

I/O: Required Input

Links: Not linkable

Drain Time Lag

Type: Table

Units: TIME

Description: the time for which the elevation should be lagged

Information: The user may add additional columns if more than one drain is present.

I/O: Input only

Links: Not linkable

Outflow Adjustment

This method adjusts outflows after they have been solved for by the dispatch method. This category is available for all Routing methods.

None

This method is the default for this category. If no adjustment is desired, this should be selected.

There are no slots specifically associated with this method.

Negative Outflow Unidentified Loss Adjust

The user should select this method when negative outflows need to be avoided. When using this method, negative outflows, as calculated by the Routing method, will be reset to zero.

Slots Specific to This Method

Unidentified Loss

Type: Series

Units: FLOW

Description: a value that give the absolute value of the negative outflow that was set to zero.

Information:

I/O: Output.

Links: Not Linkable.

Autoregressive Outflow

The user should select this method if they want to adjust the current outflow to a weighted sum of the current routed flow and prior outflows. It is available for use with all Routing methods except Step Response and Variable Step Response, but it is only available for Time Lag and No Routing if the selected method in the Local Inflow and Solution Direction category is Specify Local Inflow, Solve Outflow or No Local Inflow, Solve Outflow. That is, this method can only be used when solving downstream.

Slots Specific to This Method

Routed Flow

Type: Series

Units: FLOW

Description: This is the routed flow before the autoregression is applied, set as an output on the slot so the user can see its value.

Information: These values are computed by the Routing method and includes all gains and loss terms on the reach

I/O: Output only.

Links: N/A.

Autoregressive Flow Coefficients

Type: Table

Units: No Units

Description: The coefficients that will be applied in the autoregression.

Information: The number of rows indicate the number of timesteps to use. The value in the first row is applied to the current Routed Flow. The value in the second row is applied to the first autoregressive term, i.e. Outflow[t-1]. Subsequent coefficients are applied to additional autoregressive terms, i.e. Outflow[t-(row-1)]. These coefficients should sum to 1.0 or an error will be issued at start of run. Select View, then Show Column Sum Row to verify the values sum to 1.0. Most likely, there should be two or more rows.

I/O: Required Input.

Links: N/A

The Outflow is computed as follows:

Where B1 through BN are the coefficients in the Autoregressive Flow Coefficients slot. If the Routed Flow or Outflow is not valid, an error will be issued. At the beginning of the run, some prerun Outflows may need to be input for the Routing method to compute the first Routed Flow. If previous outflows are not available, but the timestep is within the first few timesteps of the run (defined as number of autoregressive coefficients plus offset/lag determined by the Routing method), the outflow will be set to the Routed Flow.

Diversion from Reach

This method category controls how the reach handles diversion. This category is available for all Routing methods except Step Response, Time Lag, Storage Routing, and Variable Storage Routing.

None

This method is the default for this category. If no diversion is desired, this should be selected.

There are no slots specifically associated with this method.

Available Flow Based Diversion

The user should select this method when an Agg Diversion Site, WaterUser, or a Diversion Object (using Available Flow Diversion) is linked to the Reach. Diversion could also be set as an input.

Slots Specific to This Method

Available for Diversion

Type: Series

Units: FLOW

Description: holds divertable flow in the reach, usually the inflow.

Information:

I/O: Usually output, but can be input or set by a rule.

Links: Linked to the Available For Diversion slot on any object, the Incoming Available Water slot on a WaterUser, or the Total Available Water slot on an Agg Diversion Site.

Diversion

Type: Series

Units: FLOW

Description: holds diversion value from Agg Diversion Site, or input.

Information:

I/O: Optional; set to 0.0 if not input and not linked.

Links: Usually linked to the Diversion slot on the Agg Diversion Site, WaterUser, or the Diversion Object.

Diversion Capacity

Type: Scalar Slot

Units: FLOW

Description: used to hold the maximum diversion physically possible from the reach

Information: This slot is used in the accounting system for allocation purposes and can be used in Rulebased Simulation

I/O: Input only

Links: Not linkable

Method Details

If the Available for Diversion is specified (input or set by a rule) OR the linked slot is specified (input or set by a rule), no further computations are performed. The specified Available for Diversion is used in the dispatch method.

When solving downstream

If a Min Diversion Bypass method is selected, Available for Diversion is calculated as Inflow minus Minimum Diversion Bypass. If there is a minimum specified on the Outflow (in the configuration dialog), the Available for Diversion is set to the Inflow minus the minimum outflow. Otherwise, Available for Diversion is set to the value in the Inflow slot. Available for Diversion is limited to be larger than zero, unless there is a negative inflow.

When solving upstream and Diversion is not valid but linked

Available for Diversion is set to the maximum value specified on the configuration dialog for Available for Diversion. If no maximum is configured, an error will stop the run.

Note: Local Inflows into the reach are not included in the Available for Diversion.

Head Based Diversion

This method may be selected when a Diversion Object, using either the Gravity or Pumped Diversion method, is linked to the Reach. The Stage Table Look Up or Inflow Stage Table Look Up method must be selected if this method is selected. See “Stage Table Look Up” and “Inflow Stage Table Look Up” for details.

This method allows the diversion object to check how much water is available to be diverted based on the elevation of the flow in the river.

Slots Specific to This Method

Diversion

Type: Series

Units: FLOW

Description: holds diversion value from Diversion Object, or input.

Information:

I/O: Optional; set to 0.0 if not input and not linked.

Links: Usually linked to the Diversion slot on the Agg Diversion Site, WaterUser, or the Diversion Object.

Diversion Capacity

Type: Scalar Slot

Units: FLOW

Description: used to hold the maximum diversion physically possible from the reach

Information: This slot is used in the accounting system for allocation purposes and can be used in Rulebased Simulation

I/O: Input only

Links: Not linkable

Water Elevation at Diversion

Type: Series

Units: FLOW

Description: holds water elevation at diversion

Information: This slot should be linked to the Diversion Object’s Diversion Intake Elevation slot.

I/O: Output only

Links: Linked to the Diversion Intake Elevation

Min Diversion Bypass

The Min Diversion Bypass methods are only available when Available Flow Based Diversion is selected in the Diversion from Reach method category. It is used to specify the minimum amount of water that should remain in the reach after diversion. After the diversion, however, the reach may lose additional water to seepage or gain water from return flow.

None

This is the default method. It performs no calculations. There are no slots specifically associated with this method.

Input Min Bypass

This method is used when the user wants to input the minimum amount of water that bypasses the diversion point.

Slots Specific to This Method

Minimum Diversion Bypass

Type: Series

Units: FLOW

Description: minimum amount of water remaining after diversion

Information:

I/O: Optional; not used if not input

Links: Not linkable

If Minimum Diversion Bypass is input, it used to calculate Available For Diversion as follows:

Monthly Min Bypass Values

This method is used when the Minimum Diversion Bypass is dependent upon the month.

Slots Specific to This Method

Minimum Bypass Values

Type: Table

Units: FLOW

Description: a table of minimum diversion bypass values for each month

Information: One value is required for each month.

I/O: Required input

Links: Not linkable

Minimum Diversion Bypass

Type: Series

Units: FLOW

Description: minimum amount of water remaining after diversion

Information: Calculated from the Minimum Bypass Values table

I/O: Output only

Links: Not linkable

Minimum Diversion Bypass is set with a value from the Minimum Bypass Values table for the current month in the simulation. Available For Diversion is then calculated as follows:

Monthly Min Bypass Coefficients

This method is used to compute Minimum Diversion Bypass from a coefficient that is dependent on the month.

Slots Specific to This Method

Minimum Bypass Coefficients

Type: Table

Units: NONE

Description: a table of bypass coefficients for each month

Information:

I/O: Required input

Links: Not linkable

Minimum Diversion Bypass

Type: Series

Units: FLOW

Description: minimum amount of water remaining after diversion

Information:

I/O: Output only

Links: Not linkable

Minimum Diversion Bypass is calculated with a value from the Minimum Bypass Coefficients table for the current month in the simulation by the following equation:

Available For Diversion is then calculated as follows:

Periodic Min Bypass

This method computed the Minimum Diversion Bypass as a function of date/season as defined in a periodic slot.

Slots Specific to This Method

Periodic Minimum Bypass

Type: Periodic Slot

Units: flow

Description: The minimum diversion bypass as a function of season/date

Information: The current date is used to look up the Minimum Diversion Bypass from this slot.

I/O: Required Input

Links: Not linkable

Minimum Diversion Bypass

Type: Series

Units: FLOW

Description: Minimum amount of water remaining after diversion

Information: This value is determined from the Periodic Minimum Bypass slot.

I/O: Output only

Links: Not linkable

Reach Evaporation

This method category is used to model evaporation on a reach object.

None

This is the default method. No calculations are performed and there are no slots associated with this method. It should be used if the user does not wish to model evaporation.

Inflow Exponent Pan Evaporation

This method models evaporation based on empirical equations.The equations are as follows:

Note: The exponential calculation is carried out in user units. The value set in the Exponent column of the Evaporation Data slot, as set by the user, must be consistent with the user units for the Inflow slot. Changing the user units on the Inflow slot will produce a different result. There will not be an automatic conversion of the Exponent value.

Slots Specific to This Method

Evaporation Data

Type: Table

Units: FLOW, TIME/LENGTH, NONE, AREA, NONE

Description: This table holds various coefficients and constants for the Inflow Exponent Pan Evaporation method. It holds the following values and units: Threshold Flow (FLOW), Coefficient (TIME/LENGTH), Exponent (NONE), Bankfull Surface Area (AREA), PanEvapCoeff (NONE).

Information: The value in the Exponent column must be consistent with the user units for the Inflow slot. If the user units on the Inflow slot are changed, the Exponent must be changed manually to correspond to the new units. Otherwise different results will be produced.

I/O: Input Only

Links: Not linkable

Evaporation

Type: Series Slot

Units: FLOW

Description: This slot is the output to the Inflow Exponent Pan Evaporation method. It holds the losses as calculated by the empirical equations.

Information:

I/O: Output only

Links: Not linkable

Pan Evaporation

Type: Series

Units: VELOCITY

Description: This slot contains the pan evaporation coefficient

Information: This slot must have a valid value for the Inflow Exponent Pan Evaporation method.

I/O: Input only

Links: Can be linked to data object

Pan Evaporation

This method models evaporation based on the pan evaporation rate, the surface area of the reach and a pan evaporation coefficient.

Slots Specific to This Method

Evaporation

Type: Series Slot

Units: FLOW

Description: This slot is the output to the Pan Evaporation method. It holds the losses as calculated by the equation.

Information:

I/O: Output only

Links: Not linkable

Pan Coefficient

Type: Periodic

Units: NoUnits

Description: This slot holds a coefficient that is applied to the computation.

Information: The coefficient should be greater than 0.0.

I/O: Required Input

Links: NA

Inflow Surface Area Table

Type: Table

Units: Flow vs Area

Description: Table relating Inflow to the reach to Surface Area

Information:

I/O: Input Only

Links: NA

Pan Evaporation

Type: Series

Units: Velocity (Length/Time)

Description: This slot contains the pan evaporation rate.

Information: This slot must have a valid input or an error will occur.

Information: Input only

I/O: Can be linked

Surface Area

Type: Series

Units: Area

Description: The water surface area of the reach.

Information: The value in this slot is found by looking up the Inflow on the Inflow Surface Area Table

I/O: Output only

Links: Linkable, possibly to the Wetted Sand Area Excluded slot. See “Wetted Sand Evaporation” for more information.

Method Details

To calculate evaporation, first, the Inflow is looked up on the Inflow Surface Area Table to compute and set the Surface Area. Then, the Pan Coefficient and Pan Evaporation are accessed and verified that there is valid data. Finally, Evaporation is computed as follows:

MODFLOW Link Category Reach

The MODFLOW Link Category is dependent upon the selection of No Routing, Time Lag, Variable Time Lag, Muskingum-Cunge, or Muskingum-Cunge Improved methods.

Caution: RiverWare’s connection with MODFLOW is currently not functional. This category is hidden and the methods have been disabled and cannot be selected. An error will be posted at model load if this method was previously selected. Contact CADSWES for help.

No Link to MODFLOW

No computations or slots are associated with the No Link to MODFLOW method, this is the default method for the MODFLOW Link Category.

Link to MODFLOW

The Link to MODFLOW method will allow a Reach to be linked with MODFLOW. The Link to MODFLOW method does not preform any computations but is used to configure the model. Data transferred between RiverWare and MODFLOW, as well as any interpolation and summation of this data, will be handled within the computational subbasin framework.

Note: RiverWare assumes a consistent datum throughout all related objects’ elevation and stages slots. See “Reach Object” for a description of the Reach-specific data configuration.

Slots Specific to This Method

Total MODFLOW GainLoss

Type: Series Slot

Units: flow

Description: The total gain or loss between the reach and the aquifer

Information: A positive number represents a gain while a negative number represents a loss, this value is applied to the bottom of the reach, i.e. it is added to the routed flow value calculated from the Routing method)

I/O: Output only

Links: Linkable

Flux between the reach and underlying groundwater will be calculated in MODFLOW. These individual MODFLOW cell fluxes will be summed within the computational subbasin framework, and the summed value will be automatically mapped to the Total MODFLOW GainLoss slot.

When using the Link to MODFLOW method, either the Inflow Stage Table Look Up or Stage Table Look Up method must be selected. A stage value is needed to calculate the Flux between the River and underlying groundwater and will be transferred through the computational subbasin framework to MODFLOW. See “Inflow Stage Table Look Up” and “Stage Table Look Up” for details.

If desired, when both the Link to MODFLOW method and a Diversion from Reach method are selected the existing Diversion slot value may be transferred to surface water body represented in MODFLOW through the computational subbasin framework.

Note: The Diversion from Reach Category is not available for the Time Lag routing method.

A return flow from a surface water body represented in MODFLOW to a RiverWare Reach may be desired. When the Link to MODFLOW method and the Local Inflow MODFLOW Return method are selected a surface water return flow may be transferred from MODFLOW to the RiverWare Local Inflow MODFLOW Return slot through the computational subbasin framework.

Alternative Routing on Subbasin

This method category is used to provide alternative routing coefficients for use in subbasin methods.

None

This is the default method. No calculations are performed and there are no slots associated with this method.

Variable Step Coefficients

This method is used to provide variable step coefficients for use in subbasin methods that aggregate routing coefficients for a control point. See “Alternative Routing Coefficients Methods” in USACE‑SWD Modeling Techniques for details on the variable routing. This method allows the reach to solve one way in simulation dispatching, but another way in these subbasin methods.

Slots added by the method

Variable Lag Coefficients

Type: Table Slot

Units: Column Map Values - Flow, Table values - No Units

Description: A table defining the step response coefficients for each inflow threshold is shown.

Information: This table has a Column Map which means that each column has an associated numerical value (with units). This numerical value is displayed on as the column label. Columns are added and deleted from this table using the Column menu with the following options: Set Number of Columns, Append Column, Delete Column and Delete Last Column. User units, scale, type, and precision for the Column Map (i.e. the column heading values) are defined in the unit scheme for Flow unit types. Column map values are set from the Column, Set Column Value menu option. When a column value is changed, the columns will re-order to ensure that the column values are increasing left to right. The sum of coefficients in each column should equal 1.0. This can easily be verified by adding a summary row at the bottom of the table using the View, Show Column Sum Row menu option. When used in the Variable Step Response method, the column map values are used as a stair step lookup, e.g. an Inflow of 500cfs uses the first column, an inflow of 10,000cfs uses the second column, and an inflow of 120,000cfs uses the third column. Therefore, the column map values need not bound the highest expected flows; flows greater than the largest column map value use the right most column.

Note: The left-most set of coefficients should represent the minimum flow in the reach.

I/O: Required Input

Links: Not Linkable

Dispatch Methods

The dispatch methods for the Reach allow the various Routing methods to solve, and execute whenever the reach has enough information to solve.

SolveNROutflow

This method is available for the No Routing user method. It solves for Outflow when Inflow, and possibly Local Inflow, Return Flow, and Diversion are known, based on user method selection and the status of those slots.

Required Knowns

• Inflow

• Local Inflow, if one of the Solve or Contingent Local Inflow or Solve Outflow methods is selected; see “Local Inflow and Solution Direction”.

• Local Inflow MODFLOW Return, if the Local Inflow MODFLOW Return user method is selected.

Required Unknowns

• Outflow

If diversion or return flow is linked, the dispatch method will wait for a value in these slots before solving. If a value is set for the minimum outflow, the solved value for Outflow will be compared to the minimum. If the minimum has not been met, the outflow will be raised to the minimum, and the necessary inflow will be placed in the Local Inflow Adjust slot, if it is visible.

This dispatch method executes the methods in the following order.

1. Stage Calc

2. Reach Seepage (if One Timestep Seepage Lag is not selected)

3. Seepage Routing

4. Min Diversion Bypass

5. Diversion from Reach

6. Reach Evaporation

7. Reach Bank Storage

8. MODFLOW Link Category Reach

9. Gain Loss

10. Mass balance, as follows:

11. Negative Outflow Adjustment

12. Stage Calc

13. Reach Seepage (if One Timestep Seepage Lag is selected)

SolveNRInflow

This method is available for the No Routing user method. It solves for Inflow when Outflow, and possibly Local Inflow, Return Flow, and Diversion are known, based on user method selection and the status of those slots.

Required Knowns

• Outflow

• Local Inflow, if the Specify Local Inflow, Solve Inflow or Outflow user method is selected; see “Specify Local Inflow, Solve Inflow or Outflow”.

• Local Inflow MODFLOW Return, if the user method is selected.

Required Unknowns

• Inflow

If diversion or return flow is linked, the dispatch method will wait for a value in these slots before solving. This dispatch method executes the methods in the following order.

1. Stage Calc

2. Diversion from Reach

3. MODFLOW Link Category Reach

4. Gain Loss

5. Reach Bank Storage

6. Reach Seepage (if One Timestep Seepage Lag is not selected)

7. Seepage Routing

8. Mass balance, as follows:

9. Stage Calc

10. Reach Seepage (if One Timestep Seepage Lag is selected)

SolveNRLocalInflow

This method is available for the No Routing user method. It solves for Local Inflow when Inflow and Outflow, and possibly Return Flow, and Diversion are known, based on user method selection and the status of those slots.

Required Knowns

• Inflow

• Outflow

Required Unknowns

• Local Inflow

If diversion or return flow is linked, the dispatch method will wait for a value in these slots before solving. This dispatch method executes the methods in the following order.

1. Stage Calc

2. Reach Seepage (if One Timestep Seepage Lag is not selected)

3. Seepage Routing

4. Reach Evaporation

5. Min Diversion Bypass

6. Diversion from Reach

It then solves up for the following:

7. MODFLOW Link Category Reach

8. Gain Loss

9. Reach Bank Storage

It then solves mass balance as follows:

solveTLInflow

This dispatch method is available for the Time Lag routing user method. This is a front for the Time Lag, Stage Calc, and Volume Calc methods, which do all the work. Inflow is found at some previous time when Outflow is known at the current timestep.

Required Knowns

• Outflow

Required Unknowns

• Inflow

solveTLOutflow

This dispatch method is available for the Time Lag routing user method. This is a front for the Time Lag, Stage Calc, and Volume Calc methods, which do all the work. Outflow is found at some future time when Inflow is known at the current timestep.

Required Knowns

• Inflow

Required Unknowns

• Outflow

solveTLInflowOutflow

This dispatch method is available for the Time Lag routing user method. This is a front for the Time Lag, Stage Calc, and Volume Calc methods, which do all the work. Outflow is found at some future date, and inflow is found at some previous time, when both are known at the current timestep.

Required Knowns

• Inflow

• Outflow

solveTLOutflowDSOnly

This dispatch method is available if Time Lag routing is selected and the Specify Local Inflow, Solve Outflow or No Local Inflow, Solve Outflow user methods are selected. Outflow is found at some future timestep when inflow is known on the current timestep. Unlike the solveTLOutflow dispatch method which is able to solve both upstream and downstream depending on the knowns and unknowns, solveTLOutflowDSOnly can only solve in the downstream direction. In addition, this dispatch method calls the Stage Calc and Volume Calc methods. See “Specify Local Inflow, Solve Outflow” and “No Local Inflow, Solve Outflow” for details.

Required Knowns

• Inflow

Solve Storage Routing Outflow

This dispatch method is available for the Storage Routing, Variable Storage Routing, and Modified Puls routing methods. The dispatch method executes the Routing, Stage Calc, and Volume Calc methods, which do all the work. Outflow is found at the current timestep when inflow is known at the current timestep.

Required Knowns

• Inflow

Required Unknowns

• Outflow

solveOutflow

This is the dispatch method which all other Routing methods use. It executes the Stage, Min Diversion Bypass, Diversion from Reach, and then the Routing user methods. After the routing method, the Stage method is called again.

Required Knowns

• Inflow

Required Unknowns

• Outflow

Note: If the Step Response, Variable Step Response, or Variable Time Lag routing method is selected, Outflow is not a required unknown. See “Step Response”, “Variable Step Response”, and “Variable Time Lag” for details.

Revised: 06/03/2019