skip to main content
Dispatch Methods
* solveMB_givenInflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.
Required Known Slots
• Inflow
Required Unknown Slots
• Outflow
• Energy
• Storage
Method Details  
First, this method checks if the Pool Elevation at the current timestep is a Target flag. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve. The storage corresponding to a flat pool elevation is found as a seed value for the calculations via the Elevation Volume table. Since this is a Slope Power Reservoir, this storage is not the actual storage in the reservoir.
If these checks pass, the calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenOutflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Known Slots
• Outflow
Required Unknown Slots
• Inflow
• Storage
Method Details  
First, this method finds the Storage associated with the known Pool Elevation. It then looks to see if the Pool Elevation at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation. The calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.
Required Known Slots
• Inflow
• Storage
Required Unknown Slots
• Outflow
• Energy
Method Details  
First, this method checks if the Storage at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). The slope storage, mass balance, evaporation, and seepage calculations are combined in an iterative process to arrive at a final value for the Pool Elevation and Outflow. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenOutflowStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Known Slots
• Outflow
• Storage
Required Unknown Slots
• Inflow
Method Details  
First, this method finds the Pool Elevation associated with the known Storage. It then looks to see if the Storage at the current timestep is a Target Op. If so, it begins the target solving process unless the Outflow is flagged Max Capacity. This case will result in an error. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation, then the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). Spill and release are then found according to the user selected methods and the following equation:
The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowOutflow
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage (and Pool Elevation).
Required Known Slots
• Inflow
• Outflow
Required Unknown Slots
• Storage
Method Details  
First, this method checks if there are Pool Elevation and Storage values for the previous timestep. If these slots are valid the method continues and checks if a Canal Object is linked. If there is a Canal Object and it has not yet solved, the method exits and waits for the Canal Object to solve.
If these checks pass, Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the mass balance and spill methods using a convergence algorithm. The convergence algorithm used is detailed Reservoir Convergence (see “Reservoir Convergence”). If this flag is not present, then the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This solution is performed with an iterative process. (See note below.) Spill and Release are then found according to the user selected methods and the following equation:
The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
* solveMB_givenEnergyInflow
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow.
Required Known Slots
• Inflow
• Energy
Required Unknown Slots
• Storage
Method Details  
An error will result if this object is linked to a Canal and this dispatch method is executed. A pre-iteration spill calculation and power release calculation are done next. A double iteration is then done with the inner loop iterating evaporation, bankstorage, seepage and mass balance (including slope storage) to solve for Storage, and the outer loop iterating spill and power (tailwater, and power release) to solve for Outflow. (See note below.)
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solve Storage solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
* solveMB_givenEnergyStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Known Slots
• Storage
• Energy
Required Unknown Slots
• Inflow
Method Details  
Dispatching with this method will result in an error if the Storage is a target or if the Canal Flow slot is linked. Pre-iteration spill and power (tailwater and power release) calculations are done. A double iteration is performed iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenEnergyHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Known Slots
• Energy
Required Unknown Slots
• Inflow
• Storage
Method Details  
Dispatching with this method will result in an error if the Pool Elevation is a target or if the Canal Flow slot is linked. This should be avoided by insuring that the knowns/unknowns will not match this dispatch method during the target period or when a Canal is linked. Pre-iteration spill, power (tailwater and power release), evaporation and seepage calculations are calculated. A double iteration is performed, iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowRelease
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage, Pool Elevation, Energy, and Outflow.
Required Known Slots
• Inflow
Required Unknown Slots
• Energy
• Storage
• Outflow
Method Details  
This method exits with an error if Canal Flow slot is linked or if Spill is input.
If the Turbine Release is flagged Unit Values (U), the Unit Turbine Release subslots are summed to calculate and set the Turbine Release slot. If all the Unit Turbine Release slots are NaN, an error is issued. If the Unit Turbine Release slot is not visible because the Unit Power Table method is not selected, an error is issued.
If there is an unregulated spillway crest (because an unregulated spill method is selected) the method computes the upper limit for unregulated spill to prevent spilling too much water to drop the reservoir below the crest. Typically, this limit is computed as the volume of water above the crest converted to a flow. See the Unregulated Spill method for details.
The Outflow is computed as the sum of turbine release and spill inputs (if any) according to the user selected methods and the following equation:
Then the Storage (including wedge storage) is found with the following equation:
This equation may contain other elements reflecting the user method choices, including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage. The solution is done with an iterative process. (See note below.) Any error in the mass balance added to the unregulated spill slot, if it is being used. This value for unregulated spill may not conform to the unregulated spill table. Care should be exercised when dispatching using this method to insure that the mass balance is maintained.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
 
Revised: 11/11/2019