Machwave is a Python library for chemical propulsion simulation. The library makes it easy to model solid or biliquid rocket engines, analyse performance and integrate the results into trajectory simulations.
Getting Started
Installation
Install Machwave using pip:
pip install machwave
The core install depends only on NumPy, SciPy and fluids. It runs a complete solid rocket motor simulation with BATES grains, any of the eight bundled solid propellant formulations and the full Solid Performance Program 1975 nozzle loss set. Those formulations carry pre-computed thermochemical properties, so no thermochemistry solver is needed to burn them.
Everything heavier is an optional extra:
| Extra | Unlocks |
|---|---|
cea |
Thermochemistry computed from propellant composition, needed for biliquid engines and for custom solid mixtures |
liquid |
Propellant tanks and the injector's homogeneous-equilibrium mass flux |
fmm |
Every grain geometry other than BATES, including grains defined by an STL mesh |
plots |
The built-in figures and the Monte Carlo plots |
rocketpy |
The RocketPy adapter for trajectory simulation |
all |
All of the above |
Install one or several by name, for example:
pip install machwave[fmm,plots]
Using a feature without its extra raises an ImportError naming the install command
that provides it.
macOS prerequisite for the cea extra: gfortran
Only needed if you install the cea extra, directly or through all.
rocketcea does not publish macOS wheels on
PyPI. On macOS, pip therefore builds rocketcea from source and needs a Fortran
compiler. Homebrew's gcc formula installs only versioned binaries (e.g.
gfortran-15), so an unversioned gfortran symlink must be added to PATH
beforehand:
brew install gcc
ln -sf "$(ls "$(brew --prefix)"/bin/gfortran-* | sort -V | tail -n 1)" "$(brew --prefix)/bin/gfortran"
Linux and Windows users do not need this step — rocketcea ships prebuilt wheels for those platforms.
Documentation
The full documentation is available at felipebogaertsm.github.io/machwave.
Development Setup
If you're contributing to Machwave, you'll need uv for dependency management.
Installing uv
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
For more details, visit the official uv installation guide.
Clone and Install
Clone the repository and install dependencies:
git clone https://github.com/felipebogaertsm/machwave.git
cd machwave
make install-dev
make install-dev installs every extra alongside the development tooling, which is
what the test suite and the type checker need. make install-dev-core installs the
tooling without the extras, the environment make test-core runs against.
Publishing a New Release
-
Create a release on GitHub with a tag matching
vX.Y.Z(e.g.v1.2.0). The version is derived automatically from the git tag. -
The publish workflow builds the package and publishes it to PyPI via trusted publishing (OIDC).
Metadata
Release files for machwave 0.10.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| machwave-0.10.2.tar.gz | 624.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| machwave-0.10.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 791.3 kB
Release files / machwave-0.10.2.tar.gz
| Download URL | machwave-0.10.2.tar.gz |
|---|---|
| Size | 624.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df2b8746396ae157758ed1b7aede1bc0498df2c167a78de2f6d3484c20c86360
|
|
BLAKE2b-256 checksum How to use checksums |
1dbdecea5913586c5700469553748eac099ba26af07ee8319c45053a84e0bca9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / machwave-0.10.2-py3-none-any.whl
| Download URL | machwave-0.10.2-py3-none-any.whl |
|---|---|
| Size | 167.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae73516f0b6e8e9a257ad73a9a5cf9dd7d7e673f6536470980555a8ebdbf6d6c
|
|
BLAKE2b-256 checksum How to use checksums |
76d0e91a8b4982d77f66d73a6dfdec51067dac3fe83d5d634adfebb3107cfa5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log