# Von Karman Vortex Street - CFD Simulation

Source: https://help.sim-flow.com/tutorials/von-karman-vortex-street
Last updated: 2026-10-14

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

## 1. Introduction

In this tutorial, we simulate the process of von Karman vortex street formation. We model a 2D water flow around a cylinder. We show the parametrization possibilities at each modeling stage (geometry, mesh, and setup). We will monitor the forces exerted on the cylinder and visualize the vorticity fields behind it using ParaView.

## 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 *vortex street*.

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

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

## 4. Create Geometry Parameters

We will be using parameters extensively during this simulation. Therefore, we will add the *d* parameter denoting the cylinder diameter.

1. Go to *Parameters* panel
2. Define the new parameter
   *Name*`d`
   *Formula*`0.01`
3. Click `Enter` or *Create Parameter* button
4. The newly created parameter will be shown in the parameters list.

![von Karman 02 Parameters](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_02_Parameters.png)

## 5. Create Geometry - Cylinder

By using the *d* parameter, we will create a cylinder geometry. The cylinder will be used as an obstacle in the flow path.

1. Go to *Geometry* panel
2. Select *Create Cylinder*
3. Set the origin:
   *Origin \({\sf [m]}\)*`0``0``-1e-02`
4. Set the cylinder dimensions:
   *Length \({\sf [m]}\)*`0.02`
   *Radius \({\sf [m]}\)*`d/2`

![von Karman 03 Geometry Cylinder](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_03_Geometry_Cylinder.png)

## 6. Create Geometry - Cylinder Refinement

For better flow prediction in the region near and downstream of the cylinder, we will refine the mesh. For this purpose, we will create a refinement geometry.

1. Expand *options* list for *cylinder_1*
2. Select *duplicate*
3. Change geometry name from *cylinder_2* to `cylinder_refinement`
   (double-click to edit name and press Enter to confirm)
4. Change the cylinder radius to
   *Radius \({\sf [m]}\)*`d*2`

![von Karman 04 Geometry Cylinder ref](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_04_Geometry_Cylinder_ref.png)

## 7. Create Geometry - Box Refinement

1. Select *Create Box*
2. Change geometry name from *box_1* to `box_refinement`
3. Set the origin and box dimensions
   *Origin \({\sf [m]}\)*`0``-2*d``-1e-02`
   *Dimensions \({\sf [m]}\)*`15*d``4*d``0.02`

![von Karman 05 Geometry box refi](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_05_Geometry_box_refi.png)

## 8. Meshing Parameters - Cylinder

Set the meshing parameters for the cylinder geometry. This geometry will be used as a wall. Therefore, we will additionally enable the boundary layer option.

1. Go to *Hex Meshing* panel
2. Select *cylinder_1*
3. Enable *Mesh Geometry*
4. Enable *Create Boundary Layer Mesh*
5. Make sure that *Create Boundary Layer On This Group* option is pressed

![von Karman 06 Mesh Cylinder Prop](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_06_Mesh_Cylinder_Prop.png)

## 9. Meshing Parameters - Box Refinement

The *box_refinement* and *cylinder_refinement* geometries should be used only for marking refinement zones. Set the proper parameters for the refinement regions.

1. Select *box_refinement* from the list
2. Enable *Refine Geometry*
3. Set the refinement *Level* to `1`

![von Karman 07 Mesh Refinement Prop 1](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_07_Mesh_Refinement_Prop_1.png)

## 10. Meshing Parameters - Cylinder Refinement

1. Select *cylinder_refinement* from the list
2. Enable *Refine Geometry*
3. Set the refinement *Level* to `1`

![von Karman 08 Mesh Refinement Prop 2](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_08_Mesh_Refinement_Prop_2.png)

## 11. Base Mesh

We will define the base mesh now. Our simulation will be limited to a 2D flow. This can be accomplished by choosing the *Plate* type as the background mesh. We will use the predefined parameter *d* to define the outer flow domain.

1. Go to *Base* tab
2. Select the *Plate* as a *Base Mesh Type*
3. Set the size of the base mesh
   *\(\;\)*`X \(\quad\)``Y\(\quad\)`
   *Min \({\sf [m]}\)*`-5*d``-5*d`
   *Max \({\sf [m]}\)*`15*d``5*d` `
4. Define the number of divisions
   *Division*`150``100`
5. Change the following boundary names accordingly
   *X-* `inlet`
   *X+* `outlet`

![von Karman 09 Base Mesh](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_09_Base_Mesh.png)

## 12. 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 outside the cylinder, we can use the predefined parameter *d* to specify the desired point location.

1. Go to *Point* tab
2. Specify location inside base mesh but outside *cylinder_1* geometry
   *Material Point*`0``d``0`

![von Karman 10 Material Point](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_10_Material_Point.png)

## 13. Start Meshing

Everything is now set up for meshing.

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

![von Karman 11 Meshing](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_11_Meshing.png)

## 14. Mesh

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

1. Set the XY orientation **View XY**
2. Click **Fit View**

![von Karman 12 Mesh](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_12_Mesh.png)

## 15. Boundaries

1. Define boundary types accordingly
   *boundaries* *patch*
   *cylinder_1* *wall*
   *empty* *empty*
   *inlet* *patch*
   *outlet* *patch*

![von Karman 13 Boundaries](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_13_Boundaries.png)

## 16. Simulation Type

We want to analyze the vortex shedding behind a cylinder. For this purpose, we will use a single-phase, transient, incompressible flow simulation using the PISO algorithm.

![Simulation Panel](https://help.sim-flow.com/assets/images/go-to-simulation-panel@2x.png)

![Step 1](https://help.sim-flow.com/assets/images/solvers-selection/pisoFoam/01_single_phase@2x.png)

![Step 2](https://help.sim-flow.com/assets/images/solvers-selection/pisoFoam/02_low_speed@2x.png)

![Step 3](https://help.sim-flow.com/assets/images/solvers-selection/pisoFoam/03_transient@2x.png)

![Step 4](https://help.sim-flow.com/assets/images/solvers-selection/pisoFoam/04_apply@2x.png)

## 17. Create Simulation Parameters (I)

We need to define a few parameters that will be used in the simulation setup. The first one is the kinematic viscosity of the air *nu* . This value can be found in the *Material Database* .

1. Go to *Parameters* panel
2. Define new parameter *Name* as `nu`
3. Click on *Select Material Property*
4. Expand *air* property list
5. Select kinematic viscosity *nu*
6. Click enter or *Create Parameter* button
7. The newly created parameter will be shown in the parameters list.

![von Karman 15 Parameters nu](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_15_Parameters_nu.png)

## 18. Create Simulation Parameters (II)

Also, we will define the flow velocity and period of the vortex shedding, which can be defined as the time interval between the appearance of successive vortices. Both properties depend on each other while the relationship can be described empirically [*Karman vortex street*](https://en.wikipedia.org/wiki/K%C3%A1rm%C3%A1n_vortex_street) . By using this fact, we will calculate the velocity value as a function of the vortex shedding period. At the end, we will compare the assumed time to the simulation results.

1. Define the period of vortex shedding
   *Name*`T`
   *Formula*`0.5`
2. Click enter or *Create Parameter* button
3. The newly created parameter will be shown in the parameters list.

![von Karman 16 Parameters T](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_16_Parameters_T.png)

## 19. Create Simulation Parameters (III)

Define the velocity magnitude parameter.

1. Define the velocity parameter
   *Name*`u`
   *Formula*`d/(T*0.198)+(19.7*nu)/d`
2. Click enter or *Create Parameter* button
3. The newly created parameter will be shown in the parameters list.
   According to the empirical equation, the flow velocity should be equal to *0.13 m/s*

![von Karman 17 Parameters u](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_17_Parameters_u.png)

## 20. Transport Properties

Change the kinematic viscosity to the parametrized value *nu*.

1. Go to *Transport Properties* panel
2. Set the kinematic viscosity *\(\nu \; [m^2/s]\)* to `nu`

![von Karman 18 Transport Properties](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_18_Transport_Properties.png)

## 21. Discretization - Time

For better accuracy of our solution, we will use the 2nd-order scheme for the discretization of the time derivatives.

1. Go to *Discretization* panel
2. Select *Backward*

![von Karman 19 Discretization time](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_19_Discretization_time.png)

## 22. Discretization - Convection

Change the velocity discretization to the *LUST* scheme. It is a second-order spatial discretization scheme that allows reducing the numerical diffusion.

1. Go to *Convection* tab
2. Click on default scheme *Upwind*
3. Select *LUST*

![von Karman 20 Discretization Convection](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_20_Discretization_Convection.png)

## 23. Boundary Conditions - Boundaries

The sides of the domain will be set to the *Outflow* character, which should adjust velocity and pressure at the boundaries to the flow inside the domain.

1. Go to *Boundary Conditions* panel
2. Select *boundaries*
3. Set the *Outflow* character

![von Karman 21 Boundary Conditions](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_21_Boundary_Conditions.png)

## 24. Boundary Conditions - Inlet

Now we will apply the computed velocity parameter to the inlet boundary.

1. Select *inlet* boundary
2. Set the *Velocity Inlet* character
3. Set the velocity *Reference Value [m/s]* to `u` parameter

![von Karman 22 Boundary Conditions Copy](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_22_Boundary_Conditions-Copy.png)

## 25. Initial Conditions

Before we start the simulation, we need to define the initial state. We will specify a linear velocity profile that changes from zero at the bottom of the domain to 50% of the velocity magnitude. We will use the profile to boost the appearance of instabilities by introducing flow asymmetry at the initial state. The von Karman instabilities under certain conditions would appear spontaneously, but it might require a longer time for instabilities to arrive if we started with a uniform velocity.

1. Go to *Initial Conditions* panel
2. Set the initial velocity
   *U*`0.5*u/0.1*(y+0.05)``0``0`

![von Karman 23 Initial Condition](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_23_Initial_Condition.png)

## 26. Monitors - Forces

In order to track periodic features in the flow, we will use the force monitor. We will observe drag and lift on the cylinder boundary.

1. Go to *Monitors* panel
2. Switch to *Forces* tab
3. Expand *Monitored Boundaries* list and check *cylinder_1*
4. Check *Monitor Coefficients* option
5. Set *Lift Direction* vector along Y axis
   *Lift Direction*`0``1``0`
6. Set the reference area *\(A_{ref} \; [m^2]\)* to `d*0.01`
7. Set the free stream velocity *\(U_{\infty} \; [m/s]\)* to `u`

![von Karman 24 Monitors](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_24_Monitors.png)

## 27. Run - Time Control

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 [s]* to `5`
3. Set the *Time Stepping \(\Delta t \; [s]\)* to `1e-03`

![von Karman 25 RUN SIMULATION](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_25_RUN_SIMULATION.png)

## 28. Run - Output

We will write the results in the interval of *0.025* seconds (every 25 steps).

1. Switch to *Output* tab
2. Set the *Interval [s]* to `0.025`

![von Karman 26 RUN OUTPUT](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_26_RUN_OUTPUT.png)

## 29. 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: 8 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)

## 30. Results - Force Coefficients

We are going to read the period of the vortex shedding. To do so, we will read the time of the last two extrema for the *Cl* coefficient. The difference between them gives us the period of the vortex shedding.

1. Switch to *Force Coefficient* tab
2. Click on the *Adjust Axes*
3. Set the *Axes Bounds*
   *X Min*`3`
   *X Max*`5`
   *Y Min*`-0.5`
   *Y Max*`2`
4. Check the *Lookup Data* button
5. Click on the last *Cl* extremum to read the coordinates
6. Click on the one before the last *Cl* extremum to read the coordinates
7. Selected points are listed below the chart. Report time values that we will use later.

![von Karman 27 Force monitor](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_27_Force_monitor.png)

## 31. Output Parameters - Tcalc

Finally, we will compare the assumed period of the vortex shedding with the result of our simulation. The assumed period is 0.5 seconds, while the simulation one can be computed as a time difference between the occurrences of the last two Lift Coefficient maxima.

1. Define the *Tcalc* parameter
   *Name*`Tcalc`
   *Formula*`abs(4.77-4.31)`
2. Add a new parameter
3. The parameter will be added to the list above

![von Karman 28 Parameter Tcalc](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_28_Parameter_Tcalc.png)

## 32. Output Parameters - Terr

Additionally, we will present the result as a relative error between the expected value and the obtained one.

1. Define the *Terr* parameter
   *Name*`Terr`
   *Formula*`abs(T-Tcalc)/T*100`
2. Add a new parameter
3. The parameter will be added to the list above. Read the value of *Terr*

![von Karman 29 Parameter Terr](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_29_Parameter_Terr.png)

## 33. Calculate Vorticity

The vorticity is not being computed by default during solver computations. In order to visualize it, we will compute the vorticity variable by using already existing data.

1. Go to *Calculate* panel
2. Select *Full Time Range*
3. Click on **Calculate**

![von Karman 30 Calculate Fields](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_30_Calculate_Fields.png)

## 34. Postprocessing - ParaView

Start ParaView to visualize the vorticity field.

1. Go to *POSTPROCESSING* panel
2. Click on **Run ParaView**

![von Karman 31 Postprocessing ParaView](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_31_Postprocessing_ParaView.png)

## 35. ParaView - Load Results (I)

Load the results into the program.

1. Select *vortex_street*
2. Click **Apply** to load results into ParaView
3. After loading results, they will be shown in the 3D graphic window

![von Karman 32 ParaView Open](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_32_ParaView_Open.png)

## 36. ParaView - Load Results (II)

ParaView skips the initial point by default. Therefore, we need to add the zero time point to the simulation.

1. Uncheck *Skip Zero Time*
2. Click **Apply**
3. Set the time or time step to `0`

![von Karman 33 ParaView Zero](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_33_ParaView_Zero.png)

## 37. ParaView - Vorticity

We will look at the vorticity contour map. Change the scale range parameters to improve flow feature visibility.

1. Select *vorticity* from the list
2. Click *Rescale to Custom Data Range*
3. Set the range for the color map from `0` to `25`
4. Click **Rescale and disable automatic rescaling**
5. Play with the animation buttons to track the results of the analysis.

![von Karman 34 ParaView vorticity](https://help.sim-flow.com/tutorials/images/von-karman-vortex-street/von_Karman_34_ParaView_vorticity.png)

## 38. 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)
