How a Reservoir Computes the Withdrawal Rate

In the absence of a Lower Bound, the Withdrawal_Rate output is equal to the Withdrawal Requests/Rate of Change input. However, if a Lower Bound is specified, the Withdrawal_Rate output represents the actual rate of withdrawal from the Reservoir, which may be less than the specified Withdrawal Requests/Rate of Change (which can be thought of as the demand or requested rate of withdrawal).

   Note: The Withdrawal_Rate is completely independent of and does not include the Overflow_Rate.  The Withdrawal_Rate only considers of withdrawals specified in the Withdrawal Requests/Rate of Change input field.

GoldSim compares the Withdrawal Requests/Rate of Change to the amount of material available, and only outputs what can actually be withdrawn from the Reservoir over the timestep. Hence, if the Value is above the Lower Bound throughout the timestep, the Withdrawal_Rate output is exactly equal to the specified Withdrawal Requests/Rate of Change. If the Value is at the Lower Bound throughout the timestep, the Withdrawal_Rate output is equal to the specified Additions/Rate of Change.

If the Reservoir reaches (or leaves) the Lower Bound during the timestep, GoldSim uses logic similar to that for computing overflow rates in order to correctly compute the actual withdrawal rate.  In order to compute withdrawal rates accurately, by default GoldSim inserts an “unscheduled update” when the Reservoir reaches a Lower Bound. Unscheduled updates are timesteps that are automatically inserted by GoldSim during the simulation in order to more accurately simulate the system.

To illustrate how GoldSim treats withdrawal rates, consider the following simple example. Assume we are modeling a pond with a Lower Bound of zero. Further assume that at time = 10 day, the pond contains 200 m3 of water. GoldSim computes the constant Additions/Rate of Change and the Withdrawal Requests/Rate of Change for times greater than 10 days to be 100 m3/day and 300 m3/day, respectively.  Therefore, the pond will run out of water at 11 days. Let’s further assume that our model has a 2 day timestep (so that this occurs in the middle of the scheduled timesteps).

The Withdrawal_Rate is computed as follows.  At 10 days, GoldSim will report a Withdrawal_Rate of 300 m3/day.  A new timestep (an “unscheduled update”) is then inserted at 11 days when the pond becomes empty.  The Withdrawal_Rate at this time will actually be internally calculated as 100 m3/day (since the pond is empty, the Withdrawal_Rate can be no greater than the Additions/Rate of Change). However, because by default GoldSim only reports values at scheduled timesteps (e.g., 10 days, 12 days), the Withdrawal_Rate will not be displayed as 100 m3/day until 12 days.

Hence, it is important to understand that the Withdrawal_Rate represents the instantaneous withdrawal rate at the reported time.  You cannot assume that this rate is constant over the next scheduled timestep. That is, it would be incorrect to assume that the Withdrawal_Rate was 300 m3/day between 10 and 12 days.  In fact, at 10 days, the Withdrawal_Rate was indeed 300 m3/day, but it changed to 100 m3/day at 11 days (between the scheduled updates).  Because 11 days is an unscheduled timestep, you would not see this in a time history plot. However, if the Withdrawal_Rate was integrated (using an Integrator or another Reservoir that represented the total amount of water that has been withdrawn), the following results would be obtained:

 

Time (days)

Reported Withdrawal Rate (m3/day)

Total Water Withdrawn (m3)

10

300

0

12

100

400

14

100

600

Note that the amount of water is properly conserved. At 12 days, the pond has been empty for 1 day (and hence the Withdrawal_Rate during that period has been equal to the inflow rate of 100 m3/day), so that a total volume of 300 m3/day * 1 day + 100 m3/day * 1 day = 400 m3 has been withdrawn.  At 14 days, the pond as been empty for 3 days, so that a total volume of 300 m3/day * 1 day + 100 m3/day * 3 day = 600 m3 has been withdrawn. 

   Note: In some cases, it may be of interest to see the values (such as the Withdrawal_Rate) that were computed at unscheduled updates. To facilitate this, GoldSim provides an option to do so (under a specified set of conditions) in the Advanced Time settings.

   Note: Most spreadsheet models implicitly compute average values (e.g., flows) over a step (or the change from one step to the next).  You can compute average values such as these (e.g., in order to compare GoldSim with a spreadsheet model) by using Goldsim’s Reporting Periods feature.

   Note: As noted above, by default, GoldSim inserts an unscheduled update when the Reservoir reaches a Lower Bound.  However, if desired, you can disable unscheduled updates (although it is generally not recommended).  If you do so, the reported Withdrawal_Rate is the average rate over the next scheduled timestep and can be assumed to be constant. . (This option is accessed via the Advanced… button in the Time tab of the Simulation Setting dialog).

   Note: You can record when Reservoirs hit or depart from their Upper and Lower Bounds in the model’s Run Log.  This logging can be activated via the General tab of the Options dialog (accessed via Model|Options from the main menu).

   Note: In many material flow models, you will likely have multiple withdrawals from a Reservoir, with each withdrawal being directed to a different place.  For example, if you were simulating a pond, you could imagine having three different withdrawals from the pond: 1) pumping out of the pond (e.g., to another pond); 2) leakage out the bottom pond (into the underlying ground); and 3) evaporation (into the atmosphere). In such a case, the Withdrawal_Rate output would represent the total withdrawal.  In such a case, you should use the Pool element, which is an expanded version of the Reservoir specifically designed to handle multiple withdrawals.

The calculation of a Withdrawal_Rate can be further complicated because the Lower Bound can be specified to change with time (i.e., you could specify this input as being time-variable).

   Note: If the Lower Bound is constant, the Value in the Reservoir will never fall below the Lower Bound.  However, if the Lower Bound is changing with time, under some circumstances, it is possible for the Value of the Reservoir to fall below the Lower Bound.  The primary purpose of the Lower Bound is to accurately compute the Withdrawal_Rate. If the Lower Bound exceeds the amount in the Reservoir (because the Lower Bound has changed during a timestep), the Reservoir will not permit any withdrawals until it returns to the Lower Bound (via additions).

As is the case with Upper Bounds, GoldSim carries out such calculations by assuming that bounds remain constant over a timestep. A simple example illustrating this is provided in the topic discussing how GoldSim computes the Overflow_Rate with a changing Upper Bound

   Note: Although GoldSim conserves mass when computing the actual withdrawal rate, it does not imply that the result is perfectly accurate. In fact, the accuracy of the result is a function of the timestep, since GoldSim is approximating continuously varying functions (i.e., rates and bounds) using stair-step functions. This approximation is discussed further in Appendix F of the GoldSim User’s Guide.

Related Topics…

Learn more about: