Flow Mixer

Overview and Key Concepts

The flow mixer is used to combine products together into a single, new product. The different materials can either be pulled sequentially or in parallel. The Mixer always works in batches. It does not send any material until it has received and processed all the material that it was set to receive.

The flow mixer pulls material from one or more input ports and mixes it together into a new product as defined in the mixer settings.

Ingredients, steps and recipes

A mixer recipe consists of a number of steps that the mixer will execute consecutively. These steps are defined in the step table. Each step can pull material from zero or more input ports at the same time. A delay time can also be defined that begins after all the material for that step has been collected. The next step will not begin until after the delay time is over. Each step can be given a description, which is displayed near the object's name in the model view.

The recipe is entered into the Mixer Recipe table on the Current Recipe Tab. row of the table represents material coming from a single input port during a single step. Each row has four columns: the ingredient name, the port number, the step number and the amount. The name is a text that describes the material being pulled in for that row. It is included for your convenience only, the mixer logic ignores the value. The port number refers to the input port that the material will be pulled from. The step number is the step in the Step Table the Mixer must be in to pull this material, it must refer to a valid step number defined in that table. Once the Mixer has collected the correct amount for a given row, it will not pull any more material for that row, even if the other rows in the same step are not complete yet. The amount is the actual amount of material that will be pulled from the specified port during the specified step.

Parallel and sequential processing of steps

Different materials will be pulled in parallel if they have the same step number. They will be pulled in series if they have different step numbers. It is possible (and often very useful) to have a recipe that calls for some ingredients to be pulled in parallel and others to be pulled in series. There is no limit on the number of steps or ingredients that can be defined. There is also no limit on the number of ingredients that can be pulled during any single step. If the you wish to have material pulled from the same input port during multiple steps, you can define multiple rows for that input port in the Recipe Table.

Because the flow mixer controls which ports it will pull from at any point in time, there is no Flow Tab where you can define the input flow rates. The maximum overall input rate and output rate can be specified on the Current Recipe Tab. Make sure that the rate is high enough to allow input from multiple ports if their recipe requires that. Once the delay after the final step is complete, the mixer will release the product through all open ports.

Visual display

The mixer provides a visual display of the material that has been received at any point in the process. The level indicator bar will not show the mixer's final product color until the delay time of the last step is complete. Before that time, the level indicator is a series of layers of different colors. There is one layer for each ingredient in the Recipe. The size of each layer is the percentage of the total batch that has been pulled for that ingredient. This multi-color bar is a good indicator of what is happening in a Mixer at any given time.

Manual vs. automatic mode

By default, the flow mixer operates in automatic mode. This means that it will start collecting ingredients for the first step of the recipe as soon as the model is started. As soon as a batch has been completely released and the mixer is empty again, it will also immediately start working on the next batch.

Sometimes you need more fine-grained control over when the mixer starts working on a batch. For example, you may want to collect enough material in the supply tanks before you start mixing the next batch, or you may have a production schedule to run and want to dynamically change the recipe between different batches. If this is the case, you can disable the "Continuously repeat recipe" checkbox in the mixer settings. The mixer will now remain idle until you start a recipe using the "Start Mixer Recipe" trigger option or the FlowMixer.startRecipe() method.


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

The mixer is a content-holding object and therefore also inherits the On Empty and On Full events from the flow tank. See Flow Tanks - Events for a description of these events.

The flow mixer has the following additional events on the Current Recipe Tab.

Before Step Delay Trigger, After Step Delay Trigger

These events occur in each recipe step, after all the ingredients have been collected, before and after the delay for that step, respectively.

They have the following parameter:

Event Parameter Explanation
stepnum The number of the step for which the delay will be or has been executed, starting from step 1 up to (and including) the number of steps defined in the Mixer Steps table.


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

  • Idle - The mixer is in manual mode and is waiting for a Start Recipe command. This state is indicated visually by a yellow box around the mixer.
  • Filling - The mixer is collecting ingredients at a positive inflow rate.
  • Full - The mixer has reached its maximum content.
  • Empty - The tank is empty and there is no net flow (the flow is zero or inflow rate is equal to the outflow rate).
  • Mixing - The mixer is in the delay period of the step indicated in the object information.
  • Releasing - The tank is not empty and the outflow rate exceeds the inflow rate.
  • Not empty - The mixer is collecting or releasing, and is neither empty nor full, but there is no net flow.


The flow mixer objects use the following properties panels:

Custom coding

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