Steady-RANS flow field surrogates (GeoReNet and HybridFlow)
Trained checkpoints and code for the paper "Towards generalized flow field prediction: one model across unseen object families" (under double blind review; this account is anonymous for that reason).
Given a 3D geometry and an operating point (Reynolds number and yaw angle), each model
predicts the full steady RANS field, velocity (u, v, w), pressure p, and turbulence
variables (k, omega, nu_t), at every node of a sampled graph covering the flow volume, in a
single forward pass with no solver in the loop. Training and evaluation data are in the
companion dataset repo:
steady-rans-generalization.
Checkpoints (weights/<run>/model.pt + norms.npz)
| Run | Architecture | Params | Note |
|---|---|---|---|
geore_fieldonly_s0/s1/s2 |
GeoReNet (local MP + pooled global node + FiLM) | 3.28M | ours, 3 seeds |
hybrid_s0/s1/s2 |
HybridFlow (local MP + slice attention + FiLM) | 3.04M | ours, 3 seeds |
tpp_s0/s1/s2 |
Transolver++ (pure attention baseline) | 3.37M | baseline, 3 seeds |
pfaff_s0/s1/s2 |
MeshGraphNet (local MP baseline) | 2.94M | baseline, 3 seeds |
hybrid_nolocal_s0 |
HybridFlow without local operator | 0.98M | ablation |
hybrid_nolocal_h300_s0 |
Same, capacity matched (hidden 300) | 3.07M | ablation |
geore_noglobal_s0 |
GeoReNet without global node, capacity matched | 3.26M | ablation |
Headline mean field R2 (seed 0, fixed deterministic splits):
| Model | val | OOD object | OOD Reynolds |
|---|---|---|---|
| MeshGraphNet | 0.963 | 0.865 | 0.939 |
| GeoReNet (ours) | 0.969 | 0.888 | 0.946 |
| Transolver++ | 0.970 | 0.835 | 0.939 |
| HybridFlow (ours) | 0.972 | 0.880 | 0.948 |
Install
# 1) PyTorch first, pinned; do not let later installs upgrade it
pip install torch==2.11.0 --index-url https://download.pytorch.org/whl/cu128 --no-deps
# CPU-only: pip install torch==2.11.0
# 2) PyTorch Geometric
pip install torch_geometric==2.8.0 --no-deps
# 3) everything else
pip install -r requirements.txt
Reproduce the fixed split table
huggingface-cli download BlidReview/steady-rans-surrogates --local-dir .
huggingface-cli download BlidReview/steady-rans-generalization --local-dir ./data --repo-type dataset
python easy_eval.py --cache ./data/cache_v3 --weights ./weights --device cuda
easy_eval.py rebuilds each architecture from its stored args, evaluates the deterministic
val / OOD object / OOD Reynolds splits, and prints the table above (per channel R2 included).
Single runs: python code/ezflow_v3/gnn/eval_run.py --run weights/hybrid_s0 --cache ./data/cache_v3.
Zero shot external families: code/ezflow_v3/gnn/zeroshot_eval.py with
data/ext_dataset_of from the dataset repo.
Predict on a new geometry
python code/ezflow_v3/app/run_app.py # web app: upload an STL, set Re and yaw, inspect fields
Scope
Steady, incompressible, single phase Newtonian external flow at Reynolds numbers between 500 and 1e5 (k-omega SST ground truth). Full scale automotive and flight conditions lie above this range. Predictions are on a sampled graph of about 10^4 nodes. See the paper for limits and the applicability domain score.
License
Weights and data: CC BY-NC 4.0. Code: PolyForm Noncommercial 1.0.0. See LICENSE.
Vendored baseline code in code/ezflow_v3/baselines/ retains its original authors' licenses.