Defining Upper and Lower Bounds for a Pool

One of the powerful features of a Pool is that you can specify a Lower and/or Upper Bound. If the Lower Bound and Upper Bound boxes are cleared for a Pool, the Quantity is not constrained and is unbounded. These Bounds are defined on the default (Definition) tab of the Pool element:

By default, when you create a new Pool element, a Lower Bound of 0 is assumed.  You can subsequently remove the Lower Bound, or modify it.

Checking one or both of these boxes, however, provides additional functionality and has important impacts on the outputs for the element. In particular:

   If the Lower Bound is checked, GoldSim enforces that limitation on the Quantity. As a result, the Total_Outflow output is not necessarily equal to the Total_Request output (which simply sums the Outflow Requests). In this case, the Total_Outflow output represents the actual outflow from the Pool, which may be less than the specified sum of the Outflow Requests (which represents the demand or requested outflow).

For example, if the Pool is at the Lower Bound, and there are no Inflows, the Total_Outflow output must be equal to zero, regardless of the Total_Request (there is no material available to outflow).  Similarly, if the Pool is at the Lower Bound, and the Inflows total to 10, the Total_Outflow output can be no greater than 10, regardless of the Total_Request (if there is no storage, you cannot outflow more than is being supplied via inflow).

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

   If the Upper Bound is checked, GoldSim enforces that limitation on the Quantity. GoldSim also adds two new (secondary) outputs: Overflow (a value) and Is_Full (a condition). If the Quantity is below the Upper Bound, the Overflow output is equal to zero and the Is_Full output is False. If the Quantity is at the Upper Bound, the Overflow output is equal to the difference between the sum of the specified Inflows and the sum of the specified Requested Outflows and the Is_Full output is True.

   Note: If the Upper Bound is constant, the Quantity in the Pool will never exceed the Upper Bound.  However, if the Upper Bound is changing with time, under some circumstances, it is possible for the Quantity in the Pool to exceed the Upper Bound. If the Upper Bound is exceeded (because it has changed during a timestep), GoldSim will overflow the excess uniformly over the next timestep.

   Note: If your specified Upper Bound is reached during a simulation, and the Overflow output is not referenced by any other element (e.g., as an inflow to another Pool), GoldSim will display a warning, as this could indicate that you have neglected to track flows leaving the Pool.

The Pool element is particularly powerful because it enforces the bounds while properly conserving the material being tracked. That is, if a Pool’s Inflows cause it to reach its Upper Bound, GoldSim produces an Overflow (which can be routed, for example, to a downstream Pool). Similarly, if the sum of the Outflow Requests exceeds what can actually be delivered, GoldSim accurately reports the actual Total_Outflow.

Furthermore, the Upper and Lower Bounds can be specified as functions of time. This allows you to simulate systems such as a pond which is filling up with silt and sand (and hence decreasing its capacity), and a warehouse whose capacity is being expanded (via construction) throughout a simulation.

An example model which illustrates a changing Upper Bound in a Pool element (PoolAdvanced.gsm) can be found in the General Examples/Stocks folder in your GoldSim directory (accessed by selecting File | Open Example... from the main menu).

The Lower Bound and the Upper Bound inputs to the Pool must have the same dimensions as the Pool’s Quantity Units. In addition, the following limitations imposed on the inputs should be specifically noted:

   The Upper Bound must be greater than or equal to the Lower Bound.

   The Initial Quantity must be greater than or equal to the Lower Bound and less than or equal to the Upper Bound.

Related Topics…

Learn more about: