# Spray Combustion - CFD Simulation

Source: https://help.sim-flow.com/tutorials/spray-combustion
Last updated: 2026-10-14

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

## 1. Introduction

In this tutorial, we demonstrate SimFlow’s capability in terms of modeling the combustion process. We will model particles of heptane injected into the cylinder where the combustion process occurs. To consider heat transfer between the spray droplets and the surrounding gas, we utilize the Ranz-Marshall heat transfer model. Additionally, we incorporate the Evaporation&Boiling model to account for mass transfer from the droplets to the gas resulting from evaporation and boiling. Please note that this simulation demands increased CPU performance.

## 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 *spray combustion*

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

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

## 4. Import Geometry

Firstly, we need to [Download GeometryCylinder](https://help.sim-flow.com/tutorials/downloads/spray-combustion/cylinder.stl)

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

![Spray Combustion 02 Import geometry](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_02_Import_geometry.png)

## 5. Imported Geometry Units

The STL format does not contain the unit information which is 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 the *Geometry size* label. In our case, the model was created in centimeters.

1. Select *cm* unit
2. Click **OK** button

![Spray Combustion 02 unit](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_02_unit.png)

## 6. Geometry - Cylinder

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

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

![Spray Combustion 03 Geometry](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_03_Geometry.png)

## 7. Meshing Parameters - Cylinder

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

1. Go to *Hex Meshing* panel
2. Enable *Mesh Geometry* on *cylinder* geometry

![Spray Combustion 04 Hex Meshing Parameters](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_04_Hex_Meshing_Parameters.png)

## 8. Base Mesh - Domain

Now we will define the base mesh. The box geometry determines the background mesh domain. The model is symmetrical on the XZ and YZ planes, so we do not need to mesh the whole geometry. Using the box dimensions, we will choose only a quarter of the model.

1. Switch to *Base* tab
2. Click on **Autosize**
3. Change the following parameters accordingly
   *Min \({\sf [m]}\)*`0``0`
4. Define the number of divisions
   *Division*`50``50``20`

![Spray Combustion 05 Base Mesh](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_05_Base_Mesh.png)

## 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. Change the following boundary names
   *X-* *symmetry*
   *Y-* *symmetry*
2. Set the types for boundaries accordingly
   *X-* *symmetry*
   *X+* *wall*
   *Y-* *symmetry*
   *Y+* *wall*
   *Z-* *wall*
   *Z+* *wall*

![Spray Combustion 06 BC](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_06_BC.png)

## 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 inside the geometry.

1. Switch to *Point* tab
2. Specify location inside the cylinder
   *Material Point*`1e-02``1e-02``7e-03`

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

![Spray Combustion 07 Material Point](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_07_Material_Point.png)

## 11. Start Meshing

1. Go to *Mesh* tab
2. Start the meshing process with **Mesh** button

![Spray Combustion 08 Meshing](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_08_Meshing.png)

## 12. Examine Mesh

After the meshing process is complete, the mesh should appear in the graphics window. To *zoom in* or *zoom out*, use the *scroll wheel* , or move the mouse up or down with pressed `RMB` (right mouse button).

![Spray Combustion 09 Mesh](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_09_Mesh.png)

## 13. Simulation Type

We want to analyze spray combustion inside a cylinder. For this purpose, we will use a transient simulation with species transport, combustion and Lagrangian spray particles.

![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/sprayFoam/01_multicomponent@2x.png)

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

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

## 14. Combustion - Mechanism

We will load the chemical kinetic mechanism as well as the thermodynamic properties database. We will consider only one chemical reaction describing the process, which is a simplification in order to decrease the computational cost and calculation time.

To complete this step, we need to Download Files[chem.inp](https://help.sim-flow.com/tutorials/downloads/spray-combustion/chem.inp)[therm.dat](https://help.sim-flow.com/tutorials/downloads/spray-combustion/therm.dat)
After that, import them into SimFlow.

1. Go to *Combustion* panel
2. Click **Import** mechanism
3. For *CHEMKIN Mechanism File* select the *chem.inp*
4. For *Thermodynamic Database File* select the *therm.dat*
5. Click **Import**
6. Check and validate the listed *Species* and *Reactions*

![Spray Combustion 13 Combustion Mechanism](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_13_Combustion_Mechanism.png)

## 15. Combustion - Model

We will select the partially stirred reactor model, which is used to simulate combustion.

1. Switch to *Combustion* tab
2. Select *Combustion Model* as a *PaSR*

![Spray Combustion 14 Combustion Model](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_14_Combustion_Model.png)

## 16. Discrete Phase - Composition

We will select the pure heptane as a phase injected into the chamber.

1. Go to *Discrete Phase* panel
2. Extend *Add/Remove* list
3. Check *C7H16* phase and uncheck *N2* phase
4. Set the *C7H16* mass fraction to `1`

![Spray Combustion 15 Discrete Phase](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_15_Discrete_Phase.png)

## 17. Discrete Phase - Injection

We are going to create a cone injector and define its parameters.

1. Switch to *Injection* tab
2. Add new *Cone Injector*
3. Set *Total Mass [kg]* injection to `1e-04`
4. Set *Duration [s]* injection to `1e-03`
5. Set *Parcels Per Second* to `10000000`
6. Set the velocity *\(U_{mag} \; [m/s]\)* to `100`

![Spray Combustion 16 Discrete Phase Injection 1](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_16_Discrete_Phase_Injection_1.png)

## 18. Discrete Phase - Injection Geometry

We need to define the position of the injector and spray outflow direction.

1. Go to *Geometry* tab
2. Set the position of the injector
   *Position \({\sf [m]}\)*`1e-03``1e-03``0.013`
3. Set the injection direction
   *Direction \({\sf [-]}\)*`1``1``0.35`
4. Set the outer cone angle *\(\Theta_{outer} \; [deg]\)* to `20`

![Spray Combustion 17 Discrete Phase Injection 2](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_17_Discrete_Phase_Injection_2.png)

## 19. Discrete Phase - Injection Distribution

We will select the Rosin-Rammler distribution model and define the necessary parameters. Models need to define the minimum and maximum spray droplet diameter and size with the largest probability.

1. Switch to *Distribution* tab
2. Select the *Rosin-Rammler* model from the drop-down list
3. Set the minimal, maximal and nominal droplet diameter:
   *Min \({\sf [m]}\)*`1e-05`
   *Max \({\sf [m]}\)*`2e-04`
   *d \({\sf [m]}\)*`1e-04`

![Spray Combustion 18 Discrete Phase Injection 3](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_18_Discrete_Phase_Injection_3.png)

## 20. Discrete Phase - Models

We need to define which models will be used in this simulation. We select the Sphere Drag model to account for the drag force acting on the droplets. We choose the Ranz-Marshall heat transfer model to take into account heat transfer between the spray droplets and surrounding gas. To account for mass transfer from the droplets to the gas as a result of the evaporation and boiling, we use the Evaporation & Boiling model.

1. Switch to *Models* tab
2. Set the drag model as *Sphere Drag*
3. Set the heat transfer model as *Ranz-Marshall*
4. Set the phase change model as *Evaporation & Boiling*

![Spray Combustion 19 Discrete Phase Models](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_19_Discrete_Phase_Models.png)

## 21. Turbulence

For the purpose of this tutorial, we will simulate the turbulence phenomenon using the *Realizable \(k {-} \varepsilon\)* model.

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

![Spray Combustion 20 Turbulence](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_20_Turbulence.png)

## 22. Solution - PIMPLE

To increase the stability of the simulation, we will increase the number of iterations per time step.

1. Go to *Solution* panel
2. Switch to the *PIMPLE* tab
3. Set *Outer Correctors* to `2`

![Spray Combustion 21 Solu PIMPLE](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_21_Solu_PIMPLE.png)

## 23. Initial Conditions - Basic

Initially, the entire domain is filled with air. We will set the initial pressure and temperature in the chamber.

1. Go to *Initial Conditions* panel
2. Set the initial pressure in the chamber *P* to `5e6` Pa
3. Set the initial temperature in the chamber *T* to `800` Kelvin

![Spray Combustion 21 Initial Condition](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_21_Initial_Condition.png)

## 24. Monitors - Temperature

In order to measure maximum and minimum temperature, we will use the volume monitor.

1. Go to *Monitors* panel
2. Expand the *Fields* for the *Minimum* volume monitors
3. Select the temperature field *T*
4. Repeat this step for the *Maximum* and *Average* volume monitors.
   Selected fields will be visible next to the volume monitor names.

![Spray Combustion 22 Monitors](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_22_Monitors.png)

## 25. Run - Time Control

Before running computations, adjust the time controls in order to capture the physical and chemical phenomena that occur during the process.

1. Go to *RUN* panel
2. Set the *Simulation Time [s]* to `5e-03`
3. Set the *Time Stepping \(\Delta \sf{t[s]}\)* to `5e-06`

![Spray Combustion 23 Run Time Control](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_23_Run_Time_Control.png)

## 26. Run - Output

We can control how often results should be saved on the hard drive. We will write the results at the interval of *\(5e-05\)* seconds. Note that only saved data will be available during postprocessing.

1. Switch to *Output* tab
2. Set the *Interval [s]* to `5e-05`

![Spray Combustion 24 Run Output](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_24_Run_Output.png)

## 27. 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: 3 hours

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

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

## 28. Results - Temperature

Keep track of the domain’s maximum and minimum temperature. A sudden increase in temperature is a result of the combustion process.

1. Switch tab to *T in volume* next to the residuals

![Spray Combustion 25 Temperature monitor](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_25_Temperature_monitor.png)

## 29. Postprocessing - ParaView

After the computation is finished, we can do a comprehensive visualization of our results with ParaView.

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

![Spray Combustion 26 Postprocessing ParaView](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_26_Postprocessing_ParaView.png)

## 30. ParaView - Load Results (I)

Load the results into the program.

1. Select *spray_combustion.foam*
2. Click **Apply** to load results into ParaView

![Spray Combustion 27 ParaView Load Results 1](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_27_ParaView_Load_Results_1.png)

## 31. ParaView - Load Results (II)

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

1. Uncheck *Skip Zero Time*
2. Click **Refresh**
3. Click **Apply**
4. Set the time or time step to `0`
5. Select temperature *T*

![Spray Combustion 28 ParaView Load Results 2](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_28_ParaView_Load_Results_2.png)

## 32. ParaView - Clip

We will slice the domain in the direction of spray combustion.

1. Select *Clip* options from top menu
2. Define the origin and normal of the clip plane:
   *Origin*`0``0``0`
   *Normal*`1``-1``0`
3. Click **Apply**
4. Check the clip in the 3D graphics window

![Spray Combustion 29 ParaView Clip](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_29_ParaView_Clip.png)

## 33. ParaView - Temperature (I)

Now we will check the temperature distribution during the process.

1. Uncheck *Show Plane* for better visualization
2. Select *Rescale to data range over all timesteps*
3. Confirm choice by clicking **Rescale and disable automatic rescaling**

![Spray Combustion 30 ParaView Temp Rescale](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_30_ParaView_Temp_Rescale.png)

## 34. ParaView - Temperature (II)

1. Play with animation buttons to track the results of the analysis.

![Spray Combustion 31 ParaView Temp Map](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_31_ParaView_Temp_Map.png)

## 35. ParaView - Spray Phase

Finally, we will look at the spray particle movement.

1. Select *C7H16 (partial)* from the list
2. Click *Rescale to Custom Data Range*
3. Set the range from `0` to `0.1`
4. Confirm by clicking **Rescale and disable automatic rescaling**
5. Play with the animation buttons to track the results of analysis.

![Spray Combustion 32 ParaView Spray Phase](https://help.sim-flow.com/tutorials/images/spray-combustion/Spray_Combustion_32_ParaView_Spray_Phase.png)

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