Flow Tanks

Overview and Key Concepts

The flow tank is the most general and widely used fluid container in FloWorks. It can receive and send material at the same time. You can specify the maximum capacity of the tank, or let FloWorks calculate the capacity of a cylindrical or rectangular tank based on the actual size in the model. Apart from triggers that fire when the tank is full or empty, you may define additional triggers which fire when the content of the tank reaches a certain percentage.

An initial content can be specified for the tank - the content will be set to this initial value every time the model is reset. This is very useful if your model only requires a specific amount of material that needs to be released into the system (immediately or eventually) but no more material will ever be created. If, on the other hand, you need a (potentially) unlimited stream of incoming material, use a flow source instead.

The flow tank is very flexible in its visualization. Some basic shapes have been provided, such as a cylindrical and rectangular tank, common applications such as silos and IBC (intermediate bulk containers) and specific shapes such as a conical flow pile. Please see the Tank Visualization page for more information.

Events

The flow tank uses the standard events that are common to almost all FloWorks objects. See FloWorks Triggers for an explanation of these events.

The flow tank has the following additional events.

On Empty

This event occurs every time the content of the tank reaches zero where it was not zero before. Usually this will happen because the outflow exceeded the inflow and the tank ran out of content, but the event also triggers when the content was non-zero and you set it to zero by a trigger option or code. Note that when the content was already zero, the trigger will never fire; this includes when the tank resets to an empty state at the start of the simulation.

It has the following parameters:

Event Parameter Explanation
mode The mode: rising or falling. For the On Empty trigger this will always be falling - it is provided only for consistency with general level triggers which can happen at any level.

On Full

This event occurs every time the content of the tank reaches the maximum content. Usually this will happen because the inflow exceeded the outflow and the tank ran out of ullage, but the event also triggers when the content was below the maximum content and you set it to the maximum by a trigger option or code. Note that when the tank was already full, the trigger will never fire; this includes when the tank resets to a full state at the start of the simulation.

It has the following parameters:

Event Parameter Explanation
mode The mode: rising or falling. For the On Full trigger this will always be rising - it is provided only for consistency with general level triggers which can happen at any level.

On Trigger Level

This event occurs after at least one content level trigger has been executed. It is provided mostly as a hook for attaching event listeners, such as a Process Flow Wait For Event activity, to those triggers because they may be dynamic in number.

The event has the following parameters:

Event Parameter Explanation
level The content level reached which caused one or more trigger levels to execute.
mode Whether the content is rising or falling. For the On Full trigger this will always be rising - it is provided only for consistency with general level triggers which can happen at any level.

States

For statistical purposes, the flow tank's FloWorks state profile will be in one of the following states at various points during a simulation run. The current state can be viewed by clicking on the object and then viewing the Statistics pane in Properties.

Empty

The tank is empty and there is no net flow (the flow is zero or inflow rate is equal to the outflow rate).

Full

The tank is full and there is no net flow (the flow is zero or inflow rate is equal to the outflow rate).

Filling

The tank is not full and the inflow rate exceeds the outflow rate.

Releasing

The tank is not empty and the outflow rate exceeds the inflow rate.

Not empty

The tank is neither empty nor full but there is no net flow (the flow is zero or inflow rate is equal to the outflow rate).

Statistics

The flow tank tracks the following statistics. These can be viewed by clicking on the object and then viewing the Statistics panel in Properties.

Input / Output

The total number amount of flow, measured in fluid units, that has entered or exited the tank.

Flow rates

The current input and output rate of the tank, measured in fluid units per time unit.

Content

The current content of the tank, which is the difference between the output amount and the input amount.

Properties

The flow tank objects use the following properties panels:

Custom coding

You may control the behavior of the flow source dynamically by writing FlexScript, for example in a Script window or by changing the code behind one of the options in an object trigger.

The flow tanks are instances of the FlowTank class, see the class reference for information about its properties.