Skip to content
An open-source internal ballistics simulator for rocket motor experimenters
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
motorlib Relinted uilib and motorlib Jul 2, 2019
resources Added mac spec file Apr 29, 2019
uilib Grain selector persists choices between sims if the number of grains … Jul 9, 2019
.gitignore Remove autogenerated files and fix icons Apr 29, 2019
.pylintrc Added pylintrc Jun 12, 2019
LICENSE Fix building ui and add MANIFEST file for sdist Apr 28, 2019 Updated readme May 29, 2019 Files loaded from command line args are shown in window title properly Jun 30, 2019
macOneFile.spec Added mac spec file Apr 29, 2019
pyuic.json Add pyqt-distutils to dependencies and write basic Apr 27, 2019
requirements.txt Added new grain type that usesa core shape loaded from a DXF file and… May 18, 2019 Update README and Apr 28, 2019 Fixed issue with uneven grain burnout, updated default motor, and cha… Feb 22, 2019
winMultiFile.spec Added windows build .spec files Apr 25, 2019



openMotor is an open-source internal ballistics simulator for rocket motor experimenters. The software produces estimates of a rocket motor's chamber pressure and thrust based on input such as propellant properties and grain geometry. It uses the Fast Marching Method to determine how a propellant grain regresses, which allows the use of arbitrary core geometries.

Current Features:

  • Metric and imperial units
  • Support for common grain geometries such as BATES, Finocyl, Star and more
  • Loading custom grain geometry from DXF files
  • A propellant editor that allows the user to enter the properties of as many propellants as they wish
  • The grain editor displays how a grain will regress to cut down on the guesswork involved in tweaking geometry
  • ENG file exporting
  • Burnsim importing and exporting
  • A UI that supports saving and loading designs along with undo and redo.

Planned Features:

  • Erosivity simulation
  • Detailed output of every calculated parameter at any time and position along the motor

The calculations involved were sourced from Rocket Propulsion Elements by George Sutton and from Richard Nakka's website (


The easiest way to use openMotor is to navigate to the 'releases' tab above and download latest version for your system. From there, just unzip the file and run it.

Building from Source

The program is currently being developed using python 3.6, but it also works with 3.7. The dependencies are outlined in requirements.txt, the main ones include PyQt5, matplot, numpy, scipy, scikit-fmm, and scikit-image. Because the PyQt5 bindings are used for the GUI, Qt5 must also be installed.

The easiest way to build/run from source code is to clone the repository and install the required dependencies into a virtual enviornment:

$ git clone
$ cd openMotor
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt

UI Files:

openMotor uses Qt Designer to design the GUI, which generates .ui files describing the user interface. We use pyuic5 to compile these files into Python source code which is then included in the program as ordinary source code.

Because these autogenerated files are not committed to the source tree, you must build them by running:

$ python build_ui

Note that if you make changes to the UI using the .ui forms, you must re-build using the same command.

Once everything is set up, you can start openMotor by running: python

Note: On some systems, Python 2 and 3 are installed simultaneously, so you may have to specify which version to run when creating the venv. After the venv has been activated, the programs python and pip are aliased to the python runtime specific for your venv, so use those (instead of pip3 and python3, on e.g. Debian Linux)


openMotor is released under the GNU GPL v3 license. The source code is distributed so you can build cool stuff with it, and so you don't have to trust the calculations are being done correctly and can check for yourself if you doubt the results.


As openMotor is open source, one of the goals of the project is to have as many eyes on the code as possible. I believe this is the best way to avoid bugs and also the easiest way to get new features added to the software. If you have ideas on how to improve the program or find an error, please open an issue ticket for discussion or file a pull request if you would do it yourself.

You can’t perform that action at this time.