(Mass) Flow Conveyor

Overview and Key Concepts

The flow conveyor is used to allow continuous flow through the use of multiple input and output ports. The conveyor represents a 'belt' upon which 'dry bulk' can be discharged and transported to the end of the conveyor. The conveyor has a speed that is used to calculate the time required for a product to reach the output of the conveyor. Together with the width of the conveyor the speed also determines the height of the product on the conveyor, based on the input rate. At the output point the outflow rate is a result of the speed of the conveyor and the height of the product.

FloWorks provides two conveyor objects: a flow conveyor and a mass flow conveyor. The former is non-accumulating and non-overflowing. This means that when the actual output rate of the conveyor is less than the rate that is required based on the speed and product height, the conveyor will stop. You should then take a manual action, such as

  • increase the downstream capacity, for example by changing the receiving object's maximum inflow rate;
  • decrease the desired outflow rate by lowering the speed of the conveyor, such that the same amount of material will flow out in less time;
  • discard the overflow by attaching a sink of infinite capacity as the last ranked output port.

After taking one of these measures, you need to restart the conveyor by calling the resume method.

By contrast, the mass flow conveyor is accumulating. When the actual output rate is lower than the requested output rate, the material that cannot exit will stack up against the output end of the conveyor up to a predefined maximum height. Compared to the non-accumulating conveyor, the mass flow conveyor has some restrictions which are described in more detail below.

For the regular conveyor, inputs may be placed anywhere along the length of the conveyor. Each input location is visualized by an arrow, which is colored according to the product entering through that port, and optionally a little square blocking the arrow to indicate that the input is closed. Products from different input ports will stack on top of each other and as long as this material is in transport the conveyor you can visually track these layers. Upon reaching the end of the conveyor, this information is lost - it is assumed that since the products are stacked only the topmost product will be visible outside the conveyor. The output point of the conveyor is always at one of the ends of the conveyor - usually the farthest point along the conveyor, unless the conveyor's direction has been changed.

The image shows a (non-accumulating) conveyor with inputs at various points along the conveyor. Note the orange square below the input arrow, indicating that the orange source is closed. The purple arrow (without square) below the end of the conveyor indicates that the current output product is purple and is flowing.

For the mass flow conveyor, it is not possible to have inputs enter at other points than the start of the conveyor. Also the mass flow conveyor does not keep track of different layers, in case the input objects have different input types. The product on the mass flow conveyor will be visualized as being of the product type of the first input object.

The non-accumulating conveyor has a maximum capacity. The conveyor will stop() whenever the flow at any point along the conveyor exceeds the capacity. In contrast, the mass flow conveyor has a similar property called maximum density, which determines the maximum height (volume per unit of surface area) of product anywhere along the conveyor. This includes any flow "backing up" from the end of the conveyor due to restrictions in output rate.


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

The flow conveyor has the following additional events:

On Product Change

This event occurs whenever the product leaving the conveyor changes. This event is commonly used to switch output ports or take some other action based on the new product type. The provided dropdown options include an option to pass the new product downstream - this will set the product of a specified output object to the new type. You can use this to link multiple conveyors or pipes and conveyors together and automatically create a multi-product pipeline based on the actual output product of a conveyor.

It has the following parameters:

Event Parameter Explanation
curproducttype The product ID or name of the product type that was leaving prior to this event.
newproducttype The product ID or name of the product type that will be leaving after this event.


For statistical purposes, the conveyor's FloWorks state profile will be in one of the following states at various points during a simulation run:


The conveyor is empty and there is no flow.


The conveyor's inflow rate exceeds the outflow rate.


The conveyor's outflow rate exceeds the inflow rate.

Not empty

The conveyor is not empty but there is no net flow because the input rate is equal to the output rate.


The conveyor has stopped because the requested output rate exceeds the downstream capacity.


The (mass) flow conveyor tracks the following statistics. These can be viewed by clicking on the object and then viewing the Statistics pane in Quick Properties.

Input / Output

The total number amount of flow, measured in fluid units, that has entered or exited the (mass) flow conveyor.

Flow rates

The current input and output rate of the (mass) flow conveyor, measured in fluid units per time unit.


The current content of the (mass) flow conveyor, which is the difference between the output amount and the input amount.


The (mass) flow conveyor objects use the following properties panels:

Custom coding

You may control the behavior of the conveyor 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 conveyor is an instance of the FlowObject class, see the class reference for information about its properties.

When the flow conveyor blocks because the actual output rate is too low, call Object.resume() to restart it.