"""Launcher for the EZFlow v3 web app (turbulent-RANS GNN predictor). python ezflow_v3/app/run_app.py -> http://127.0.0.1:8000 Serves the TMLR paper's seed-0 models (HybridFlow / GeoReNet) with a model selector, model-vs-model compare, robust STL meshing, slicing, point probe, and CSV export. This supersedes the old v1 app under app/ (which used the archived ezflow_gnn poc_v4). """ from __future__ import annotations import os, sys, webbrowser from pathlib import Path import uvicorn os.environ.setdefault("KMP_DUPLICATE_LIB_OK", "TRUE") os.environ.setdefault("OMP_NUM_THREADS", "1") REPO_ROOT = Path(__file__).resolve().parents[2] def main(): sys.path.insert(0, str(REPO_ROOT)) os.chdir(str(REPO_ROOT)) url = "http://127.0.0.1:8000" print(f"EZFlow v3 app -> {url} (models: HybridFlow / GeoReNet, seed-0 TMLR checkpoints)", flush=True) try: webbrowser.open(url) except Exception: pass import ezflow_v3.app.serve as serve uvicorn.run(serve.app, host="127.0.0.1", port=8000, log_level="info", reload=False) if __name__ == "__main__": main()