This project is a continuation of Ben Klammer's Mech 498 Thesis on Hybrid Modelling [2].
This program was designed to be a modular framework for a user to combine and use different models to simulate rocket engines. This decision to make the program modular will hopefully allow us to add more detail if/as required throughout the engine design cycle.
This has turned into a somewhat messy and disorganized working directory. That is ok, stuff is happening.
The modelling is especially focused on nitrous oxide as a self-pressurant.
This file takes input in the form of a python module file.
Ensure the terminal is in the directory this file is in: #python3 -m src <filename of a desired python module file without the .py>
also for using a virtual environment called venv activate with: source venv/bin/activate
The inputs folder contains the input files where the user can update the inputs the program uses.
The analysis_mode list in the input file selects which models are active.
The user interface isn't great, but if the user interface is good, are you really innovating?
This project is intended to run inside WSL (Windows Subsystem for Linux) with a Python virtual environment (venv). This is because I was only able to get the rocketCEA package to work here. Allegedly there have been some changes that make this install easier since then, but I have not tried them.
Setup Steps:
Install WSL
Microsoft Guide: https://learn.microsoft.com/en-us/windows/wsl/install
Recommended distro: Ubuntu 22.04
Install the fortran compiler (Ubuntu instructions): https://rocketcea.readthedocs.io/en/latest/installgfortran.html
Install Python (via pyenv)
Guide: https://github.com/pyenv/pyenv#installation
Tested with Python 3.11.x
Clone the repo
git clone <repo_url> cd
Create and activate a virtual environment python3 -m venv venv source venv/bin/activate
Install required libraries A requirements.txt file is included so everyone uses the same library versions.
pip install -r requirements.txt
To see what’s currently installed in your venv:
pip list
To update requirements.txt after adding a new library:
pip freeze > requirements.txt
Always create a new branch for edits (git checkout -b <branch_name>).
| Number | Source | Contribution / Use Description | Link to Source |
|---|---|---|---|
| [1] | NASA Chemical Equilibrium with Applications (CEA) | Used with the rocketcea library for combustion calculations | https://cearun.grc.nasa.gov/ |
| [2] | Ben Klammer, Hybrid Modelling: https://github.com/bklammer/HybridModeling | Translated equilibrium model used in this thesis into python and used it for analysis | https://github.com/bklammer/HybridModeling |
| [3] | Benjamin S. Waxman, Jonah E. Zimmerman, Brian J. Cantwell, Mass Flow Rate and Isolation Characteristics of Injectors for Use with Self-Pressurizing Oxidizers in Hybrid Rockets | Used to implement HEM and Dyer injector models, experimental data to validate Emerson + Mohammad injector model and understand nitrous physics. | https://ntrs.nasa.gov/api/citations/20190001326/downloads/20190001326.pdf |
| [4] | Numerical Modeling of Pressurization of a Propellant Tank | Referenced for setting up the pressurized fuel tank model, although my model is much more simple at this stage | https://www.nasa.gov/wp-content/uploads/2024/04/gfssp-tankpressurization-jpp2001.pdf?emrc=66201987b6c8c |
| [5] | Emerson Vargas Niño, Mohammad Reza H. Razavi, Design of Two-Phase Injectors Using Analytical and Numerical Methods with Application to Hybrid Rockets | Used to implement Emerson + Mohammad injector model | https://emersonvn.com/project/two_phase_injector/# |
| [6] | Tomasz Palacz, Jacek Cieslik. Experimental Study on the Mass Flow Rate of the Self Pressurizing Propellants in the Rocket Injector | Used experimental data to build a better understanding of model feed system | https://www.researchgate.net/publication/355773008_Experimental_Study_on_the_Mass_Flow_Rate_of_the_Self-Pressurizing_Propellants_in_the_Rocket_Injector ~ DOI:10.3390/aerospace8110317 |
| [7] | Zilliac, Gregory & Karabeyoglu, Arif. (2005). Modeling of Propellant Tank Pressurization. | Used to setup non-equilibrium tank model (1/2) | https://arc.aiaa.org/doi/10.2514/6.2005-3549 |
| [8] | Review and Evaluation of Models for Self-Pressurizing Propellant Tank Dynamics, Jonah E. Zimmerman, Benjamin S. Waxman, Brian Cantwell and Greg Zilliac | Used to setup non-equilibrium tank model (2/2) | https://arc.aiaa.org/doi/10.2514/6.2013-4045 |
| [9] | Michigan Aeronautical Science Association Liquid Bi-Propellant Rocket Team 37 Project Technical Report for the 2018 IREC | Script Test Case | https://www.soundingrocket.org/uploads/9/0/6/4/9064598/37_project_report.pdf |
| [10] | Technical report for Stanford SSI's rocket Project Olympus for the Spaceport America Cup Competition 2022 | Script Test Case | https://purl.stanford.edu/tx770vm3347 |
| [11] | Two-phase flow through pressure safety valves. Experimental investigation and model prediction, Gino Boccardi et al | explains omega model (part of [5]) | https://www.sciencedirect.com/science/article/pii/S0009250905003313 |
| [12] | Effects of Injector Design and Impingement Techniques on the Atomization of Self-Pressurizing Oxidizers, Benjamin S. Waxman, Brian J. Cantwell, Greg Zilliac | nitrous injector | https://arc.aiaa.org/doi/10.2514/6.2012-3906 |
| [13] | Rocket Propellant and Pressurization Systems Elliot Ring | used to help better understand pressurized tank models | very hard to find- out of print and pdf is hard to come by |
| [14] | NIST Chemical Webbook | Used to validate thermo properties from libraries | https://webbook.nist.gov/cgi/fluid.cgi?ID=C10024972&Action=Page |
| [15] | Thorade, M., Saadat, A. (2013): Partial derivatives of thermodynamic state properties for dynamic simulation. ‐ Environmental Earth Sciences, 70, 8, 3497‐3503 | for span wagner eos partial derivs | https://gfzpublic.gfz-potsdam.de/rest/items/item_247373_5/component/file_306833/content?download=true |
| [16] | Modeling Feed System Flow Physics for Self-Pressurizing Propellants | Understanding Metastable States | https://www.researchgate.net/publication/268482381_Modeling_Feed_System_Flow_Physics_for_Self-Pressurizing_Propellants |
| [17] | Span, Multiparameter Equations of State An Accurate Source of Thermodynamic Property Data | Understanding how to implement the Span Wagner EOS | https://www.researchgate.net/publication/40381676_Multiparameter_equations_of_state_an_accurate_source_of_thermodynamic_property_data_with_151_figures_and_tables |
| [18] | A Reliable and Useful Method to Determine the Saturation State from Helmholtz Energy Equations of State | Another source that helps explain the iterative algo to solve saturation properties w helmholtz eos | https://www.jstage.jst.go.jp/article/jtst/3/3/3_3_442/_pdf |
| [19] | Mass Flow Rate and Isolation Characteristics of Injectors for Use with Self-Pressurizing Oxidizers in Hybrid Rockets | Inj Design | https://ntrs.nasa.gov/api/citations/20190001326/downloads/20190001326.pdf |
| [20] | AIAA Liquid Rocket Thrust Chambers | ||
| [21] | Huzel + Huang | ||
| [22] | Ben Klammer 446 CC model | ||
| [23] | Implementing CEA calculations using Cantera - Kyle Niemeyer | Starting to outgrow rocketcea, looking into using cantera for cc model because it is more compatible with differential eqns | https://kyleniemeyer.github.io/rocket-propulsion/thermochemistry/cea_cantera.html |
| [24] | NASA SP-1311-2 | fixing paraffin definition in rocketcea. see PARAFFIN_DEFFINITION.md | https://shepherd.caltech.edu/EDL/PublicResources/sdt/refs/NASA-RP-1311-2.pdf |
| [25] | Computational model for performance prediction of a nitrous oxide / eicosane hybrid rocket engine (McGill) | hybrid cc model that integrates P_cc_dot | https://www.researchgate.net/publication/381880279_Computational_model_for_performance_prediction_of_a_nitrous_oxide_eicosane_hybrid_rocket_engine |
| [26] | Liquid Rocket Propulsion Instability | trying to understand instability for prelim/detail design | |
| [27] | AGARD Heat Transfer in Rocket Engines | Estimating Heat Transfer in Injector | https://apps.dtic.mil/sti/trecms/pdf/AD0733362.pdf |
| [28] | Liquid Rocket Engine Injectors | https://ntrs.nasa.gov/api/citations/19760023196/downloads/19760023196.pdf | |
| [29] | MIT Rocket Team learning topic 6: injector design | looking at another team's design process | https://wikis.mit.edu/confluence/display/RocketTeam/Topic+6%3A+Injector+Design |
| [30] | Experimental Investigation of Showerhead injectors on | ||
| Performance of a 1-kN Paraffin-Fueled Hybrid Rocket Motor | Sauter Mean Diameter | https://www.eucass.eu/component/docindexer/?task=download&id=5781 | |
| [31] | Barrowman Thesis | Drag model | http://www.rsandt.com/media/BarrowmanThesis.pdf |
| [32] | Rocketpy | flight model | https://rocketpy-team.github.io/ |
| [33] | Praxair Gas Compatibility | detail design | https://www.ualberta.ca/en/chemistry/media-library/safety/gasmaterialcompatability.pdf |
| [34] | Matheson Gas Compatibility | detail design | https://www.mathesongas.com/pdfs/litcenter/Materials-Compatibility-Guide.pdf |
| [35] | Air Liquid Nitrous Oxide Compatibility | detail design | https://encyclopedia.airliquide.com/nitrous-oxide#safety-compatibility |
| [36] | Phelps Chemical Resistance Chart - Elastomers | detail design | https://www.phelpsgaskets.com/useful-resources/chemical-resistance-chart-elastomers |
| [37] | ISM Chemical Resistance Chart | detail design | https://www.industrialspec.com/images/files/elastomers-chemical-compatibility-chart-from-ism.pdf?srsltid=AfmBOooIuDZ5ZhLMk3UH3gRNDFEGZi43S5dItMhhbmiVIOswkAI3QPRH |
| [38] | CRITERIA FOR OPTIMUM MIXTURE-RATIO DISTRIBUTION USING SEVERAL TYPES OF IMPINGING-STREAM INJECTOR ELEMENTS | Selecting injector momentum ratio | https://ntrs.nasa.gov/api/citations/20150018528/downloads/20150018528.pdf |
| [39] | Criteria for optimum propellant mixing in impinging-jet injection elements. | injector mixing and atomization | https://arc.aiaa.org/doi/10.2514/3.28966 |
| [40] | Experimental Study on Impinging Jet Atomization Using Doublet and Quadruplet Jets | injector mixing and atomization | https://www.mdpi.com/1996-1073/17/5/1200 |
| [41] | CP Lab Safety Nylon Compatibility | Nitrous oxide compatible w Nylon | https://www.calpaclab.com/nylon-chemical-compatibility-chart/?srsltid=AfmBOoobV4hrS8S_DslW-B069nUJ7ePIBEwmwBJIVsOg5pkNgHMnSD73 |
| [42] | Half Cat Rocketry Valves | Inj Test Bench | https://www.halfcatrocketry.com/fluid-system |
| [43] | FIN A COMPUTER PROGRAM FOR CALCULATING THE AERODYNAMIC CHARACTERISTICS OF FINS AT SUPERSONIC SPEEDS NTRS 19660021056 | fin wake drag coeff for barrowman model | https://ntrs.nasa.gov/citations/19660021056 |
| [44] | Collection of Zero-lift Drag Data on Bodies of Revolution from Free-flight Investigations | Nosecone drag coeff | https://ntrs.nasa.gov/citations/19630004995 |
| [45] | Launch Canada R+R | Comp rules | https://www.launchcanada.org/teams |
| [46] | Stanford SSI homebrew-rocket-sim | stealing their datcom wrapper | https://github.com/stanford-ssi/homebrew-rocket-sim/tree/master |
| [47] | Digital DATCOM manual |
*** this is a high level summary, make sure to check materials against temperature resistance and other factors.
| Metals | Compatible? | Source | Notes: |
|---|---|---|---|
| Aluminum | yes | [35], | |
| Brass | yes | [35], | [35] Notes risk of stress corrosion cracking under certain conditions. |
| Stainless Steel | yes | [35] | |
| Ferritic Steel | yes | [35] |
| Plastics | Compatible? | Source | Notes: |
|---|---|---|---|
| PVC | BAD NO | [35] | |
| Polypropylene | BAD NO | [35] | |
| Nylon | Yes | [41] |
| Elastomers | Compatible? | Source | Notes: |
|---|---|---|---|
| Buna-N | Conditionally, some reported yes and no | [33]no, [34]yes, [36]yes | Seems like swelling issues and prone to decomposition in certain environments |
| Teflon (PTFE) | yes | [36] | |
| Viton | yes | [36] |
| Lubricants | Compatible? | Source | Notes: |
|---|---|---|---|
| Hydrocarbon based | BAD NO | [35] | |
| Fluorocarbon based | yes | [35] |
| Elastomers | Compatible? | Source | Notes: |
|---|---|---|---|
| Buna-N | poor | [37] | |
| Viton | yes | [37] |
Ryan Wright, From Calgary, Alberta, Canada
&@&. @@ /@ %@@@@@@, @& @% %( (@% @@@ @ ,&@@@@@@@@@@@. @@& @# *@@@@@@& @/ @@, ,&, /@@@. @@@@@% @ &@@@@@@. @@% #@@@@@ @..@* @@ @@ *@@@@@ @, (@/ &@, @@@@@@ @@. *@@@@@, #@# @@@@@@ (@# #@@ @ @@. @@@@@@ .&@@@@@@ @@ @ @/ /@& #@@@@@@. #@ &@ @ @ @@/ #@, .@@@@@@@. @@ @@@ @ @. @@% @@@% @ @@@@@@@@@ % @ , @%@@@* #@@@ /# %@@@@@@@@@. @@@@/ /% @@@@@@@@@@@@, (@@@@@@ @ *@. *@@@@@@@@@@@@@@@@@@@@@@@@@ @/ .@@ ,&@@@@@@@@@@@@@@@ @ @@, @@%