An open-source turbomachinery designer
Project description
TurboDesigner
The open-source turbomachinery designer
Axial Compressor |
Axial Casing |
Axial Rotor |
About
TurboDesigner is a parametric turbomachinery design tool that takes high-level thermodynamic inputs (pressure ratio, mass flow rate, RPM, etc.) and produces:
- Mean-line thermodynamic analysis — stage-by-stage temperature, pressure, and velocity calculations
- Blade flow analysis — spanwise velocity distributions via free-vortex theory, metal angle computation with empirical deviation correlations
- 3D CAD geometry — fully parametric blade, shaft, and casing models exported as STEP files
Currently focused on axial compressors, with plans to support axial turbines and turbopumps for liquid rocket engines.
Architecture
| Module | Description |
|---|---|
Turbomachinery |
Top-level compressor model: overall pressure ratio, efficiency, stage count, inlet conditions |
Stage |
Single compressor stage: temperature rise, reaction, rotor + stator blade rows |
FlowStation |
Thermodynamic state at a station: total/static T & P, velocity triangles, Mach number, density |
BladeRow |
Blade row geometry: aspect ratio, solidity, metal angles, airfoil profiles at multiple span stations |
Vortex |
Spanwise velocity distribution (currently Free Vortex: $r \cdot c_\theta = \text{const}$) |
MetalAngles |
Incidence and deviation via Johnsen-Bullock or equals-flow-angles methods |
AxialCompressorCadModel |
Full CAD assembly: shaft, casing, blades built in parallel via CadQuery |
Features
- Vortex methods: Free Vortex (constant work distribution)
- Airfoil types: NACA 65 series, Double Circular Arc (DCA/C4)
- Deviation models: Johnsen-Bullock empirical correlation, zero-deviation (metal = flow angles)
- CAD generation: Lofted 3D blades, shaft/disk, outer casing with clamps, fir-tree blade root attachments
- Parallel CAD builds: Multiprocessing with tessellation caching for fast iteration
- CLI: Full command-line interface for design management, analysis, and CAD export
- JSON analysis export: Auto-serialization with unit metadata annotations
Assumptions
- Ideal gas thermodynamic model
- Constant mean-line radius (set by hub-to-tip ratio)
- Blade calculations based on the mean radius station
- Free vortex spanwise distribution (more methods planned)
- Airfoil geometry limited to DCA and NACA 65 profiles
Installation
pip install turbodesigner
CAD Geometry Support
CAD commands (turbodesigner cad ...) require CadQuery, which depends on the OpenCASCADE kernel. If your system already has a compatible CadQuery installed, add it as an extra:
pip install "turbodesigner[cq]"
Otherwise, install CadQuery via conda first (recommended — handles the native OCC dependency):
# Install CadQuery (required for CAD geometry support)
conda install -c conda-forge -c cadquery cadquery=master
pip install turbodesigner
Development Setup
git clone --recurse-submodules https://github.com/OpenOrion/turbodesigner.git
cd turbodesigner
pip install -e ".[test,cq]"
Design Input
Designs are defined as JSON files with the following structure:
{
"machine_type": "axial",
"configuration": "compressor",
"meanline": {
"gamma": 1.4,
"axial_velocity": 136,
"rpm": 10000,
"gas_constant": 287,
"mass_flow_rate": 4.37,
"pressure_ratio": 3.0,
"inlet_total_pressure": 101000,
"inlet_total_temperature": 288,
"isentropic_efficiency": 0.878,
"num_stages": 5,
"stage_temperature_rise": "equal",
"stage_reaction": [0.5, 0.5, 0.5, 0.5, 0.5],
"inlet_blockage": 0.0,
"outlet_blockage": 0.0,
"hub_to_tip_ratio": 0.5,
"num_streams": 9,
"aspect_ratio": {"rotor": 3.0, "stator": 3.25},
"spacing_to_chord": {"rotor": 1.0, "stator": 1.0},
"max_thickness_to_chord": {"rotor": 0.1, "stator": 0.1},
"row_gap_to_chord": 0.25,
"stage_gap_to_chord": 0.5
}
}
Per-stage arrays are supported for non-uniform designs (e.g., higher reaction at inlet stages, variable aspect ratios).
CLI Usage
TurboDesigner includes a Click-based CLI for design management, analysis, and CAD generation:
# Design management
turbodesigner design create <name> --from <json>
turbodesigner design list
turbodesigner design show <name>
turbodesigner design export <name>
turbodesigner design schema # Print the JSON schema
# Analysis (requires an active design via `turbodesigner design use <name>`)
turbodesigner analyze machine # Overall machine parameters
turbodesigner analyze stages # Stage-by-stage summary
turbodesigner analyze flow-stations # All flow station properties
turbodesigner analyze blade-rows # Blade geometry per row
turbodesigner analyze full # Full JSON dump with unit metadata
# CAD generation
turbodesigner cad blade # Single blade profile
turbodesigner cad shaft # Shaft/disk assembly
turbodesigner cad casing # Outer casing
turbodesigner cad assembly # Full compressor assembly
turbodesigner cad annulus # Flow annulus visualization
All commands support --json for structured output. CAD commands accept --complex (high-fidelity geometry) and --visualize flags.
Workspace state is persisted in a .turbodesigner/ directory (similar to .git).
Outputs
TurboDesigner generates the following artifacts in .turbodesigner/designs/<name>/output/:
| Output | Description |
|---|---|
shaft-stage-{N}.step |
STEP file for each shaft/disk stage |
casing-stage-{N}.step |
STEP file for each casing stage |
blade-{N}-rotor.step |
Individual rotor blade STEP file |
blade-{N}-stator.step |
Individual stator blade STEP file |
BOM.csv |
Bill of materials (generated with --complex) |
report.ipynb |
Jupyter notebook with full design analysis |
report.html |
HTML export of the analysis report |
BOM.csv
Generated during cad assembly --complex. Columns: Part, Quantity, Category, Component. Includes all fasteners (heatsets, screws), blades, shaft disks, casing sections, and clamps with per-stage quantities.
Reports
Generated via turbodesigner axial compressor design report. Produces a Jupyter notebook and HTML report containing:
- Machine overview (pressure ratio, efficiency, RPM)
- Stage-by-stage thermodynamic properties
- Flow station velocity triangles and Mach numbers
- Annulus visualization (hub/tip radii)
- Blade row geometry (scalars and per-stream distributions)
Python API
from turbodesigner.turbomachinery import Turbomachinery
from turbodesigner.cad.compressor import AxialCompressorCadModel
from pathlib import Path
# Load a design
machine = Turbomachinery.from_file("tests/designs/mark1.json")
# Access computed properties
print(f"Overall temperature rise: {machine.overall_temperature_rise:.1f} K")
print(f"Outlet pressure: {machine.outlet_flow_station.total_pressure:.0f} Pa")
# Inspect a stage
stage = machine.stages[0]
print(f"Stage 1 rotor inlet Mach: {stage.rotor.flow_station.mach_number}")
# Generate CAD (STEP export)
turbomachinery = machine.to_cad_export()
results = AxialCompressorCadModel.build_all(
turbomachinery,
output_dir=Path("/tmp/turbodesigner"),
is_complex=True,
visualize=True,
)
print("Shaft STEP files:", results["shaft"])
print("Casing STEP files:", results["casing"])
Running Tests
pip install -e ".[test]"
python -m pytest tests/ -v
Help Wanted
Contributions are welcome in the following areas:
- Verifying thermodynamic calculations against published data
- CFD validation of generated geometries
- Additional vortex distributions (forced vortex, exponential)
- More airfoil families (NACA 4-digit, custom profiles)
- Axial turbine support
- GUI/web interface
Join the Discord for collaboration
Project details
Release history Release notifications | RSS feed
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 turbodesigner-2.0.0.tar.gz.
File metadata
- Download URL: turbodesigner-2.0.0.tar.gz
- Upload date:
- Size: 220.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbeb224abfafc4db99c8258fb869d919e3ee8a4af6094a85c1d97856e587a412
|
|
| MD5 |
f667a2eaaf7f38f4976113afc1400352
|
|
| BLAKE2b-256 |
c5380cdbde82bb56c8ccf3e15c179e29110dcd70bacb471607f16c19f22a861a
|
File details
Details for the file turbodesigner-2.0.0-py3-none-any.whl.
File metadata
- Download URL: turbodesigner-2.0.0-py3-none-any.whl
- Upload date:
- Size: 249.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
925fd4beb896427c2c9f59744bf8793e77388fe001928ed174a6f2e0cd7f5950
|
|
| MD5 |
0e10617daadd58b9ebdf2da76caee1f8
|
|
| BLAKE2b-256 |
363d3eb20daf1cb8ba848b38945f58e28f8cd4091e74a9cf25e5be1ba39ac05f
|