skip to main content
Simulation Objects
The following enhancements to the RiverWare simulation objects are described briefly. The user is encouraged to consult the Simulation Objects Documentation in the online help for more detailed descriptions of the enhancements to the objects and their methods.
Reach
Variable TimeLag Routing
The variableTimeLagRouting method has been modified to use a 3-D table interpolation to determine the Lag Time instead of a table lookup. This is accomplished through the use of a new tableslot, Variable LagTime Table. The Lag Time is computed based on a double interpolation involving the day of the year and the flow rate in the reach. Previous models using this method will no longer calculate Lag Time. New data is required in the Variable LagTime Table slot. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Gain Loss
A new user method, Interpolated Flow GainLoss, was added to the Gain Loss Calculation category. This method (which is similar to the Seasonal GainLoss Flow Table method) uses values input according to the day of the year. Gain Loss is then determined by a three-dimensional table interpolation. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Routing Parameters
A new method category, Routing Parameters, is available when muskingumRouting is selected in the routingMethodCategory. This new category contains methods for inputting muskingum coefficient data as either K and X values or C0, C1, and C2 coefficients (scalar or time series). The variableMuskingum routing method has been eliminated. Users of this method should select muskingumRouting and the Input Time Series K and X method in the Routing Parameters category to attain the same results. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
TimeLag Routing
Changes were made to timeLagRouting to conserve volume when using a monthly timestep and a monthly lag time. These changes require the user to use a monthly lag time if the timestep is monthly. Conversely, if the timestep is not monthly, a monthly lag time cannot be used.
Reach Bank Storage
A new method category, Reach Bank Storage Calculation, was added. Two methods are available: No Bank Storage and Average Flow Bank Storage. The Average Flow Bank Storage method is used to simulate hyporheic zone storage and return based on the flow rate in the reach. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Seasonal GainLoss
The Date Range slot, used in the Seasonal GainLoss Flow Table method, is now one-based instead of zero-based. Users are required to increase the values in this slot by an integer of one to attain the same answers as in older models.
Interpolated GainLoss Uncertainty
A new method, Interpolated GainLoss Uncertainty, was added to the Reach Uncertainty Calculation category. This method enables users to perform uncertainty calculations based on the uncertainty of the gain/loss coefficients and is available only when the Interpolated Flow GainLoss method is selected in the GainLoss Calculation category. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Water User
Input Diversion
Diversions may now be input on the Water User. This allows the object to solve given either Diversion or Diversion Requested. An additional dispatch method was added to accommodate these changes. The object may now dispatch with one of the following two methods: solveStandAlone_givenDivReqDepReq or solveStandAlone_givenDiversion.
There are some limitations to this design. If the user is using rules to set both Diversion and Diversion Requested at different priorities (for the same timestep), the object must always resolve using the same dispatch method. For example, suppose that Diversion Requested is set by a rule and the object dispatches given Diversion Requested. Then, a higher priority rule sets Diversion. The object should re-dispatch given Diversion. However, it will be forced to re-solve with the same dispatch method. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Return Flow Split Calculations
The returnFlowSplitCalculation methods now include the Supplement Return Flow as well as the Return Flow if Supplement Diversion is selected in the Conjunctive Use category. If Supplement Return Flow is being calculated, a new slot, Total Return Flow, is used to represent the sum of the Return Flow and Supplement Return Flow. It is the Total Return Flow that is split into surface and groundwater components. If Supplement Return Flow is not being calculated, the Total Return Flow slot is not visible and only the Return Flow is split. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Diversion and Depletion Request
Two new user methods, Population Requests and Regional Requests, were added to the Diversion and Depletion Request category. Population Requests is used to compute Diversion Requested and Depletion Requested based on the number of individuals in a population and the use rate per individual. Regional Requests is used to compute Diversion Requested and Depletion Requested based on the rate of water use for a region and the percentage of the region that applies to that particular rate. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Also, the name of the Agricultural Requests method was changed to Irrigation Requests.
Max Supplemental Request
A new method category, Max Supplemental Request, was added to enable the user to calculate values for the Maximum Supplement Request slot based on groundwater elevation. Three methods are contained within this Category: None, Input Maximum Request, and GW Elevation Maximum Request. The new method category is dependent on the Supplement Diversion method in the Conjunctive Use method category. Models previously using the Maximum Supplement Request slot must use the Input Maximum Request method to get the same results. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
AggDiversionSite
Input Diversion
Diversion may now be input on the AggDiversionSite. This allows the object to solve given either Total Diversion or Total Diversion Requested. An additional dispatch method was added for both the lumped and sequential linking structures to accommodate these changes. For the sequential structure, the object may now dispatch with one of the following two methods: processSequential_givenDivReq or processSequential_givenDiversion. For the lumped linking structure the two dispatch methods are: processLumped_givenDivReq and processLumped_givenDiversion. As a result of these modifications, an AggDiversionSite object operating under the lumped linking structure no longer sets the Total Diversion Requested to 0.0 by default. All existing models that were using this default must now input zeros for the models to run correctly.
There are some limitations to this design. If the user is using rules to set both Total Diversion and Total Diversion Requested at different priorities (for the same timestep), the object must always resolve using the same dispatch method. For example, suppose that Total Diversion Requested is set by a rule and the object dispatches given Diversion Requested. Then, a higher priority rule sets Total Diversion. The object should re-dispatch given Diversion. However, it will be forced to re-solve with the same dispatch method. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Total Diversion
The Sequential linking structure was modified so that Total Diversion is calculated as the lower value of Total Diversion Requested and Total Available Water. The Total Diversion is now propagated to the Incoming Available Water slot on the first WaterUser element. The Total Unused Water slot now represents the return flow from the Water User elements. Therefore old models must be updated in the following manner: 1.) Total Unused Water must be linked to the Return Flow slot on the object from which water is being diverted, 2) The link between Total Available Water and Incoming Available Water on the first WaterUser element must be deleted.
Maximum Supplemental Request
A new method category, Max Supplemental Request, was added to the AggDiversion Site for the lumped linking structure. This method category enables the user to calculate values for the Maximum Total Supplement Request slot based on groundwater elevation. Three methods are contained within this Category: None, Input Maximum Request, and GW Elevation Maximum Request. The new method category is dependent on the Supplement Diversion method in the Conjunctive Use method category. Models previously using the Maximum Supplement Request slot must use the Input Maximum Request method to get the same results. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Groundwater Storage
Storage Calculations
The storage calculations on the Groundwater Storage object were modified to prevent a negative Storage from being calculated. If the Outflow exceeds the flow rate required to drain the aquifer in a timestep, the Outflow is decreased to that flow rate. If calculating Percolation and the sum of the Outflow and Percolation exceeds the flow rate required to drain the aquifer in a timestep, then both Outflow and Percolation are proportionally decreased so the sum of the two is equal to that flow rate. If however, Percolation is input, only Outflow is decreased. Detailed documentation of these calculations is available in the Dispatch Methods section of the Simulation Objects Documentation .
Previous Elevation Calc
A new method category, Previous Elevation Calc, enables the user to input or calculate the previous timestep’s water table elevation based on the previous storage. The Previous Groundwater Elevation slot is used in conjunction with the Water User to determine the Maximum Supplement Request. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Confluence
Pre-simulation Dispatching
The Confluence object may now dispatch before the start of the run. The object checks upstream to obtain the earliest timestep at which an upstream object dispatches. Provided that its dispatch conditions are met, the Confluence may then dispatch at the earliest dispatch timestep of any upstream object.
Old models may be adversely affected by this change. If the Confluence object contains data before the start of the run, it may now solve and propagate data to other objects. Likewise, if the Confluence receives data from an upstream object it may now try to solve in an overdetermined state. In either case, the result is an overdetermination error expressed by one of the following error messages:
Object is overdetermined
Attempting to set slot from multiple sources
These errors may or may not be generated from the Confluence itself. The problem is fixed by deleting the excess data on the Confluence object for all pre-simulation timesteps.
Diversion Object
Diversion Request Calculation
A new method category, Diversion Request Calculation, is available on the Diversion Object. The default method, Input Diversion Request, performs no calculations. The Percent of Available method computes Diversion Requested as a specified percentage of the available water. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Reservoir Objects
Dispatch Method Change
The solveMB_givenInflowReleaseRegSpill dispatch method was changed to solveMB_givenInflowRelease. The Regulated Spill slot is no longer a required known for the object to dispatch with this method. Also, the dispatch method is available regardless of the spill method in use. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Power Coefficient
The Best Power Coefficient and Max Power Coefficient tables are now used whenever the BEST or MAX flag is set on Energy (regardless of whether or not the Power Coefficient is input).
Pumped Storage Object
Upstream Inflows
The Pumped Storage Object is now able to model inflows from upstream. This enhancement required a change in slot notation. The flow into the reservoir as a result of pumping is accounted/calculated for in the Pumped Flow slot. The Inflow slot is used to represent inflow into the reservoir from upstream. Currently the object is only allowed to solve downstream (i.e. Inflow must be input and cannot be calculated). Old models using this object require three changes: the link between Inflow and Flow TO Pumped Storage must be removed, a link must be created between Pumped Flow and Flow TO Pumped Storage, and Inflow must be set to zero. Detailed documentation of this object may be found in the Simulation Objects Documentation online.
Revised: 01/11/2023