DrivAerML dataset
Dataset overview and leaderboard submission format for DrivAerML.
Open for submissions · Check submission availability
Automotive external aerodynamics
Overview
High-fidelity, time-averaged data from scale-resolving simulations of 500 designed DrivAer notchback variants. The public release currently provides 484 complete CFD cases, native surface and volume fields, geometry, forces, diagnostic images, and eight official split families.
FluidsBench evaluation schematic
- Model inputs DrivAer geometry + flow conditions
- Scoring support All native surface polygons and native volume cells
- Reported evaluation Area-weighted surface errors; equal-cell volume errors; field-integrated forces and AutoCFD5 profiles
Schematic only; the benchmark specification fixes the exact files, entities, arrays, and equations.
Source release
Use this immutable revision when following the download example below.
Availability and licence
484 complete public cases from 500 designs; approximately 31 TB
CC BY-SA 4.0. Check the source release for its complete terms.
Benchmark definition
Contract pinned
Technical details
Scoring source pin: 7a5c0948ce27be709b1116a3a190f806e7a8f79f. Open contract.
What the source contains
STL geometry, native boundary VTP fields, multipart native volume VTUs, constant- and variable-reference force tables, slices, images, eight official splits, and one native polygon-area sidecar per public boundary mesh.
What FluidsBench currently evaluates
The benchmark binds all 484 public cases and eight official split lists, with pMeanTrim and wallShearStressMeanTrim on native surface polygons, UMeanTrim and pMeanTrim on native volume cells, constant-reference force truth, AutoCFD5 velocity profiles, and continuous Cp cuts. All eight splits accept surface-and-volume or surface-only submissions. Fixed-location profiles use normalized trapezoidal arc-length weighting; geometry-relative diagnostics are report-only with zero scoring weight. Surface-only results retain a maximum overall score of 60.
Dataset summary
- Geometry
- Parametrically morphed DrivAer notchback road-car variants.
- Cases
- 500 designed simulations; 484 complete cases are currently public and bound by the published contract.
- Solver
- OpenFOAM v2212 finite-volume simulations with custom workflow modifications.
- Fidelity
- Scale-resolving hybrid RANS-LES representative of industrial automotive aerodynamic workflows.
- Mesh scale
- Approximately 140 million volume grid cells and 8.8 million surface points per case.
- License
- CC BY-SA 4.0, as stated by the dataset source.
Getting started
Pressure definition Confirmed from paper and evaluator
Surface and volume pressure use kinematic pressure on the published zero-outlet gauge. The reference is at (80, 10, 10) m.
Surface and volume
- Native field
-
pMeanTrim· CellData - Units
- m²/s²
- Reference
- p_ref = 0 at (80, 10, 10) m on the outlet.
- Evaluation
- Use native pMeanTrim; preserve the outlet reference rather than substituting an upstream or experimental reference.
- Conversion
- Cp = pMeanTrim / (0.5 × 38.889²); ρ∞ = 1 kg/m³ in this setup.
CpMeanTrim is static pressure coefficient; CptMeanTrim is total pressure coefficient. The uploaded mesh 0/system directories are default ANSA outputs, not the simulation settings.
Start with the source documentation and split metadata, then download one representative case before planning a full transfer. The commands below pin the source snapshot audited for this page. For leaderboard work, always use the separate scoring source pin and case lists in the FluidsBench benchmark specification.
1. Inspect the official splits
python3 -m pip install -U huggingface_hub hf_xet
hf download neashton/drivaerml \
--repo-type dataset \
--revision 7a5c0948ce27be709b1116a3a190f806e7a8f79f \
--include "README.md" \
--include "splits/**" \
--include "force_mom_constref_all.csv" \
--local-dir ./drivaerml 2. Download one native surface case
hf download neashton/drivaerml \
--repo-type dataset \
--revision 7a5c0948ce27be709b1116a3a190f806e7a8f79f \
--include "run_1/drivaer_1.stl" \
--include "run_1/boundary_1.vtp" \
--include "run_1/boundary_cell_area_1.npy" \
--include "run_1/force_mom_constref_1.csv" \
--local-dir ./drivaerml import numpy as np
import pyvista as pv
surface = pv.read("drivaerml/run_1/boundary_1.vtp")
area = np.load("drivaerml/run_1/boundary_cell_area_1.npy", mmap_mode="r")
assert area.shape == (surface.n_cells,)
print(surface.cell_data["pMeanTrim"].shape)
print(surface.cell_data["wallShearStressMeanTrim"].shape) Native volume files are transported as ordered .00.part, .01.part, and, for ten cases, .02.part segments. Resolve the exact list from proposal/native-source-pin.json. The participant evaluator streams those ordered parts as one logical VTU in bounded chunks; it does not require a second concatenated copy. Do not assume every case has two parts, resample the scoring support, or average chunk-level errors; accumulate numerators, denominators, and counts before the case-level reduction. Use force_mom_constref_<run>.csv for the benchmark force convention.
Design-space coverage
What changes across the dataset
Parent shape or archetype means the source geometry family, not an ML baseline model. The cards distinguish shape breadth from operating-condition breadth.
Parent shapes / archetypes
1 parent configuration
- Ford OCDA DrivAer notchback The AutoCFD reference configuration with static wheels, sealed cooling inlets, and a detailed underbody.
Geometry parameterization
16 continuous morphing parameters
ANSA morphing boxes introduce deliberately subtle, industry-like changes around one notchback parent while preserving component topology.
View 16 documented variables and ranges
- Vehicle length
- −150 to +200 mm
- Vehicle width
- −100 to +100 mm
- Vehicle height
- −100 to +100 mm
- Front overhang
- −150 to +100 mm
- Front plan-view
- −75 to +75 mm
- Hood angle morph
- −50 to +50 mm
- Approach angle morph
- −40 to +30 mm
- Windscreen-angle morph
- −150 to +150 mm
- Greenhouse tapering
- −100 to +100 mm
- Backlight-angle morph
- −100 to +200 mm
- Decklid height
- −50 to +50 mm
- Rear-end tapering
- −90 to +70 mm
- Rear overhang
- −150 to +100 mm
- Rear diffuser-angle morph
- −50 to +50 mm
- Vehicle ride height
- −50 to +50 mm
- Vehicle pitch
- −1° to +1°
Conditions and sampling
Operating conditions
All designs use the same open-road setup at 38.889 m/s and wheelbase Reynolds number 7.19 × 10⁶; Reynolds number and incoming-flow angle are not sampled.
Sampling
A modified extensible lattice sequence distributes 500 designs through the 16-dimensional morphing space; 484 complete cases are public.
Benchmark coverage
What the current splits test
Eight official source split families cover random and nested-data tasks plus held-out geometry, force, and rear-separation regimes over the 484 public cases. All eight prescribed splits are open for submissions.
Benchmark splits
These eight case lists are published by the source and marked official in the published FluidsBench contract. They exclude all 16 unavailable or held-back run IDs. Check the submission guide for current availability.
| Split | Purpose | Train | Validation | Test |
|---|---|---|---|---|
full | Seed-42 random public baseline split. | 400 | 34 | 50 |
medium | Nested data-efficiency subset with fixed validation and test cases. | 133 | 34 | 50 |
scarce | Smaller nested data-efficiency subset with fixed validation and test cases. | 67 | 34 | 50 |
super_scarce | Minimum-data nested training subset with fixed validation and test cases. | 11 | 34 | 50 |
geometry | STL-surface Chamfer geometry out-of-distribution split. | 339 | 48 | 97 |
high_drag | High-drag force-regime out-of-distribution split. | 339 | 48 | 97 |
low_drag | Low-drag force-regime out-of-distribution split. | 339 | 48 | 97 |
rear_separation | Image-derived low-speed wake and rear-separation out-of-distribution split. | 339 | 48 | 97 |
Open-reproducibility submission Files, validation and optional artifacts
Check this dataset's submission availability before preparing a result. Contributions are accepted only while its exact scoring-support release is marked official and open. For an open dataset, contributors propose one result directory at submissions/drivaerml/<submission-id>/ in the FluidsBench submission repository. The planned result package contains:
-
submission.jsonfor model metadata and the required scalar metrics; -
evaluation-evidence.jsonlinking those submitter-provided metrics to the declared evaluation revision and profile-index checksum; -
discretization.jsondescribing the training input and supervision supports, inference input, direct model outputs, and mapping to the official scoring support; -
discretization/cases.jsonlrecording case-level counts, domains, mapping, and declared scoring coverage; -
metrics/cases.jsonrecording the official-support errors, the unweighted and physical-measure-weighted sufficient statistics required by that dataset's contract, and exact coverage for every declared evaluation case; -
profiles/index.jsonlisting the lightweight profile chunks; and -
profiles/chunk-*.jsoncontaining profile coordinates and predictions for the declared test cases.
FluidsBench uses an open reproducibility track. The declared evaluation partition, scored case lists, and ground truth are public. Evaluation cases must not be used for fitting, hyperparameter selection, or preprocessing statistics. Contributors will calculate the metrics and extract the profiles from their own predictions. Each dataset specification fixes the locations, IDs, weights, targets, and coverage used for final scoring. A model may infer on a different point set, mesh, or grid, but its final predictions must be mapped onto every required entity in the release-bound public field files before the reference evaluator calculates the errors. Large cases may be processed in chunks, but contributors must sum the sufficient statistics across all chunks before calculating a case metric; chunk-level L2 values are never averaged. Leaderboard field errors are calculated on the declared evaluation/test cases, not on the training cases. Full meshes and volume fields are not committed to the submission repository. Contributors may optionally publish example cases or the complete scored predictions in a public, immutable external repository and link that artifact from the submission. Use the DrivAerML benchmark specification for the exact split, metric, case, panel, station, and quantity IDs. The reference equations and code define how the scalar values must be calculated, and the worked examples show the JSON structure.
Before opening a pull request, run python scripts/validate_submission.py --contributor-stage submissions/drivaerml/<submission-id>. The validator checks the schema, split identity, scoring-support binding, derived-score arithmetic, profile coverage, reported discretization, array lengths, ordering, finite values, and file hashes. It checks the submitted package's internal consistency; it does not run the contributor's model or recalculate base metrics from full fields.
A passing validator or pull request will not make a result official. Official results require maintainer approval of the validated submission package. Public code, model, and environment artifacts and their documentation are optional. If supplied, they must use stable links and include the revisions, digests, and licences required by the submission schema; the leaderboard reports those details. Their absence does not change accuracy rank, citation eligibility, or promotion eligibility. Prediction sharing is also optional. When prediction artifacts are shared, the leaderboard separately reports their coverage, artifact-check status, and whether any metrics were recomputed; it does not collapse those distinct checks into a generic “verified” badge. The public validation record states exactly what FluidsBench checked.
Prototype notice: any case IDs, ground truth, profile values, or leaderboard rows labelled prototype are illustrative dummy data. Those materials must be replaced and finalized before the dataset opens; a prototype row is never an official result.
Evaluate and submit
Follow the DrivAerML resumable participant quickstart. The commands extract fixed and relative profiles from native predictions, compute the complete score set, verify checkpoint bytes, and validate the full selected split. Full-field packages contain 40 profile series per case; surface-only packages contain eight Cp series and retain the overall-score ceiling of 60. Follow the submission instructions to propose your generated result directory for review.
Scoring support and complete coverage Exact files, weighting and complete-case rules
Submissions are open.
Final predictions must cover the complete reference support. For every scored case, this means every required entity, exactly once, in the actual field-bearing mesh or curve file from the named public dataset release. FluidsBench binds those files, their ordering, any masks, and their hashes to the scoring-support release. A method may infer on another representation and may process a large file in chunks, but it must map its predictions back to every required reference entity before calculating the final metrics. Downsampled or partially covered predictions are not complete results.
| Scored support | Public field file and association | Required coverage | Relative-L2 pair |
|---|---|---|---|
| Three-dimensional vehicle boundary | <case-id>/boundary_<run-number>.vtp; pMeanTrim and wallShearStressMeanTrim in VTK CellData; matching polygon areas are in boundary_cell_area_<run-number>.npy (CpMeanTrim is also available for coefficient diagnostics) | Every polygon carrying the scored pressure and wall-shear fields | Area-weighted primary; unweighted polygon (each polygon counts equally) secondary |
| Three-dimensional flow volume | <case-id>/volume_<run-number>.vtu, byte-reconstructed from the exact ordered two- or three-part list in the native source pin; UMeanTrim and pMeanTrim in VTK CellData | Every cell carrying UMeanTrim and pMeanTrim | Equal native cell only; geometric cell-volume weights are not required by the scoring contract |
How to calculate large cases
- DrivAerML uses area-weighted relative L2 as the primary surface value and equal-native-polygon relative L2 as its secondary surface value. Its native volume fields use equal-native-cell relative L2 only; the scoring contract does not require geometric cell-volume weights.
- Use the public
boundary_cell_area_<run>.npyvalue for each surface polygon in the identical native VTP cell order. Each volume cell contributes one equal unit to the volume numerator and denominator. - In one pass over each case, accumulate the squared-error numerator and ground-truth denominator for every relative-L2 variant required in the table above, together with the corresponding entity count and total physical measure wherever one is used. Chunks may be any convenient size, but their numerators and denominators must be summed before taking the square root; never average chunk-level L2 values.
- Calculate each complete-case percentage first, then macro-average the case percentages so every case counts equally.
Sharing complete prediction fields is optional. A contributor may link versioned predictions in an external public repository, but the submission package records exact coverage plus the per-case sufficient statistics used to reproduce each required relative-L2 value.
Continuous Cp cuts
These four FluidsBench cuts follow the validation regions used by DrivAerML but are defined as continuous intersections of each participant's complete native surface prediction. They are distinct from the 209 discrete AutoCFD5 pressure taps, which are explicitly excluded from the DrivAerML submission and score. Publishing the all-case native reference curves does not activate profile scoring; scoring remains behind a separate reviewed activation change.
Leaderboard Cp plots default to the producer-bound segment-midpoint streamwise x coordinate in metres so native CFD and submitted predictions can be compared directly with AutoCFD and published figures. Cumulative surface arc length remains the unchanged scoring and reproducibility coordinate and is available from the horizontal-axis selector. The display never sorts, interpolates, resamples, or joins across a retained cut-segment break.
| Station ID | Published trace |
|---|---|
upperbody_centerline | Upper-body centreline, y = 0 m (Figure 17a). |
underbody_centerline | Underbody centreline, y = 0 m (Figure 17b). |
sidewall_z_0_15 | Sidewall, z = 0.15 m (Figure 22a). |
front_left_wheelhouse_y_neg_0_6 | Front-left wheelhouse, y = -0.6 m (Figure 22b). |
AutoCFD5 velocity profiles
The velocity diagnostic uses all 16 AutoCFD5 lines: V1–V6, U1–U6, L1, and R1–R3. The fixed-locations view uses physical distance in metres on the published primary 10 mm support; the geometry-relative view uses normalized arc length on its distinct retained support and is labelled diagnostic, not scored. Both display native |UMeanTrim| / 38.889 values. Unsupported rows remain explicit gaps, and the dashboard never substitutes or overlays one placement family's support for the other. The fixed-family reduction is an equal-case, equal-line global R² with normalized trapezoidal arclength support per line; normalized RMSE and the experimental subset are report-only diagnostics. Relative diagnostics remain report-only and do not contribute to the score.
Metric definitions
- Relative L2 error
- For each evaluation/test geometry, map predictions to every entity in the release-bound public field support and return predictions and targets to their release-native representation, \(q^\ast = T_q^{-1}(q)\). Calculate both paired relative-L2 values from the accumulated sufficient statistics: area-weighted L2 is primary on the boundary, while unweighted cell L2 (each cell counts equally) is primary in the flow volume. Report the complete-case percentages first, then take the arithmetic mean of the geometry-level values.
- MAE and RMSE diagnostics
- The evaluator reports area-weighted and equal-polygon MAE/RMSE for both surface arrays, and equal-cell MAE/RMSE for both volume arrays. Relative L1 is not part of the active DrivAerML metric list.
- Release-native evaluation
- Field metrics are not computed on normalized or standardized training targets. If a model predicts normalized values, the submission/evaluator must undo that transform before scoring.
pMeanTrimandwallShearStressMeanTrimare stored in m²/s², whileUMeanTrimis in m/s. Force and Cp-cut comparisons remain coefficient-based by definition. - Surface pressure relative L2
- Area-weighted primary and equal-polygon secondary relative L2 for
pMeanTrimon every native boundary VTP cell. Cp is derived only for the continuous-cut comparison. - Surface wall-shear relative L2
- Area-weighted primary and equal-polygon secondary relative L2 for the three-component
wallShearStressMeanTrimarray on every native boundary VTP cell. - Volume velocity relative L2
- Equal-native-cell relative L2 for the three-component
UMeanTrimarray on every cell in the release-bound reconstructed VTU. - Volume pressure relative L2
- Equal-native-cell relative L2 for
pMeanTrimon every cell in that same reconstructed VTU. - AB-UPT convention
- The secondary unweighted polygon relative L2 (each polygon counts equally) is the AB-UPT-compatible value: targets may be normalized for training, but evaluation uses unnormalized predictions and targets. FluidsBench additionally uses the area-weighted boundary value as its primary surface metric.
- Coefficient of determination
- For scalar values \(y_i\), \(R^2 = 1 - \sum_i(\hat{y}_i - y_i)^2 / \sum_i(y_i - \bar{y})^2\). Higher is better; 1.0 is perfect.
- Cd, Cl, and Cm,pitch R2
- Separate equal-case R² values computed from forces and moments integrated from the submitted complete surface fields. The authoritative truth is
force_mom_constref_all.csv; pitching moment is reconstructed casewise as(clf - clr) / 2. Cd, Cl, and pitch weights are 15%, 5%, and 5% of the overall score respectively. - Force score
- Normalized weighted mean of the bounded Cd, Cl, and Cm,pitch component scores.
- Cp cut R2
- Equal-case, equal-cut global R² over the four fixed native-surface cuts, with normalized trapezoidal arc-length weighting within each cut. Unsupported gaps are never bridged. The report-only companion is
cp_cut_rmse. - Cp cut comparisons
- Per-case and per-cut R2 values can be reported as profile comparisons, but the leaderboard ranking should use the global held-out score so that cases with low Cp variance do not dominate through unstable per-case averages.
- Velocity profile R2
- Equal-case, equal-line global R² for
|UMeanTrim| / 38.889over all 16 fixed AutoCFD5 lines, using normalized trapezoidal arclength support within each line.
Default overall score
The leaderboard can be ranked by any individual metric. Its default ranking is a bounded 0-100 weighted score:
The four field components contribute 50%, the three field-integrated force components 25%, and the two profile components 25%. Diagnostic MAE/RMSE values remain visible but do not enter the composite.
S_error(q) = 100 * max(0, 1 - E_q / cap_q)
S_R2(q) = 100 * min(1, max(0, R2_q))
S_overall = sum(weight_q * S_q) | Component | Weight | Cap or transform |
|---|---|---|
Surface pMeanTrim, area-weighted relative L2 | 15% | 15% cap |
Surface wallShearStressMeanTrim, area-weighted relative L2 | 10% | 20% cap |
Volume UMeanTrim, equal-cell relative L2 | 15% | 12% cap |
Volume pMeanTrim, equal-cell relative L2 | 10% | 15% cap |
| Cd R2 | 15% | Clamped to [0, 1] |
| Cl R2 | 5% | Clamped to [0, 1] |
| Cm,pitch R2 | 5% | Clamped to [0, 1] |
| Velocity profile R2 | 15% | Clamped to [0, 1] |
| Cp cut R2 | 10% | Clamped to [0, 1] |