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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support