'Alfa Romeo P2 1930' simulation project by pfernandez


I created a new simulation project called 'Alfa Romeo P2 1930':

The 1930's P2 is a modified version of the car that won the first Automobile World Championship in 1925. Both car (by Carco) and mannequin (by Emmanuel Mahay) can be found at GrabCAD.

More of my public projects can be found here.


You can’t be a true petrolhead until you’ve owned an Alfa Romeo
—Jeremy Clarkson.

And what best Alfa Romeo than an evolution of the first model to win the inaugural Automobile World Championship in 1925?

In this simulations I will compare different configurations:

  • Without and with driver. At the moment I’m having convergence issues with the latter.
  • Static wheels and rotating wall on the tires. Might try to implement an MRF simulation around to account for the effect of the wheel spokes.

The mesh is rather coarse: ~11M cells. I faced some problems with finer meshes; so this will have to do.

I’ll start with some plots and add more post-processing results during the following days.


The 3D model of this italian race car is available in GrabCAD. For the CFD simulations I also wanted to add a driver. For this I took a mannequin from GrabCAD, designed by Emmanuel Mahay.

You may have clean-up the geometry before you upload it to SimScale. There are multiple choices, so use the CAD software you are most comfortable with. In this case I had to combine the car and the mannequin into a single file, which required scaling and positioning the figure.

Once the file is ready, you can upload your geometry to SimScale.

It’s time to double check the dimensions of your geometry. Remember, OpenFOAM works with meters.

If your output is a STL file, make sure you split it. If you do this with your CAD software it will make it easier to apply different boundary conditions on the object. e.g., rotating wall for the tires. Besides, you will need at least two faces for the boundary layer algorithm to work.

Mesh Operation

You can now create a new mesh from your geometry. By choosing Hex-dominant parametric you have greater control over the end result.

The number of cells in the _BaseMeshBox can be chosen after setting the dimensions of the box. The size of the box can be based on different assumptions. In this case I defined the virtual wind tunnel to be about 10 times the length of the car and 5 times the width and height of the model with the car position towards the inlet and the floor intersecting the tires in order to simulate a contact patch.

Once defined the dimensions of the bounding box, you can go back to the Operation and define the number of cells. I have created this Google Sheet to get an estimation of the cell size and number of cells per refinement level. This will help us make informed decisions later on.

Specify the material point to be within the fluid domain.

Mesh refinements

There are different kinds of refinements we can apply to our model in snappyHexMesh. Take a look at this tour by Engys for a comprehensive description of many of its features.


The feature refinement identifies sharp edges on the geometry. In SimScale define the level to 0 because I just want to identify them so the meshing algorithm can take them into account. The cell size around the edges will be that of the surfaces close to it.


In order to capture the wake we define a region with finer mesh around and behind the vehicle. For that we create a geometry primitive to define the volume we want to refine.

The refinement level was taken based on the spreadsheet calculations shared above.


The surface refinement for this geometry was split into three areas:

  • Wheels: with a refinement level up to 7 (~2.6 mm) in order to capture the wheelspokes.
  • Surface: general surface refinement up to level 6 (~5.2 mm) to capture most of the details of the vehicle.
  • Surface coarse: with a refinement level up to 5 (~10.4 mm) for the large pannels of the bodywork.


In this simulation I left the default settings for layer addition on the faces of the vehicle and the tunnel floor.

The result is a mesh of ~11 million cells.

Simulation Designer

Add a new simulation for incompressible steady-state fluid dynamics.

Choose an appropriate turbulence model; in this case I opted for k-omega SST.

Select the mesh.



Pick air from the material library.

Initial conditions

  • Pressure: Leave the reference pressure as 0 m2/s2.
  • Velocity: 40 m/s (144 km/h) in the x direction.
  • Turbulence properties: use cfd-online’s calculator to define the parameters for k and omega:
    • k: 0.06.
    • omega: 390.

Boundary conditions

I used six different types of boundary conditions for this simulation:

  • inlet: velocity inlet of 40 m/s in the x direction.
  • outlet: pressure outlet with a reference kinematic pressure of 0 m2/s2.
  • tunnel walls: slip wall boundary condition.
  • tunnel floor: moving wall boundary condition of 40 m/s in the x direction.
  • alfa romeo: no-slip wall boundary condition.
  • wheels: rotating wall boundary condition.
    • use the CAD software to determine the axis of rotation of each wheel.
    • use the wheel radius to determine the angular speed (52.359 rad/s) of the wheel.


I modified the residuals control and set the absolute tolerance to:

  • 0.001 for pressure.
  • 0.0001 for velocity, turbulent kinetic energy, and omega.

Change also the pressure solver to GAMG and the divergence schemes to use bounded Gauss upwind.

Simulation control

I set the end time to 3000 iterations which should be enough to reach an asymptotic value in terms of drag.

I also initialized the flow with a potential flow solution.

Result control

Here you can tell SimScale to calculate the force and moment coefficients, amongst other results. To obtain the drag and lift coefficients we have to define the drag and lift directions, the freestream velocity, and the reference area.


The simulation is now ready to run.

Feel free to make any suggestion, provide feedback, or ask any question.




The following is an accumulated drag plot. The functionality was introduced in OpenFOAM 2.2.0 (see this controlDict for an example), and can tell us which areas of the car build up drag.

It is readily apparent that the blunt front bodywork of this racecar is responsible for nearly half the drag while the streamlined rear-end of the car adds very little.


This early models have no aerodynamic devices so she should not generate any significant amount of downforce as the very low coefficient shows in the following plot.

The inclined front along with the pressure build-up generate some downforce at the front wheel. The rest of the car is rather neutral but for the cabin which contributes some sustained lift.


There seems to be little difference between a static wheel simulation and imposing a rotating wall boundary condition on the tires; but though little, there is.

The results show static minus rotating.

Following the red line (delta drag), we can see that a rotating wheel build less drag at the back of the tire while the magenta line (delta downforce) suggests that a rotating wheel generate more lift at the front and more downforce at the back.

Can seem counter-intuitive at first; so I will add more results in the following days to help the explanation.


Now, what if we include the driver?

As the Alfa Romeo P2 is an open two-seater, the influence of the driver cannot be neglected. So, I added a mannequin in the place of the driver. These are the results.

         | Baseline | Driver |
| Cd     |   0.651  |  0.634 |
| Cd x A |   0.680  |  0.701 |

If we only look at the drag coefficient we will stumble ourselves upon a surprising result; the drag coefficient without driver is larger? Everybody would expect otherwise.

Drag = 0.5 * rho * Cd * A * U**2

As we can see from the definition of drag, when we look at the Cd alone, we are not taking the reference area into account; and with a driver, the latter increases. So, we add the concept of drag area Cd x A which will allow us to compare results from different sources in a more equitable manner.

The plot shows that the effect of the driver is appreciable from the start of the cabin interior at 1.5 m as with the driver more pressure builds-up at the firewall.