Fluid Library

The Fluid Library allows you to model storage and transfer of fluids, bulk matter, or large amounts of discrete items, which you do not want to model as separate objects. 

The library includes blocks such as Tank, Pipeline, Valve, FluidSource, and FluidDispose. There are also blocks for routing, merging, and diverging the flow. In addition, there is an object BulkConveyor designed to model transfer of bulk or condensable matter. 

The Fluid Library interoperates with the Process Modeling Library: it can convert agents into portions of fluid and vice versa. 

Blocks

The table below lists all Fluid Library blocks:


Fluid Source Generates the flow; it is a typical starting block of a Fluid Library flowchart. Can work as a source with infinite capacity or as source with limited initial amount that can be refilled by calling the inject().

Fluid Dispose Accepts the incoming flow and disposes it (removes from the system). It is a typical end block of a Fluid Library flowchart.

Tank A container for fluid or bulk matter with a finite capacity, input at the top and output at the bottom. Optionally can contain some initial fluid. Tank can also serve as a source of fluid or as a disposal container with finite capacity.

Valve Restricts the flow rate or completely blocks the flow. Valve has a maximum flow rate, which applies when the valve is open. When the valve is closed, the rate is forced to zero. 

Pipeline Transports fluid from one point to another. Has a finite capacity. Optionally can contain some initial fluid located at the input end. Once the pipeline gets filled, it stays filled forever, gaps are not allowed in pipelines (if gaps or condensed sections are need, consider using BulkConveyor). 

Fluid Select Output Routes the flow from the input to one of the outputs. 

Fluid Select Input Routes the flow from one of the two inputs to the output. 

Fluid Split Splits the input stream into two different streams; the sum of output flow rates equals the input rate.

Fluid Merge Merges two streams of flow into one; the output flow rate equals the sum of the input rates. 
Process Tank Accumulates the fluid up to the Capacity level, optionally delays (e.g. processes) it for a given amount of time, and lets it flow out.
Mix Tank

Makes a mix of fluids coming in from up to five different sources, optionally delays (e.g. processes) the completed mix for a given amount of time, and lets it flow out. The output rate can optionally be limited. The new mix will start to accumulate only when the previous mix has completely flowed out. The batch of the mix can be explicitly specified or can be left as default batch.


Bulk Conveyor

Conveys bulk or condensable matter from one point to another. Compared to pipeline, allows gaps and sections of different “density”. 


Fluid Convert The output rate of this block always equals the input rate multiplied by a given "conversion factor". The factor can be both greater than 1, or less than 1, or 1, so FluidConvert can both amplify or diminish the flow. The block can be used to model, for example, packaging or unpackaging fluid or items.

Fluid Exit Forwards the flow into the connected FluidEnter block. Is designed to set up flow networks dynamically, for example, when the network configuration is read from a database, or when dynamic re-routing is needed between multiple parts of the network.

Fluid Enter Accepts the flow from the connected FluidExit block. Is designed to set up flow networks dynamically, for example, when the network configuration is read from a database, or when dynamic re-routing is needed between multiple parts of the network.

Agent To Fluid

Converts agents (discrete items) into the flow. Serves as an interface block between the Process Modeling Library (or any other library based on it) and the Fluid Library. Each agent is assumed to contain a certain amount of fluid or bulk matter, and upon arrival of an agent, this block starts the outflow.

Fluid To Agent Converts portions of fluid or bulk matter into agents (discrete items). Serves as an interface block between the Fluid Library and the Process Modeling Library (or any other library based on it). The creation of a new agent can be triggered either by a certain amount accumulated at this block, or by a batch completely received (namely, by the next batch appearing at the input).
Fluid Pickup

Lets the agents passing through pick up fluid or bulk matter. Serves as an interface block between the Process Modeling Library and the Fluid Library. Each agent is assumed to need a certain amount of fluid to pick up, and, upon arrival of the agent at the block, the block starts accumulating the fluid. The amount can be specified explicitly and may depend on the agent, or pick up can be executed by batch. In the latter case, the agent is released once the block has accumulated a non-zero amount of fluid of one batch and the new different batch shows up. When there is no agent in the block, the fluid is not allowed to flow in. 

Fluid Dropoff

Drops off fluid from the agents passing through. Serves as an interface block between the Process Modeling Library and the Fluid Library. Each agent is assumed to have a certain amount of fluid or bulk matter to drop off, and upon arrival of an agent, this block starts the outflow. The block delays the agent until the fluid has completely flowed out, releases the agent through the out port and lets it continue its operation. Optionally, FluidDropoff can generate batches, one batch per agent.