Pool elements are elements that, like Reservoirs, accumulate flows. And like Reservoirs, you can use them to accumulate and track material, such as the quantity of water in a lake, the amount of soil in a stockpile, the number of people in a city, and the number of widgets in a warehouse.
Their default symbol is a very similar to that of a Reservoir - a container of water - since this is an excellent analogy for the behavior of the element. Like a container of water, a Pool element has a current value (e.g., the volume of water in the container), inflows, withdrawals and overflows.
A Pool is an expanded (and more powerful) version of the Reservoir element. It can do everything that a Reservoir can do (e.g., it can have Upper and Lower Bounds), but is different (and hence more powerful) in three important ways:
• Pools allow you to specify Inflows as separate and individual inputs. (Reservoirs provide only a single input for inflows).
• Pools allow you to specify Requested Outflows as separate and individual inputs. (Reservoirs provide only a single input for a “withdrawal request”). In turn, in addition to providing a “total outflow” output, Pools provide separate and individual outputs for each requested outflow. (Reservoirs provide only a single “withdrawal rate” output). This allows you to easily route different outflows to different locations.
• Because Pools allow you to specify multiple Requested Outflows, and it is possible (if the Pool reaches its Lower Bound) that the Pool may not be able to provide the total for all requests, you also specify Priorities for each requested outflow, and the total outflow is then allocated accordingly among the requests if the Pool is unable to provide all of the requests.
Note: Due to the differences pointed out above, if you are modeling a system that has multiple distinct outflows, you should use a Pool rather than a Reservoir.
The fundamental inputs to a Pool are an Initial Quantity, Inflows and Outflows.
In the absence of Upper and Lower Bounds, the primary output of the Pool (its Quantity) is computed as follows:
The Inflows and Outflows can, of course, be functions of time.
The Properties dialog for a Pool element looks like this:
The Pool dialog has three tabs: a Definition tab (where the Units, Initial Quantity, Lower Bound, Upper Bound and discrete Additions and Withdrawals are specified), an Inflows tab (where inflows to the Pool are specified), and an Outflows tab (where requested outflows from the Pool are specified).
All Pools have the following outputs:
• The quantity in the Pool (the primary output, having the same name as the element);
• The Total_Inflow to the Pool (simply the sum of all the Inflow inputs);
• The Total_Request from the Pool (simply the sum of all the Requested Outflow inputs);
• The Total_Outflow from the Pool (which is always less than or equal to the Total_Request); and
• Each individual Outflow from the Pool (whose names are user-defined).
Optional outputs include:
• The Overflow from the Pool (only available if an Upper Bound is defined);
• Is_Full, a condition indicating whether or not the Pool is at its Upper Bound (only available if an Upper Bound is defined);
• Discrete_Overflow, a discrete change signal (only available if an Upper Bound is defined and a Discrete Addition is specified); and
• Discrete_Withdrawals, a discrete change signal (only available if a Discrete Withdrawal is specified).
An example model which illustrates the basic use of Pool elements (Pool.gsm), as well as a model illustrating more advanced features (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).
Learn more about:
Specifying the Dimensions and Initial Quantity for a Pool
Specifying the Inflow Rates for a Pool
Specifying the Outflow Requests for a Pool
How a Pool Element Computes its Primary Output (the Quantity)
Defining Upper and Lower Bounds for a Pool
How a Pool Computes the Overflow
How a Pool Computes the Total Outflow
How a Pool Computes the Individual Outflows
Avoiding Oscillatory Behavior When Using Pools
Using the Is_Full Output of a Pool
Specifying Discrete Additions and Withdrawals to a Pool