Automotive External Aerodynamics Tutorial

Use HyperMesh CFD to perform an aerodynamic analysis of a vehicle.

Before you begin, copy the file(s) used in this tutorial to your working directory.

Solution and Environment Selection

When opening HMCFD, the Create Session Dialog will appear. Select the Aerodynamics and Aeroacoustics solution and the Geometry Repair environment.
Note: You may also select the solution and the environment directly from HMCFD by selecting File > Solution > Aerodynamics and Aeroacoustics. You may then select the Geometry Repair environment by selecting from the drop-down to the right of View.
Figure 1. Create Session Dialog

Model Transfer to the Case Setup Environment

  1. Go to File > Open > Model File and select the HMCFD model Aurora.hmcfd.
  2. Click the Data Transfer Tool. In the guide bar, select Parts (selected by default). Select all parts in the model, check the Clear Existing Setup box, and click Transfer.
    Figure 2.
  3. The selected part groups are copied to the Case Setup environment.
    Note:
    • Alternatively, you may use Part Groups selection. When invoking Part Groups selection, if a part belongs to more than one part group, it will be copied to the Case Setup environment only as part of the first group to which it was assigned. Only actual part groups are transferred. Parts which are not assigned to a part group will be ignored on transfer.
    • When invoking Part selection, all selected parts are transferred.
      Tip: You may also import mesh and CAD files directly from the HMCFD Case Setup environment through File > Import/Open > Geometry Files (for CAD) or Solver Deck (for mesh). You may manually switch to the Case Setup environment, by selecting Case Setup from the drop-down to the right of View.

Case Environment Setup

  1. Invoke the Model Browser and Property Editor from the View menu.
    Both open on the left side of the modeling window.
  2. Change the model projection to Orthographic.
    Figure 3.

Body Coordinate System

When parts are imported into the Case Setup environment, whether directly or through the Data Transfer tool, they are placed in their original position in the global coordinate system. Any transformations or rotations applied to the model within the Case Setup environment will not be applied upon import. To apply these, you must create a coordinate system that will be affected by these transformations and rotations. When a part is imported, you may then assign this coordinate system to the part from the Property Editor > General > System and this assignment will apply the corresponding transformations and rotations on the part.

  1. Click on the Systems tool in the Setup ribbon.
    Figure 4.
  2. Create a part-specific coordinate system by clicking on the part to which it will be assigned (in this case, click on the model’s windshield to select the Body_Exterior part).
  3. From the coordinate system’s property editor, notice that Body_Exterior is set as the value for Applied To > Part.
  4. Check the box under Applied To > Move with part.
  5. Rename the coordinate system Body_CSYS.
  6. Press Esc to exit the tool.
  7. Select the coordinate system and hide it with the H shortcut key.

Baffles

Parts represented by surfaces with no thickness where both parts of the surface are exposed to the flow must be identified as baffles. Alternatively, they may be thickened in the Geometry Repair environment. The Geometry Repair environment offers multiple tools to find baffle parts/surfaces/elements in a model.

  1. In the Model Browser, click on the magnifying glass to open the search bar.
  2. Type “Baffle”.
  3. Click on the Underbody_Shield_Rear_Baffle part.
  4. In the Property Editor, check the box under General > Baffle.
  5. Clear the search bar in the Model Browser to show all parts.

Model Organization

  1. From the Model Browser, type Porous_Media in the search bar.
  2. Highlight all shown parts, then right-click and select New Assembly.
  3. Rename the newly created assembly as Porous_Media.
  4. Clear the search bar in the Model Browser.
  5. Repeat steps 1 to 4 for Body_Exterior, Chassis, Cooling_Module, Electronics_Module, Patch (rename as Patches), Steering (rename as Steering Module), Suspension (rename as Suspension_Module), Underbody, VREV (rename as VREVs), Monitor_Surface (rename as Monitor_Surfaces), Wheel (rename as Wheels, only select those parts which are not inside another assembly).
  6. In the Model Browser, right-click on the Model assembly and select New Assembly.
  7. Rename the newly created assembly as Main.
  8. Collapse all other assemblies, then select, drag, and drop them into the Main assembly.
    Note: When dealing with many parts, this process may be slow. In that case, try dragging the assemblies one at a time into the Main assembly.
  9. From the Model Browser, type RL7 in the search bar.
  10. Highlight all shown parts, then right-click and select New Assembly.
    An assembly is created within the Underbody assembly.
  11. Rename the newly created assembly as RL07.
  12. Right-click on the Main assembly and click Isolate to isolate the parts contained within the Main assembly.

Model Dimensions

The ultraFluidX 2023.0 Setup guidelines for vehicle aerodynamics, provides various setup recommendations which rely on the model dimensions and position. HMCFD’s Case Setup environment allows you to gather this information through the GUI and the Python Window.

Python Window

  1. Open the Python Window by going to View > Python Window or pressing F4 on your keyboard.
  2. Execute the following:
    • from hwx import inspire
    • model = inspire.getActiveModel()
    • model.axisAlignedBoundingBox

      Output: Box(x=4.96514, y=2.1354, z=1.42625)

    • model.axisAlignedBoundingBox.minMax

      Output: (Point (-0.9074339866638184, -1.0676989555358887, -0.010730000212788582),

      Point (4.057706832885742, 1.0676989555358887, 1.415518045425415))

GUI

  1. Select all parts in the viewer.
  2. Click on the Measure tool.
    Figure 5.
    A bounding box fitted to the selected parts will show along with its X, Y, Z dimensions.
  3. Given that z-min is zero, the vehicle’s centerline is at y = 0, and the vehicle can be assumed to be symmetric about the Y plane, we can derive the Y and Z mins and maxes from this data. One way to find x-min is to use the RL Box creation tool.
  4. Click on the Mesh Controls tool > Box > Create Box Zone Around Body.
  5. Click on any surface of the body.
  6. From the Property Editor > Dimensions, set the Length to 4.07 (shown by the Measure tool).
  7. Orient your model to the Right view.
  8. Drag the box along X until the front and rear of the box appear to be just touching the front and rear surfaces of the model respectively.
  9. Note the x-min and x-max values in the Property Editor > Zone Extents.
  10. Delete the box by right-clicking on the part in the Model Browser > Mesh Controls.

Define Wind Tunnel

  1. From the Setup ribbon, click the Edit Tunnel tool.
    Figure 6.
    A tunnel is generated around the model. The tunnel size is automatically set based on the best practices for vehicle simulations.
  2. In the Property Editor, go to Inflow velocity > Inflow speed and set the inflow speed to 38.889 m/s.
    Tip: Tip You can also double-click on the large arrow at the bottom of the wind tunnel to set the wind speed.
  3. From either Tunnel Extents in the Property Editor or the micro-dialogs in the modeling window, modify the dimensions of the wind tunnel.
    • Enter a value of 79.44 m for the Length.
    • Enter a value of 53.375 m for the Width.
    • Enter a value of 29.945 m for the Height.

Advanced Tunnel Setup (Belts & Patch)

The “standard” external aerodynamics wind tunnel setup calls for a full moving ground configuration. Modelling setups which emulate those in wind tunnels are possible using the Belts Tool together with the Ground Patch as described below.

  1. From the Property Editor, enable the checkbox under Ground Configuration > Enable BL Suction.
    Note: Enabling Boundary Layer Suction sets the boundary condition of the ground upstream of the boundary layer suction line (blue dotted line) to a slip wall boundary condition. Enabling boundary layer suction is recommended whenever static ground conditions apply to the simulation. This includes moving belts surrounded by a static ground region.
  2. From the Property Editor, enable the checkbox under Ground Configuration > Enable Ground Patch.
    Note: Enabling Ground Patch sets the boundary condition of a region of the ground – which extends from the center of the vehicle to upstream, downstream, and to each side a pre-set distance away from the vehicle based on the vehicle’s dimensions and belt dimensions in whenever applicable – to a zero-velocity non-slip wall boundary. Enabling the ground patch is recommended whenever static ground conditions apply to the simulation. This includes moving belts surrounded by a static ground region.
    Figure 7.
  3. Press Esc or right-click in empty space to exit the tool.
  4. Select the Wind Tunnel and hide it with the H shortcut key.

Adjust Heave

  1. From the Setup ribbon, click the Adjust Heave Tool. The Adjust Heave micro-dialog opens and the z-distance of each axle axis to z = 0 is displayed in the viewer.
    Figure 8.
  2. Click on the distance value for the front axle. The Height input micro-dialog appears. Set the Height value to 0.35 m.
  3. Click on the distance value for the rear axle. The Height input micro-dialog appears. Set the Height value to 0.35 m.
  4. Exit the Adjust Heave Tool by clicking on the green checkmark on the Adjust Heave micro-dialog.

Define the Belt System (Advanced)

Once the wheels are defined, the belt tool will automatically create belt patches to fit the body and wheels of the vehicle.

  1. From the Setup ribbon, click the Belt System tool. By default, five patches are created on the wind tunnel floor to model the belt system.
    Figure 9.
  2. From Model Browser > Belts, rename the belts as Belt_Front_Left, Belt_Rear_Left, Belt_Front_Right, Belt_Rear_Right, and Belt_Center accordingly.
  3. You may edit the size and parameters for the belts from the Property Editor.
  4. From Model Browser > Belts, select Belt_Center.
  5. From the Property Editor, uncheck the box for General > In for calculations.
  6. Copy the value in Position > X Min.
  7. From the Model Browser, click on the Wind Tunnel.
  8. From the Property Editor, activate Ground Configuration > Enable BL Suction, change the Ground Configuration > Location reference to Origin, and paste the copied value into Ground Configuration > Distance. This will set the Wall Boundary Condition of the ground upstream of that location to Slip Wall.
  9. Make sure Ground Configuration > Enable Ground Patch is also enabled.
  10. Click on the Model Browser > Belts icon to hide the belts.

Define the Outputs

  1. From the Setup ribbon, Run group, click the Run tool.
    Figure 10.
    The Run dialog opens.
  2. From the Run dialog, verify the Analysis setup > Inflow speed value is set to 38.889 m/s as per Step 2.
  3. Click on the lightning bolt button for Analysis setup > Run Time.
    Note: The value of Analysis setup > Number of Steps is linked to the value of Analysis setup > Run Time as they represent the same value in two different units: timesteps and seconds, respectively.
    This automatically sets the value to the time it would take for flow traveling at the inflow speed to traverse the length of the vehicle 30 times as per the ultraFluidX 2023.0 Setup guidelines for vehicle aerodynamics
  4. Note the value of Analysis setup > Number of Steps for future use.
  5. Close the Run dialog.
  6. From the Setup ribbon, Output group, click the General Output Tool.
    Figure 11.
    The ultraFluidX Output Controls dialog opens.
  7. From the ultraFluidX Output Controls dialog, click on the lightning bolt button for Results > Time Averaging > Start time.
    This automatically sets the value to the time it would take for flow traveling at the inflow speed to traverse the length of the vehicle 15 times as per the ultraFluidX 2023.0 Setup guidelines for vehicle aerodynamics.
  8. Set the value for Results > Time Averaging > Averaging window size to 0.174091 s and that of Results > Output Frequency to 229.
    Note: Ideally, we want to synchronize the output frequency with the averaging window size and averaging start time. In this case, a total runtime of 5,038 timesteps (3.83 s) can be factored into 22 * 229, leaving 2,519 timesteps (1.915 s) for the first 15 flow-passes and 2,519 timesteps for averaging. The final 15 flow-passes may be further divided into 11 windows of 229 timesteps (0.174091 s).
  9. Click on the hamburger menu of Results > Output Frequency.
    The General Output Field Variables dialog opens.
  10. From the General Output Field Variables dialog, set the value of Start iteration to 2519.
  11. If the OSM approach for the wheels from Wheels is being used and the filetype for the results is Ensight, enable the Full > Mesh displacement and Surface > Mesh Displacement field variables.
  12. Close the General Output Field Variables dialog.
  13. From the ultraFluidX Output Controls dialog, set the value of Results > Saved Output States to 2.
    This will limit the number of saved frames for the Full and Surface datasets to 2 by overwriting the earliest written frame as a new one is output as per the output frequency starting at the start iteration.
  14. Enable Aerodynamic coefficients > Output sectional coefficient in X (and Y and Z) and set the value of each to 100.
  15. In the dialog, enter 100 for the output frequency. This instructs the solver to write simulation results every 100 iterations.
  16. Close the ultraFluidX Output Controls dialog.

Section Cuts

  1. From the Setup ribbon, click the Output tool.
    Figure 12.
  2. From the secondary tool set, click the Section Cut tool.
    Figure 13.
    The Section tool micro-dialog opens and the X, Y, and Z planes are highlighted in the viewer.
  3. Click on the Y-Plane.
    The Plane Dialog opens.
  4. From the Plane dialog, use the pulldown menu to change the start method from Start Iteration to Start Time, and set the start time value to 3.73 s to capture the last 0.1 s of the simulation.
  5. From the Plane dialog, use the pulldown menu to change the output method from Output interval to Hz, and set the Target frequency value to 1000 Hz.
  6. Click on the hamburger menu on the upper right corner of the Plane dialog to open the list of output variables and uncheck all time-averaged variables.
  7. Click on the expand icon on the upper right corner of the Plane dialog to show the Length and Width fields. Set the Length value to 8 m.
  8. Click on the move tool icon on the upper right corner of the Plane dialog to open the move tool. Drag the plane along the X-Axis by 1.043 m and along the Z-Axis by 0.188 m.
  9. Close the Section Cut tool by pressing on the green checkmark button on the Section Cut micro-dialog.
  10. From the Model Viewer > Outputs > Section Cuts, rename the newly created Section Cut to Section_Cut_Y_Center and hide it.
    Tip: Double click the edges of the section cut in the modeling window to resize the plane.

Probes

Surface Probes

  1. From the Model Browser, multi-select all parts within the Main > Body_Exterior assembly. Press I on your keyboard to isolate the selected parts.
  2. From the Setup ribbon, click the Output Tool.
  3. From the secondary tool set, click the Surface Probes Tool.
    Figure 14.
    The Surface Probes micro-dialog opens.
  4. From the viewer window, rubber-band select all the displayed parts.
    The Probes dialog opens.
  5. From the Probes dialog, set the Start iteration value to 2519.
  6. On the upper left corner of the viewer window, a list of surface probes sets will show. Right-click on the set that was just created (there should only be one) and click on Probes table.
    The Probes Table opens.
  7. Press the open icon on the Probes Table, navigate to the Surface_Probes.csv file provided, and click Open.
    The probes are imported to the selected set.
  8. Close the Probes Table.
  9. Close the Surface Probes Tool by pressing on the green checkmark button on the Surface Probes micro-dialog.
  10. From the Model Viewer > Outputs > Surface Probes, rename the newly created Surface Probe set to Surface_Probes and hide it.
  11. From the Model Viewer, isolate the Main assembly to show the full vehicle model.

Volume Probes

  1. From the Setup ribbon, click the Output Tool.
  2. From the secondary tool set, click the Volume Probes Tool.
    Figure 15.
    The Volume Probes micro-dialog opens.
  3. From the viewer window, click on any point in space.
    A volume probe is created and the Probes Dialog opens.
  4. From the Probes dialog, set the Start iteration value to 2519.
  5. On the upper left corner of the viewer window a list of volume probes sets will show. Right-click on the set that was just created (there should only be one) and click on Probes table.
    The Probes Table opens.
  6. Press the open icon on the Probes Table, navigate to the Volume_Probes.csv file provided, and click Open.
    The probes are imported to the selected set.
  7. Delete the first row in the Probes Table as this was the one created by randomly clicking in space.
  8. Close the Probes Table.
  9. Close the Volume Probes Tool by pressing on the green checkmark button on the Volume Probes micro-dialog.
  10. From the Model Viewer > Outputs > Volume Probes, rename the newly created Volume Probe to Volume_Probes and hide it.

Monitor Surfaces

  1. From the Setup ribbon, click the Output Tool.
  2. From the secondary tool set, click the Monitor Surface Tool.
    Figure 16.
    The Monitor Surface micro-dialog opens.
  3. From the viewer window, click on the Monitor_Surface_Grille part. Tip:
    Tip: Isolate the part before selecting for easier access.
    The part is assigned as Monitor Surface and Monitor Surface dialog opens.
  4. From the Monitor Surface dialog, set the Start iteration value to 2519 and the Output interval to 229.
  5. Close the Monitor Surface Tool by pressing on the green checkmark button on the Monitor Surface micro-dialog.
  6. From the Model Viewer > Outputs > Monitor Surfaces, rename the newly created Monitor Surface to Monitor_Surface_Grille and hide it.

Turbulent Sources

Turbulence generators (TGs) are used to force laminar to turbulent behavior of the boundary layer. They may be used to calibrate the turbulent boundary layer thickness in the wind-tunnel and force laminar-turbulent transition on flat surfaces.

Ground (Advanced)

When not using the “Standard” ground setup of full moving ground, the use of turbulence generators near the boundary layer suction region is recommended.

  1. From the Setup ribbon, click the Turbulence Source Tool.The
    Turbulence Source micro-dialog opens.
  2. From the viewer window, click on any part.
    A turbulence source is created and the Turbulence Source dialog opens.
  3. From Model Viewer > Turbulence Sources, click on the newly created Turbulence Source.
  4. From the Property Editor, set the General > Name value to Turbulence_Source_Ground to rename the newly created Turbulence Source.
  5. Set the Dimensions > Length, Width, and Height values to 7.477 m, 3.2 m, and 0.024 m respectively.
  6. Set the Zone Extents > X Min, Y Min, and Z Min values to -2.159 m, -1.608 m, and 0 m respectively.
  7. Deactivate Auto Calculate for Turbulence Parameters > > Eddie Length Scale and Turbulence Parameters > > Number of Eddies.
  8. Set Turbulence Parameters > Intensity, Eddie Length Scale, and Number of Eddies to 0.01, 0.012 m and 800 respectively.
  9. Close the Turbulence Source Tool by pressing on the green checkmark button on the Turbulence Source micro-dialog.
  10. Hide the Turbulence_Source_Ground part.
    Note: Parameter values specified for the ground turbulence source were calculated as per the ultraFluidX 2023.0 Setup guidelines for vehicle aerodynamics. This region is intended to accurately develop the boundary layer in the areas of the static ground near the vehicle downstream of the boundary layer suction.

Bulk (Optional)

For flat surfaces and certain smooth designs, the boundary layer might remain artificially pseudo-laminar. In such case, TGs may be added in the bulk and in front of the flat surface to force the laminar-turbulent transition and obtain a more realistic boundary layer development.

  1. From the Setup ribbon, click the Turbulence Source Tool.
    The Turbulence Source micro-dialog opens.
  2. From the viewer window, click on the hood of the vehicle.
    A turbulence source is created, and the Turbulence Source dialog opens.
  3. Click on the expand icon on the upper right corner of the Turbulence Source dialog to show the Length, Width, and Height fields.
    1. Set the Length, Width, and Height values to 1 m, 1.906 m, and 1 m respectively.
  4. Click on the hamburger menu on the upper right corner of the Turbulence Source dialog to expose additional parameters and set the value of Number of Eddies to 800.
  5. From Model Viewer > Turbulence Sources, click on the newly created Turbulence Source.
  6. From the Property Editor, set the General > Name value to Turbulence_Source_Front to rename the newly created Turbulence Source.
  7. Set the Zone Extents > X Min and Z Min values to -1.1 m and 0 m respectively.
  8. Close the Turbulence Source Tool by pressing on the green checkmark button on the Turbulence Source micro-dialog.
  9. Hide the Turbulence_Source_Front part.

Export Solver Deck

  1. From the Setup ribbon, Run group, click the Run tool.
    The Run Dialog opens.
  2. From the Run dialog, set the value of Name of run to Aurora.
  3. Set the Run path to a path of your choosing.
  4. Click on the Export button.
    One XML, one STL, one ZIP, one INFO, and two CSV files are created. The ZIP file is a compressed version of the STL file. All but the INFO and STL files are required as solver input.

Submit Job

  1. Follow Steps 1-3.
  2. Click Run.
    Note: If you are running HyperMesh CFD on a Linux system with a supported GPU, a solver run is started. If you are running HyperMesh CFD on a Windows system, you'll need a Linux installation of ultraFluidX available for running the solver.
    Note: To run the solver from Windows:
    1. Click Export. This generates an stl and xml file in the run directory.
    2. Copy the stl and xml files to the Linux machine.
    3. Launch the solver by executing the ufxRun script, located in the installation directory at <installation_directory>/altair/scripts. Run "ufxRun -h" to view the command options.

Visualize Results

  1. From the Setup ribbon, Run group, click the Show Analysis Results Tool.
    Figure 17.
    A file menu to select the results files is presented.
  2. Select the files and accept.
    The results will be loaded into the Post Processing environment.