ScireX WNO · AirfRANS
A trained WNO neural operator from the open-source scirex library (JAX/Flax) for the AirfRANS benchmark. The weights are the last-epoch weights of the run described below and are stored as model.safetensors.
Results
| Metric | This model | Published reference |
|---|---|---|
| Volume | 0.4465% | 0.37% (Transolver paper, for context) |
| Surf | 0.145% | 1.42% |
| C_L relative error | 2.97% | 10.30% |
| Spearman ρ_L | 0.99958 | 0.9978 |
Lower is better, except for Spearman correlations. Figures are those of the ScireX results table and benchmark pages: benchmark page and the GitHub README. Volume: normalised MSE on non-wall nodes; Surf: normalised MSE on wall nodes; C_L: relative error of the lift coefficient; all means over the 200 test cases, scored with the Transolver paper's metric code. Surf may be defined in the paper as the wall-pressure MSE alone, which would be 4 times larger than reported here; see the GitHub benchmark page. Percentages are the normalised MSE times 100: Volume 0.4465% is a normalised MSE of 4.465e-3 (infer.py prints 0.0044650; the benchmark page rounds it to 0.00446).
Inputs and outputs
Input, per mesh node: position, signed distance, wall normal and inflow velocity. Output: velocity, pressure and turbulent viscosity at every node. 720 / 80 / 200 train / validation / test cases. The normalisation statistics are in config.json; the weights are unusable without them.
Training data
Contains information from AirfRANS (Bonnet et al., NeurIPS 2022), which is made available under the Open Database License (ODbL) v1.0.
Training
WNO, 3,964,728 parameters. Same recipe as the Transolver run (Adam one-cycle, EMA 0.9995, clip 10, 32,000 nodes per case per step, 500 epochs, seed 0); 128 x 256 grid encoder, db4 wavelet, level 4, with a per-node MLP decoder. EMA weights after the last epoch. Training time: ~1.8 h at half a GPU.
Full setup: doc/benchmarks/airfrans/results/comparative.md.
How to use
hf download zenteiq-ai/scirex-wno-airfrans --local-dir ckpt/scirex-wno-airfrans
Then run the benchmark's scripts/benchmarks/airfrans/infer.py from the GitHub repository. The exact command is under Reproduce below. Check your install against sample.safetensors, which holds one test input (input) and the model's expected output (expected_output). config.json holds the model settings and the normalisation statistics.
Reproduce
From a checkout of the GitHub repository at tag v1.0.0:
hf download zenteiq-ai/scirex-wno-airfrans --local-dir ckpt/scirex-wno-airfrans
python scripts/benchmarks/airfrans/infer.py \
--checkpoint ckpt/scirex-wno-airfrans \
--run wno \
--data-dir $DATA_ROOT/airfrans/Dataset
$DATA_ROOT is the folder that holds the benchmark datasets (see reproducibility.md).
Results table for this benchmark: comparative.md.
Limitations
Valid only within the trained input ranges of the benchmark data. Not for safety-critical design without separate validation. Bug reports: GitHub Issues.
Other ScireX checkpoints
Same benchmark, other models:
| Model | Repo |
|---|---|
| GINO | zenteiq-ai/scirex-gino-airfrans |
| Transolver | zenteiq-ai/scirex-transolver-airfrans |
Same model, other benchmarks:
| Benchmark | Repo |
|---|---|
| Darcy flow 2D (data-driven) | zenteiq-ai/scirex-wno-darcy |
| Darcy flow 2D (physics-only, extra-fields run) | zenteiq-ai/scirex-wno-darcy-physics-extra-fields |
| Pipe flow | zenteiq-ai/scirex-wno-pipe |
| Navier-Stokes 2D | zenteiq-ai/scirex-wno-navier-stokes |
| Chip cooling | zenteiq-ai/scirex-wno-chip-cooling |
Licence and citation
The weights are released under the Apache License 2.0 (see LICENSE; dataset credit in NOTICE). The code is LGPL-3.0. Cite the software through the CITATION.cff in the GitHub repository and the architecture paper:
- WNO: Tripura and Chakraborty, 2022, arXiv:2205.02191