Datasets:
case_id int64 0 1.43k | mach float64 0.4 1.2 | reynolds float64 1.07M 100M | temperature float64 220 310 | cl_target float64 0.5 1.5 | area_ratio_min float64 0.75 1 | area_initial float64 0.03 0.22 | cd float64 0.01 0.64 | cl float64 0.35 1.5 | cl_con_violation float64 -0.45 0 | area_ratio float64 0.75 1.14 | initial_design dict | optimal_design dict |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
6 | 0.423013 | 25,886,517.791748 | 277.230633 | 1.271737 | 0.983942 | 0.029982 | 0.009481 | 1.271733 | -0.000002 | 0.983954 | {
"angle_of_attack": 5.994855173257575,
"arc": [
0,
0.00025668044897895505,
0.0003421856474907846,
0.00042790637340206906,
0.0006860789059168515,
0.0011162002105279953,
0.0017192822036623185,
0.002496337971278862,
0.003449390573110715,
0.00457895083817954,
0.0058875483797... | {
"angle_of_attack": 3.032473744109874,
"arc": [
0,
0.00003840488549030896,
0.00005124505639382079,
0.00013966957566536234,
0.0004059736383374031,
0.0008495952010502401,
0.0014715103143211614,
0.0022726670807738875,
0.0032550277374361622,
0.004418960016107748,
0.005766885... |
5 | 0.615095 | 2,461,204.397784 | 225.779619 | 0.832803 | 0.982747 | 0.035982 | 0.010268 | 0.832801 | -0.000001 | 0.982747 | {
"angle_of_attack": -0.2936021255184956,
"arc": [
0,
0.00025725283598710297,
0.00034280504203914415,
0.0004285688730145219,
0.0006863643804644389,
0.001116194386836233,
0.0017185671419628794,
0.0024955010644701014,
0.0034475072289901773,
0.004576101932067615,
0.005883807... | {
"angle_of_attack": 1.7215484664137763,
"arc": [
0,
0.00003945950727530712,
0.000052582301871444365,
0.00013970984496827285,
0.0004015984875208916,
0.0008382243390910099,
0.0014500621955967383,
0.002239113083902649,
0.0032058205263271614,
0.004351640494457631,
0.00567904... |
0 | 1.197766 | 59,347,209.375062 | 303.41964 | 0.749498 | 0.862656 | 0.043515 | 0.108071 | 0.749498 | -0 | 0.862656 | {
"angle_of_attack": 9.195733763758469,
"arc": [
0,
0.0002586334363484812,
0.00034475825111773747,
0.0004299364855428088,
0.0006859468572369622,
0.0011127647916150843,
0.0017118104529578698,
0.0024830491732011862,
0.003428888520112861,
0.004549825700726737,
0.005848847862... | {
"angle_of_attack": 6.394471662414888,
"arc": [
0,
0.00004130547732178237,
0.00005506026976989831,
0.00014230445672675217,
0.0004045316790585537,
0.000841672863537127,
0.0014551682101011367,
0.002244862987604351,
0.0032131532493184034,
0.004360330777705594,
0.00568924636... |
4 | 1.136606 | 56,273,495.85038 | 292.659821 | 1.11168 | 0.902716 | 0.039511 | 0.197796 | 1.11168 | 0 | 0.902716 | {"angle_of_attack":7.880644835431429,"arc":[0.0,0.00025721209471688314,0.00034273569690424513,0.0004(...TRUNCATED) | {"angle_of_attack":8.746662754310881,"arc":[0.0,0.00006203951915627329,0.0000826677806362959,0.00017(...TRUNCATED) |
10 | 1.007153 | 39,423,283.223022 | 249.432399 | 0.627215 | 0.769485 | 0.033746 | 0.056122 | 0.627215 | -0 | 0.769485 | {"angle_of_attack":2.5972932461503433,"arc":[0.0,0.00008546757547918941,0.0001712136118141863,0.0004(...TRUNCATED) | {"angle_of_attack":3.6358714405650643,"arc":[0.0,0.00001893638275884333,0.00010599900298110053,0.000(...TRUNCATED) |
7 | 0.92692 | 86,481,073.380062 | 225.97994 | 0.679522 | 0.878618 | 0.027505 | 0.051731 | 0.679522 | -0 | 0.878618 | {"angle_of_attack":-0.26911842802375896,"arc":[0.0,0.0002568593130802958,0.0003424114785924875,0.000(...TRUNCATED) | {"angle_of_attack":3.0627058493432164,"arc":[0.0,0.0000609449038938162,0.00008124375640736576,0.0001(...TRUNCATED) |
15 | 1.109745 | 57,134,236.898529 | 284.298359 | 0.787202 | 0.768739 | 0.031646 | 0.085654 | 0.787201 | -0 | 0.768739 | {"angle_of_attack":6.858688328025377,"arc":[0.0,0.00008544625080469154,0.00017124646070300494,0.0004(...TRUNCATED) | {"angle_of_attack":5.084117856212758,"arc":[0.0,0.000020423856233981494,0.00010825008087959769,0.000(...TRUNCATED) |
8 | 0.642665 | 11,959,054.07474 | 261.820286 | 1.377551 | 0.95548 | 0.03797 | 0.012192 | 1.377551 | 0 | 0.95548 | {"angle_of_attack":4.111368283350013,"arc":[0.0,0.00025667754500257597,0.00034198938744286176,0.0004(...TRUNCATED) | {"angle_of_attack":3.632617481621992,"arc":[0.0,0.00004067911493482495,0.00005419935041239523,0.0001(...TRUNCATED) |
16 | 0.469988 | 24,658,196.538266 | 251.619042 | 0.955297 | 0.945341 | 0.051978 | 0.008517 | 0.955296 | -0 | 0.945341 | {"angle_of_attack":2.8645495934004366,"arc":[0.0,0.00025641056190999926,0.00034181866230000724,0.000(...TRUNCATED) | {"angle_of_attack":2.275227029161257,"arc":[0.0,0.000038575486655111116,0.000051424411125741396,0.00(...TRUNCATED) |
1 | 0.884525 | 47,258,790.887993 | 293.140615 | 0.591583 | 0.803596 | 0.046453 | 0.032918 | 0.591584 | 0 | 0.803596 | {"angle_of_attack":7.939408469757661,"arc":[0.0,0.00042733705524993556,0.0006843049470224146,0.00076(...TRUNCATED) | {"angle_of_attack":1.8051064267636725,"arc":[0.0,0.0001516726339968329,0.0002429109609287265,0.00027(...TRUNCATED) |
OptiWing Airfoil 2D — surface fields
As the basic dataset, plus the per-node surface fields (pressure, velocity, skin friction, …) needed to reconstruct the primal flow state on the airfoil surface.
This is the 2D OptiWing aerodynamic shape-optimization dataset, formatted to match the
EngiBench airfoil convention (one row per
optimization case). The three OptiWing-2D datasets share case_id, so a row in one joins to the
same case in the others. All three are built from a single raw pass, so their geometry and fields
are identical where they overlap.
Geometry is the native CFD surface contour at physical chord (c ≈ 0.98): coords are (x, y) at the solver's surface nodes (~200 per section, ordered TE → upper → LE → lower → TE), and every surface field is the unmodified solver value at those same nodes — no resampling, no normalization. The contour re-meshes to reproduce the simulation, and each field value corresponds exactly to its coordinate. For a one-to-one comparison with the 192-point 3D dataset, resample onto a common grid. The 2D area is the analogue of the 3D paper's volume constraint; area_ratio is the achieved area / initial area.
Splits
| split | examples |
|---|---|
| train | 878 |
| val | 49 |
| test | 107 |
Splits are at the case level and shared with the OptiWing 3D companion data, so paired 2D/3D cases land in the same split.
Features
| field | type | description |
|---|---|---|
case_id |
int | optimization case id (shared across all three datasets) |
mach |
float | freestream Mach number (sampled input condition) |
reynolds |
float | Reynolds number (sampled input condition) |
temperature |
float | freestream static temperature [K] (sampled input condition) |
cl_target |
float | target lift coefficient (input condition / constraint) |
area_ratio_min |
float | minimum allowable area ratio (input constraint) |
area_initial |
float | chord-normalized area of the initial section (shoelace) |
cd, cl, cl_con_violation, area_ratio |
float | optimized objectives / constraints |
initial_design, optimal_design |
struct | geometry and per-node surface fields (below) |
Each design struct holds values at the native CFD surface nodes (~200 points, ordered
TE→upper→LE→lower→TE; arc ∈ [0,1] is the per-node arc-length fraction). Coordinates and fields are
the unmodified solver values at the same nodes, so each field value corresponds exactly to its
coordinate.
| sub-field | description |
|---|---|
angle_of_attack |
section angle of attack [deg] |
coords |
(x, y) pairs, physical chord ≈0.98 (~200×2) |
arc |
per-node arc-length fraction (~200) |
cp |
pressure coefficient (~200) |
pressure, density, temperature |
primal thermodynamic state at the wall (~200 each) |
velocity_x, velocity_y |
in-plane velocity components (~200 each) |
cf_x, cf_y |
in-plane skin-friction coefficient (~200 each) |
yplus |
wall y+ (~200) |
Loading
from datasets import load_dataset
ds = load_dataset("Cashen/optiwing-airfoil-2d-surface-v1")
print(ds["train"][0].keys())
Citation
This dataset does not yet have a companion paper or DOI. Until one exists, please cite the dataset directly by its Hugging Face URL and cite the prior-version works in "Built upon".
@misc{optiwing_airfoil_2d_2026_surface,
title = {OptiWing Airfoil 2D (surface): a 2D aerodynamic shape-optimization dataset},
author = {Cashen Diniz and Mark Fuge},
year = {2026},
publisher = {Hugging Face},
howpublished = {Hugging Face Datasets},
url = {https://huggingface.co/datasets/Cashen/optiwing-airfoil-2d-surface-v1},
note = {Version v0}
}
Built upon
This is a new dataset (wider parameter bounds, full surface fields, and complete optimization trajectories), but its lineage and format derive from prior work — please cite these as well:
@misc{diniz2025optiwing3d,
title = {OptiWing3D: A Diverse Dataset of Optimized Wing Designs},
author = {Diniz, Cashen and Fuge, Mark D.},
year = {2025},
eprint = {2512.12867},
archivePrefix = {arXiv},
doi = {10.48550/arXiv.2512.12867},
url = {https://arxiv.org/abs/2512.12867}
}
@inproceedings{felten2025engibench,
title = {EngiBench: A Framework for Data-Driven Engineering Design Research},
author = {Felten, Florian and Apaza, Gabriel and Br\"{a}unlich, Gerhard and
Diniz, Cashen and Dong, Xuliang and Drake, Arthur and Habibi, Milad and
Hoffman, Nathaniel J. and Keeler, Matthew and Massoudi, Soheyl and
VanGessel, Francis G. and Fuge, Mark},
booktitle = {Advances in Neural Information Processing Systems (NeurIPS),
Datasets and Benchmarks Track},
year = {2025},
eprint = {2508.00831},
archivePrefix = {arXiv},
url = {https://arxiv.org/abs/2508.00831}
}
The EngiBench airfoil format this dataset mirrors is airfoil_v0:
https://huggingface.co/datasets/IDEALLab/airfoil_v0.
License
cc-by-nc-sa-4.0
- Downloads last month
- 26