AirfRANS dataset
Dataset overview and leaderboard submission format for AirfRANS.
Open for submissions · Check submission availability
Two-dimensional airfoil aerodynamics
Overview
A 1,000-case steady incompressible RANS dataset over NACA 4- and 5-digit airfoils, spanning Reynolds numbers from 2 to 6 million and angles of attack from −5° to 15°, with official standard, scarce-data, and extrapolation tasks.
FluidsBench evaluation schematic
- Model inputs Airfoil geometry + Reynolds number + angle of attack
- Scoring support Every native 2D flow node and ordered airfoil node
- Reported evaluation Equal-node domain errors; length-weighted boundary errors; forces and four velocity profiles
Schematic only; the benchmark specification fixes the exact files, entities, arrays, and equations.
Source release
airfrans 0.1.5.1; library commit d35d403
Use this immutable revision when following the download example below.
Availability and licence
1,000 simulations with downloadable preprocessed VTK and raw OpenFOAM releases
ODbL 1.0 data; MIT library. Check the source release for its complete terms.
Benchmark definition
Contract pinned
Technical details
Scoring source pin: d35d4035d8ba6fa98c1a6662be925c2fc777610b. Open contract.
What the source contains
Airfoil geometry and flow-node coordinates, inlet velocity, signed distance and normals, velocity U, kinematic pressure p, turbulent kinematic viscosity nut, surface quantities, and integrated aerodynamic coefficients. nut remains available in the source but is not a current FluidsBench target.
What FluidsBench currently evaluates
Submissions are open for Full, Scarce and AoA extrapolation; Reynolds remains closed. The current scored flow fields are U and p—not nut—and the boundary task scores pressure plus wall shear derived by the fixed evaluator. Required diagnostics are Ux/U∞ and Uy/U∞ on 1,001-point extrados-normal lines at x/c = 0.25, 0.50, 0.75, and 0.95. Pressure-profile Cp is not a current leaderboard metric. The approved overall score uses 50% fields, 25% drag/lift, and 25% balanced velocity profiles.
Dataset summary
- Geometry
- NACA 4- and 5-digit airfoils.
- Cases
- 1,000 two-dimensional RANS simulations.
- Flow regime
- Subsonic, steady-state, incompressible RANS.
- Conditions
- Reynolds numbers between 2 million and 6 million, with angles of attack between -5 and 15 degrees.
- Benchmark splits
-
Full,Scarce,Reynolds extrapolation, andAoA extrapolation. - Source fields
- Velocity
U, reduced or kinematic pressurep, and turbulent kinematic viscositynut. FluidsBench currently scoresUandp, notnut.
Getting started
Pressure definition Confirmed from paper and author library
Surface and 2D flow-domain pressure use kinematic pressure with a zero freestream gauge in the incompressible dataset.
Airfoil surface and 2D flow domain
- Native field
-
p· PointData - Units
- m²/s²
- Reference
- Incompressible freestream pressure = 0. The compressible validation case in the paper uses a different convention.
- Evaluation
- Use native p after undoing training standardization; no extra mean subtraction.
- Conversion
- Cp = p / (0.5 × U∞²), using each case’s inlet speed. Density is already divided out of p.
The paper’s training-set mean/std normalization is a model preprocessing step, not the pressure reference used for field evaluation.
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. Install and download with the official library
python3 -m pip install "airfrans==0.1.5.1"
import airfrans as af
af.dataset.download(root="./airfrans_data", unzip=True) 2. Load an official task
import airfrans as af
train, train_names = af.dataset.load(
root="./airfrans_data",
task="full",
train=True,
)
print(train.shape, train_names[:3]) The library task names are full, scarce, reynolds, and aoa. FluidsBench uses the corresponding published case lists but evaluates predictions on the complete released VTK supports. The source loader exposes nut; the current FluidsBench definition deliberately scores only U and p in the flow domain, plus derived boundary quantities and the four fixed velocity profiles.
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
2 parametric airfoil families
- NACA 4-digit Single-camber-line family parameterized by maximum camber, its chordwise position, and thickness.
- NACA 5-digit Family parameterized by design-lift/camber terms, a standard-or-reflex choice, and thickness.
Geometry parameterization
3 or 4 airfoil-code parameters, depending on family
Four-digit profiles use M, P, and XX; five-digit profiles use L, P, Q, and XX. The source applies explicit sampling restrictions to avoid unusable camber locations.
View 7 documented variables and ranges
- NACA 4-digit M
- 0–7
- NACA 4-digit P
- 0 or 1.5–7
- NACA 4-digit XX
- 5–20
- NACA 5-digit L
- 0–4
- NACA 5-digit P
- 3–8
- NACA 5-digit Q
- 0 or 1
- NACA 5-digit XX
- 5–20
Conditions and sampling
Operating conditions
The joint design space spans Reynolds numbers from 2 × 10⁶ to 6 × 10⁶ and angles of attack from −5° to 15°.
Sampling
The source draws 1,000 joint airfoil-and-condition simulations from the stated geometry and flight-condition distributions; it is not a full Cartesian sweep of every shape.
Benchmark coverage
What the current splits test
The four official tasks provide a full-data reference, a scarce-data regime, Reynolds-number extrapolation, and angle-of-attack extrapolation. FluidsBench binds those official evaluation lists.
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/airfrans/<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 AirfRANS 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/airfrans/<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.
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 |
|---|---|---|---|
| Two-dimensional flow domain | Dataset/<case>/<case>_internal.vtu, scored arrays U and p in VTK PointData; source array nut is not scored | Every mesh node carrying U and p | Unweighted node (each node counts equally) primary; area-weighted secondary |
| One-dimensional airfoil boundary curve | Dataset/<case>/<case>_aerofoil.vtp, p in VTK PointData; pressure is kinematic/reduced, and wall shear is derived by the fixed AirfRANS procedure | Every ordered boundary node carrying or defining each scored quantity | Length-weighted primary; unweighted node (each node counts equally) secondary |
How to calculate large cases
- Surface and one-dimensional curve fields use area- or length-weighted relative L2 as the primary value and unweighted relative L2 as the secondary value. Two- and three-dimensional flow domains reverse that order: unweighted relative L2 is primary and area- or volume-weighted relative L2 is secondary. “Unweighted” means that every scored point, node, face, polygon, or cell counts equally.
- Face- or cell-associated fields use the face area, cell area, or cell volume directly. For
PointDataor CGNSVertexfields, FluidsBench supplies the area, volume, or curve length represented by each point or vertex, derived from the same reference mesh connectivity. - 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.
Overall score
The score combines 50% fields, 25% forces, and 25% profiles. Field and force weights match AhmedML and WindsorML. AirfRANS uses its balanced velocity-profile metric for the entire profile share because it has no scored Cp-cut family.
| Component | Overall weight | Zero-score error cap |
|---|---|---|
| Airfoil pressure relative L2 | 15% | 15% |
| Airfoil wall-shear relative L2 | 10% | 20% |
| Flow-domain velocity relative L2 | 15% | 12% |
| Flow-domain pressure relative L2 | 10% | 15% |
| Drag coefficient R2 | 15% | — |
| Lift coefficient R2 | 10% | — |
| Balanced velocity-profile R2 | 25% | — |
Each field component scores 100 × clip(1 − error / cap, 0, 1); each force or profile component scores 100 × clip(R², 0, 1). The overall score is their weighted sum, as defined by airfrans-scoring-v2. Submissions are accepted for Full, Scarce and AoA extrapolation; Reynolds remains closed. Follow the participant quickstart to download support, evaluate and submit.
Required velocity-profile stations
Extract Cartesian U_x/U_inf and U_y/U_inf along a 0.1 m line normal to the extrados at each station. Every line contains 1,001 uniformly spaced samples, including both endpoints. The pinned extractor fixes surface selection, orientation, interpolation, and arclength checks.
| Station ID | Location | Purpose |
|---|---|---|
upper_x_0_25c | Extrados, x/c = 0.25 | Attached-flow boundary layer. |
upper_x_0_50c | Extrados, x/c = 0.50 | Mid-chord boundary layer. |
upper_x_0_75c | Extrados, x/c = 0.75 | Adverse-pressure-gradient region. |
upper_x_0_95c | Extrados, x/c = 0.95 | Near-trailing-edge or separated-flow region. |
Metric definitions
- Relative L2 error
- For each case and target field
q, map predictions to every required node and return predictions and targets to their release-native physical representation:q* = inverse_transform(q). Report both the unweighted node and area- or length-weighted variants from the complete-case numerators and denominators, then macro-average the case percentages. The airfoil curve uses length weighting as primary; the two-dimensional flow domain uses unweighted node L2 (each node counts equally) as primary. - Relative L1 error
- When reported as a supplementary metric, relative L1 uses the same complete dimensional support and the primary weighting for that domain. Calculate each case percentage first, then macro-average the cases.
- Release-native evaluation
- AirfRANS models are commonly trained on normalized fields. FluidsBench relative L1/L2 metrics should be computed after undoing those normalizations, not on the normalized fields reported by the original MSE tables. The released
pvalues are kinematic pressure in m²/s², not pascals. - Airfoil-curve pressure relative L1/L2
- Relative L1 and L2 error for release-native kinematic pressure
pat every ordered node of the one-dimensional airfoil curve. Length-weighted relative L2 is primary; unweighted node relative L2 (each node counts equally) is secondary. - Airfoil-curve wall-shear relative L1/L2
- Relative L1 and L2 error for the two-dimensional wall-shear vector derived at every ordered airfoil-curve node by the fixed AirfRANS procedure.
- Two-dimensional flow velocity and pressure relative L1/L2
- Each case uses the two components of
Uand kinematic pressurepat every node in the released internal VTU. Unweighted node relative L2 (each node counts equally) is primary and area-weighted relative L2 is secondary; cases are not flattened together before taking the norm. - Cd and Cl R2
- R2 over all evaluated cases using drag and lift coefficients computed from the predicted fields. The original AirfRANS paper reports force relative errors and Spearman correlations; the FluidsBench evaluator computes R2 directly from the derived force coefficients.
- Velocity profile R2
- Calculate R2 separately for each of the four stations and two Cartesian velocity components (
U_x/U_infandU_y/U_inf), using all cases and 1,001 samples per case in the selected official split. Bound each of these eight R2 values to [0, 1], then average them equally to obtain the single velocity-profile metric. This gives every station and velocity component equal weight. Partial-case scores are calibration diagnostics only. - Explicit exclusions
- Turbulent viscosity
nutand airfoil pressure-profilecp_cut_r2are not in the current FluidsBench metric list. Their presence in the source dataset must not be interpreted as an active leaderboard target.