Back to all tutorials

Static Mixer - CFD Simulation SimFlow Tutorial

1. Introduction

In this tutorial, we demonstrate a feature called Passive Scalar. Passive scalar adds an additional transport equation to the system of governing equations. The passive scalar does not influence the flow itself but only introduces a marker for tracing fluid transport. This tutorial is used to track the mixing gases entering from 2 different inlets. The flow is still solved as a single phase and Passive Scalar only tracks how fluid travels from one inlet and mixes with the same fluid coming from different inlets. In some cases, this technique can be used to track different fluids, as long as the properties of the fluid are very close to each other (density, viscosity). In postprocessing, you will learn how to create Streamlines in ParaView.

2. Download SimFlow

SimFlow is a general purpose CFD Software

To follow this tutorial, you will need SimFlow free version, you may download it via the following link:
Download SimFlow

3. Create Case

Open SimFlow and create a new case named static_mixer

  1. Go to New panel
  2. Provide name static_mixer
  3. Click Create Case
staticMixer 01 Launcher

4. Import Geometry

Firstly we need to Download GeometryStaticMixer

  1. Click Import Geometry
  2. Select geometry file staticMixer.stl
  3. Click Open
staticMixer 02 Import geometry

5. Imported Geometry Units

The STL format does not contain the unit information which are defined during the geometry export. If we do not know the exported unit, we can estimate it based on the total size of the model. It is displayed next to Geometry size label. In our case, the default unit meter is correct.

  1. To confirm default unit meter, press OK
staticMixer 02 unit

6. Geometry - Static Mixer

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

  1. Click Fit View to zoom in on the geometry.
staticMixer 03 Geometry

7. Meshing Parameters - Static Mixer

In order to create the mesh, we need to enable meshing for the imported geometry.

  1. Go to Hex Meshing panel
  2. Select staticMixer geometry
  3. Enable Mesh Geometry
staticMixer 04 Hex mesh

8. Base Mesh - Domain

The imported geometry represents only the mixer blades. By using a cylinder base mesh we will define the pipe housing.

  1. Switch to Base tab
  2. Choose base mesh type
    Base Mesh Type Cylinder
  3. Set the cylinder axis
    Axis Z
  4. Set the size of the cylinder base mesh:
    Length \({\sf [m]}\)0.12
    Radius \({\sf [m]}\)0.0154
  5. 67 Set the following parameters accordingly
    Radial Division12
    Axial Division100
    Central Division21
staticMixer 05 Base Mesh v2

9. Base Mesh - Boundaries

We need to assign individual names to each side of the base mesh. This will allow us to apply different conditions to each side.

  1. Choose boundary names accordingly
    First Disk inlet
    Second Disk outlet
    Cylinder wall (double click on the name to type)
  2. Choose boundary types accordingly
    First Disk patch
    Second Disk patch
    Cylinder wall
staticMixer 06 Mesh Boundaries

10. Material Point

Material Point tells the meshing algorithm on which side of the geometry the mesh is to be retained. Since we are considering flow inside the cylinder we need to place the material point outside the blades.

  1. Switch to Point tab
  2. Specify the location of the material point inside staticMixer
    Material Point000.1

You can specify the point location from the 3D view. Hold the CTRL key and drag the arrows to the destination.

staticMixer 07 Material point

11. Start Meshing

  1. Go to Mesh tab
  2. Start the meshing process with Mesh button
staticMixer 08 Meshing

12. Mesh

After the meshing process is finished the mesh should appear in the graphics window.

  1. Click Fit View to zoom in the mesh
staticMixer 09 Mesh

13. Check Mesh

Check the mesh quality and cells statistics.

  1. Expand the Options list next to default region
  2. Select Check option
  3. Checks summary will be displayed on the command window. It also shows checking criteria.
staticMixer 10 Mesh Check

14. Create Geometry - Box

To provide two different fluids into the mixer, we need to split the inlet boundary into two separate ones. We will use additional geometry to mark the selection for the extraction.

  1. Go to Geometry panel
  2. Select Create Box
  3. Set the origin and box dimensions
    Origin \({\sf [m]}\)-0.020-5e-03
    Dimensions \({\sf [m]}\)0.050.021e-02
staticMixer 11 Geometry box

15. Inlet Boundary (I)

Now, using the new geometry we will extract a new boundary from the original inlet.

  1. Go to MESH panel
  2. Expand the Options list next to inlet boundary
  3. Select Extract From option
staticMixer 12 Inlet extract

16. Inlet Boundary (II)

  1. Check box_1
  2. Click Extract
staticMixer 13 Inlet extract 2

17. Inlet Boundary (III)

  1. Change the names accordingly
    inletinlet_scalar0
    inlet_in_box_1inlet_scalar1
    (double click on the name to change it)
staticMixer 14 Inlet extract 3

18. Inlet Boundary (IV)

As the results of the extraction, we should receive two separate inlet boundaries. Both boundaries can be distinguished by the different colors.

  1. Expand Graphics Objects List
  2. Uncheck the icon next to the Geometries to hide all geometry and press the Esc key
  3. Check if the inlet boundaries are colored differently
staticMixer 15 Inlet preview

19. Domain Modification (I)

With SimFlow, the user can also modify the existing mesh domain. We can extend the volume by extruding a specific boundary. For the purpose of this tutorial, we will extend the mixer tube by extruding the outflow face.

  1. Select outlet boundary
  2. Expand the Options list
  3. Select Extrude option
staticMixer 16 Domain Modification 1

20. Domain Modification (II)

The outlet boundary will be extended by 5 cm and additional mesh will be split into 37 cells in the extrusion direction.

  1. Set the layer’s number accordingly
    Number of Layers37
  2. Set the thickness accordingly
    Thickness0.05
  3. Click Extrude
staticMixer 17 Domain Modification 2

21. Select Solver - PIMPLE

We want to analyze the incompressible turbulent flow. For this purpose, we will use the PIMPLE (pimpleFoam) solver.

  1. Go to SETUP panel
  2. Filter the solvers by Incompressible flow
  3. Pick PIMPLE (pimpleFoam) solver from the list
  4. Select solver
staticMixer 18 Solver

22. Turbulence

In this tutorial, we will consider a laminar flow.

  1. Go to Turbulence panel
  2. Make sure the Laminar model is selected
staticMixer 19 Turbulence

23. Transport Properties

In order to define water properties, we go to the transport properties panel. We will use predefined fluid properties from the material database.

  1. Go to Transport Properties panel
  2. Click on Material Database
  3. Select the water
  4. Click Apply
staticMixer 20 Transport properties

24. Passive Scalar

We will use passive scalar to simulate the mixing of two different fluids. Passive scalar adds an additional transport equation to the system of governing equations. Note, the passive scalar does not influence the flow itself but only introduces a marker for tracing fluid transport. The scalar takes a value between 0 and 1 (0 represents clear water, and 1 represents water with air dissolved in it). To control scalar properties we can define either the Schmidt number or custom diffusivity. In our case, we will define custom diffusivity equal 2.0e-09 which corresponds to the water-air mixture.

  1. Go to Passive Scalars panel
  2. Press Add new passive scalar Equations button
  3. Click on scalar1 to expand options list
  4. Check the Custom Diffusivity
  5. Set the diffusivity
    Diffusivity \({\sf [m^2/s]}\)2e-09
staticMixer 21 Passive Scalar

25. Boundary Conditions - Inlet Scalar 0 (Flow)

We will define the constant inlet velocity for both inlets.

  1. Go to Boundary Conditions panel
  2. Select inlet_scalar0 boundary
  3. Set the boundary character
    inlet_scalar0 Velocity Inlet
  4. Change the type and value of the velocity
    UTypeFixed Value
    UValue \({\sf [m/s]}\)000.15
staticMixer 22 BC Inlet flow

26. Boundary Conditions - Inlet Scalar 1 (Flow)

Repeat these steps for the second inlet.

  1. Select inlet_scalar1 boundary
  2. Set the boundary character
    inlet_scalar1 Velocity Inlet
  3. Change the type and value of the velocity
    UTypeFixed Value
    UValue \({\sf [m/s]}\)000.15
staticMixer 23 BC Inlet flow2

27. Boundary Conditions - Inlet Scalar 1 (Scalars)

For the inlet_scalar1 boundary set the inflow phase value.

  1. Switch to Scalars tab
  2. Set the value of scalar1 to:
    scalar1Inlet Value \({\sf [-]}\)1
staticMixer 24 BC Inlet 2 Scalar

28. Initial Conditions

Before we start simulation we need to define the initial conditions. We will specify a constant velocity equal to 0.15 m/s which corresponds to the inlet velocity.

  1. Go to Initial Conditions panel
  2. Set the velocity
    U 000.15
staticMixer 25 Initial Condition

29. Monitors - Create Slice (I)

During calculation, we can observe intermediate results on a section plane. To add sampling data on a plane we need to define plane properties and also select variables that will be sampled. Note that runtime post-processing can only be defined before starting calculations and can not be changed later on.

  1. Go to Monitors panel
  2. Switch to Sampling tab
  3. Select Create Slice
  4. Expand Fields list
  5. Select all available options
    Fields p U scalar1
  6. Normal is defined along Z axis. Set the point to:
    Point \({\sf [m]}\)000.05
staticMixer 26 Monitor Slice 1

30. Monitors - Create Slice (II)

Create the next slice above the mixer.

  1. Expand Options list next to the slice_1
  2. Click Duplicate
  3. Click on slice_2 to expand options list
  4. Change the point coordinate
    Point [m] 000.1
staticMixer 27 Monitor Slice 1

31. Monitors - Create Slice (III)

Duplicate the slice once again and move it to the vicinity of the outlet.

  1. Expand Options list next to the slice_2
  2. Click Duplicate
  3. Click on slice_3 to expand options list
  4. Change the point coordinate
    Point [m] 000.15
staticMixer 28 Monitor Slice 2

32. Run - Time Controls

Before running computations adjust the time controls in order to capture appropriate time scales of the flow features.

  1. Go to RUN panel
  2. Set the simulation time
    Simulation Time [s] 3
  3. Set the time stepping
    Time Stepping \(\Delta t[s]\) 1e-03
staticMixer 29 Run Time Control

33. Run - Output

We can control how often results should be saved on the hard drive. We will write the results at the interval of ` 0.1 ` seconds. Note, that only saved data will be available during postprocessing.

  1. Switch to Output tab
  2. Set the write control interval
    Write Control Interval [s] 0.1
staticMixer 30 Run Output

34. Run - CPU

To speed up the calculation process increase the number of CPUs basing on your PC capability. The free version allows you to use only 2 processors in parallel mode. To get the full version, you can use the contact form to Request 30-day Trial

Estimated computation time for 2 processors: 20 minutes

  1. Switch to CPU tab
  2. Use parallel mode
  3. Increase number of CPUs for the computation
    Number of processors 2
  4. Click Run Simulation button
staticMixer 30 Run CPU

35. Results - Slice

Slices tab appears next to Residuals. Under this tab, we can preview results on the defined slice planes. The results preview is available during the calculation and we can track it on a regular basis. The newly calculated time step will be actualized automatically as long as the time selector points to the latest time step.
We want to check if the fluids are mixed at the end of the mixer. We will display scalar1 contribution at each slice in the mixer.

  1. Change tab to Slice
  2. Changed displayed results by selecting scalar1
  3. To adjust color range to actually displayed data click Adjust range to data
  4. Play with animation buttons to view the results of the analysis.
staticMixer 31 Results scalar

36. Postprocessing - ParaView

After computations are finished we can do complex visualization of our results with ParaView.

  1. Go to POSTPROCESSING panel
  2. Click on Run ParaView
staticMixer 32 Postprocessing ParaView

37. ParaView - Load Results

Load the results into the program.

  1. Select static_mixer.foam
  2. Click Apply to load results into ParaView
  3. After loading results they will be shown in the 3D graphic window
  4. Click on a Load a colour palette from the top menu and select White Background
staticMixer 33 PV Read Results

38. ParaView - Streamline (I)

We can visualize the flow by displaying the streamlines.

  1. Select Stream Tracer from top menu
  2. Set the maximum streamline length
    Maximum Streamline Length 0.3
  3. Change a seed type
    Seed Type Point Source
  4. Type the center coordinate and radius of the sphere:
    Center000
    Radius0.016
  5. Uncheck the Show Sphere
  6. Increase the number of points
    Number of Points 200
  7. Click Apply
  8. Select the scalar1 from the list
  9. Play with animation buttons to track the results of the analysis.
staticMixer 34 PV Streamline 1

39. ParaView - Streamline (II)

To show the geometry together with the streamlines we will follow below steps:

  1. Click on the eye next to static_mixer.foam
  2. Select Solid Color from the list
  3. Change the opacity
    Opacity 0.3
staticMixer 35 PV Streamline 2

40. 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, calculating 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 post-processing techniques.