MeshGraphNet surrogate for AirfRANS
What the model is, what it was trained on, how it will be judged, and where it should not be trusted.
Inference pipeline
- 01
Parameterize
NACA 4- or 5-digit parameters, angle of attack and inflow speed define a design.
- 02
Morph a mesh
The nearest AirfRANS training mesh (~180k cells) is morphed onto the new shape and quality-checked.
- 03
Predict the flow
A MeshGraphNet passes messages across the mesh graph and predicts Ux, Uy, p and νt at every node.
- 04
Integrate forces
Surface pressure and wall shear integrate to Cl, Cd and Cm, with ensemble uncertainty.
- 05
Optimize
Evolutionary search calls the surrogate thousands of times to find better shapes.
Architecture
- Architecture
- MeshGraphNet (encode → process → decode), NVIDIA PhysicsNeMo 2.0
- Processor
- 15 message-passing layers · hidden width 128 · ReLU · sum aggregation
- Parameters
- ≈ 2.55 M (base variant)
- Node inputs (14)
- x, y, signed distance, wall flag, wall normal (2), inflow U∞ (2), canonical NACA (4), 5-digit flag, log wall distance
- Edge inputs (6)
- dx, dy, |d|, unit direction (2), log |d|
- Outputs (4)
- Ux, Uy, kinematic pressure p/ρ, turbulent viscosity νt at every node
- Normalization
- Per-case physical scaling by U∞ (p by ½U∞², νt by U∞c), then z-scoring with training-split statistics
- Hard constraints
- No-slip enforced exactly on the wall (u = v = νt = 0)
- Uncertainty
- Deep ensemble: the spread across independently seeded members
Training data
- Dataset
- AirfRANS: 2D incompressible steady RANS, k-ω SST, OpenFOAM
- Geometries
- NACA 4- and 5-digit airfoils
- Split
- Official full task: 720 train / 80 validation / 200 test
- Mesh size
- ~180k nodes, ~700k edges per case
- Reynolds
- ≈ 2 – 6 × 10⁶ (U∞ ≈ 31 – 94 m/s, c = 1 m)
- Angle of attack
- ≈ −5° to 15°
Training setup
- Optimizer
- AdamW, lr 1e-4, weight decay 1e-4, gradient clip 1.0
- Schedule
- ReduceLROnPlateau (×0.7, patience 8), early stopping patience 20, ≤ 200 epochs
- Batch
- One full mesh per step, bf16 mixed precision
- Loss
- MSE on normalized fields; optional physics-residual fine-tune (λ = 1e-4)
- Hardware
- Azure NC A100 80 GB (planned full run)
Acceptance criteria
Test-split targets. Measured values are published after the full training run.
| Metric | Target | Measured |
|---|---|---|
| Relative L2 · Ux | ≤ 0.05 | Pending |
| Relative L2 · Uy | ≤ 0.20 | Pending |
| Relative L2 · p | ≤ 0.20 | Pending |
| Relative L2 · νt | ≤ 0.50 | Pending |
| R² · Ux / Uy / p / νt | ≥ 0.98 / 0.95 / 0.95 / 0.80 | Pending |
| Spearman ρ · Cl | ≥ 0.98 | Pending |
| Spearman ρ · Cd | ≥ 0.80 | Pending |
| MAE · Cl | ≤ 0.05 | Pending |
Limitations
Where the surrogate should not be trusted
- NACA 4- and 5-digit families only; other shapes are outside the training distribution.
- 2D, incompressible, steady RANS (k-ω SST): no compressibility, transition or unsteady separation.
- Accuracy degrades past stall, where the steady RANS training data is itself less reliable.
- New shapes rely on a morphed mesh; heavily distorted morphs are rejected by the quality gate.
- Viscous drag depends on near-wall gradients and is harder to predict than lift.
Preview physics
How close the placeholder model is to CFD, until the surrogate's own test-split results replace it
- Cl
- mean absolute error 0.016
- Cd
- mean absolute error 1.2 %
- Cm¼
- mean absolute error 0.0045
- Surface Cp
- RMS error 0.047
- Wake
- centreline velocity deficit within 5 % on average (worst 24 %), νt/ν within 8 % (worst 25 %), at 0.05 c, 0.25 c and 0.5 c behind the trailing edge
- Cross-checks
- NACA 0012 at Re 6 × 10⁶: Cd₀ 0.0077 (NASA TMR SST 0.0081), dCl/dα 0.105 /°; Cm of NACA 2412 / 4412 within 0.005 of wind-tunnel data
Calibrated and checked on the same ten AirfRANS cases, all near Re ≈ 2 × 10⁶, so these are in-sample figures. The Reynolds-number trends, stall behaviour and the flow-field details away from those cases follow standard turbulent-flow correlations and are indicative only.
Roadmap
Status of the production system behind this interface
- PHASE 0Full training run on A100 + inference benchmark
- PHASE 1Mesh-morphing engine for new geometries
- PHASE 2FastAPI surrogate service
- PHASE 3Server-side optimizer (pymoo) with job queue
- PHASE 4Web interface (this preview)
- PHASE 5Cloud deployment, CI, monitoring
- PHASE 6Validation study against held-out CFD