Skip to content
comparotor

Documentation

The full spec for

rotorbench-aero-v0.1
lives in the repo as docs/SPEC.md. Below is the canonical summary plus the fastest route to a successful submission.

1. Task

Predict aerodynamic coefficients (Cl, Cd, Cm) for a 2D airfoil at a single operating point (Re, α, M). Operating envelope:

  • Reynolds number Re ∈ [1e5, 1e7]
  • Angle of attack α ∈ [-10°, 20°] (1° resolution)
  • Mach number M ∈ [0.1, 0.8]

2. Datasets

Public training set

UIUC airfoil database (~1,600 airfoils) labelled by XFOIL across the operating envelope. Distributed as a single train.parquet from R2:

curl -O https://r2.comparotor.com/rotorbench-aero/v0.1/train.parquet
curl -O https://r2.comparotor.com/rotorbench-aero/v0.1/airfoils.tar.gz

Private test set

200 held-out airfoils (100 perturbed UIUC parents, 50 supercritical for OOD, 50 modern eVTOL/wind-blade sections). Labelled with SU2 RANS. Geometry and labels remain private. 50-airfoil rotation each quarter.

3. Submission formats

Two accepted formats. Both are archived in R2 for 24 months.

ONNX + wrapper

Upload model.onnx plus a wrapper.json declaring input/output shapes. Inputs: geometry: float32[200, 2], operating_point: float32[3]. Output: coefficients: float32[3].

Docker image

Container exposing GET /healthz and POST /predict. Resources: 16 GB RAM, 1× NVIDIA T4, 60s wall-clock per request.

4. Scoring

Five metrics. The leaderboard's default sort is the composite below; users can re-sort by any individual metric.

composite = MAE_Cl + 10·MAE_Cd + 0.5·MAE_Cm
          + 0.2·(1 - rho_LD)
          + 0.1·OOD_score
          + 0.001·latency_p50_ms
  • MAE on Cl, Cd, Cm — pointwise mean absolute error
  • ρ L/D — Spearman rank correlation of L/D across airfoils per operating point
  • OOD score — error on the supercritical-airfoil subset
  • Latency p50 / p99 — wall-clock on the reference T4 container

5. Submission API (fastest path)

# 1. Register the submission (returns upload_url for ONNX)
curl -X POST $API/submissions \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model_name": "my-rotor-net",
    "model_version": "1.0.0",
    "format": "onnx",
    "visibility": "public",
    "benchmark": "rotorbench-aero-v0.1"
  }'

# 2. Upload the ONNX artefact
curl -X PUT "$UPLOAD_URL" \
  -H "Authorization: Bearer $TOKEN" \
  --data-binary @model.onnx

# 3. Finalize and queue evaluation
curl -X POST "$FINALIZE_URL" \
  -H "Authorization: Bearer $TOKEN"

# 4. Poll the run
curl "$API/runs/$RUN_ID"

6. Anti-gaming

  • Plan-tier rate limits (Free: 1/week, Pro: 50/month)
  • 50-airfoil quarterly rotation of the private test set
  • All submission artefacts archived in R2 for 24 months — replay against fresh sets if contamination is suspected
  • Sub-percent Gaussian geometry obfuscation breaks exact-match memorisation
  • Optional manual review for SOTA-claim submissions (composite better than current best by >2σ)
  • Two-run reproducibility check; flag if results disagree above numerical tolerance

Want the full spec?

The complete SPEC.md in the repo is the source of truth — including the SU2 RANS generation pipeline, full D1 schema, and the OpenAPI contract at apps/api/openapi.yaml.

Questions? Email hello@comparotor.com — solo founder, replies same-day.