EnSim
EnSim is an open-source desktop application and Python package for liquid-rocket propulsion analysis and six-degree-of-freedom flight simulation. It is intended for preliminary design, reproducible trade studies and engineering education.
What EnSim calculates
- ideal-gas chemical equilibrium by constrained Gibbs-energy minimization;
- adiabatic chamber temperature from coupled equilibrium and enthalpy balance;
- frozen-composition, calorically perfect nozzle performance;
- planar minimum-length method-of-characteristics nozzle contours;
- preliminary regenerative-cooling heat transfer and pressure loss;
- acoustic chamber-mode frequencies, with stability classification only when growth and damping rates are supplied;
- local-frame and WGS-84/J2 six-degree-of-freedom trajectories;
- staging, dispersion analysis, reduced-order optimization and uncertainty propagation.
The interface uses SI units. Long-running engine, flight and uncertainty jobs run outside the GUI event loop. Project files remain local; the application does not require a network connection.
Scientific status
EnSim distinguishes verification from validation:
- thermodynamic polynomial evaluation, conservation equations and nozzle relations have analytical or invariant tests;
- two gas-phase HP equilibrium cases are compared with results produced by the official NASA CEA 3.3.2 Python distribution;
- dragless WGS-84 translation and torque-free rotation are compared with selected public NASA NESC check-case histories;
- cooling correlations are checked against their equations and physical trends, but are not calibrated to a particular engine hot-fire data set;
- the general aerodynamic flight model has not been validated against telemetry.
- axial flight drag uses an explicit user-supplied coefficient rather than an undocumented synthetic Mach curve.
See validation, model limitations and theory before using results in a design decision. EnSim is not a certification, range-safety or hardware-release tool.
Installation
Desktop downloads
Self-contained downloads that do not require a separate Python installation are available on the GitHub Releases page:
- Windows x64 executable (
.exe); - Linux x86-64 executable archive (
.tar.gz); - macOS disk images (
.dmg) for Apple Silicon and Intel.
Each desktop file has a matching .sha256 checksum. The current Windows and
macOS builds are not code-signed, so the operating system may ask for explicit
confirmation before the first launch.
Python package
Python 3.10 or newer is required.
python -m pip install ensim
ensim
For a source checkout:
git clone https://github.com/SpaceEngineerSS/EnSim.git
cd EnSim
python -m venv .venv
python -m pip install -e ".[dev,docs]"
python -m pytest
python main.py
The command ensim --test performs a short installation and coupled-physics
smoke test. It is not a substitute for the complete pytest suite.
Minimal Python example
from ensim.core.chemistry import CombustionProblem
from ensim.core.propulsion import NozzleConditions, calculate_performance
from ensim.utils.nasa_parser import load_default_database
database = load_default_database()
problem = CombustionProblem(database)
problem.add_fuel("H2", moles=2.0, temperature=298.15)
problem.add_oxidizer("O2", moles=1.0, temperature=298.15)
equilibrium = problem.solve(pressure=6.89e6)
nozzle = NozzleConditions(
area_ratio=40.0,
chamber_pressure=6.89e6,
ambient_pressure=0.0,
)
performance = calculate_performance(
T_chamber=equilibrium.temperature,
P_chamber=nozzle.chamber_pressure,
gamma=equilibrium.gamma,
mean_molecular_weight=equilibrium.mean_molecular_weight,
nozzle=nozzle,
)
print(equilibrium.temperature, performance.isp)
mean_molecular_weight is expressed in g/mol; pressures are Pa and
temperatures are K.
Documentation
- Architecture
- Theory and equations
- Validation evidence
- Flight verification
- Cooling model
- Combustion-instability model
- Uncertainty quantification
- API overview
Development
python -m ruff check src tests
python -m pytest
python -m build
python -m twine check dist/*
Bug reports and scientific challenges are welcome through the issue tracker. A scientific issue should include units, full input data, the reference source and enough information to reproduce the comparison.
Primary references
- Gordon, S. and McBride, B. J., Computer Program for Calculation of Complex Chemical Equilibrium Compositions and Applications, Part I: Analysis, NASA RP-1311, 1994.
- McBride, B. J., Zehe, M. J. and Gordon, S., NASA Glenn Coefficients for Calculating Thermodynamic Properties of Individual Species, NASA/TP-2002-211556, 2002.
- Jackson, E. B., Murri, D. G. and Shelton, R. O., Check-Cases for Verification of 6-Degree-of-Freedom Flight Vehicle Simulations, Volume I, NASA/TM-2015-218675, 2015.
- Bartz, D. R., A Simple Equation for Rapid Estimation of Rocket Nozzle Convective Heat Transfer Coefficients, Jet Propulsion, 1957.
- Gordon, S. and McBride, B. J., Computer Program for Calculation of Complex Chemical Equilibrium Compositions and Applications, Part II: Users Manual and Program Description, NASA RP-1311, 1996.
License and citation
EnSim is released under the MIT License. Citation metadata is available in CITATION.cff.
Metadata
Release files for ensim 3.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ensim-3.0.1.tar.gz | 762.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ensim-3.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / ensim-3.0.1.tar.gz
| Download URL | ensim-3.0.1.tar.gz |
|---|---|
| Size | 762.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8846c9fd2ecfdc05d3bb7f176cab2b7dbd27d7d605f5fa36aef5fbbabfbc5d73
|
|
BLAKE2b-256 checksum How to use checksums |
cfbb9b498690c2928207064af10732ee45696ba94aa03e5020ea2c8f202d0997
|
| 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 Aug 20, 2026.
Transparency logRelease files / ensim-3.0.1-py3-none-any.whl
| Download URL | ensim-3.0.1-py3-none-any.whl |
|---|---|
| Size | 780.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b0dbf8d15c1af3881e4cca65935a2463ff0b22dfcb53de7c5f1322b9757723d8
|
|
BLAKE2b-256 checksum How to use checksums |
fc3aaeed50e48e6120291aa2cad506aa4d8af50d35658154c3fd0e9a57284080
|
| 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 Aug 20, 2026.
Transparency log