Skip to main content

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

cfdlab-1.2.0.tar.gz (208.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cfdlab-1.2.0-py3-none-any.whl (194.7 kB view details)

Uploaded Python 3

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

Hashes for cfdlab-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9b62f8912653c019f3297206d59e8b6cc338f835d00838b09ab003f902e4789a
MD5 d0eb8ac26097c4e5d3f1e818ee9edb3c
BLAKE2b-256 64e856485ef55f9796f678f89fc0ce22e227693159024ad44aef8f769a3463b8

See more details on using hashes here.

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

Hashes for cfdlab-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd39974ac4215ebda9f3da2d57fb65e44cf2ee96bb0c8401e34b323b6b8c9885
MD5 0cbaf6632adcfc8089d908152b55ae75
BLAKE2b-256 8dbc783358a06f9b1908ebdd7cd1e837762b21e2ea719ce95c06eecdf152eb66

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page