**Introduction:**

In 1984, S.R. Ahmed created a generic car body that has a simple geometric shape called the Ahmed body. Since then, it has been a benchmark for aerodynamic simulations. When air flows around the Ahmed body, it displays the characteristic features that are displayed when flow happens over various designs of automobiles. In this project, we will be simulating flow over an Ahmed body and check the accuracy of the results with experimental data.

**Objective:**

The main objective of this project is to perform external flow simulation over an Ahmed Body using Opensource Software Like OpenFOAM. The results obtained from the simulation are then compared with the experimental data.

**Software Used:**

- OpenFOAM (Open source Field Operation And Manipulation)
- ParaView
- Excel

**Geometry used:**

You can find the dimensions used to design the Ahmed body below:

We will now design a wind tunnel in which the Ahmed body will be placed. You can find the dimensions of the wind tunnel in the below diagram:

*(All Dimensions are in mm)*

The Wind tunnel and the entire geometry was created using Commercial CAD Modelling software.

**Solver/Meshing algorithm Requirements:**

Before we can simulate the flow, we must mesh the entire geometry into tiny elements and specify the right solver. The solver will solve the necessary equations for every element and provide us with an approximated value of the answer. Every solver has its own settings and it is important that we choose the solver whose settings match the geometry we have designed. A wrong solver will result in wrong solutions. In this project, we select the below mentioned solver and meshing algorithm:

- Solver selected: rhoSimpleFoam (steady state compressible solver)
- Meshing Algorithm: SnappyHexMesh (inbuilt opensource meshing algorithm from OpenFOAM)

**Theoretical Study:**

The snappyHexMesh is an iterative process. It is a hexahedron dominant meshing tool, meaning that it will divide the entire geometry into tiny, hexahedral elements. For doing so, it needs a base mesh to work on. The BlockMesh utility from OpenFOAM can provide the base mesh that snappyHexMesh is able to work on.

The snappyHexMesh process happens in 3 phases:

- Castellation – Castellation is the process of identifying the fluid flow region and removing the mesh that are outside the boundary
- Snapping – Snapping is the process of confronting the mesh. It happens by projecting and morphing the mesh to match the nearby surface.
- Layer addition – Layer addition is just addition of layer of cell around the boundary of the object.

The Final Mesh output from Openfoam looks like this:

**Turbulence Model used:**

Since we are interested in capturing the velocity profile, we use a turbulence model for that purpose. A turbulence model is a (function) that solves a set of navier stokes equations to calculate the turbulence happening in the area.

The turbulence model chosen for this particular simulation is K-OmegaSST. Wall function was utilized on all the walls to capture the velocity profiles accurately.

This Particular turbulence model gives good results when the y+ is lesser than one. Since the Boundary layer coverage in snappyHexMesh is not 100%. It is hard to get the desired boundary y+ in all the regions. So, we try to get the desired y+ in the region where flow separation happens. This will maintain the proper wake size (the size of the area where recirculation happens) and we can get good results.

**Case Setup:**

Patch/wall name | p | u | T | Omega | nut | k | alphat |

Inlet | ZeroGradient | Freestream velocity -40m/s | inletOutlet | inletOutlet | Calculated | inletOutlet | calculated |

Outlet | fixedValue | zeroGradient | zeroGradient | zeroGradient | zeroGradient | zeroGradient | zeroGradient |

Ground | zerogradient | slip | ZeroGradient | zeroGradient | zeroGradient | zeroGradient | zeroGradient |

Tunnel | ZeroGradient | slip | ZeroGradient | zeroGradient | zeroGradient | kqRwallFunction | compressible::alphatWallFunction |

Body | ZeroGradient | noSlip | Zerogradient | omegaWallFunction | nutkWallFunction | kqRwallFunction | compressible::alphatWallFunction |

**Simulation Results:**

The final velocity profile after steady state with steam tracer plots give us the velocity distribution and the re-circulation over the entire Ahmed Body.

Top view

Side view

Back view

**Experimental vs Simulation Data:**

The following plots are made in excel sheets using the simulation and experimental data. The Experimental Data was acquired from Ercoftac. The charts represent the velocity values at various points in the wind tunnel.

**At x = 13 and y = 0**

** **

**At x = 37 and y = 0**

**At X = 63 & Y = 0**

** **

**At X = 113 & Y = 0**

** **

**At X = 187 & Y = 0**

** **

From the above graphs we can see that deviation that we have is acceptable and the results are good to be trusted.

**Conclusion:**

Parameter | Value |

Y+ Minimum | 18 |

Y+ Maximum | 100 |

Boundary Layer coverage | 94.1% |

Desired 1^{st} layer thickness |
0.000242m |

1^{st} Layer thickness variation |
0.000242m to 0.00154m |

Reynolds Number | 40000000 |

** **

We can see that the boundary layer coverage is not 100%. Since the we have y+ variation from 18 to 100 all over the body the turbulence model was able to provide us with good results. OpenFOAM code has proven to be effective that even when the Y+ was 100 in the flow separation region we are able to get good results.

By comparing the velocity profiles obtained numerically and experimentally, we have determined that the numerical simulation is approximately similar to the experimental data, save a few minor deviations that are negligible. Hence, we can determine that the model of Ahmed Body used is good for us to further determine the values of various parameters like lift co-efficient, drag-coefficient etc.

Project submitted by,

Srinivasan

If you are interested in simulating flow over bodies like the project here, you can enroll in the course mentioned below and in no time, work on your own ideas. Check out the link below for more details: