mirror of
https://github.com/Cantera/cantera.git
synced 2025-02-25 18:55:29 -06:00
Address review line comments
This commit is contained in:
parent
82c323f3f8
commit
2d07de24f5
1
.gitignore
vendored
1
.gitignore
vendored
@ -52,4 +52,3 @@ coverage.info
|
|||||||
.coverage
|
.coverage
|
||||||
doc/sphinx/matlab/*.rst
|
doc/sphinx/matlab/*.rst
|
||||||
!doc/sphinx/matlab/index.rst
|
!doc/sphinx/matlab/index.rst
|
||||||
interfaces/cython/cantera/units/solution.py
|
|
||||||
|
@ -1,22 +1,24 @@
|
|||||||
"""
|
"""
|
||||||
Isentropic, adiabatic flow example - calculate area ratio vs. Mach number curve
|
Isentropic, adiabatic flow example - calculate area ratio vs. Mach number curve
|
||||||
|
|
||||||
Requires: cantera >= 3.0.0
|
Requires: Cantera >= 3.0.0, pint
|
||||||
Keywords: thermodynamics, compressible flow, units
|
Keywords: thermodynamics, compressible flow, units
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.with_units as ct
|
import cantera.with_units as ctu
|
||||||
import numpy as np
|
import numpy as np
|
||||||
ct.units.default_format = ".2F~P"
|
|
||||||
label_string = "area ratio\tMach number\ttemperature\tpressure ratio"
|
# This sets the default output format of the units to have 2 significant digits
|
||||||
output_string = "{0:.2E~P}\t{1} {2}\t{3:.2E~P}"
|
# and the units are printed with a Unicode font. See:
|
||||||
|
# https://pint.readthedocs.io/en/stable/formatting.html#unit-format-types
|
||||||
|
ctu.units.default_format = ".2F~P"
|
||||||
|
|
||||||
|
|
||||||
def soundspeed(gas):
|
def soundspeed(gas):
|
||||||
"""The speed of sound. Assumes an ideal gas."""
|
"""The speed of sound. Assumes an ideal gas."""
|
||||||
|
|
||||||
gamma = gas.cp / gas.cv
|
gamma = gas.cp / gas.cv
|
||||||
return np.sqrt(gamma * ct.units.molar_gas_constant
|
return np.sqrt(gamma * ctu.units.molar_gas_constant
|
||||||
* gas.T / gas.mean_molecular_weight).to("m/s")
|
* gas.T / gas.mean_molecular_weight).to("m/s")
|
||||||
|
|
||||||
|
|
||||||
@ -29,16 +31,16 @@ def isentropic(gas=None):
|
|||||||
degrees Fahrenheit, P0 = 10 atm.
|
degrees Fahrenheit, P0 = 10 atm.
|
||||||
"""
|
"""
|
||||||
if gas is None:
|
if gas is None:
|
||||||
gas = ct.Solution('gri30.yaml')
|
gas = ctu.Solution('gri30.yaml')
|
||||||
gas.TPX = 2160 * ct.units.degR, 10.0 * ct.units.atm, 'H2:1,N2:0.1'
|
gas.TPX = 2160 * ctu.units.degR, 10.0 * ctu.units.atm, 'H2:1,N2:0.1'
|
||||||
|
|
||||||
# get the stagnation state parameters
|
# get the stagnation state parameters
|
||||||
s0 = gas.s
|
s0 = gas.s
|
||||||
h0 = gas.h
|
h0 = gas.h
|
||||||
p0 = gas.P
|
p0 = gas.P
|
||||||
|
|
||||||
mdot = 1 * ct.units.kg / ct.units.s # arbitrary
|
mdot = 1 * ctu.units.kg / ctu.units.s # arbitrary
|
||||||
amin = 1.e14 * ct.units.m**2
|
amin = 1.e14 * ctu.units.m**2
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
|
|
||||||
@ -60,6 +62,8 @@ def isentropic(gas=None):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print(__doc__)
|
print(__doc__)
|
||||||
data, amin = isentropic()
|
data, amin = isentropic()
|
||||||
|
label_string = "area ratio\tMach number\ttemperature\tpressure ratio"
|
||||||
|
output_string = "{0:.2E~P}\t{1} {2}\t{3:.2E~P}"
|
||||||
print(label_string)
|
print(label_string)
|
||||||
for row in data:
|
for row in data:
|
||||||
print(output_string.format(row[0] / amin, row[1], row[2], row[3]))
|
print(output_string.format(row[0] / amin, row[1], row[2], row[3]))
|
||||||
|
@ -2,16 +2,16 @@
|
|||||||
Calculate the efficiency of a Rankine vapor power cycle using a pure fluid model
|
Calculate the efficiency of a Rankine vapor power cycle using a pure fluid model
|
||||||
for water. Includes the units of quantities in the calculations.
|
for water. Includes the units of quantities in the calculations.
|
||||||
|
|
||||||
Requires: Cantera >= 2.6.0
|
Requires: Cantera >= 3.0.0, pint
|
||||||
Keywords: thermodynamics, thermodynamic cycle, non-ideal fluid, units
|
Keywords: thermodynamics, thermodynamic cycle, non-ideal fluid, units
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.with_units as ct
|
import cantera.with_units as ctu
|
||||||
|
|
||||||
# parameters
|
# parameters
|
||||||
eta_pump = 0.6 * ct.units.dimensionless # pump isentropic efficiency
|
eta_pump = 0.6 * ctu.units.dimensionless # pump isentropic efficiency
|
||||||
eta_turbine = 0.8 * ct.units.dimensionless # turbine isentropic efficiency
|
eta_turbine = 0.8 * ctu.units.dimensionless # turbine isentropic efficiency
|
||||||
p_max = 116.03 * ct.units.psi # maximum pressure
|
p_max = 116.03 * ctu.units.psi # maximum pressure
|
||||||
|
|
||||||
|
|
||||||
def pump(fluid, p_final, eta):
|
def pump(fluid, p_final, eta):
|
||||||
@ -49,10 +49,10 @@ def print_state(n, fluid):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# create an object representing water
|
# create an object representing water
|
||||||
w = ct.Water()
|
w = ctu.Water()
|
||||||
|
|
||||||
# start with saturated liquid water at 80.33 degrees Rankine
|
# start with saturated liquid water at 80.33 degrees Fahrenheit
|
||||||
w.TQ = 540 * ct.units.degR, 0.0 * ct.units.dimensionless
|
w.TQ = ctu.Q_(80.33, "degF"), 0.0 * ctu.units.dimensionless
|
||||||
h1 = w.h
|
h1 = w.h
|
||||||
p1 = w.P
|
p1 = w.P
|
||||||
print_state(1, w)
|
print_state(1, w)
|
||||||
@ -64,7 +64,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# heat it at constant pressure until it reaches the saturated vapor state
|
# heat it at constant pressure until it reaches the saturated vapor state
|
||||||
# at this pressure
|
# at this pressure
|
||||||
w.PQ = p_max, 1.0 * ct.units.dimensionless
|
w.PQ = p_max, 1.0 * ctu.units.dimensionless
|
||||||
h3 = w.h
|
h3 = w.h
|
||||||
heat_added = h3 - h2
|
heat_added = h3 - h2
|
||||||
print_state(3, w)
|
print_state(3, w)
|
||||||
|
@ -54,7 +54,7 @@ def equilSoundSpeeds(gas, rtol=1.0e-6, max_iter=5000):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
gas = ct.Solution('gri30.yaml')
|
gas = ct.Solution('gri30.yaml')
|
||||||
gas.X = 'CH4:1.00, O2:2.0, N2:7.52'
|
gas.X = 'CH4:1.00, O2:2.0, N2:7.52'
|
||||||
T_range = np.linspace(300, 2900, 27)
|
T_range = np.arange(300, 2901, 100)
|
||||||
for T in T_range:
|
for T in T_range:
|
||||||
gas.TP = T, ct.one_atm
|
gas.TP = T, ct.one_atm
|
||||||
print(T, equilSoundSpeeds(gas))
|
print(T, equilSoundSpeeds(gas))
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
"""
|
"""
|
||||||
Compute the "equilibrium" and "frozen" sound speeds for a gas
|
Compute the "equilibrium" and "frozen" sound speeds for a gas
|
||||||
|
|
||||||
Requires: cantera >= 2.6.0
|
Requires: Cantera >= 3.0.0, pint
|
||||||
Keywords: thermodynamics, equilibrium
|
Keywords: thermodynamics, equilibrium, units
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.with_units as ct
|
import cantera.with_units as ctu
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
ct.units.default_format = ".2F~P"
|
# This sets the default output format of the units to have 2 significant digits
|
||||||
|
# and the units are printed with a Unicode font. See:
|
||||||
|
# https://pint.readthedocs.io/en/stable/formatting.html#unit-format-types
|
||||||
|
ctu.units.default_format = ".2F~P"
|
||||||
|
|
||||||
def equilibrium_sound_speeds(gas, rtol=1.0e-6, max_iter=5000):
|
def equilibrium_sound_speeds(gas, rtol=1.0e-6, max_iter=5000):
|
||||||
"""
|
"""
|
||||||
@ -44,18 +47,18 @@ def equilibrium_sound_speeds(gas, rtol=1.0e-6, max_iter=5000):
|
|||||||
|
|
||||||
# compute the frozen sound speed using the ideal gas expression as a check
|
# compute the frozen sound speed using the ideal gas expression as a check
|
||||||
gamma = gas.cp/gas.cv
|
gamma = gas.cp/gas.cv
|
||||||
gamma * ct.units.molar_gas_constant
|
gamma * ctu.units.molar_gas_constant
|
||||||
afrozen2 = np.sqrt(gamma * ct.units.molar_gas_constant * gas.T /
|
afrozen2 = np.sqrt(gamma * ctu.units.molar_gas_constant * gas.T /
|
||||||
gas.mean_molecular_weight).to("ft/s")
|
gas.mean_molecular_weight).to("ft/s")
|
||||||
|
|
||||||
return aequil, afrozen, afrozen2
|
return aequil, afrozen, afrozen2
|
||||||
|
|
||||||
# test program
|
# test program
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
gas = ct.Solution('gri30.yaml')
|
gas = ctu.Solution('gri30.yaml')
|
||||||
gas.X = 'CH4:1.00, O2:2.0, N2:7.52'
|
gas.X = 'CH4:1.00, O2:2.0, N2:7.52'
|
||||||
T_range = np.linspace(80.33, 4760.33, 50) * ct.units.degF
|
T_range = np.linspace(80.33, 4760.33, 50) * ctu.units.degF
|
||||||
print("Temperature Equilibrium Sound Speed Frozen Sound Speed Frozen Sound Speed Check")
|
print("Temperature Equilibrium Sound Speed Frozen Sound Speed Frozen Sound Speed Check")
|
||||||
for T in T_range:
|
for T in T_range:
|
||||||
gas.TP = T, 1.0 * ct.units.atm
|
gas.TP = T, 1.0 * ctu.units.atm
|
||||||
print(T, *equilibrium_sound_speeds(gas), sep = " ")
|
print(T.to("degF"), *equilibrium_sound_speeds(gas), sep = " ")
|
||||||
|
Loading…
Reference in New Issue
Block a user