Modeling Jet Fans, Part 2 (now replaced by new post): An Engineering Approach
This post has been replaced by an updated post.
In the first post on modeling jet fans with FDS, we did a quick background review of downstream flow, including the Potential core and Axisymmetric decay regions for a free circular jet. For flow conditions similar to a commercial jet fan, a mesh size of 12.5 mm was required to obtain reasonably accurate results. Unfortunately, it is not feasible to simulate full scale parking garages with such a fine mesh, even if multiple meshes are used. This post discusses ways it may be possible to use a larger mesh size and still obtain meaningful results (see also Part 1: Background and Convergence Study, Part 3: Applications, and Jet Fan Videos).
Caution:
This post examines the options of modeling jet fans using Synthetic Turbulence or Dynamic Smagorinsky turbulent viscosity with larger mesh sizes. Neither of these approaches is currently recommended: Synthetic Turbulence requires calibration (and is not implemented in FDS for use with HVAC ducts) and Dynamic Smagorinsky does not perform well for coarse simulations of fire (based on discussions with NIST).
The test problem is a square duct with sides h=0.25 m (equivalent diameter 0.282 m) and an outlet air velocity of 18 m/s (65 km/hr), giving a Reynolds number of 2.7E5. Details are provided in the first post. We use centerline velocity decay to evaluate solution accuracy, since it is a measure of well the simulation captures the transfer of high speed energy to the surrounding air.
As shown in Figures 1 and 2, using the default FDS parameters, a mesh size of 12.5 mm was required to obtain reasonably accurate results (1/20 of the vent side). Meshes with larger cells sizes did not capture the highly turbulent flow generated by viscous shear at the edge of the shear layer. The 125 mm mesh (1/2 of the vent side), shows an initial expansion of the jet area, but then remains essentially a smooth, high speed jet without the transition to turbulent flow.


In this post, we discuss alternate approaches that allow the engineer to use larger cell sizes and still do a reasonable job of simulating the jet fan. Some possible approaches include:
- A “mechanical engineering” approach where we attempt to enhance turbulence by including radial components to the jet fan outlet velocity. This was not successful and will not be discussed further.
- A boundary condition approach where we use Synthetic Turbulence to introduce turbulence to the outlet flow of the jet fan.
- A more fundamental CFD approach where we modify the turbulent viscosity by using the Dynamic Smagorinsky model.
I am sure there are other options available and would welcome further suggestions (contact swenson@thunderheadeng.com).
Synthetic Turbulence Background
Before we present results, we need to introduce the concept of Synthetic Turbulence, which is a new feature in FDS 6 and added using the approach developed by Nicolas Jarrin (2008). As described in the FDS User Manual, synthetic turbulence injects “eddies” into the flow at random positions on the boundary and these are then carried with the mean flow from the boundary a distance equivalent to the maximum eddy length scale. Basically this means that the inlet flow is already turbulent. The goal of Jarrin’s thesis was to couple upstream steady Reynolds-Averaged Navier-Stokes (RANS) solutions with transient downstream Large-Eddy Simulation (LES) calculations. In our case, we will use synthetic turbulence to add turbulence to the output of the jet fan.
The FDS input parameters that control synthetic turbulence are: the number of eddies, N_EDDY; the characteristic eddy length scale, L_EDDY; and either the root mean square (RMS) velocity fluctuation, VEL_RMS, or the Reynolds stress tensor components, REYNOLDS_STRESS(3,3). These are defined on the VENT line. In PyroSim, these parameters are not part of the user interface, so they are input using the table on the Advanced tab of the Vent Properties dialog.

We can explore the effect of each of these parameters using a 1 m cube, with a mean velocity flow of 10 m/s. The mesh size was 0.02 m.

The number of eddies parameter is used to seed a “box” in which the eddies are initially specified. The box dimensions in the FDS implementation are not specifically stated, but it appears that a 2D box (with boundaries) is used. A value of 100 eddies is used in the FDS examples and experimentation with 10 and 1000 eddies shows that a value of 100 is a reasonable choice. The size of the eddy defines the distance over which the eddy will add turbulence. The RMS velocity defines the velocity difference the eddy will add/subtract from the average velocity. The effect of varying these parameters is shown below.



Dynamic Smagorinsky Turbulent Viscosity
Also added to FDS 6 were new turbulent viscosity model options. One of these is the Dynamic Smagorinsky model. My background is solid mechanics and finite elements, so I am not competent to provide in-depth descriptions of all the turbulent viscosity options or the effect of varying parameters, but I can give some overview. FDS 5 used the Constant Smagorinsky model. By default, FDS 6 uses the Deardorff turbulent viscosity model. As stated in the FDS User Guide, its selection as the default was based on comparisons with a wide variety of full-scale experiments. However, in an FDS forum discussion, the Dynamic Smagorinsky model is suggested by Kevin McGrattan as being one that would “kick” laminar flow into turbulent. This was observed in this calculation.
The FDS Verification Manual (McGrattan, et al., 2013, Section 3.4 Jet Centerline Velocity Decay) provides a jet example that compares turbulence models. All cases show reasonable results for a fine mesh (1/16 of the vent side). However, the Dynamic Smagorinsky model shows the best results for a larger mesh of 1/8 of the vent side. While similar, this FDS verification problem is not quite as challenging as the jet fan problem discussed in this post. The verification vent flow velocity is 2 m/s over a 0.8 m square vent, for a Reynolds number of 1E5. As mentioned above, the jet fan problem in this post has a velocity of 18 m/s over a 0.25 square vent, for a Reynolds number of 2.7E5.

In their work on jet fans, Aveiro and Viegas (2010) used the Constant Smagorinsky model, but with the C_SMAGORINSKY constant modified from the default value of 0.2 to 0.4.
In PyroSim, the option to select the turbulent viscosity model is not included in the interface. Instead, use the Misc tab of the Simulation Parameters dialog.

Jet Fan Results
We now present results for a jet fan that uses coarse meshes of 62.5 mm and 125 mm (1/4 and 1/2 of the vent size). For the synthetic turbulence model, the eddy size was specified as 0.1 m (approximately the mesh size) and the RMS velocity was specified as 1 m/s for the 62.5 mm mesh and 2 m/s for the 125 mm mesh. These velocities were selected to provide the desired centerline velocity decay. This tuning is mesh dependent. As can be seen, both cases show an increased turbulence compared to the original result shown in Figure 1.

The Dynamic Smagorinsky results are similar. The turbulence flow is closer to the high resolution results shown in Figure 1. A second advantage is that there are no parameters to tune using this model.

A comparison of all the results is shown below. Immediately downstream of the outlet, the coarse meshes still show an initial expansion. However, both the synthetic turbulence and dynamic Smagorinsky approaches show downstream velocities with increased turbulent mixing and transfer of momentum to the surrounding air. Thus, they are doing a better job of capturing the essential physics of how jet fans are used to move air.

Summary
This post has demonstrated that either Synthetic Turbulence or the Dynamic Smagorinsky models can be used to improve the simulation of jet fans with coarse meshes. This provides a way forward for engineers to capture the essential physics of the jet fan problem in their simulations, without meeting the very restrictive mesh size requirements using the default FDS turbulence models.
Both approaches have positive and negative aspects:
- The positive aspect of Synthetic Turbulence is that it uses the default turbulent viscosity model (Deardorff). The disadvantage is that it requires tuning by the user for different meshes.
- The positive aspect of Dynamic Smagorinsky is that no parameters need to be adjusted. However, experience shows this turbulence model does not perform as well as the default Deardorff model for a broad range of problems. Specifically, using Dynamic Smagorinsky with a coarse mesh for flame calculations can lead to unrealistic flame behavior.
In the next post, we will use this approach to model a jet fan experiment in a parking garage. My inclination is to focus on the Dynamic Smagorinsky approach.
Acknowledgements
All calculations were performed using the FDS and Smokeview software. PyroSim was used to create and run the FDS models.
Author
Daniel Swenson, Member Technical Staff, Thunderhead Engineering. swenson@thunderheadeng.com. The author would be glad to hear comments on alternative approaches to model jet fans.
Input Files
All FDS and PyroSim input files can be downloaded here:jet-fan-files.zip .
References
Aveiro, João L. & Viegas, João C. (2010). “Smoke Control in an Underground Car Park with Impulse Ventilation,” V European Conference on Computational Fluid Dynamics, ECCOMAS CFD 2010, J. C. F. Pereira and A. Sequeira (Eds), Lisbon, Portugal, 14–17 June 2010.
Jarrin, Nicolas, (2008). Synthetic Inflow Boundary Conditions for the Numerical Simulation of Turbulence. Ph.D. thesis, The University of Manchester, Manchester M60 1QD, United Kingdom.
Kümmel, (2007). Technische strömungsmechanik. Technical report, B.G. Teubner, 3. Auflage, 2007. 25
McGrattan, K., McDermott, R., Weinschenk, C., Overholt, K., Hostikka, S., Floyd, J., (2013). Fire Dynamics Simulator Technical Reference Guide, Volume 2: Verification, Sixth Edition, NIST Special Publication 1018, National Institute of Standards and Technology.
FDS Input File for Dynamic Smagorinsky 62.5 mm Case
0_0625_dyn_smagorinsky_fds.fds Generated by PyroSim - Version 2015.1.0129 Mar 14, 2015 7:22:33 AM
&HEAD CHID='0_0625_dyn_smagorinsky_fds'/ &TIME T_END=20.0/ &DUMP RENDER_FILE='0_0625_dyn_smagorinsky_fds.ge1', DT_DEVC=0.01/ &MISC TURBULENCE_MODEL='DYNAMIC SMAGORINSKY'/
&MESH ID='Mesh-a-e', IJK=40,20,20, XB=0.0,2.5,-0.625,0.625,-0.625,0.625/ &MESH ID='Mesh-b-a', IJK=40,20,20, XB=2.5,5.0,-1.25,-1.11022E-15,-1.25,-1.11022E-15/ &MESH ID='Mesh-b-b', IJK=40,20,20, XB=2.5,5.0,-1.25,-1.11022E-15,-1.11022E-15,1.25/ &MESH ID='Mesh-b-c', IJK=40,20,20, XB=2.5,5.0,-1.11022E-15,1.25,-1.25,-1.11022E-15/ &MESH ID='Mesh-b-d', IJK=40,20,20, XB=2.5,5.0,-1.11022E-15,1.25,-1.11022E-15,1.25/
&DEVC ID='Vel x0_0 z0_000', QUANTITY='VELOCITY', XYZ=0.0125,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x0_5 z0_000', QUANTITY='VELOCITY', XYZ=0.5,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x1_0 z0_000', QUANTITY='VELOCITY', XYZ=1.0,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x1_5 z0_000', QUANTITY='VELOCITY', XYZ=1.5,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x2_0 z0_000', QUANTITY='VELOCITY', XYZ=2.0,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x2_5 z0_000', QUANTITY='VELOCITY', XYZ=2.5,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x3_0 z0_000', QUANTITY='VELOCITY', XYZ=3.0,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x3_5 z0_000', QUANTITY='VELOCITY', XYZ=3.5,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x4_0 z0_000', QUANTITY='VELOCITY', XYZ=4.0,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x4_5 z0_000', QUANTITY='VELOCITY', XYZ=4.5,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &DEVC ID='Vel x5_0 z0_000', QUANTITY='VELOCITY', XYZ=5.0,0.0,0.0, ORIENTATION=1.0,0.0,0.0/ &SURF ID='Vent Supply', RGB=26,204,26, VEL=-18.0/ &VENT SURF_ID='OPEN', XB=0.0,0.0,0.125,0.625,-0.625,0.625/ Mesh Vent: Mesh-a-e [XMIN] &VENT SURF_ID='OPEN', XB=0.0,2.5,0.625,0.625,-0.625,0.625/ Mesh Vent: Mesh-a-e [YMAX] &VENT SURF_ID='OPEN', XB=0.0,2.5,-0.625,-0.625,-0.625,0.625/ Mesh Vent: Mesh-a-e [YMIN] &VENT SURF_ID='OPEN', XB=0.0,2.5,-0.625,0.625,0.625,0.625/ Mesh Vent: Mesh-a-e [ZMAX] &VENT SURF_ID='OPEN', XB=0.0,2.5,-0.625,0.625,-0.625,-0.625/ Mesh Vent: Mesh-a-e [ZMIN] &VENT SURF_ID='OPEN', XB=0.0,0.0,-0.625,-0.125,-0.625,0.625/ Mesh Vent: Mesh-a-e [XMIN]01 &VENT SURF_ID='OPEN', XB=0.0,0.0,-0.125,0.125,0.125,0.625/ Mesh Vent: Mesh-a-e [XMIN]02 &VENT SURF_ID='OPEN', XB=0.0,0.0,-0.125,0.125,-0.625,-0.125/ Mesh Vent: Mesh-a-e [XMIN]03 &VENT SURF_ID='OPEN', XB=5.0,5.0,-1.25,-1.11022E-15,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-a [XMAX] &VENT SURF_ID='OPEN', XB=2.5,2.5,-0.625,-1.11022E-15,-1.25,-0.625/ Mesh Vent: Mesh-b-a [XMIN] &VENT SURF_ID='OPEN', XB=2.5,2.5,-1.25,-0.625,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-a [XMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.25,-1.25,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-a [YMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.25,-1.11022E-15,-1.25,-1.25/ Mesh Vent: Mesh-b-a [ZMIN] &VENT SURF_ID='OPEN', XB=5.0,5.0,-1.25,-1.11022E-15,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-b [XMAX] &VENT SURF_ID='OPEN', XB=2.5,2.5,-1.25,-0.625,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-b [XMIN] &VENT SURF_ID='OPEN', XB=2.5,2.5,-0.625,-1.11022E-15,0.625,1.25/ Mesh Vent: Mesh-b-b [XMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.25,-1.25,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-b [YMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.25,-1.11022E-15,1.25,1.25/ Mesh Vent: Mesh-b-b [ZMAX] &VENT SURF_ID='OPEN', XB=5.0,5.0,-1.11022E-15,1.25,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-c [XMAX] &VENT SURF_ID='OPEN', XB=2.5,2.5,-1.11022E-15,0.625,-1.25,-0.625/ Mesh Vent: Mesh-b-c [XMIN] &VENT SURF_ID='OPEN', XB=2.5,2.5,0.625,1.25,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-c [XMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,1.25,1.25,-1.25,-1.11022E-15/ Mesh Vent: Mesh-b-c [YMAX] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.11022E-15,1.25,-1.25,-1.25/ Mesh Vent: Mesh-b-c [ZMIN] &VENT SURF_ID='OPEN', XB=5.0,5.0,-1.11022E-15,1.25,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-d [XMAX] &VENT SURF_ID='OPEN', XB=2.5,2.5,-1.11022E-15,0.625,0.625,1.25/ Mesh Vent: Mesh-b-d [XMIN] &VENT SURF_ID='OPEN', XB=2.5,2.5,0.625,1.25,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-d [XMIN] &VENT SURF_ID='OPEN', XB=2.5,5.0,1.25,1.25,-1.11022E-15,1.25/ Mesh Vent: Mesh-b-d [YMAX] &VENT SURF_ID='OPEN', XB=2.5,5.0,-1.11022E-15,1.25,1.25,1.25/ Mesh Vent: Mesh-b-d [ZMAX] &VENT SURF_ID='Vent Supply', XB=0.0,0.0,-0.125,0.125,-0.125,0.125/ Vent &ISOF QUANTITY='VELOCITY', VALUE=1.0,2.0,5.0,10.0,15.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=0.25/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=0.5/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=1.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=1.5/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=2.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=3.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=4.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBX=5.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBY=0.0/ &SLCF QUANTITY='VELOCITY', VECTOR=.TRUE., PBZ=0.0/ &DEVC ID='[Species: AIR] Mass Flux X=0.5_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=0.5,0.5,-0.625,0.625,-0.625,0.625/ &DEVC ID='[Species: AIR] Mass Flux X=1.0_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=1.0,1.0,-0.625,0.625,-0.625,0.625/ &DEVC ID='[Species: AIR] Mass Flux X=1.5_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=1.5,1.5,-0.625,0.625,-0.625,0.625/ &DEVC ID='[Species: AIR] Mass Flux X=2.0_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=2.0,2.0,-0.625,0.625,-0.625,0.625/ &DEVC ID='[Species: AIR] Mass Flux X=2.5_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=2.5,2.5,-0.625,0.625,-0.625,0.625/ &DEVC ID='[Species: AIR] Mass Flux X=3.0_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=3.0,3.0,0.0,1.25,0.0,1.25/ &DEVC ID='[Species: AIR] Mass Flux X=3.5_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=3.5,3.5,0.0,1.25,0.0,1.25/ &DEVC ID='[Species: AIR] Mass Flux X=4.0_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=4.0,4.0,0.0,1.25,0.0,1.25/ &DEVC ID='[Species: AIR] Mass Flux X=4.5_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=4.5,4.5,0.0,1.25,0.0,1.25/ &DEVC ID='[Species: AIR] Mass Flux X=5.0_AREA INTEGRAL', QUANTITY='MASS FLUX X', SPEC_ID='AIR', STATISTICS='AREA INTEGRAL', XB=5.0,5.0,0.0,1.25,0.0,1.25/ &TAIL /