README.md
May 17, 2026 · View on GitHub
Build neural-network surrogate models from ANSYS Fluent simulations. Two interfaces, one pipeline:
- GUI — wizard-based desktop app: Setup → DOE → Simulate → Train → Analyze.
- API — Python library exposing the same pipeline as
cfdtwin.Projectmethods.
Docs: https://uark-ned3.github.io/CFDTwin/
GUI walkthrough (3-part video series):
- Introduction, Project Creation, Case File Assignment
- DOE Setup, Batch Simulation, NN Training
- Model Metrics and Inference Analysis
Install
Requires Python 3.10+ and a working ANSYS Fluent installation. Three install paths:
| Command | What you get |
|---|---|
pip install cfdtwin | API only (no Qt) |
pip install cfdtwin[gui] | API and desktop GUI |
git clone … && pip install -e .[dev] | API, GUI, examples, and tests |
pip install cfdtwin # API only
pip install cfdtwin[gui] # adds the desktop GUI
git clone https://github.com/UARK-NED3/CFDTwin && cd CFDTwin && pip install -e .[dev]
Running cfdtwin-gui after an API-only install prints an instruction to
install the [gui] extra rather than raising ImportError.
Use the GUI
Installed via pip (pip install cfdtwin[gui]): launch from any terminal.
cfdtwin-gui
From a repo clone: run as a module, or double-click the launcher script on Windows for a click-to-launch experience without a terminal window.
python -m gui # any platform
double-click scripts/launch_gui.bat # Windows
To create a Desktop launcher on Windows: right-click scripts/launch_gui.bat
→ Copy, then right-click the Desktop → Paste shortcut. To set the
CFDTwin icon, right-click the shortcut → Properties → Change Icon → browse
to gui/assets/logo_icon.png. (scripts/launch_gui.bat ships only in the
repo; pip installs use the cfdtwin-gui command above.)
On launch, select or create a project. Sidebar steps unlock as their prerequisites are met:
- Setup — pick
.casfile, set Fluent options, define inputs and outputs - DOE — generate LHS/factorial samples
- Simulate — batch-run Fluent with live progress
- Train — transfer-list filter, live loss curves, per-output NN
- Analyze — metrics dashboard, predictions, Fluent comparison with caching
Use the API
The same pipeline driven from a Python script, useful for automation and parameter sweeps:
import cfdtwin
project = cfdtwin.Project.create("./elbow_study", name="elbow_v1")
project.set_case_file("mixing_elbow.cas.h5")
project.set_inputs({
"cold-inlet|momentum > velocity_magnitude": (0.2, 0.6),
"hot-inlet|momentum > velocity_magnitude": (0.4, 1.2),
})
project.set_outputs([
{"name": "outlet", "category": "Surface",
"field_variables": ["temperature"]},
])
project.generate_doe(n=20, method="lhs")
project.connect_fluent(precision="single") # mixing_elbow is a single-precision case
project.run_simulations()
project.train(model_name="run1")
pred = project.predict("run1", {
"cold-inlet|momentum > velocity_magnitude": 0.4,
"hot-inlet|momentum > velocity_magnitude": 0.8,
})
print(pred.values.shape)
Runnable scripts live in docs/examples/: quickstart,
full workflow, training tuning, and a discovery script for unfamiliar case
files. Inlined online at
https://uark-ned3.github.io/CFDTwin/examples/.
License
MIT. See LICENSE.