The FlexSim Fluid Library consists of twelve objects. These objects are designed to aid in simulating systems that move material as a fluid. The material does not necessarily need to be liquid, but can be nearly anything that is measured by weight or volume. In contrast, the standard FlexSim library is designed to move material that is in discrete amounts (boxes, pieces, etc). There are fluid objects that are designed to be used as an interface between the other fluid objects and the discrete objects. They allow the modeller to turn flowitems into fluid and fluid into flowitems.
Because of the discrete event nature of FlexSim, the fluid objects are not what might be considered "continuous objects." Instead, they break time down into small sections called "ticks". The length of a tick is called the tick time. At the end of each tick, all of the fluid objects in the model evaluate how much material they received and sent during the tick. Material only moves at the end of each tick. As the tick time gets longer, the model will run faster, but may lose accuracy. As the tick time gets lower, the model will slow down, but may be more accurate. It is the modeller's responsibility to make sure that the tick time for the model is small enough that the simulation is still accurate.
The amount of material that moves between objects at the end of each tick is based on the input and output rates defined on each object, as well as the amount of material that is available to move and the amount of space available to move it to. The fluid objects have a standard way of moving material between themselves. The input and output rates are each defined using three values: the object's maximum total rate, the maximum port rate, and a scaling factor for each port. The object's maximum rate is the maximum amount that will be allowed in or out through all of the ports combined in a single time unit (not a single tick). Because fluid movement is evaluated one port at a time, this value may be used to stop certain ports from sending or receiving. The maximum port rate is the maximum amount of material that will be allowed in or out any one port in a single time unit. This value applies to all of the input or output ports on the object. Each individual port is then assigned a scale factor. This scale factor is multiplied by the port rate to calculate the maximum rate for that specific port. These scale factors are used to restrict flow through one or more ports without affecting the maximum flow through the others. These three values are applied separately to the input and output ports.
All of the fluid objects use this system to transfer material. However, because of the specialized nature of some of the objects, not all of these values may be available to the modeller for editing. Instead, some limited subset of the values will be presented and the object will maintain the other variables behind the scene. All of the values that the user can edit are presented in the GUI's for each object, and will be discussed in more detail later.
Each object also keeps track of a value called the Product ID. This is a number that is used to identify the type of material that the object is currently holding. The product may contain sub-components. This is a list of all of the possible sub-components in the model. The list is recorded as a set of percentages of each sub-component. The Product ID number of an object does not represent any of the sub-components. It is simply a number that the modeller assigns to a specific material. The Product ID of the objects, as well as the sub-components percentages will always be maintained by the fluid objects. The user only has to specify initial values on the objects that create fluid.
Most of the fluid objects have a system for displaying the current content of the objects as a percentage of the maximum content. This system is a colored bar called the level display or level indicator. The bar consists of two layers. One is dark gray and is generally drawn above the other. This represents the amount of empty space in the object. The other is the color of the object and represents the current content. If a bar is displayed as being fully gray, that object is empty. If a bar is fully colored, that object is full.
The level indicator bar can be moved, resized and rotated for each object in the model. The modeller can also state whether the bar is rectangular or cylindrical. The size of the bar is measured as a percentage (from 0-1) of the size of the object. The location is relative to the size of the object as well. The point (0,0,0) is one corner of the object's bounding box while (1,1,1) is the opposite corner. This flexibility allows the modeller to position the level indicator bar in such a way that it appears to be part of the object's 3D shape.