CFDLab
A terminal-first CAE orchestrator. You enter parameters; CFDLab passes them to the CAD, meshing, solver, and post-processing programs you already have installed, and re-runs only the steps your change affected.
CFDLab draws no CAD, generates no mesh, and solves no equations. It is the conductor, not the orchestra. Gmsh meshes, SU2 solves, ParaView renders — CFDLab decides what to run, with which parameters, and in what order. Think ANSYS Workbench's dependency behaviour, in a terminal, over open-source tools.
Install
pip install cfdlab
The orchestrator is stdlib-only — no compiled wheels, nothing to break. The scientific stack is optional, and only needed for the analysis subpackages:
pip install "cfdlab[numerical]" # numpy, scipy, pandas
pip install "cfdlab[geometry]" # gmsh, meshio, build123d
pip install "cfdlab[visualization]" # matplotlib, pyvista
pip install "cfdlab[all]" # everything above
CFDLab ships no CAE software. Install Gmsh, SU2, FreeCAD, or OpenFOAM yourself and point CFDLab at them.
Quick start
Describe your case in one file:
[parameters.mesh]
size = 0.01
[parameters.solve]
mach = 0.3
[backends.gmsh]
command = ["gmsh", "wing.step", "-clmax", "{mesh.size}", "-3", "-o", "mesh.su2"]
[backends.su2]
command = ["SU2_CFD", "case.cfg"]
[[nodes]]
id = "mesh"
stage = "mesh"
backend = "gmsh"
produces = ["mesh.su2"]
[[nodes]]
id = "solve"
stage = "solve"
backend = "su2"
depends_on = ["mesh"]
consumes = ["mesh.su2"]
produces = ["flow.dat"]
Then drive it:
cfdlab-orchestrator project.toml
cfdlab> doctor # is every program actually on PATH?
cfdlab> run # mesh, then solve
cfdlab> set mesh.size 0.005 # only mesh and solve re-run — CAD is untouched
cfdlab> resume # continue after a crash; keep the finished mesh
Adding a program means writing its command line. Removing one means deleting that line. No CFDLab code changes.
What it does
| Capability | What it means in practice |
|---|---|
| Dependency graph | Change a mesh parameter and the CAD step is not re-run; the solve is |
| Hot-reload | Save the project file and the affected steps re-run on their own |
resume |
A crashed overnight solve does not cost you the eight-hour mesh |
[[loops]] |
Two-way FSI/CHT coupling, and transient time marching |
| Artifact contracts | A program that exits 0 without writing its file is recorded as failed |
| Units | set chord 250 mm reaches a metre-based model as 0.25; wrong dimensions are refused |
sweep |
Parametric studies and DOE, each case in its own directory |
converge |
Grid convergence with Roache's GCI — a coefficient from one mesh is not a result |
optimize |
Closed-loop design search driven by your solver |
| Streaming logs | tail -f logs/solve.out.log while the solver runs |
Documentation
Full user guide — bilingual (Tiếng Việt + English), covering project files, connecting your installed software, presets, units, and every command.
Beyond the orchestrator
The repository also contains research subpackages for geometry, airfoils, meshing, and SU2 automation. These need the extras above and are at varying maturity; the orchestrator is the part that is packaged and documented for use.
Project status
v1.2.0, in development. 2007 automated tests. Python 3.12+. Linux.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cfdlab-1.2.0.tar.gz.
File metadata
- Download URL: cfdlab-1.2.0.tar.gz
- Upload date:
- Size: 208.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b62f8912653c019f3297206d59e8b6cc338f835d00838b09ab003f902e4789a
|
|
| MD5 |
d0eb8ac26097c4e5d3f1e818ee9edb3c
|
|
| BLAKE2b-256 |
64e856485ef55f9796f678f89fc0ce22e227693159024ad44aef8f769a3463b8
|
File details
Details for the file cfdlab-1.2.0-py3-none-any.whl.
File metadata
- Download URL: cfdlab-1.2.0-py3-none-any.whl
- Upload date:
- Size: 194.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd39974ac4215ebda9f3da2d57fb65e44cf2ee96bb0c8401e34b323b6b8c9885
|
|
| MD5 |
0cbaf6632adcfc8089d908152b55ae75
|
|
| BLAKE2b-256 |
8dbc783358a06f9b1908ebdd7cd1e837762b21e2ea719ce95c06eecdf152eb66
|