# Mixing Tank - CFD Simulation

Source: https://help.sim-flow.com/tutorials/mixing-tank
Last updated: 2026-10-02

[Video](https://help.sim-flow.com/tutorials/images/mixing-tank.mp4)

## 1. Introduction

In this tutorial, we will demonstrate how to use Dynamic Mesh to model rotating components. We will simulate the rotation of an impeller in a cylindrical tank partially filled with water. The impeller is located within the inner cylinder mesh zone and rotates inside the tank’s larger domain. At the sliding mesh interface, which links the rotating and stationary mesh sections, data interpolation occurs. This tutorial uses a 2-phase Volume of Fluid (VoF) simulation to indicate a free-surface vortex resulting from the rotation of the impeller.

## 2. Download SimFlow

SimFlow is a general-purpose [CFD Software](https://sim-flow.com/download/cfd-simulation-software/)

To follow this tutorial, you will need the SimFlow free version. You may download it via the following link:
[Download SimFlow](https://sim-flow.com/download-simflow/)

## 3. Create Case

Open SimFlow and create a new case named *mixing tank*

1. Click **New**
2. Provide name `mixing tank`
3. Click **Create** to open a new case

![simflow-launcher](https://help.sim-flow.com/tutorials/images/launcher-mixing_tank.png)

## 4. Import Geometry

After creating the case, [Download GeometryImpeller](https://help.sim-flow.com/tutorials/downloads/mixing-tank/impeller.stl.gz)

1. Click **Import Geometry**
2. Select geometry file *impeller.stl.gz*
3. Click **Open**

![mt 2 import geometry](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-2-import-geometry.png)

## 5. Imported Geometry Units

In the next step, we need to select the unit in which the model was exported. The STL format does not contain the unit information which is defined during the geometry export. The *Geometry size* displays the overall size of the model, which allows you to select the suitable unit. In this case, the default unit meter is correct.

1. To confirm default unit *meter*, press **OK**

![mt 2 unit](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-2-unit.png)

## 6. Geometry - Impeller

After importing geometry, it will appear in the 3D window.

1. Click **Fit View** to zoom the geometry

![mt 3 geometry](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-3-geometry.png)

## 7. Create Geometry - Shaft

The original impeller geometry consists of only blades. To make the impeller complete, we will add a shaft using a primitive geometry.

1. Click *Create Cylinder*
2. Rename *cylinder_1* to `shaft`
   (double click on the geometry name to start renaming)
3. 4 Define cylinder origin, length, and radius
   *Origin \({\sf [m]}\)*`0``0``-0.045`
   *Length \({\sf [m]}\)*`0.5`
   *Radius \({\sf [m]}\)*`0.04`

![mt 4 crete geometry shaft](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-4-crete-geometry-shaft.png)

## 8. Create Geometry - Rotating Zone

We want our impeller to be rotating. We will create a cylindrical zone that will be used to divide the mesh into rotating and stationary parts.

1. Click *Create Cylinder*
2. Rename *cylinder_1* to `rotating_zone`
3. 4 Define cylinder origin, length, and radius
   *Origin \({\sf [m]}\)*`0``0``-0.105`
   *Length \({\sf [m]}\)*`0.6`
   *Radius \({\sf [m]}\)*`0.3`

![mt 5 create geometry rotating zone](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-5-create-geometry-rotating-zone.png)

## 9. Show Impeller

All parts of the geometry are displayed in the graphics window now. Note that rotating_zone encloses the impeller and shaft. In order to see all geometries, we will decrease the opacity of the rotating_zone.

1. Press `Esc` to exit edit mode, then select *rotating_zone* if it is not selected
2. Click *Display Properties*
3. Adjust *Opacity* to *50%*

![mt 6 show impeller](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-6-show-impeller.png)

## 10. Meshing Properties - Impeller

We will enable meshing for the impeller geometry.

1. Go to *Hex Meshing* panel
2. Select *impeller*
3. Check *Mesh Geometry*
4. Set *Refinement* to *Min 1* *Max 2*

![mt 7 meshing properties impeller](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-7-meshing-properties-impeller.png)

## 11. Meshing Properties - Rotating Zone

Since our domain will consist of a stationary and a rotating part, we need to create a mesh interface between the parts. To do this, we will create a baffle using the rotating_zone geometry.

1. Select *rotating_zone*
2. Check *Mesh Geometry*
3. Check *Create Cell Zone*
4. Change *Refinement Max* level to `1`
5. Check *Create Baffle*

![mt 8 meshing properties rotating zone](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-8-meshing-properties-rotating-zone.png)

## 12. Meshing Properties - Shaft

We need to also mesh the shaft geometry.

1. Select *shaft*
2. Check *Mesh Geometry*

![mt 9 meshing properties shaft](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-9-meshing-properties-shaft.png)

## 13. Base Mesh - Geometry

Now we will define the outer bounds of the computational domain.

1. Go to *Base* tab
2. Select *Cylinder* as the base mesh type
3. Define cylinder axis, origin, length, and radius
   *Axis*`Z`
   *Origin \({\sf [m]}\)*`-0.18`
   *Length \({\sf [m]}\)*`0.9`
   *Radius \({\sf [m]}\)*`0.6`

![mt 10 base mesh geometry](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-10-base-mesh-geometry.png)

## 14. Base Mesh - Mesh

To have an appropriate mesh density, we will use the following divisions and grading of the base mesh.

1. 2 Define radial division, radial grading, axial division, and central division
   *Radial Division*`15`
   *Radial Grading*`1.02`
   *Axial Division*`30`
   *Central Division*`15`

![mt 11 base mesh mesh](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-11-base-mesh-mesh.png)

## 15. Base Mesh - View

We can preview the Base Mesh in the graphics window.

![mt 12 base mesh view](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-12-base-mesh-view.png)

## 16. Base Mesh - Boundaries

Now we need to assign individual names to each side of the base mesh. Since we are modeling a closed tank, all our boundaries will be defined as walls.

1. Type boundary names accordingly
   *First Disk* *walls*
   *Second Disk* *walls*
   *Cylinder* *walls*
2. Change type of all boundaries to wall
   *First Disk* *wall*
   *Second Disk* *wall*
   *Cylinder* *wall*

![mt 13 base mesh boundaries](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-13-base-mesh-boundaries.png)

## 17. Material Point

Material Point tells the meshing algorithm on which side of the geometry the mesh is to be retained. Since we are modeling flow inside the tank, we need to place the material point between the tank walls and the impeller.

1. Go to *Point* tab
2. Specify location inside the mesh
   *Material Point*`0``-0.3``-0.1`

![mt 14 material point](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-14-material-point.png)

## 18. Meshing

Everything is now set up for meshing.

1. Go to *Mesh* tab
2. Click **Mesh** button to start the meshing process

![mt 15 meshing](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-15-meshing.png)

## 19. Mesh

After the meshing process is finished, the mesh will appear in the 3D graphics window. The mesh used in this tutorial is created for demonstration purposes only, and its resolution should be considerably finer in a real case scenario.

1. Click **Fit View** to zoom the geometry

![mt 16 mesh view](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-16-mesh-view.png)

## 20. Merge Boundaries - Impeller and Shaft (I)

In order to simplify the definition of boundary conditions, we will merge the shaft and impeller boundaries into a single boundary.

1. Hold `CTRL` key and select *impeller* and *shaft* boundaries
2. On the *impeller* boundary, select *Options*
3. Choose *Merge* operation from the dropdown menu

![mt 17 merge boundaries impeller and shaft 1](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-17-merge-boundaries-impeller-and-shaft-1.png)

## 21. Merge Boundaries - Impeller and Shaft (II)

1. Make sure you have selected *impeller* and *shaft* boundaries
2. Click **Merge Boundaries** to confirm the operation

![mt 18 merge boundaries impeller and shaft 2](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-18-merge-boundaries-impeller-and-shaft-2.png)

## 22. Merge Boundaries - Impeller and Shaft (III)

1. Rename newly created boundary from *impeller_merged* to `impeller`
2. Change impeller’s boundary type to *wall*

![mt 18 merge boundaries impeller and shaft 3](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-18-merge-boundaries-impeller-and-shaft-3.png)

## 23. Split Baffles

Even though we requested the creation of baffles for the rotating_zone, two sides of the baffle can still share some common nodes. In order to make sure that each side has its own nodes, we need to perform the Split Baffles operation on the mesh. This is a very important step when using the dynamic mesh model.

1. Expand *Options* of the default region
2. Select *Split Baffles* from the drop-down list

![mt 19 split baffles](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-19-split-baffles.png)

## 24. Create Mesh Interface

In the mesh setup, we requested creating baffles for the rotating_zone, so that it can be a slip surface for the dynamic mesh. Now we will create the interface between the baffles.

1. Hold `CTRL` key and select *rotating_zone* and *rotating_zone_slave*
2. Click *Create Arbitrary Interface*

![mt 20 create mesh interface 1](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-20-create-mesh-interface-1.png)

## 25. Simulation Type

We want to analyze the flow in a mixing tank with a rotating impeller. For this purpose, we will use a transient simulation of two immiscible fluids (water and air) using the free-surface method with dynamic mesh handling.

## 26. Dynamic Mesh

We will apply a rotational speed of 2 revolutions per second to the zone with the impeller. Due to the orientation of our geometry, our rotation axis will be the -Z-axis of the global coordinate system.

1. Go to *Dynamic mesh* panel
2. Select *Rigid* type
3. Check *Move selected zone*
4. Make sure *rotating_zone* is selected as Cell Zone
5. Expand *Motion* options
6. Set *Axis \({\sf [-]}\)*`0``0``-1`
7. Set rotational speed *Omega \({\sf [rad/s]}\)*`12.56`

![mt 24 dynamic mesh](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-24-dynamic-mesh.png)

## 27. Turbulence

For turbulence modeling, we will use the *\(Realizable \; k{-} \varepsilon\)* model.

1. Go to *Turbulence* panel
2. Select *RANS* turbulence formulation
3. Select *\(Realizable \; k{-} \varepsilon\)* model

![mt 25 turbulence](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-25-turbulence.png)

## 28. Operating Conditions

Incompressible solvers like *Inter* operate on relative pressure (more [here](https://sim-flow.com/incompressible-single-phase-solvers/)). In the incompressible Navier-Stokes equation, pressure is only related to the gradient and has no specific bounds. The pressure distribution can be determined by solving the N-S equation, but the exact value of pressure is irrelevant as long as the pressure difference between two points is the same.

To define a precise value, it is necessary to define the pressure at a specific point. While the pressure at inlet or outlet boundaries is usually defined, if the domain is enclosed, a reference point must be established within the domain.

1. Go to *Operating Conditions* panel
2. Change the *Location* to *Point*
3. Set *Point*`0.4``0``0.5`

![mt 26 operating conditions](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-26-operating-conditions.png)

## 29. Boundary Conditions - Impeller (Flow)

We need to make sure that the impeller velocity is taken from the properties of the rotating zone. For this purpose, we need to apply the Moving Wall Velocity boundary condition.

1. Go to *Boundary Conditions* setup
2. Select *impeller* boundary
3. Change velocity type to *Moving Wall Velocity*

![mt 26 bc impeller flow](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-26-bc-impeller-flow.png)

## 30. Geometry - Initial Conditions Patch

As an initial state, we want the mixing tank to be partly filled with water. For this purpose, we need to create geometry to indicate the initial water location.

1. Go to *Geometry* panel
2. Click *Create Cylinder*
3. Rename *cylinder_1* to `water_patch`
4. 5 Define cylinder origin, length, and radius
   *Origin \({\sf [m]}\)*`0``0``-0.18`
   *Length \({\sf [m]}\)*`0.45`
   *Radius \({\sf [m]}\)*`0.6`

![mt 27 geometry initial conditions patch](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-27-geometry-initial-conditions-patch.png)

## 31. Initial Conditions - Patch

For initial conditions, we will leave all the default values, except inside the water patch, where the water phase fraction will be different.

1. Go to *Initial Conditions* panel
2. Switch to *Patch* tab
3. Select *water_patch* geometry
4. Enable initialization on *water_patch*
5. Expand *Fields* list
6. Select *\(\alpha_{phase1}\)* fraction for initialization
7. Set *\(\alpha_{phase1}\)* to `1`

![mt 28 initial conditions patch](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-28-initial-conditions-patch.png)

## 32. Run - Time Control

We will now adjust the time controls in order to capture the motion of the moving mesh in the output files. We will also enable automatic time step control for the simulation with a reduced Courant number for better convergence.

1. Go to *Run* panel
2. Set *Simulation Time [s]* to `1`
3. Change *Time Stepping* to *Automatic*
4. Set initial time step, time step limit and Courant number accordingly
   *Initial \(\Delta t\) \({\sf [s]}\)*`5e-03`
   *Max \(\Delta t\) \({\sf [s]}\)*`1e-02`
   *Max Co \({\sf [-]}\)*`0.5`

![mt 29 run time controls](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-29-run-time-controls.png)

## 33. Run - Output

Now we just have to specify the frequency of writing results to the disk and start the simulation.

1. Switch to *Output* panel
2. Set Write Control *Interval [s]* to `1e-02`

![mt 30 run output](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-30-run-output.png)

## 34. Run - CPU

To speed up the calculation process, take advantage of parallel computing and increase the number of CPUs based on your PC’s capability. The free version allows you to use only one processor (serial mode). To get the full version, you can use the contact form to [Request 30-day Trial](https://license.sim-flow.com/trial)

Estimated computation time for serial mode: 50 minutes

1. Switch to *CPU* tab
2. Click **Run Simulation** button

![run cpu serial](https://help.sim-flow.com/tutorials/images/run-cpu-serial.png)

## 35. Residuals

When the simulation is finished, we should see a similar residual plot.

![mt 30 residuals](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-30-residuals.png)

## 36. Calculate Additional Fields

When the simulation is finished, we want to calculate additional flow variables to use later for postprocessing.

1. Go to *Calculate* panel
2. Select *Full Time Range*
3. Select *Vorticity* field
4. Click **Calculate**

![mt 28 calculate](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-28-calculate.png)

## 37. Start Postprocessing - ParaView

Start ParaView when the simulation is finished. Optionally, you can start ParaView when the simulation is still in progress to observe the intermediate results.

1. Go to *Postprocessing* panel
2. Start *ParaView*

![mt 29 start postprocessing paraview](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-29-start-postprocessing-paraview.png)

## 38. ParaView - Load Results

After opening ParaView, we have to load the results of the simulation.

1. Select your case *mixing_tank.foam*
2. Click **Apply**
3. Click *Last Frame*
4. Click *Rescale to Data Range*
5. After rescaling, the contour will be shown in the 3D window.

![mt paraview 1](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-1.png)

## 39. ParaView - Coloring (I)

We can change the coloring scheme in ParaView to have nicer colors.

1. Click *Edit Color Map* from the menu placed on the left side, if the panel is not already shown.
2. Select *Choose Preset* from the Color Map Editor placed by default on the right side of ParaView

![mt paraview 2](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-2.png)

## 40. ParaView - Coloring (II)

We can now select a new Color Preset.

1. Expand *Advanced Options*
2. Choose *Blue to Red Rainbow* preset
3. **Apply** changes
4. **Close** Choose Preset window

![mt paraview 3](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-3.png)

## 41. ParaView - Coloring (III)

To use the same color preset for all variables, we will save the current choice.

1. Click *Save current color map settings values as default for all arrays*

![mt paraview 3 1](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-3-1.png)

## 42. ParaView - Display Water Surface (I)

We will now plot the water surface colored by the water height.

1. Create *Contour*
2. Select phase fraction *alpha.phase1* field as a contour variable
3. Define water surface threshold at `0.01`
4. Click **Apply**

![mt paraview 4 1](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-4-1.png)

## 43. ParaView - Display Water Surface (II)

1. Select contour coloring variable *p_rgh*

After changing the coloring variable and opacity, the contour will be shown in the 3D window. Note that the pressure on the water surface is constant.

![mt paraview 6](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-6.png)

## 44. ParaView - Calculator (I)

1. Select *mixing_tank.foam*
2. Click *Calculator*

![mt paraview 7](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-7.png)

## 45. ParaView - Calculator (II)

1. Change name to `magVorticity`
2. Write the formula `mag(vorticity)`
3. Click **Apply**

![mt paraview 8](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-8.png)

## 46. ParaView - Create Contour (I)

1. Select *Calculator 1*
2. Create *Contour*

![mt paraview 9](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-9.png)

## 47. ParaView - Create Contour (II)

1. Select *magVorticity* as a contour variable
2. Set contour value to `30`
3. Click **Apply**

![mt paraview 10](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-10.png)

## 48. ParaView - Create Contour (III)

1. Select contour coloring variable *p_rgh*

![mt paraview 11](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-11.png)

## 49. ParaView - Load geometry (I)

1. Select *mixing_tank.foam*
2. Click **Open**

![mt paraview 12](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-12.png)

## 50. ParaView - Load geometry (II)

1. Click *mixing_tank*
2. Select *mixing_tank.foam* from the file selection dialog
3. Click **OK**

![mt paraview 13](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-13.png)

## 51. ParaView - Load geometry (III)

1. Select *impeller* and *walls* zones to plot
2. Click **Apply**

![mt paraview 14](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-14.png)

## 52. ParaView - Load geometry (IV)

1. Set Coloring to *Solid Color*
2. Set the opacity to `0.3`

![mt paraview 15](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-15.png)

## 53. ParaView - Results

The results are displayed in the graphics window.

![mt paraview 16](https://help.sim-flow.com/tutorials/images/mixing-tank/mt-paraview-16.png)

## 54. Advanced Postprocessing with ParaView

This concludes the tutorial, covering all the aspects we intended to showcase. For a finely tuned presentation of the results, you may take advantage of the more advanced features.

In ParaView, you can display streamlines, contour plots, vector fields, line or time plots, calculate volume or surface integrals and create animations.

To familiarize yourself with the ParaView capabilities, it’s worth checking out our video tutorial, *Paraview CFD Tutorial - Advanced Postprocessing in ParaView*, in which we demonstrate some of the most commonly used postprocessing techniques.

[Paraview CFD Tutorial - Advanced Postprocessing in ParaView](https://www.youtube.com/watch?v=5M6VgXyHB60&list=PLy7xPqn9xXckoD2gZgPpv8mrxillJ9PWU&index=21)
