Documentation
This article provides a step-by-step tutorial for smoke propagation in the open air, making use of the passive scalar transport formulation.
This smoke propagation simulation tutorial teaches how to:
We are following the typical SimScale workflow:
First of all click, the button below. It will copy the smoke propagation project containing the geometry into your workbench.
The following picture shows how the workbench looks after importing the project.
In this example, we want to have multiple faces on the ground to assign different terrain roughness. Therefore, we modeled the air domain in CAD software and split the ground surface.
Did you know?
For simulations involving external flow, it’s important that the flow region is large. This is mostly necessary to avoid interferences from the boundaries. Furthermore, the domain should be longer downstream from the geometry, to capture the wake effects.
Assuming “L” is the longest edge of any building in the geometry, use the following rule of thumb to create a flow domain.
To set up a new simulation, select the geometry in the left-hand side panel:
Hitting the ‘Create simulation’ button leads to the following options:
Choose ‘Convective heat transfer’ for analysis type and ‘Create the simulation’.
Now you can see the default simulation tree presented in the following picture:
In the global simulation setup, please change the Turbulence model to ‘k-omega SST’. This model switches in between k-omega and k-epsilon automatically, therefore it takes advantage of both models.
Also, add 2 Passive species. These will help to define the sources of smoke from the chimneys and differentiate the concentration of them and clean air.
In this part of the tutorial, we will define the physics of the model we want the solver to calculate.
This simulation will use ‘Air’ as fluid material. Therefore click on the ‘+ button’ next to Materials. In doing so, a library of fluid materials opens:
Select ‘Air’ and click ‘Apply’. In the window that opens, you can leave the default values and assign them to the entire flow region.
In the next step, we define gravity according to the global coordinate system. Therefore click on Model in the simulation tree.
For this geometry, the gravity direction is in the negative z-axis. Hence, input ‘-9.81’ in the z-direction. Leave the Diffusion coefficients and Turbulent Schmidt number as default.
The following picture summarizes the boundary conditions applied in this simulation:
a. Walls – Slip
Follow the instructions presented in the picture below to add a new boundary condition:
Change (U) velocity to ‘Slip’ and (T) Temperature to ‘Adiabatic’. Now assign the top, left, and right walls to this condition.
b. Pressure Outlet
Create a new boundary condition, but this time choose ‘Pressure outlet’. The outlet is further away from the chimneys.
c. Velocity Inlet – Chimneys
Create yet another boundary condition. Select ‘Velocity inlet’. Let’s first set up the inlet for the tall chimney.
Set up another velocity inlet, this time for the short chimney:
d. Velocity Inlet – ABL
In this step, we will set up an Atmospheric Boundary Layer (ABL). It consists of a pre-defined velocity profile, with a value zero on the ground, gradually increasing with height. In this tutorial, \(u_{ref}\) is 5 \(m/s\) and \(h_{ref}\) is 10 \(m\).
Refer to these equations for the formulation of the logarithmic profile:
This logarithmic profile has the following formulation:
$$u = \frac{u^{*}}{K} \cdot ln \left (\frac{z + z_{0}}{z_{0}} \right ) \tag{1}$$
Where
$$u^{*} = K \cdot \frac{u_{ref}} {ln \left (\frac{z_{ref} + z_{0}} {z_{0}} \right )} \tag{2}$$
The turbulent kinetic energy (k) formulation is shown below. \(c_\mu\) is the turbulent viscosity constant, equal to 0.09:
$$k = \frac{{u^{*}}^{2}} {\sqrt{c_{\mu}}} \tag{3}$$
Finally, for the specific dissipation rate \(\omega\), the formula is:
$$\omega = \frac{u^{*}}{K \cdot \sqrt{c_{\mu}}} \cdot \frac{1}{z + z_{0}} \tag{4}$$
For more information about the setup parameters, please visit this page.
We will use formula inputs for \(u\), \(k\) and \(\omega\). Based on the equations above:
$$ u = \frac{5}{log \left (\frac{10 + 0.03}{0.03} \right) } log \left (\frac{z + 0.03}{0.03} \right) \tag{5} $$
$$ k = \left(\frac{0.41*5}{log \left (\frac{10 + 0.03}{0.03} \right)} \right)^2 \frac{1}{\sqrt{0.09}} \tag{6} $$
$$ \omega = \frac{5}{log \left (\frac{10 + 0.03}{0.03} \right)} \frac{1}{\sqrt{0.09}} \frac{1}{z + 0.03} \tag{7} $$
Follow the same procedure as presented in figure 10 but choose a custom boundary condition:
To input the formula for velocity, select a ‘Fixed value’, and then click on the highlighted button to open further options:
Afterward, two tabs will be available: Formula and Table. Switch to the formula input, and paste the velocity formula posted above in the x-direction. Hit ‘Apply’ to save.
Repeat the same process for \(k\) and \(\omega\). The other parameters should be as follows:
Value | Formula |
\((U)\) Velocity | (0.41*5/log((10+0.03)/0.03))/0.41*log((z+0.03)/0.03) |
\((k)\) Turb. kinetic energy | ((0.41*5)/(log((10+0.03)/(0.03)))^2/(0.09)^0.5) |
\( (\omega)\) Specific dissipation rate | (0.41*5/log((10+0.03)/0.03))/(0.41*(0.09)^0.5)*1/(z+0.03) |
e. Building Walls
Solid walls will receive a no-slip condition. Furthermore, we can specify a surface roughness for the building walls, as well as for the terrains. For more information about the surface roughness model, check the relevant documentation.
Optional wall settings
The following custom boundary conditions, to define the surface roughness on building walls and the terrains, can be entirely skipped. This means that these surfaces will automatically receive a no-slip condition.
Create a Custom boundary condition.
f. Terrains
The terrains will receive roughness as well. The custom boundary condition is the same as above. The only difference is the Roughness height:
You can also use the pre-saved selection sets to correctly assign the terrains.
Repeat the same process for terrain 2 and 3.
Note
Check out this page, if you are interested in other boundary conditions available in SimScale.
To enhance convergence, please initialize the velocity field with ‘5 \(m/s\) ‘ in the x-direction. This velocity represents \(u_{ref}\):
The default settings for Numerics are optimized based on the analysis type. Therefore, they work well for most of the simulations and require no changes. However, if you are a simulation expert, you have full control over the settings and may change them as you like.
Access the Simulation control. Here we can define the number of iterations for the simulations as well as the write interval for specifying how many intermediate results to save.
In Simulation control, change the End Time and the Write interval to ‘600’. Furthermore, please adjust the Maximum runtime to 30000 seconds.
Note
For more information about simulation control and numerics, check the corresponding documentation pages.
By setting result controls, you can observe the convergence behavior of several parameters of interest. Hence it is an important indicator to evaluate the quality and trustability of the results.
For this simulation, set up an Area average result control on the outlet. Please proceed as below:
To create the mesh, we recommend using the standard algorithm. This algorithm is a good choice in general, as it is quite automated and delivers good results for most of the geometries.
Disable Automatic boundary layers. The layers will be specified manually later. To improve the resolution around the areas of interest, we will set up three refinements.
Click on the ‘+ button’ next to Refinements. The first refinement is a Local element size. This refinement limits the maximum edge length of cells in chosen entities. Hence, it’s useful to improve the resolution in specific regions.
To improve the resolution of the region around the chimneys, let’s create a region refinement. Please proceed as below:
Finally, assign this cartesian box to the region refinement. This step finalizes the setup of the simulation.
Click on the ‘+ button‘ next to Simulation runs and ‘Start‘ the process.
While it’s running, you can access the intermediate results by clicking on Solution fields. They’re updated as the iterations go by!
The entire smoke propagation simulation takes around 100 minutes to finish. In the reference project, which is linked below, we calculated a few more iterations, to assure complete convergence.
Once the run is finished for your smoke propagation simulation, open the area average at the outlet result control. For steady-state simulations, the parameters are expected to converge and stabilize as iterations go on. Let’s inspect the average level of the first passive scalar (identified as T1):
For this simulation, other parameters are also useful to assess convergence, such as velocity, temperature, and passive species levels at the outlet.
The first post-processor filter that we will use is the ‘Particle Trace’ filter. This filter is very useful to know how the chimneys affect the airflow in the fluid domain. Please follow the steps below to visualize the particle traces:
For the second chimney, you can repeat the same steps outlined above. As a result, the particle traces will be similar to the figure below:
Based on Figure 36, the gas coming out of the chimneys causes the flow to rise and creates a higher velocity.
Next, let’s utilize a cutting plane generated by default to observe how the smoke propagation, or gas coming out of the chimneys, affects the temperature of the surroundings. Toggle the ‘Cutting Plane’ on and the ‘Particle Traces’ off. Set up the settings of the cutting plane by following the step below:
After adjusting the setting the result should look similar to this:
From the figure above, we can see that hot gas comes out of the chimney, affecting the air temperature downstream. The buoyancy effects are also noticeable, with the hot exhaust air quickly rising towards the top of the enclosure.
The final filter that will be showcased is the Iso volume filter which is very useful to observe the propagation of the gases. Please follow the steps below to set an iso volume filter:
The settings for the Iso Volume 1 can be seen in the figure below:
From Figure 39, you can see the smoke propagation results as the concentration of passive scalars. The Iso-Volume body displays the volume in which the smoke propagation is in a range from 0.1 to 1. It is evident that the smoke propagation is less than 10% as most of the higher concentration smoke remains at the boundary of the chimney outlet.
Analyze your smoke propagation results with the SimScale post-processor. Have a look at our post-processing guide to learn how to use the post-processor.
Congratulations! You finished the smoke propagation tutorial!
References
Note
If you have questions or suggestions, please reach out either via the forum or contact us directly.
Last updated: October 10th, 2023
We appreciate and value your feedback.
Sign up for SimScale
and start simulating now