{"id":15138257,"url":"https://github.com/reilleya/openMotor","last_synced_at":"2025-09-29T06:31:30.806Z","repository":{"id":44389982,"uuid":"163054554","full_name":"reilleya/openMotor","owner":"reilleya","description":"An open-source internal ballistics simulator for rocket motor experimenters","archived":false,"fork":false,"pushed_at":"2025-01-11T04:48:17.000Z","size":637,"stargazers_count":414,"open_issues_count":45,"forks_count":83,"subscribers_count":30,"default_branch":"staging","last_synced_at":"2025-01-18T17:07:31.366Z","etag":null,"topics":["rocket","rocketry","rockets","science","solid-rocket-motor"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reilleya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-25T06:46:33.000Z","updated_at":"2025-01-16T10:56:49.000Z","dependencies_parsed_at":"2024-08-19T17:44:35.905Z","dependency_job_id":"57f3b398-9bad-432f-bdd2-b885b14a4f4f","html_url":"https://github.com/reilleya/openMotor","commit_stats":{"total_commits":281,"total_committers":11,"mean_commits":"25.545454545454547","dds":0.4661921708185054,"last_synced_commit":"0cd17e6646b63b1a5a26c22ac87bfd7e8a78e3a7"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reilleya%2FopenMotor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reilleya%2FopenMotor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reilleya%2FopenMotor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reilleya%2FopenMotor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reilleya","download_url":"https://codeload.github.com/reilleya/openMotor/tar.gz/refs/heads/staging","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234597573,"owners_count":18857980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rocket","rocketry","rockets","science","solid-rocket-motor"],"created_at":"2024-09-26T07:21:28.225Z","updated_at":"2025-09-29T06:31:30.801Z","avatar_url":"https://github.com/reilleya.png","language":"Python","funding_links":[],"categories":["Open Source Projects"],"sub_categories":["Software"],"readme":"openMotor\n==========\n![Logo](./resources/oMIconCycles.png)\n\nOverview\n--------\nopenMotor is an open-source internal ballistics simulator for rocket motor experimenters. The software estimates a rocket motor's chamber pressure and thrust based on propellant properties, grain geometry, and nozzle specifications. It uses the Fast Marching Method to determine how a propellant grain regresses, which allows the use of arbitrary core geometries.\n\nCurrent Features:\n* Metric and imperial units\n* Support for common grain geometries such as BATES, Finocyl, Star and more\n* Loading custom grain geometry from DXF files\n* A propellant editor that allows the user to enter the properties of as many propellants as they wish\n* The grain editor displays how a grain will regress to cut down on the guesswork involved in tweaking geometry\n* ENG file exporting\n* Burnsim importing and exporting\n* A UI that supports saving and loading designs along with undo and redo\n* Tools for easily tweaking and optimizing your design \n\nThe calculations involved were sourced from Rocket Propulsion Elements by George Sutton and from [Richard Nakka's website](https://www.nakka-rocketry.net/rtheory.html).\n\n![Screenshot](https://reilley.net/openMotor/screenshot.png)\n\nDownload\n-------\nYou can download the latest version for your system [here](https://github.com/reilleya/openMotor/releases/latest). From there, just unzip the file and run it. Alternatively, you can run it from source code to get the latest features. \n\nBuilding from Source\n--------------------\nThe program is currently being developed using python 3.10. The dependencies are outlined in `requirements.txt`, the main ones include `PyQt6`, `matplot`, `numpy`, `scipy`, `scikit-fmm`, and `scikit-image`. Because the PyQt6 bindings are used for the GUI, Qt6 must also be installed.\n\nThe easiest way to build/run from source code is to clone the repository and install the required dependencies into a virtual enviornment:\n```\n$ git clone https://github.com/reilleya/openMotor\n$ cd openMotor\n$ python3 -m venv .venv\n$ source .venv/bin/activate\n$ pip install -r requirements.txt\n```\nIf you are using a version of python that does not have a prebuilt version of one of the dependencies, the `pip` command above might fail with an error like:\n```\nFailed building wheel for scikit-fmm\nskfmm/fmm.cpp:4:10: fatal error: Python.h: No such file or directory\n```\nThe fix is to install `python3-dev` or the equivalent with your system package manager.\n\n#### UI Files:\nopenMotor uses Qt Designer to lay out the GUI, which generates `.ui` files describing the user interface. \nWe use `pyuic6` to compile these files into Python source code which is then included in the program as ordinary source code.\n\nBecause these autogenerated files are not committed to the source tree, you must build them by running:\n```\n$ python setup.py build_ui\n```\nNote that if you make changes to the UI using the `.ui` forms, you must re-build using the same command.\n\n#### Cython Files:\nto speed up some more computationally expensive parts of the codebase, openMotor uses the Cython programming language to run calculations in C.\n\nbecause the Cyphon code must be compiled separately for each system, you must build the library by running:\n```\n$ python setup.py build_ext --inplace\n```\nNote that if you make changes to any of the `.pyx` files, you must re-compile the Cython library using the same command.\n\n#### Run the Application:\n\nOnce everything is set up, you can start openMotor by running: `python main.py`\n\n###### 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)\n\nData Files\n-----------\nopenMotor uses [YAML](https://en.wikipedia.org/wiki/YAML) for data storage. Motor files have the extension `.ric` to differentiate them, but internally they are YAML and can be edited in a text editor if desired. The recommended MIME type for these files is `application/vnd.openmotor+yaml`.\n\nThe remaining user information, like propellant data and preferences, is stored in plain YAML files in `\u003cAppData\u003e\\Local\\openMotor` on Windows, `/Users/\u003cusername\u003e/Library/Application Support/openMotor` on Mac OS, and `/home/\u003cusername\u003e/.local/share/openMotor` on Linux.\n\nLicense\n-------\nopenMotor 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. Check for yourself (and file an issue ticket!) if you doubt the results.\n\nContributing\n------------\nAs 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 possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freilleya%2FopenMotor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freilleya%2FopenMotor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freilleya%2FopenMotor/lists"}