The following Rio Grande-specific Slot Inflow method is available on the Reservoirs.
This method sets the Slot Inflow for all accounts on Heron Reservoir. The Heron Inflow method requires that a method be selected in the Seepage category. The method requires values calculated by simulation, such as seepage and surface area; therefore, the execution time must be set to After Simulation. This method is currently configured to function correctly for 1 Day and 1 Month timestep sizes only.
The Slot Inflow for all accounts with San Juan water type is set to zero. The Slot Inflow for the RioGrande account is set to the difference between the change in cumulative natural flow and the Inflow to the Rio Grande account.
The calculation of naturalFlowCumul is dependent on whether the RioGrande.Inflow is in high flow or low flow conditions for the month. For a 1 Day timestep, if the condition changes at some point during the month, all values are recalculated previous timesteps in the month based on the new condition. For a 1 Month timestep, the monthly condition is known at the end of each timestep (end of each month) so there is no need to recalculate any values.
Type: Table Slot
Units: Volume, None, None
Description: The first column contains the test volume for determining whether the total monthly RioGrande flow is high flow or low flow. The second and third columns contain the ratios used for low flow and high flow conditions.
Information: The products of the flow ratios and the RioGrande.Inflow are used in calculating the Natural Flow.
I/O: Required Input
Links: No
Type: Series Slot
Units: None
Description: The final flow ratio used at each timestep based on the monthly flow condition
Information: The value in this slot will be either the Low Flow Ratio or the High Flow Ratio from the Heron Inflow Coefficients table slot.
I/O: Output only
Links: No
Type: Series Slot
Units: Volume
Description: The effective precipitation calculated for the given timestep.
Information: The total accumulated precipitation depth for the month is used to calculate the accumulated effective precipitation for the current day and the previous day. The difference is the Effective Precip for the current day. For a 1 Month timestep, the effective precipitation is calculated from the total precipitation for the current timestep.
I/O: Output
Links: No
Type: Table Slot
Units: Length, Fraction, Length
Description: The relationship between total accumulated precipitation depth for the month and the amount considered effective precipitation.
Information: The first column gives a depth of monthly precipitation. The second column gives the fraction of that precipitation depth that is considered effective precipitation. The third column contains the accumulated effective precipitation value corresponding to the precipitation in the first column. Linear interpolation is used to calculate the effective precipitation depth based on the total precipitation depth for the month. Only the first and third columns are actually used in the interpolation. The second column is only for reference.
I/O: Required Input
Links: No
Each table represents a table series slot. The row names represent the column headers in the table series slots.
The Heron Inflow method carries out the following steps.
Set the Slot Inflow for all accounts with San Juan water type to zero
, for all San Juan accounts
Calculate Effective Precipitation
For a 1 Month timestep, this can be done based on the Precipitation Volume for the month, which will have been set in simulation. The Precipitation Volume calculation will already account for Ice Coverage if applicable. For a 1 Day timestep, Effective Precipitation must be calculated using the cumulative sum of Precipitation Rate from the beginning of the month to the current day, and Ice Coverage is included explicitly. At a 1 Month timestep the average surface area is used, whereas the current (end of timestep) surface area is used for a 1 Day timestep.
IF isMonthly
ELSE
END IF
Calculate the test volume and the cumulative RioGrande.Inflow for the month to date
For a 1 Day timestep, these are cumulative values from the beginning of the month to the current timestep. For a 1 Month timestep, the cumulative monthly value is simply the current timestep value.
IF isMonthly
ELSE (1Day timestep)
IF
ELSE
END IF
END IF
Convert storages to equivalent flows based on the timestep length for use in net gain calculations
Calculate local variables and set the values in the Heron Inflow Values table series slot
The values you must calculate are displayed under Column; you set the values in the Heron Inflow Values table series slot.
Table A.21 Heron Inflow Values
Column | Value |
---|
Effective Precip (Volume) | Reservoir.Effective Precip |
Net Evaporation (Volume) | Reservoir.Evaporation - Reservoir.Effective Precip |
Seepage (Flow) | Reservoir.Seepage |
Low Ratio (Flow) | |
High Ratio (Flow) | |
Low Net EOD Gain (Flow) | |
High Net EOD Gain (Flow) | |
Low Hybrid Seepage (Flow) | |
High Hybrid Seepage (Flow) | |
Low Hybrid EOD (Flow) | |
High Hybrid EOD (Flow) | |
EOD Content (Volume) | N/A (Values are not set in this column) |
Check the flow conditions, and then set the inflow ratio and monthly cumulative values accordingly
IF
, (low flow conditions)
IF isMonthly
ELSE (1Day timestep)
END IF
ELSE (high flow conditions)
IF isMonthly
ELSE (1Day timestep)
END IF
END IF
Calculate the cumulative ratio inflow and the cumulative net gain
If it is the first day of the month or a 1 Month timestep, these are just the inflowRatio (if it is positive) and the netGainMonthly for the timestep.
IF
OR (isMonthly)
IF
ELSE (inflowRatio is positive)
END IF
ELSE (after the first of the month at a 1Day timestep)
IF
ELSE
END IF
END IF
Determine the correct logic to use
IF
ELSE
END IF
IF
AND
END IF
IF
ELSE
END IF
Set the values in the Heron Cumulative Inflow Values table series slot
The table values are set to the local variable, as follows.
Table A.22 Heron Cumulative Inflow Values
Column Header (Unit Type) | Value (local variable) |
---|
Ratio Inflow (Volume) | cumulRatio |
Net EOD Gain (Volume) | cumulNetGain |
Inflow Within (Volume) | cumulInflowWithin |
Natural Flow (Volume) | cumulNaturalFlow |
Set RioGrande.Slot Inflow
If it is the first day of the month, or a 1 Month timestep, or if the conditions have not changed from the previous timestep, then the RioGrande.Slot Inflow can be set. If conditions have changed, then a helper function (findHeronRGInflow) is called. This function recalculates values for previous timesteps in the month based on the conditions at the current timestep.
IF
OR isMonthly
ELSE IF
OR
The first condition here indicates that the flow condition has changed from high to low or low to high. The second condition indicates that the logic has changed from the previous timestep.
• FOR (d IN BeginningOfMonth TO CurrentDay)
– Set all previous values in Rio Grande Ratio for the month equal to the value for the current day
– Call findHeronRGInflow to recalculate values for previous timesteps in the month and to set RioGrande.Slot Inflow for all previous days in the month and the current day.
END FOR
ELSE (conditions have not changed from the previous day)
END IF
findHeronRGInflow function
The findHeronRGInflow function is called from within the Heron Inflow method when the conditions at the current timestep (high flow/low flow or the logic used) have changed from the previous timestep. The function recalculates previous values for the given month used in the RioGrande.Slot Inflow calculation based on the conditions at the current timestep. This recalculation only applies for a 1 Day timestep. At a 1 Month timestep, the final condition for the month is know at the end of each timestep when values are first calculated.
The steps in the function are described below.
Note: This function is called from within a FOR loop over all timesteps from the first day of the month to the current controller timestep. In the notation below, the index d refers to the timestep in the FOR loop, and the index curDay refers to the current controller timestep.
IF
• This would indicate low flow conditions for the month to-date
– Set the inflowRatio for the day index in the FOR loop equal to the low inflow ratio, and sum the cumulative inflow ratio, net gain and seepage from the beginning of the month to index day.
ELSE (high flow conditions)
– Set the inflowRatio for the day index in the FOR loop equal to the low inflow ratio, and sum the cumulative inflow ratio, net gain and seepage from the beginning of the month to index day.
END IF
Set the previous logic to the current logic to use for the next timestep
Calculate the monthly sum of each column in the Heron Inflow Values table series slot
For the final day of the month at a 1 Day timestep, calculate the monthly sum of each column in the Heron Inflow Values table series slot. Flow values will be summed to the corresponding volumes. Set the sums at the final day of each month in the Heron Inflow Totals table series slot. For a 1 Month timestep, this slot will be empty; the monthly (end of timestep) values will be displayed in Heron Inflow Values. See
Heron Inflow Values.
Heron Inflow Totals
The Heron Inflow Totals slot holds the monthly sum of the Heron Inflow Values slot.
Set inflowRatioCumul and adjust netGainCumul if inflowRatioMonthly is negative
These values will be used to calculate the cumulative natural flow based on the current logic. inflowRatioMonthly is the cumulative ratio inflow for the current day (current controller timestep) passed to this function from the Heron Inflow method above.
IF
(first day of the month)
IF
ELSE
END IF
ELSE (after the beginning of the month)
IF
ELSE
END IF
END IF
IF
END IF
Set the cumulative natural flow based on the current (controller timestep) logic
The current logic (currentLogic) is passed to this function from the Heron Inflow method above.
IF
ELSE IF
ELSE IF
ELSE IF
ELSE IF
END IF
Set the values in the Heron Cumulative Inflow Values table series slot at timestep d
Table A.23 Heron Cumulative Inflow Values
Column | Value |
---|
Ratio Inflow (Volume) | inflowRatioCumul |
Net EOD Gain (Volume) | netGainCumul |
Inflow Within (Volume) | inflowWithinCumul |
Natural Flow (Volume) | naturalFlowCumul |
Set the RioGrande.Slot Inflow at timestep d to difference between the natural flow at this timestep and the RioGrande.Inflow at this timestep
IF
(first day of the month)
ELSE (after the first day of the month)
END IF
At this point, the function will repeat with the next index day d until it has reached the current day (current controller timestep).