skip to main content
Flow Routing
The Flow Routing method category is used to route the flow through the Distribution Canal element. If Time Lag Request Routing is selected on the containing AggDistributionCanal, only Time Lag Routing will be available in this category.
* No Routing
This method sets the available flow to equal the inflow after subtracting Canal Spillover and/or Canal Seepage if applicable.
Requests cannot be routed upstream when this method is selected. Therefore, this method is only available if No Routing is selected in the Request Routing category on the containing AggDistributionCanal.
There are no slots specific to this method.
* Time Lag
Routes flow through the Distribution Canal element using a time lagged approach. Canal Spillover and/or Canal Seepage are subtracted from the Inflow before routing. Requests can be routed upstream when this method is selected only if Time Lag routing is selected in the Request Routing category on the containing AggDistributionCanal.
Slots Specific to This Method
 Delivery Request
Type: SeriesSlot
Units: FLOW
Description: delivery request at the downstream end of the Canal element
Information:  
I/O: Optional; Only used if routing requests.
 Ds Delivery Request
Type: SeriesSlot
Units: FLOW
Description: delivery requests from any downstream objects
Information: The DS Delivery Request is added to the Delivery Request and the sum is routed to the upstream end of the Distribution Canal element. Only used if routing requests.
I/O: Optional; usually set by propagation across a link
 Lag Time
Type: TableSlot
Units: TIME
Description: lag time of the flow through the Distribution Canal element
Information: This must be an integer number of timesteps.
I/O: Optional; if not input, it is set to zero.
 Routed Delivery Request
Type: SeriesSlot
Units: FLOW
Description: routed delivery request at the upstream end of the Distribution Canal element
Information: The Routed Delivery Request is the sum of the DS Delivery Request and the Delivery Request, routed to the upstream end of the element. This slot is automatically linked, to either the DS Delivery Request of the upstream Canal element or to the Total Delivery Request on the AggDistributionCanal if there is no upstream element. Only used if routing requests. The Routed Delivery Request is always zero when the canal is draining (this only applies when a method is selected in the Canal Storage category).
I/O: Output only
Method Details 
The Time Lag method is used to compute Available Flow. The necessary calculations are as follows:
The value of Available Flow is the Inflow, after subtracting Canal Spillover and/or Canal Seepage. It is set at the timestep, t + Lag Integer, where t is the current timestep.
* Storage Time Routing
This method is a simple storage method that solves for Available Flow 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 is almost identical to the Storage Routing method on the Reach object.
Slots Specific to This Method
 Number of Segments in Reach
Type: ScalarSlot
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
 Segment Outflow
Type: TableSeriesSlot
Units: FLOW
Description: segment outflow
Information: Available Flow is set as the outflow 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
 Storage Time Coefficient
Type: ScalarSlot
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
 Storage Time Exponent
Type: ScalarSlot
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
Method Details 
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 Available Flow is not valid, Available Flow is set equal to Inflow plus gain loss and the method exits.
– If the segment outflows are not valid, and previous Available Flow 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 as follows:
– For each routing phase, the outflow from each segment is as follows:
– This routing equation is based on the storage-outflow relation, storagetime, from above, and the continuity equation, as follows:
– The inflow into the next segment is the average of the segments previous and current outflows.
– The current timestep’s Available Flow for the object is equal to the last segment’s outflow.
* Variable Time Storage Routing
This method is a simple storage method that solves for Available Flow 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. This method is almost identical to the Variable Storage Routing method on the Reach object.
Slots Specific to This Method
 Flow Range
Type: TableSlot
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 ten.
The columns of this table represent the maximum flow rate for a specific flow range, in ascending order, starting with 0 as the base. These columns are labeled “Flow Range 1 - 10”. 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 use all ten columns of this table. Use only the columns needed to designate the desired flow ranges.
I/O: Required input
 Number of Segments in Reach
Type: ScalarSlot
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
 Segment Outflow
Type: TableSeriesSlot
Units: FLOW
Description: segment outflow
Information: Available Flow is set as 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
 Variable Storage Time Coefficient
Type: SeriesSlot
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
 Variable Storage Time Coefficient Table
Type: Tableslot
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
 Variable Storage Time Exponent
Type: SeriesSlot
Units: NOUNITS
Description: exponent of mean flow value.
Information: Usually between -1 and 1.
I/O: Output only
 Variable Storage Time Exponent Table
Type: Tableslot
Units: NOUNITS
Description: Lag times 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
Method Details 
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 Available Flow is not valid, Available Flow is set equal to Inflow plus gain loss and the method exits.
– If the segment outflows are not valid, and previous Available Flow 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:
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 as follows:
– For each routing phase, the outflow from each segment is as follows:
– This routing equation is based on the storage-outflow relation, storagetime, from above, and the continuity equation, as follows:
– The inflow into the next segment is the average of the segments previous and current outflows
– The current timestep’s Available Flow for the object is equal to the last segment’s outflow.
Revised: 07/17/2020