Install

pygasflow can be installed with pip or conda:

pip install pygasflow

Or:

conda install conda-forge::pygasflow

Basic Usage

If we are interested in working with pint units:

import pint
import pygasflow
from pygasflow import isentropic_solver

# create a UnitRegistry
ureg = pint.UnitRegistry()
# use short units notation
ureg.formatter.default_format = "~"
# let pygasflow knows which UnitRegistry to use
pygasflow.defaults.pint_ureg = ureg

T1 = 290 * ureg.K
p1 = 1 * ureg.atm

# compute ratios and quantities for an isentropic flow at Mach 2
res = isentropic_solver("m", 2, to_dict=True)
res.show()
# key     quantity
# ----------------------------
# m       M                        2.00000000
# pr      P / P0                   0.12780453
# dr      rho / rho0               0.23004815
# tr      T / T0                   0.55555556
# prs     P / P*                   0.24192491
# drs     rho / rho*               0.36288737
# trs     T / T*                   0.66666667
# urs     U / U*                   1.63299316
# ars     A / A*                   1.68750000
# ma      Mach Angle              30.00000000
# pm      Prandtl-Meyer           26.37976081

# compute total quantities
T0 = (1 / res["tr"]) * T1
P0 = (1 / res["pr"]) * p1
print("---------")
print(f"P0 = {P0}")
print(f"T0 = {T0}")
# ---------
# P0 = 7.824449066867263 atm
# T0 = 522.0 K

If we are not interested about working with units:

from pygasflow import isentropic_solver

T1 = 290  # K
p1 = 1    # atm

# compute ratios and quantities for an isentropic flow at Mach 2
res = isentropic_solver("m", 2, to_dict=True)
res.show()
# key     quantity
# ----------------------------
# m       M                        2.00000000
# pr      P / P0                   0.12780453
# dr      rho / rho0               0.23004815
# tr      T / T0                   0.55555556
# prs     P / P*                   0.24192491
# drs     rho / rho*               0.36288737
# trs     T / T*                   0.66666667
# urs     U / U*                   1.63299316
# ars     A / A*                   1.68750000
# ma      Mach Angle              30.00000000
# pm      Prandtl-Meyer           26.37976081

# compute total quantities
T0 = (1 / res["tr"]) * T1
P0 = (1 / res["pr"]) * p1
print("---------")
print(f"P0 = {P0} atm")
print(f"T0 = {T0} K")
# ---------
# P0 = 7.824449066867263 atm
# T0 = 522.0 K