pyskyfire 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. pyskyfire-0.1.2/.gitignore +92 -0
  2. pyskyfire-0.1.2/LICENSE +21 -0
  3. pyskyfire-0.1.2/PKG-INFO +125 -0
  4. pyskyfire-0.1.2/README.md +79 -0
  5. pyskyfire-0.1.2/pyproject.toml +45 -0
  6. pyskyfire-0.1.2/src/pyskyfire/__init__.py +28 -0
  7. pyskyfire-0.1.2/src/pyskyfire/common/__init__.py +5 -0
  8. pyskyfire-0.1.2/src/pyskyfire/common/blocks.py +912 -0
  9. pyskyfire-0.1.2/src/pyskyfire/common/engine_network.py +121 -0
  10. pyskyfire-0.1.2/src/pyskyfire/common/material.py +366 -0
  11. pyskyfire-0.1.2/src/pyskyfire/common/plot.py +650 -0
  12. pyskyfire-0.1.2/src/pyskyfire/common/results.py +56 -0
  13. pyskyfire-0.1.2/src/pyskyfire/pump/__init__.py +11 -0
  14. pyskyfire-0.1.2/src/pyskyfire/pump/constants.py +2 -0
  15. pyskyfire-0.1.2/src/pyskyfire/pump/impeller.py +327 -0
  16. pyskyfire-0.1.2/src/pyskyfire/pump/plot.py +218 -0
  17. pyskyfire-0.1.2/src/pyskyfire/pump/pump_cli.py +53 -0
  18. pyskyfire-0.1.2/src/pyskyfire/pump/utils.py +55 -0
  19. pyskyfire-0.1.2/src/pyskyfire/regen/__init__.py +23 -0
  20. pyskyfire-0.1.2/src/pyskyfire/regen/channel_height.py +70 -0
  21. pyskyfire-0.1.2/src/pyskyfire/regen/contour_2.py +722 -0
  22. pyskyfire-0.1.2/src/pyskyfire/regen/cross_section.py +692 -0
  23. pyskyfire-0.1.2/src/pyskyfire/regen/data/theta_e.json +310 -0
  24. pyskyfire-0.1.2/src/pyskyfire/regen/data/theta_n.json +305 -0
  25. pyskyfire-0.1.2/src/pyskyfire/regen/physics.py +85 -0
  26. pyskyfire-0.1.2/src/pyskyfire/regen/plot.py +980 -0
  27. pyskyfire-0.1.2/src/pyskyfire/regen/solver.py +553 -0
  28. pyskyfire-0.1.2/src/pyskyfire/regen/thrust_chamber.py +1098 -0
  29. pyskyfire-0.1.2/src/pyskyfire/skycea/__init__.py +3 -0
  30. pyskyfire-0.1.2/src/pyskyfire/skycea/combustion_transport.py +1485 -0
  31. pyskyfire-0.1.2/src/pyskyfire/skycea/coolant_transport.py +161 -0
  32. pyskyfire-0.1.2/src/pyskyfire/skycea/plot.py +80 -0
  33. pyskyfire-0.1.2/src/pyskyfire/turbine/__init__.py +3 -0
  34. pyskyfire-0.1.2/src/pyskyfire/turbine/temporary_file.py +0 -0
@@ -0,0 +1,92 @@
1
+ # ------------------------------------------------------------------------------
2
+ # PYTHON / GENERAL IGNORES
3
+ # ------------------------------------------------------------------------------
4
+
5
+ # Byte-compiled / optimized / DLL files
6
+ __pycache__/
7
+ *.py[cod]
8
+ *$py.class
9
+
10
+ # Distribution / packaging
11
+ *.egg-info/
12
+ build/
13
+ dist/
14
+ wheelhouse/
15
+ *.egg
16
+ .eggs/
17
+ *.manifest
18
+ *.spec
19
+
20
+ # Installer logs
21
+ pip-log.txt
22
+ pip-delete-this-directory.txt
23
+
24
+ # Unit test / coverage reports
25
+ htmlcov/
26
+ .tox/
27
+ .coverage
28
+ coverage.xml
29
+ *.cover
30
+ *.py,cover
31
+ .cache
32
+ nosetests.xml
33
+ pytest_cache/
34
+ junit-xml/
35
+
36
+ # Virtual environments
37
+ venv/
38
+ .venv/
39
+ ENV/
40
+ env/
41
+ venv.bak/
42
+ *venv*/
43
+
44
+ # Environment / Python tool configs
45
+ .env
46
+ .venv/
47
+ pythonenv.yaml
48
+
49
+ # ------------------------------------------------------------------------------
50
+ # EDITOR / OS / MISCELLANEOUS
51
+ # ------------------------------------------------------------------------------
52
+
53
+ # macOS
54
+ .DS_Store
55
+
56
+ # Windows
57
+ Thumbs.db
58
+
59
+ # VSCode / IDE settings (if you don't want to track them)
60
+ .vscode/
61
+ .idea/
62
+
63
+ # ------------------------------------------------------------------------------
64
+ # OUTPUT FILES
65
+ # ------------------------------------------------------------------------------
66
+ *.png
67
+ *.jpg
68
+ *.log
69
+ /lib/
70
+
71
+ # ------------------------------------------------------------------------------
72
+ # PROJECT-SPECIFIC / OPTIONAL
73
+ # ------------------------------------------------------------------------------
74
+
75
+ # Temporary or backup files
76
+ *.bak
77
+ *.swp
78
+ *.tmp
79
+ *~
80
+ *.dll
81
+
82
+ # If you don't want to track your dill folder or any generated data, uncomment:
83
+ # dills/
84
+
85
+ # If you create large simulation outputs or logs in validation/ or results/,
86
+ # you can ignore them here:
87
+ # validation/logs/
88
+ # results_comparison/*.log
89
+
90
+ # ------------------------------------------------------------------------------
91
+ # END
92
+ # ------------------------------------------------------------------------------
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ask-hovik
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,125 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyskyfire
3
+ Version: 0.1.2
4
+ Summary: A Python library for rocket engine simulation and design.
5
+ Project-URL: Homepage, https://github.com/ask-hovik/pyskyfire
6
+ Project-URL: Issues, https://github.com/ask-hovik/pyskyfire/issues
7
+ Author-email: Ask Haugerud Hovik <ask.hovik@gmail.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 ask-hovik
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ License-File: LICENSE
30
+ Classifier: License :: OSI Approved :: MIT License
31
+ Classifier: Operating System :: OS Independent
32
+ Classifier: Programming Language :: Python :: 3
33
+ Requires-Dist: cantera>=3.1
34
+ Requires-Dist: cloudpickle>=3.1
35
+ Requires-Dist: coolprop>=7.0
36
+ Requires-Dist: matplotlib>=3.10
37
+ Requires-Dist: numpy>=2.3
38
+ Requires-Dist: pandas>=2.3
39
+ Requires-Dist: pyside6>=6.9
40
+ Requires-Dist: pyvis>=0.3
41
+ Requires-Dist: pywebview>=6.0
42
+ Requires-Dist: rocketcea>=1.2
43
+ Requires-Dist: scipy>=1.16
44
+ Requires-Dist: vispy>=0.15
45
+ Description-Content-Type: text/markdown
46
+
47
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/pyskyfire_header.png)
48
+
49
+ Pyskyfire is a simulation framework for regeneratively cooled, liquid propellant rocket engines.
50
+
51
+ ------------------
52
+ [![License](https://img.shields.io/github/license/ask-hovik/pyskyfire.svg)](https://github.com/ask-hovik/pyskyfire/blob/main/LICENSE)
53
+
54
+ # Description
55
+ Pyskyfire is an open-source python package, meant as an alternative to RPA, NPSS, ESPSS and other regenerative cooling and engine cycle analysis software. It is however a work in progress, and no responsibility for the results of this program can be provided.
56
+
57
+ The first iteration of pyskyfire was written as part of the master thesis of Ask Haugerud Hovik, which can be read [here](https://drive.google.com/file/d/1sZJmt-8UWtUChprji67LmnazS3Ei_K3a/view). The motivation to start writing the software came purely from a curiosity standpoint and from an innate wish to spread the understanding of rocket engines and propel us further into the space age. Please use this software responsibly and make sure you, your team memebers and everyone else stay safe in your rocket engine endeavours.
58
+
59
+ # Program Capabilities
60
+ Features of pyskyfire include thrust chamber chemical equilibrium analysis, multi-pass regenerative cooling, thrust chamber contour generation, pump and turbine utilities, and full rocket engine cycle analysis.
61
+
62
+ ## Regenerative Cooling
63
+ A cornerstone of pyskyfire is its built-in regenerative cooling solver. The solver supports multi pass regenerative cooling with multiple propellants. Here demonstrated is the one-and-a-half pass cooling arrangement of the venerable RL10 engine.
64
+
65
+ **Coolant Pressure**
66
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_coolant_static_pressure.png)
67
+ **Coolant Temperature**
68
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_coolant_temperature.png)
69
+ **Wall Heat Flux**
70
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_heat_flux.png)
71
+ **Wall Temperature**
72
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_wall_temperature.png)
73
+
74
+ In addition, multiple propellants can be used as coolants in the same thrust chamber, and multiple wall layers can be added, simulating such things as thermal barrier coatings.
75
+
76
+ **Multi-Pass, Thermal Barrier Coating Example**
77
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_engine_wall_temperatures.png)
78
+ **Estimate of Temperature Profile**
79
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/temperature_profile_chamber.png)
80
+
81
+ ## Contour Generation
82
+ Pyskyfire can generate optimal contours using either a "Rao" nozzle or a conical nozzle.
83
+
84
+ **Bell Nozzle Example**
85
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_engine_contour.png)
86
+
87
+ ## Aerothermodynamic Properties
88
+ The aerothermodynamic properties of the hot gas as it moves through the nozzle is predicted by the program, either using Cantera or NASA CEA.
89
+
90
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/skycea_comparison_1.png)
91
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/skycea_comparison_2.png)
92
+
93
+ ## Full Cycle Analysis
94
+ By combining built-in modules for pumps and turbines, the whole engine cycle thermodynamic state can be predicted. Here compared with the RL10 cycle.
95
+
96
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/fuel_side_cycle_vali_condensed.png)
97
+
98
+ The whole engine can be represented in an engine network, and through the use of PT-diagrams.
99
+
100
+ **Engine Network Example**
101
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/engine_network_transp.png)
102
+ **Methane-Side Path**
103
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_PT.png)
104
+ **Oxygen-Side Path**
105
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/oxygen_PT.png)
106
+
107
+ ## Engine Visualisation
108
+ The engine cooling channels can be visualised in 3D, with interlacing between different cooling loops, and inner and outer wall of each cooling channel rendered. Cross sections through any plane of this render can also be made. Here, the RL10 with its semicircular cooling channels is shown
109
+
110
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_visualisation_transp.png
111
+ )
112
+
113
+ # Installation
114
+ The package is available on PyPI, and is simply installed with
115
+
116
+ ```
117
+ pip install pyskyfire
118
+ ```
119
+
120
+ # Contributions
121
+
122
+ The pyskyfire project started as my master thesis, but it is now out in the open. I would love for other students and professionals to contribute to pyskyfire. If you are interested in propulsion, is great at coding, and want to use simulation as a path for learning about rocket engines, please reach out.
123
+
124
+ # Getting Started
125
+ The documentation and examples for pyskyfire is still under construction. Currently, the best way to learn how to use the package is to look in the `examples/` and `validation/` folders and study the different cases. In particular, `validation/regen_vali/RL10_simulation/RL10_simulation_cantera.py` is a good place to start.
@@ -0,0 +1,79 @@
1
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/pyskyfire_header.png)
2
+
3
+ Pyskyfire is a simulation framework for regeneratively cooled, liquid propellant rocket engines.
4
+
5
+ ------------------
6
+ [![License](https://img.shields.io/github/license/ask-hovik/pyskyfire.svg)](https://github.com/ask-hovik/pyskyfire/blob/main/LICENSE)
7
+
8
+ # Description
9
+ Pyskyfire is an open-source python package, meant as an alternative to RPA, NPSS, ESPSS and other regenerative cooling and engine cycle analysis software. It is however a work in progress, and no responsibility for the results of this program can be provided.
10
+
11
+ The first iteration of pyskyfire was written as part of the master thesis of Ask Haugerud Hovik, which can be read [here](https://drive.google.com/file/d/1sZJmt-8UWtUChprji67LmnazS3Ei_K3a/view). The motivation to start writing the software came purely from a curiosity standpoint and from an innate wish to spread the understanding of rocket engines and propel us further into the space age. Please use this software responsibly and make sure you, your team memebers and everyone else stay safe in your rocket engine endeavours.
12
+
13
+ # Program Capabilities
14
+ Features of pyskyfire include thrust chamber chemical equilibrium analysis, multi-pass regenerative cooling, thrust chamber contour generation, pump and turbine utilities, and full rocket engine cycle analysis.
15
+
16
+ ## Regenerative Cooling
17
+ A cornerstone of pyskyfire is its built-in regenerative cooling solver. The solver supports multi pass regenerative cooling with multiple propellants. Here demonstrated is the one-and-a-half pass cooling arrangement of the venerable RL10 engine.
18
+
19
+ **Coolant Pressure**
20
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_coolant_static_pressure.png)
21
+ **Coolant Temperature**
22
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_coolant_temperature.png)
23
+ **Wall Heat Flux**
24
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_heat_flux.png)
25
+ **Wall Temperature**
26
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_wall_temperature.png)
27
+
28
+ In addition, multiple propellants can be used as coolants in the same thrust chamber, and multiple wall layers can be added, simulating such things as thermal barrier coatings.
29
+
30
+ **Multi-Pass, Thermal Barrier Coating Example**
31
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_engine_wall_temperatures.png)
32
+ **Estimate of Temperature Profile**
33
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/temperature_profile_chamber.png)
34
+
35
+ ## Contour Generation
36
+ Pyskyfire can generate optimal contours using either a "Rao" nozzle or a conical nozzle.
37
+
38
+ **Bell Nozzle Example**
39
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_engine_contour.png)
40
+
41
+ ## Aerothermodynamic Properties
42
+ The aerothermodynamic properties of the hot gas as it moves through the nozzle is predicted by the program, either using Cantera or NASA CEA.
43
+
44
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/skycea_comparison_1.png)
45
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/skycea_comparison_2.png)
46
+
47
+ ## Full Cycle Analysis
48
+ By combining built-in modules for pumps and turbines, the whole engine cycle thermodynamic state can be predicted. Here compared with the RL10 cycle.
49
+
50
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/fuel_side_cycle_vali_condensed.png)
51
+
52
+ The whole engine can be represented in an engine network, and through the use of PT-diagrams.
53
+
54
+ **Engine Network Example**
55
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/engine_network_transp.png)
56
+ **Methane-Side Path**
57
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/methane_PT.png)
58
+ **Oxygen-Side Path**
59
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/oxygen_PT.png)
60
+
61
+ ## Engine Visualisation
62
+ The engine cooling channels can be visualised in 3D, with interlacing between different cooling loops, and inner and outer wall of each cooling channel rendered. Cross sections through any plane of this render can also be made. Here, the RL10 with its semicircular cooling channels is shown
63
+
64
+ ![](https://raw.githubusercontent.com/ask-hovik/pyskyfire/main/images/RL10_visualisation_transp.png
65
+ )
66
+
67
+ # Installation
68
+ The package is available on PyPI, and is simply installed with
69
+
70
+ ```
71
+ pip install pyskyfire
72
+ ```
73
+
74
+ # Contributions
75
+
76
+ The pyskyfire project started as my master thesis, but it is now out in the open. I would love for other students and professionals to contribute to pyskyfire. If you are interested in propulsion, is great at coding, and want to use simulation as a path for learning about rocket engines, please reach out.
77
+
78
+ # Getting Started
79
+ The documentation and examples for pyskyfire is still under construction. Currently, the best way to learn how to use the package is to look in the `examples/` and `validation/` folders and study the different cases. In particular, `validation/regen_vali/RL10_simulation/RL10_simulation_cantera.py` is a good place to start.
@@ -0,0 +1,45 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.25"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "pyskyfire"
7
+ version = "0.1.2"
8
+ description = "A Python library for rocket engine simulation and design."
9
+ readme = "README.md"
10
+ license = { file = "LICENSE" }
11
+ authors = [{ name = "Ask Haugerud Hovik", email = "ask.hovik@gmail.com" }]
12
+ dependencies = [
13
+ "numpy>=2.3",
14
+ "scipy>=1.16",
15
+ "matplotlib>=3.10",
16
+ "cantera>=3.1",
17
+ "rocketcea>=1.2",
18
+ "vispy>=0.15",
19
+ "coolprop>=7.0",
20
+ "pandas>=2.3",
21
+ "cloudpickle>=3.1",
22
+ "pyvis>=0.3",
23
+ "pywebview>=6.0",
24
+ "PySide6>=6.9"
25
+ ]
26
+
27
+ classifiers = [
28
+ "Programming Language :: Python :: 3",
29
+ "License :: OSI Approved :: MIT License",
30
+ "Operating System :: OS Independent"
31
+ ]
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/ask-hovik/pyskyfire"
35
+ Issues = "https://github.com/ask-hovik/pyskyfire/issues"
36
+
37
+ [tool.hatch.build.targets.wheel]
38
+ packages = ["src/pyskyfire"]
39
+
40
+ [tool.hatch.build]
41
+ include = [
42
+ "src/pyskyfire/**",
43
+ "README.md",
44
+ "LICENSE",
45
+ ]
@@ -0,0 +1,28 @@
1
+ """
2
+ pyskyfire - A Python library for rocket engine simulation and design.
3
+
4
+ Subpackages:
5
+ regen - Regenerative cooling analysis.
6
+ pump - Pump design and performance calculations.
7
+ turbine - Turbine design and analysis.
8
+
9
+ Usage:
10
+ import pyskyfire.regen as regen
11
+ import pyskyfire.pump as pump
12
+ import pyskyfire.turbine as turbine
13
+ """
14
+
15
+ try:
16
+ from importlib.metadata import version, PackageNotFoundError
17
+ __version__ = version("pyskyfire")
18
+ except PackageNotFoundError: # during editable installs without metadata
19
+ __version__ = "0+unknown"
20
+
21
+ from . import regen
22
+ from . import pump
23
+ from . import turbine
24
+ from . import common
25
+ from . import skycea
26
+
27
+
28
+ __all__ = ["regen", "pump", "turbine", "common", "skycea"]
@@ -0,0 +1,5 @@
1
+ from .material import *
2
+ from .blocks import *
3
+ from .results import *
4
+ from .engine_network import *
5
+ from .plot import *