The state of the art in fluid-dynamics foundation models, in common units
For anyone deciding whether a fluid-dynamics surrogate is good enough to make a decision with - and for anyone building a benchmark that has to state what the bar already is.
Conventions, restated on every row. An automotive drag count is 0.001 Cd. An aircraft drag count is 0.0001 Cd - ten times smaller. A 2D airfoil count is 0.0001 Cd. Never convert across those domains without saying so; we quoted an aircraft figure against automotive numbers once and it was an 11x error in our own file. Every number here is MEASURED, ESTIMATED (under a stated assumption) or UNKNOWN. Missing data is MISSING, never 0, and that applies to denominators too. "Not reported" means we did not find it after a targeted search of the sources we hold.
1. What this is, and what it is not
Every vendor in this field publishes a real number. They publish it in a different unit, on a different dataset, against a different evaluation set, under a different normalisation. So the field has a state of the art and no way to read it. This page is the assembly: what each model actually reports, converted to a common unit where a conversion is defensible, and placed beside the ground truth's own repeatability.
It is not a ranking. Section 6 says why, and the reason is the finding.
Three things stop these rows being comparable, and each one is independently sufficient.
- Units. Only one corpus in this table publishes both a force scale and a label-noise figure. That is why 7 of 46 rows carry a drag-count conversion and 39 say MISSING.
- The evaluation set. A rank-correlation ceiling is a property of the subset you scored on, not of the dataset. Same DrivAerML labels, same sigma: 0.9989 over all 484 designs, 0.6370 over the tightest 48-design window, -0.0100 over the twelve designs inside a one-count band. No row in this table reports its evaluation set's Cd spread. A vendor can move a headline from 0.99 to 0.57 without touching the model.
- The normalisation. "Relative L2" is a family, not a metric. AB-UPT reports surface-pressure rel L2 of 0.0142% on Luminary SHIFT-SUV; NVIDIA reports 0.10 for the same physical quantity on DrivAerML. Up to three orders of magnitude, and nobody states the normalisation in comparable terms.
2. The one conversion that exists
On DrivAerML, 1 automotive drag count = 1.9756 N (MEASURED: U = 38.889 m/s, A = 2.17 m2, paper-implied rho = 1.2041). The dataset states its own statistical convergence as ±1.5 drag counts at 95% CI, so sigma = 0.75 counts and the mean-absolute-error floor a perfect model would still show against these labels is sigma·sqrt(2/pi) = 0.598 counts.
Those two constants are the whole of the conversion column. Every row that has them is below; every row that does not says MISSING.
| Model | Owner | As published | Drag counts (automotive, 1 ct = 0.001 Cd) | Multiple of the labels' own MAE floor (0.598 ct) | Eval n | Tag |
|---|---|---|---|---|---|---|
| X-MeshGraphNet | NVIDIA | MAE 15.23 N; max 58.16 N | 7.71 ct MAE; 29.44 ct max | 12.88x MAE floor; max 39.2 sigma | 48 | MEASURED |
| OLS on 16 design numbers (ours) | ours | R2 0.8882; rho 0.9426; MAE 4.65 ct | MAE 4.65 ct | 7.77x MAE floor | 484 (CV) | MEASURED (ours) |
| FIGConvNet | NVIDIA | MAE 8.86 N; max 25.72 N | 4.48 ct MAE; 13.02 ct max | 7.49x MAE floor; max 17.4 sigma | 48 | MEASURED |
| DoMINO | NVIDIA | MAE 6.64 N; max 23.08 N | 3.36 ct MAE; 11.68 ct max | 5.62x MAE floor; max 15.6 sigma | 48 | MEASURED |
| UniversalAGI SUV-PT | UniversalAGI | MAPE 1.1%; max APE 3.4% | 3.08 ct (band 2.61-3.74) | 5.15x MAE floor (4.36-6.25x) | UNKNOWN | ESTIMATED |
The three NVIDIA rows are internally comparable - one paper, one 48-case test set, one metric - so the ordering among them is the source's own. The other two rows are not on that evaluation set and are not comparable to them or to each other: UniversalAGI does not publish its evaluation set at all, and our linear-regression bar is cross-validated over the complete 484.
Read the last column, not the fourth. Rank correlation says this field is finished: 0.96 to 0.99 everywhere. Absolute drag says the best published surrogate sits at 5.6x the labels' own repeatability, and the worst at 12.9x. Both statements are true about the same models.
3. The line the industry actually draws
The thresholds are external to us and published. OEM internal target: 1-2 drag counts on delta-Cd, "since every single count directly impacts the energy efficiency of a car". Regulatory (UN ECE R154 / WLTP): |delta(CdA)_CFD - delta(CdA)_EXP| <= 0.015 m2. Reference-data noise: ±1.5 counts, the dataset's own 95% CI.
Against that line, the best published absolute-drag error in this table is 3.36 counts - 1.7 to 3.4x the decision threshold, and 5.6x the labels' own MAE floor. No published aero surrogate is inside the engineering-acceptance band for absolute Cd. That is not a criticism of any model; it is the size of the remaining gap, and it is why the vendors' headline metric is rank correlation.
4. The table
Sorted by dataset, then by the published metric within each dataset. Lettered notes are in Section 9; every row carries its source.
DrivAerML - public, CC BY-SA 4.0, label sigma = 0.75 drag counts
The only corpus in this table with a published label-noise floor, so it is the only one where a "distance from the noise floor" column can be filled honestly.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| DoMINO | NVIDIA | drag MAE + max abs err (N) | MAE 6.64 N; max 23.08 N | automotive 1 ct = 0.001 Cd | 3.36 ct MAE; 11.68 ct max | 5.62x MAE floor; max 15.6 sigma | 48 | code YES | ~33 H100-h | MEASURED | arXiv 2507.10747 [a] |
| FIGConvNet | NVIDIA | drag MAE + max abs err (N) | MAE 8.86 N; max 25.72 N | automotive 1 ct = 0.001 Cd | 4.48 ct MAE; 13.02 ct max | 7.49x MAE floor; max 17.4 sigma | 48 | code YES | ~32 GPU-h | MEASURED | arXiv 2507.10747 [a] |
| X-MeshGraphNet | NVIDIA | drag MAE + max abs err (N) | MAE 15.23 N; max 58.16 N | automotive 1 ct = 0.001 Cd | 7.71 ct MAE; 29.44 ct max | 12.88x MAE floor; max 39.2 sigma | 48 | code YES | UNKNOWN | MEASURED | arXiv 2507.10747 [a] |
| OLS on 16 shipped design parameters - OUR trivial bar, not a model release | ours | drag from 16 design numbers | R2 0.8882; rho 0.9426; MAE 4.65 ct | automotive 1 ct = 0.001 Cd | MAE 4.65 ct | 7.77x MAE floor | 484 (CV) | reproducible | seconds of CPU | MEASURED (ours) | our audit note [s] |
| DoMINO | NVIDIA | Spearman + R2 over designs | drag 0.99 / lift 0.98; R2 0.98 / 0.97 | no count convention (not a force metric) | MISSING | UNDER ceiling 0.9977 | 48 | code YES | ~33 H100-h | MEASURED | arXiv 2507.10747 [b] |
| FIGConvNet | NVIDIA | Spearman + R2 over designs | drag 0.99 / lift 0.98; R2 0.97 / 0.95 | no count convention (not a force metric) | MISSING | UNDER ceiling 0.9977 | 48 | code YES | ~32 GPU-h | MEASURED | arXiv 2507.10747 [b] |
| X-MeshGraphNet | NVIDIA | Spearman + R2 over designs | drag 0.96 / lift 0.81; R2 0.92 / 0.52 | no count convention (not a force metric) | MISSING | UNDER ceiling 0.9977 | 48 | code YES | UNKNOWN | MEASURED | arXiv 2507.10747 [b] |
| DoMINO | NVIDIA | surface + volume rel L2 | aw-L2 p 0.08; raw 0.10; vol p 0.1042 | no count convention (not a force metric) | MISSING | MISSING (no field floor) | 48 | code YES | ~33 H100-h | MEASURED | arXiv 2507.10747 [c] |
| FIGConvNet | NVIDIA | surface rel L2 | aw-L2 p 0.14; raw 0.21; wss-x 0.32 | no count convention (not a force metric) | MISSING | MISSING (no field floor) | 48 | code YES | ~32 GPU-h | MEASURED | arXiv 2507.10747 [c] |
| X-MeshGraphNet | NVIDIA | surface rel L2 | aw-L2 p 0.14; raw 0.14; wss-x 0.17 | no count convention (not a force metric) | MISSING | MISSING (no field floor) | 48 | code YES | UNKNOWN | MEASURED | arXiv 2507.10747 [c] |
| SUV-PT (LIFT architecture) | UniversalAGI | CdA MAPE + max APE | MAPE 1.1%; max APE 3.4% | automotive 1 ct = 0.001 Cd | 3.08 ct (band 2.61-3.74) | 5.15x MAE floor (4.36-6.25x) | UNKNOWN | NO | UNKNOWN | ESTIMATED | universalagi.com [d] |
| SUV-PT (LIFT architecture) | UniversalAGI | Spearman over designs | 0.97 | no count convention (not a force metric) | MISSING | UNDER ceiling 0.9989 / 0.9977 | UNKNOWN | NO | UNKNOWN | MEASURED | universalagi.com [e] |
DrivAerNet++ - public, CC BY-NC 4.0 - the CarBench leaderboard, verbatim
Surface-pressure regression at 10,000 sampled points. No drag, no lift: CarBench says so itself. Ranked here worst-to-best by relative L2 exactly as the source page ranks them - that ordering is the source's, not ours.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AB-UPT | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1358 +/-0.0024; R2 0.9675; RMSE 23.6 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| TransolverLarge | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1457 +/-0.0025; R2 0.9595; RMSE 24.1 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| Transolver | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1503 +/-0.0024; R2 0.9577; RMSE 24.6 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| Transolver++ | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1573 +/-0.0023; R2 0.9543; RMSE 25.6 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| TripNet | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1608 +/-0.0024; R2 0.9590; RMSE 24.9 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| PointTransformer | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.1909 +/-0.0024; R2 0.9359; RMSE 30.3 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| RegDGCNN | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.2006 +/-0.0016; R2 0.9327; RMSE 30.9 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| PointNetLarge | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.2436 +/-0.0013; R2 0.9025; RMSE 37.2 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| PointMAE | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.2713 +/-0.0016; R2 0.8791; RMSE 41.4 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| NeuralOperator | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.3016 +/-0.0019; R2 0.8503; RMSE 46.2 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
| PointNet | CarBench (MIT + TRI) | surface-p rel L2 @ 10k pts | rel L2 0.3803 +/-0.0020; R2 0.7639; RMSE 57.9 | no count convention (not a force metric) | MISSING (no drag scored) | MISSING (no field floor) | 1,154 | NO (0 code files) | UNKNOWN | MEASURED | decode.mit.edu/carbench [f] |
DrivAerNet++ - public, CC BY-NC 4.0 - everything else
The vendor rows here are the field's own honest report of what a proper hold-out costs.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PXTransolver (~28M params) | PhysicsX | drag Spearman ID -> OOD | 93.50% -> 69.10% | no count convention (not a force metric) | MISSING | UNDER 0.9475 by 0.0125 - closest call | UNKNOWN | NO | UNKNOWN | MEASURED | physicsx.ai [g] |
| PXTransolver (~28M params) | PhysicsX | surface-p rel L2 ID -> OOD | 13.47% -> 19.89% | no count convention (not a force metric) | MISSING | MISSING (no field floor) | UNKNOWN | NO | UNKNOWN | MEASURED | physicsx.ai [g] |
| PXTransolver (~28M params) | PhysicsX | cross-simulator drag Spearman | 83.45% -> 8.35% | no count convention (not a force metric) | MISSING | NOT ASSESSABLE (no cross-code floor) | UNKNOWN | NO | UNKNOWN | MEASURED | physicsx.ai [h] |
| Gradient-boosted trees on shipped design parameters - OUR trivial bar | ours | drag from design numbers | MAE 9.9-14.4 ct (grouped CV) | automotive 1 ct = 0.001 Cd | MAE 9.9-14.4 ct | 3.8-7.7x floor | 4,165 (grouped CV) | reproducible | seconds of CPU | ESTIMATED | our audit note [s] |
Luminary SHIFT-SUV - gated CC BY-NC 4.0; we obtained ZERO bytes (HTTP 401)
Four models, one corpus, and no label-noise statement anywhere - so no row here can be placed against a floor.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AB-UPT | Emmi AI (Mistral) | surface/volume MAE + rel L2 | MAE p 6.47; rel L2 p 0.0142%, wss 5.97%, vel 2.83% | no count convention (not a force metric) | MISSING | NOT ASSESSABLE | UNKNOWN | code YES | 13.5-22.3 H100-h | MEASURED | arXiv 2510.15808 [j] |
| Transolver (as AB-UPT's baseline) | re-run by Emmi AI | surface pressure MAE | MAE 8.04 | no count convention (not a force metric) | MISSING | NOT ASSESSABLE | UNKNOWN | arch. published | UNKNOWN | MEASURED | arXiv 2510.15808 [j] |
| DoMINO (as AB-UPT's baseline, dim 32) | re-run by Emmi AI | surface pressure MAE | MAE 42.85 (dim 32) | no count convention (not a force metric) | MISSING | NOT ASSESSABLE | UNKNOWN | code YES | 35 GPU-h at dim 32 | MEASURED | arXiv 2510.15808 [k] |
| PXTransolver (~28M params) | PhysicsX | drag Spearman + rel L2, ID -> OOD | 97.32% -> 83.45%; RL2 5.21% -> 9.57% | no count convention (not a force metric) | MISSING | NOT ASSESSABLE | UNKNOWN | NO | UNKNOWN | MEASURED | physicsx.ai [g] |
Luminary SHIFT-Wing - AIRCRAFT. Read the convention column before comparing anything here to a car
An aircraft drag count is 0.0001 Cd: ten times smaller than an automotive count. This is the trap that already caught us once.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| SHIFT-Wing reference model (NVIDIA PhysicsNeMo DoMINO / GeoTransolver architecture) | Luminary Cloud | % error on CL / CD / CM | CD 1.73% median @M0.85; 0.81% @M0.50 | aircraft 1 ct = 0.0001 Cd | MISSING (no reference CD) | NOT ASSESSABLE (0 bytes obtained) | UNKNOWN | data YES (gated) | UNKNOWN | MEASURED | luminary.ai [l] |
PXNetCar and SUV-Bench - proprietary corpora, no public labels
Nothing here can be checked by a third party. We print the numbers because the vendors published their own worst cases, which is more than most.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| PXTransolver (~28M params) | PhysicsX | drag Spearman + rel L2, ID -> OOD | 81.02% -> 76.72%; RL2 15.12% -> 39.10% | no count convention (not a force metric) | MISSING | NOT ASSESSABLE | UNKNOWN | NO | UNKNOWN | MEASURED | physicsx.ai [g] |
| SUV-PT (LIFT architecture) | UniversalAGI | CdA MAPE / max APE / Spearman | MAPE 2.0%; max 5.6%; rho 0.96 | automotive 1 ct = 0.001 Cd | MISSING (no reference Cd) | NOT ASSESSABLE | UNKNOWN | NO | UNKNOWN | MEASURED | universalagi.com [m] |
| SUV-PT (LIFT architecture) | UniversalAGI | CdA MAPE / max APE / Spearman | MAPE 16.8%; max 49.1%; rho 0.54 | automotive 1 ct = 0.001 Cd | MISSING (no reference Cd) | NOT ASSESSABLE | UNKNOWN | NO | UNKNOWN | MEASURED | universalagi.com [m] |
AirfRANS - 2D airfoils, public, ODbL. 2D convention: 1 count = 0.0001 Cd
Included because the dataset's own published baseline anti-predicts drag, and a 1980s panel code beats it for $4.7e-7 a case.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| GraphSAGE (the dataset's own reference baseline) | AirfRANS authors | Spearman on drag | rho = -0.303 +/- 0.124 | 2D airfoil 1 ct = 0.0001 Cd | MISSING | UNKNOWN (no published sigma) | UNKNOWN | dataset ODbL | UNKNOWN | MEASURED | arXiv 2212.07564 [o] |
| XFOIL 6.99 (a 1980s panel code) - OUR reference bar, not a foundation model | ours | Spearman on drag; residual vs RANS | rho +0.8794 -> +0.9949 (Ncrit 0.05); MAPE 2.3% | 2D airfoil 1 ct = 0.0001 Cd | residual 36.8 -> 1.66 ct | UNKNOWN (no published sigma) | AirfRANS test set | XFOIL is public | none - it is a solver | MEASURED (ours) | arXiv 2212.07564 [o] |
Models with NO accuracy number we could source
A row with no number is still a row. We print it rather than leave the model out.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| LGM-Aero (~100M params) | PhysicsX | nothing sourceable | MISSING | no count convention (not a force metric) | MISSING | MISSING | UNKNOWN | NO | UNKNOWN | UNVERIFIED | physicsx.ai [i] |
| GeoTransolver | Ansys (Synopsys) | efficiency only (a rival's measurement) | P50 23.6 s; 0.41 samples/s; 23.0 GiB | no count convention (not a force metric) | MISSING (no accuracy number) | MISSING | UNKNOWN | arch. published | UNKNOWN | UNVERIFIED | universalagi.com [n] |
| SimAI | Ansys (Synopsys) | drag error vs CFD | '<0.5% (5 to 10 drag counts)' | convention NOT STATED (ambiguous) | MISSING (halves disagree) | NOT ASSESSABLE | UNKNOWN | NO | UNKNOWN | UNVERIFIED | linkedin (UNVERIFIED) [r] |
PDE and geophysical foundation models - the aero null
These are real models with real results on their own axes. None of them reports an integrated drag or lift error on a car or a wing in anything we hold. That absence is MEASURED, and it is why they cannot be compared to the rows above.
| Model | Owner | What was scored | As published | Count convention | In drag counts | vs the labels' own noise | Eval n | Open? | Train cost | Tag | Source |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Poseidon (T / B / L) | ETH Zurich | no aero-relevant number | MISSING for any aero quantity | no count convention (not a force metric) | MISSING | MISSING | n/a to an aero claim | YES | 176-1,320 GPU-h | MEASURED (null) | arXiv 2405.19101 [p] |
| DPOT (up to 1B params) | Tsinghua | no aero-relevant number | MISSING for any aero quantity | no count convention (not a force metric) | MISSING | MISSING | n/a to an aero claim | YES | UNKNOWN | MEASURED (null) | arXiv 2403.03542 [p] |
| MPP (Multiple Physics Pretraining) | Polymathic AI | no aero-relevant number | MISSING for any aero quantity | no count convention (not a force metric) | MISSING | MISSING | n/a to an aero claim | YES | UNKNOWN | MEASURED (null) | arXiv 2310.02994 [p] |
| Walrus (1.3B params) | Polymathic AI | no aero-relevant number | MISSING for any aero quantity | no count convention (not a force metric) | MISSING | MISSING | n/a to an aero claim | YES | UNKNOWN | MEASURED (null) | arXiv 2511.15684 [p] |
| Aurora | Microsoft Research | no aero-relevant number | MISSING for any aero quantity | no count convention (not a force metric) | MISSING | MISSING | n/a to an aero claim | YES | UNKNOWN | MEASURED (null) | nature.com [p] |
| FNO / TFNO / U-net / CNextU-net baselines | Polymathic AI | VRMSE (predict-the-mean = 1.0) | 8 of 66 cells worse than the mean; worst 3.447 | no count convention (not a force metric) | MISSING | the trivial floor IS the metric | 66 cells | YES | 12 GPU-h cap | MEASURED | arXiv 2412.00568 [q] |
5. The null, stated plainly
We built an instrument to flag any published claim that exceeds its dataset's own label-noise ceiling - a claim that cannot be true, because a perfect model scored against noisy labels cannot beat the noise. We ran it over every claim we had collected. It fires zero times. We hoped for a positive and did not get one, so we publish the null.
| Claim | Dataset | Eval n | Published | Ceiling used | Verdict |
|---|---|---|---|---|---|
| DoMINO | DrivAerML | 48 | Spearman 0.99 | 0.9977 (random-48) / 0.9882 (extreme-48) | UNDER |
| FIGConvNet | DrivAerML | 48 | Spearman 0.99 | same | UNDER |
| X-MeshGraphNet | DrivAerML | 48 | Spearman 0.96 | same | UNDER |
| DoMINO / FIGConvNet / X-MeshGraphNet | DrivAerML | 48 | R2 0.98 / 0.97 / 0.92 | 0.9981 | UNDER |
| UniversalAGI SUV-PT | DrivAerML | UNKNOWN | Spearman 0.97 | 0.9989 full / 0.9977 at n=48 | UNDER |
| PhysicsX (in-distribution) | DrivAerNet++ | UNKNOWN | Spearman 0.9350 | 0.9475 worst case (N_eff = 1) | UNDER - closest |
| PhysicsX (out-of-distribution) | DrivAerNet++ | UNKNOWN | Spearman 0.6910 | as above | UNDER |
| UniversalAGI SUV-Bench Med / Hard; PhysicsX on Luminary SHIFT-SUV | proprietary | UNKNOWN | 0.96 / 0.54 / 0.9732 | none exists | NOT ASSESSABLE |
The closest call: PhysicsX's in-distribution drag Spearman of 0.9350 sits 1.25 points under 0.9475, the most pessimistic bar for that dataset - and that bar needs DrivAerNet++'s shipped scatter column (Std Cd) to be a standard error of the mean, which it is not (it is iteration scatter over a 1000-iteration window). On DrivAerML, DoMINO and FIGConvNet sit within 0.008 of the labels' own self-consistency, so optimising that metric further fits solver noise.
6. We do not rank the vendors, and that is the point
A cross-vendor ranking is not supportable from these numbers. Six independent reasons, all visible in the table above:
- 39 of 46 rows have no common unit at all - a rank statistic and a field norm do not convert to force.
- No row reports its evaluation set's spread, and the spread moves a Spearman ceiling from 0.9989 to 0.6370 on identical labels.
- The datasets are different objects: a hybrid RANS-LES road car, a steady-RANS road car, a transonic wing, three proprietary corpora.
- The metrics are differently normalised - see the 0.0142% versus 0.10 case.
- The training budgets differ by two orders of magnitude, from 12 GPU-hours to 1,424, and most vendors state none.
- Some rows are third-party re-runs at an unequal budget, which is the documented way to manufacture a win: the same DoMINO is best-of-three in one paper and worst-of-three in another.
What is supportable: the three NVIDIA models against each other on their shared 48 cases, the eleven CarBench models against each other on their shared 1,154, and every absolute-drag row against the ground truth's own repeatability. Those are the comparisons this page makes. It makes no others.
7. What it costs to train one
Where a training budget is published. Note the last line: on these corpora the ground truth costs more than the model.
| What was trained | On | Cost | Basis |
|---|---|---|---|
| DoMINO (surface + volume) | DrivAerML | ~33 H100-GPU-h | ESTIMATED from 4.2 h x 8 H100, NVIDIA docs |
| FIGConvNet | DrivAerNet / DrivAerML | ~32 GPU-h | MEASURED wall: 16 h x 2 A100, stated by its authors |
| X-MeshGraphNet | DrivAerML | UNKNOWN | the paper defers to the PhysicsNeMo repo |
| AB-UPT | Luminary SHIFT | 13.5-22.3 GPU-h on one H100 | MEASURED |
| DoMINO as a third-party baseline | Luminary SHIFT-SUV | 35 GPU-h at dim 32 | MEASURED - and an unequal budget, see note (k) |
| The Well baselines (FNO / TFNO / U-net / CNextU-net) | The Well, 17 systems | 12 GPU-h cap per model x system | MEASURED: their published protocol |
| Poseidon-T / -B / -L pretrain | PDEgym | 176 / 944 / 1,320 GPU-h | MEASURED wall on 8x RTX 4090; GPU-hours ESTIMATED. CNO-FM 1,424 |
| Transolver / Transolver++ / GeoTransolver | various | UNKNOWN | not stated in any source we hold |
| CarBench's 11 models | DrivAerNet++ | UNKNOWN | no training code or configs released |
| UniversalAGI, PhysicsX, Luminary, Ansys, Siemens | proprietary | UNKNOWN | no vendor states a training budget |
| one WindsorML CFD case, for scale | WindsorML | ~224 GPU-h | MEASURED: 28 h on 8x A10G - the ground truth costs more than most of the models |
8. Corrections, and what we could not source
The aircraft-versus-automotive trap, and an ambiguity in our own correction
Our earlier note recorded a cross-code spread of "4-5 drag counts" from a DPW-6 statistical analysis and compared it against automotive numbers. Those are aircraft counts. The correction we published says the automotive equivalent is "~11x larger". Both cannot be read the same way: converting the absolute Cd gives 0.4-0.5 automotive counts (ten times smaller as a number), while converting the relative error gives roughly 11x more, because a road car's Cd is about eleven times a transport aircraft's cruise CD. Neither our file nor the source prints the reference CD that reconciles them, so we do not publish a cross-code floor in automotive counts at all. Where a cross-simulator row needs a floor, this page says NOT ASSESSABLE and quotes instead the measured automotive cross-code spread on DrivAer Cd: 49, 54 and 56 counts at AutoCFD 2, 3 and 4.
An attribution error in our own audit note
Its null table labels the 93.50% → 69.10% and 83.45% → 8.35% rows "PhysicsX LGM-Aero". The source post attributes those numbers to PXTransolver (~28M parameters), a different model from LGM-Aero (~100M parameters, pre-trained on 25M+ meshes), for which no accuracy number is published at all. This page uses the source's attribution. The audit note's row labels are wrong and we are saying so rather than quietly fixing them.
A vendor claim that disagrees with itself
Ansys SimAI is quoted as "drag error compared to CFD is less than 0.5% (5 to 10 drag counts)". On a road car at Cd 0.28, 0.5% is 1.4 automotive counts, not 5-10. The two halves are self-consistent only under the aircraft convention at Cd 0.10-0.20, or for a body with Cd of 1.0-2.0. We do not guess which was meant, so that row's conversion is MISSING. The figure is also UNVERIFIED: it appears in a LinkedIn post, not on a vendor-owned page.
A rounding difference in our own constant
Recomputing the force scale from the published inputs gives 1.9758 N per automotive count; our audit note prints 1.9756 N. The gap is 0.011% and moves no digit on this page. Both values are recorded.
What we could not source, listed rather than guessed
X-MeshGraphNet's training cost. The evaluation-set size and spread for every commercial row - UniversalAGI, PhysicsX, Luminary, Ansys. The reference CD behind Luminary's SHIFT-Wing percentages, without which those percentages cannot become counts. Any accuracy number for PhysicsX LGM-Aero or for GeoTransolver. Training budgets for Transolver, Transolver++, GeoTransolver and all eleven CarBench models. A field-level label-noise floor for any corpus in this table. WindsorML's uncertainty, which does not exist: a full-text search of its paper for "drag count", "95%", "confidence" and "standard deviation" returns zero hits. And an aero-relevant integrated-force number for Poseidon, DPOT, MPP, Walrus or Aurora - searched, not found, reported as a null rather than as a zero.
9. Notes
(a) NVIDIA's 48-case test mixes in-distribution cases with the lowest- and highest-drag cases, so the applicable rank ceiling sits between random-48 (0.9977) and extreme-48 (0.9882). The conversion is ours: on DrivAerML 1 automotive drag count = 1.9756 N (U = 38.889 m/s, A = 2.17 m2, rho = 1.2041), and at sigma = 0.75 counts the label-noise MAE floor is sigma*sqrt(2/pi) = 0.598 counts. Recomputed independently on a clean machine: 1.9758 N, a 0.011% difference that moves no digit reported here.
(b) A rank statistic carries no force units, so its drag-count cell is MISSING, never 0. And no row in this whole table reports the Cd spread of the set it was scored on. Same DrivAerML labels, same sigma: the ceiling is 0.9989 over all 484 designs, 0.6370 over the tightest 48-design window, and -0.0100 once only the twelve designs inside a one-count band remain. Without the evaluation set's spread, two Spearman numbers are not comparable.
(c) No field-level label-noise floor is published for any corpus in this table. DrivAerML does ship a pressure-variance map: area-weighted Cp_rms is 3.93x larger on the rear-facing base than on the upper surface, and a single whole-surface relative L2 averages that away.
(d) A percentage error has no units until a Cd is chosen. We convert at Cd 0.28 (3.08 counts) and print the band over the corpus's measured Cd range, 0.2370 to 0.3401 (2.61 to 3.74 counts). That assumption is why the row is tagged ESTIMATED and not MEASURED.
(e) Evaluation set unknown, so note (b) applies at full strength: this number is not comparable to any other Spearman in the table.
(f) Copied verbatim from the leaderboard page's own hardcoded model-data array (const modelData). The +/- is a test-set bootstrap CI, not seed variance: "each model in this study was trained only once". CarBench scores no drag and no lift - its own Limitations call them future extensions. MSE and RMSE are in kinematic-pressure units (m2 s-2), not Pa, because the solver is simpleFoam. MEASURED 2026-08-25: the benchmark repo holds 15 entries and 0 code files, README.md is 84 bytes, there is no licence, and the page has no submission path.
(g) Vendor post: no split IDs, no code, no evaluation-set spread. The ID to OOD pair is the vendor's own report of what a proper hold-out does to its headline.
(h) A cross-simulator claim needs a cross-code floor and we do not have a defensible one in automotive counts - see the corrections section. The automotive cross-code spread on DrivAer Cd is 49, 54 and 56 counts at AutoCFD 2, 3 and 4.
(i) No accuracy number is published for this model itself.
(j) Relative L2 is a family of normalisations, not one metric. AB-UPT's surface-pressure rel L2 of 0.0142% and NVIDIA's 0.10 on DrivAerML differ by up to three orders of magnitude because the normalisation differs. Do not read them as the same axis. AB-UPT is also the only entry in this table that reports a median over five seeds.
(k) Unequal budget, and it is documented: DoMINO was run at dim 32 for 35 GPU-h while the transformer baselines ran at dim 192. NVIDIA's own paper reports DoMINO as the best of three on DrivAerML. Both can be true; neither is comparable.
(l) AIRCRAFT, not automotive. An aircraft drag count is 0.0001 Cd, ten times smaller than an automotive count. The reference CD is not published in any source we hold, so a percentage cannot become counts here: MISSING.
(m) Proprietary evaluation set, no published reference Cd, no label-noise statement. We quote the Hard split because it is a vendor publishing its own collapse, which is rarer than it should be.
(n) No accuracy number found on disk. The latency and memory figures are a competitor's measurement at matched parameter count, not the authors'.
(o) AirfRANS publishes no convergence or label-noise specification, so there is no floor to divide by: UNKNOWN, not 0. 2D airfoil convention throughout: 1 count = 0.0001 Cd. The XFOIL row is ours and it is a solver, not a foundation model.
(p) MEASURED absence, not zero. We searched our on-disk corpus and found no aero-relevant integrated-force number for these models. They report real results on their own axes; those axes are not drag.
(q) The Well builds the trivial baseline into the metric: VRMSE = 1.0 is exactly predict-the-mean. 8 of 66 published cells are worse than that. Two further cells are MISSING and are excluded from the denominator rather than counted as 0.
(r) The claim's two halves do not agree under one convention - see the corrections section for the arithmetic.
(s) Ours, not a vendor claim. Published so that every table has a floor to read against: on DrivAerML, ordinary least squares on 16 shipped design numbers lands at 4.65 counts, between FIGConvNet (4.48) and X-MeshGraphNet (7.71).
Sources and artifacts
The table as data: research/artifacts/fluid-foundation-models.csv (46 rows, 14 columns, one row per published result, every row carrying its full-length caveat text and its source URL). Published numbers are transcribed from the sources linked in each row; the CarBench rows are copied verbatim from that same hardcoded array. The drag-count conversions and the noise-floor multiples are ours and were recomputed from the published inputs on a clean 4-CPU machine in about 10 seconds; the script is spike/sota_verify.py. The label-noise ceilings, the 1.9756 N force scale and the trivial-baseline rows come from our audit note, What CFD-surrogate benchmarks actually measure, whose own source map is published at audit-source-map.csv.
Licences of the corpora referenced
DrivAerML, AhmedML and WindsorML CC BY-SA 4.0; DrivAerNet++ CC BY-NC 4.0 (non-commercial); Luminary SHIFT CC BY-NC 4.0 and gated; AirfRANS ODbL; The Well public. SUV-Bench, PXNetCar and every Ansys, Siemens and Neural Concept figure rest on data no third party can obtain.
The audit note this table is the constructive half of · the scalar-drag instrument · all research