--- title: DrivAerML Aero Surrogates Demo emoji: "🏎" colorFrom: green colorTo: blue sdk: gradio sdk_version: 6.14.0 python_version: "3.12" app_file: app.py pinned: false hardware: zero-a10g suggested_storage: small --- # GeoTransolver — DrivAerML Surface Aerodynamics Interactive demo of NVIDIA's **GeoTransolver** transformer surrogate for external automotive aerodynamics. Pick one of the 48 held-out [DrivAerML](https://huggingface.co/datasets/neashton/drivaerml) validation geometries and predict surface **pressure**, **wall-shear-stress**, and integrated **drag / lift forces** in seconds on ZeroGPU. **Checkpoint:** [`nvidia/geotransolver_drivaerml`](https://huggingface.co/nvidia/geotransolver_drivaerml) **Architecture / training code:** [`NVIDIA/physicsnemo`](https://github.com/NVIDIA/physicsnemo) **Benchmarking on your data:** [`NVIDIA/physicsnemo-cfd`](https://github.com/NVIDIA/physicsnemo-cfd) ## How it works - **Selection.** A dropdown lists the 48 DrivAerML validation cases. On change, the full multi-solid STL is pulled from the public dataset and cached locally; a decimated GLB (500k faces, vertex-merged, Z-up→Y-up) is served to `gr.Model3D` for the preview viewer. - **Inference.** Click *Run inference*. The GeoTransolver checkpoint is loaded lazily on the first GPU call, then predicts per-cell pressure and wall-shear-stress on the full STL (~750k cells). Cell values are averaged to vertices for smooth shading. - **Forces.** Drag (Fx) and lift (Fz) are integrated on the surface with the same formula as `physicsnemo-cfd`'s `compute_drag_and_lift`, in Newtons at the DrivAerML reference condition (30 m/s, ρ = 1.205 kg/m³). - **Caching.** Switching fields (pressure / WSS magnitude / WSS x|y|z) re-renders the cached prediction client-side — no GPU quota burned. Re-selecting a previously-run geometry uses the cached download. ## Why only DrivAerML validation cases? The checkpoint is trained exclusively on DrivAerML. Out-of-distribution geometries — pickup trucks, aircraft, anything but a DrivAer-style sedan — return non-physical predictions. To keep the demo trustworthy we restrict inputs to held-out validation cases. If you have your own DrivAerML-style STLs and want benchmark-grade inference, see [`NVIDIA/physicsnemo-cfd`](https://github.com/NVIDIA/physicsnemo-cfd)'s `GeoTransolverWrapper` and `workflows/benchmarking/`. ## Files - `app.py` — Gradio UI, STL download/decimate, inference glue, Plotly viewer. - `requirements.txt` — `nvidia-physicsnemo`, `nvidia-physicsnemo-cfd` from git, plus Gradio, PyVista, Plotly, trimesh. ## License Apache-2.0. The DrivAerML dataset is CC BY-SA 4.0 — see the [dataset card](https://huggingface.co/datasets/neashton/drivaerml) for attribution requirements when using results derived from those geometries.