pygasflow is a Python package that provides a few handful functions to quickly perform:
Quasi-1D ideal gasdynamic (perfect gas). The following solvers are implemented:
isentropic_solver
(or ise
).fanno_solver
(or fan
).rayleigh_solver
(or ray
).shockwave_solver
(or ss
) for normal and oblique shock waves.conical_shockwave_solver
(or css
).De_Laval_solver
and the nozzles
sub-module, containing functions and classes to understand convergent-divergent nozzles, Rao's TOP nozzles (Thrust Optmizie Parabolic), Minimum Length nozzle with Method of Characteristics. Nozzles can be used to quickly visualize their geometric differences or to solve the isentropic expansion with the De_Laval_Solver
class.Aerothermodynamic computations (pygasflow.atd
module):
The following charts has been generated with the functions included in this package:
The repository is avaliable on PyPi:
pip install pygasflow
And also on Conda:
conda install conda-forge::pygasflow
The easiest way is to call a solver. Let's say you need to solve an isentropic flow:
from pygasflow import isentropic_solver
help(isentropic_solver)
isentropic_solver("m", 2, to_dict=True)
# {'m': 2.0,
# 'pr': 0.12780452546295096,
# 'dr': 0.2300481458333117,
# 'tr': 0.5555555555555556,
# 'prs': 0.24192491286747442,
# 'drs': 0.36288736930121157,
# 'trs': 0.6666666666666667,
# 'urs': 2.3515101530718505,
# 'ars': 1.6875000000000002,
# 'ma': 30.000000000000004,
# 'pm': 26.379760813416457}
Should a solver not be sufficient for your use case, feel free to explore the code implemented inside each flow's type, maybe you'll find a function that suits your needs.
Please: