Skip to main content

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:

  1. Mean-line thermodynamic analysis — stage-by-stage temperature, pressure, and velocity calculations
  2. Blade flow analysis — spanwise velocity distributions via free-vortex theory, metal angle computation with empirical deviation correlations
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

turbodesigner-2.0.0.tar.gz (220.1 kB view details)

Uploaded Source

Built Distribution

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

turbodesigner-2.0.0-py3-none-any.whl (249.2 kB view details)

Uploaded Python 3

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

Hashes for turbodesigner-2.0.0.tar.gz
Algorithm Hash digest
SHA256 fbeb224abfafc4db99c8258fb869d919e3ee8a4af6094a85c1d97856e587a412
MD5 f667a2eaaf7f38f4976113afc1400352
BLAKE2b-256 c5380cdbde82bb56c8ccf3e15c179e29110dcd70bacb471607f16c19f22a861a

See more details on using hashes here.

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

Hashes for turbodesigner-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 925fd4beb896427c2c9f59744bf8793e77388fe001928ed174a6f2e0cd7f5950
MD5 0e10617daadd58b9ebdf2da76caee1f8
BLAKE2b-256 363d3eb20daf1cb8ba848b38945f58e28f8cd4091e74a9cf25e5be1ba39ac05f

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