mirror of
https://github.com/Cantera/cantera.git
synced 2025-02-25 18:55:29 -06:00
[Examples] Add example keywords for units
This commit is contained in:
parent
08997ddd53
commit
82a24baa73
@ -41,5 +41,6 @@ thermodynamic cycle
|
|||||||
thermodynamics
|
thermodynamics
|
||||||
transport
|
transport
|
||||||
tutorial
|
tutorial
|
||||||
|
units
|
||||||
user-defined model
|
user-defined model
|
||||||
well-stirred reactor
|
well-stirred reactor
|
||||||
|
@ -106,7 +106,7 @@ else:
|
|||||||
localenv.Depends(ext, localenv['cantera_shlib'])
|
localenv.Depends(ext, localenv['cantera_shlib'])
|
||||||
|
|
||||||
for f in (multi_glob(localenv, 'cantera', 'py') +
|
for f in (multi_glob(localenv, 'cantera', 'py') +
|
||||||
multi_glob(localenv, 'cantera/*', 'py')):
|
multi_glob(localenv, 'cantera/*', 'py', 'in')):
|
||||||
localenv.Depends(mod, f)
|
localenv.Depends(mod, f)
|
||||||
|
|
||||||
UNITS = {
|
UNITS = {
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
"""
|
"""
|
||||||
Isentropic, adiabatic flow example - calculate area ratio vs. Mach number curve
|
Isentropic, adiabatic flow example - calculate area ratio vs. Mach number curve
|
||||||
|
|
||||||
Requires: cantera >= 2.6.0
|
Requires: cantera >= 3.0.0
|
||||||
|
Keywords: thermodynamics, compressible flow, units
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.units as ct
|
import cantera.with_units as ct
|
||||||
import numpy as np
|
import numpy as np
|
||||||
ct.units.default_format = ".2F~P"
|
ct.units.default_format = ".2F~P"
|
||||||
label_string = "area ratio\tMach number\ttemperature\tpressure ratio"
|
label_string = "area ratio\tMach number\ttemperature\tpressure ratio"
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
"""
|
"""
|
||||||
A Rankine vapor power cycle
|
Calculate the efficiency of a Rankine vapor power cycle using a pure fluid model
|
||||||
|
for water. Includes the units of quantities in the calculations.
|
||||||
|
|
||||||
Requires: Cantera >= 2.6.0
|
Requires: Cantera >= 2.6.0
|
||||||
|
Keywords: thermodynamics, thermodynamic cycle, non-ideal fluid, units
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.units as ct
|
import cantera.with_units as ct
|
||||||
|
|
||||||
# parameters
|
# parameters
|
||||||
eta_pump = 0.6 * ct.units.dimensionless # pump isentropic efficiency
|
eta_pump = 0.6 * ct.units.dimensionless # pump isentropic efficiency
|
||||||
eta_turbine = 0.8 * ct.units.dimensionless # turbine isentropic efficiency
|
eta_turbine = 0.8 * ct.units.dimensionless # turbine isentropic efficiency
|
||||||
p_max = 116.03 * ct.units.psi # maximum pressure
|
p_max = 116.03 * ct.units.psi # maximum pressure
|
||||||
|
|
||||||
|
|
||||||
def pump(fluid, p_final, eta):
|
def pump(fluid, p_final, eta):
|
||||||
@ -40,7 +42,7 @@ def expand(fluid, p_final, eta):
|
|||||||
return actual_work
|
return actual_work
|
||||||
|
|
||||||
|
|
||||||
def printState(n, fluid):
|
def print_state(n, fluid):
|
||||||
print('\n***************** State {0} ******************'.format(n))
|
print('\n***************** State {0} ******************'.format(n))
|
||||||
print(fluid.report())
|
print(fluid.report())
|
||||||
|
|
||||||
@ -53,23 +55,23 @@ if __name__ == '__main__':
|
|||||||
w.TQ = 540 * ct.units.degR, 0.0 * ct.units.dimensionless
|
w.TQ = 540 * ct.units.degR, 0.0 * ct.units.dimensionless
|
||||||
h1 = w.h
|
h1 = w.h
|
||||||
p1 = w.P
|
p1 = w.P
|
||||||
printState(1, w)
|
print_state(1, w)
|
||||||
|
|
||||||
# pump it adiabatically to p_max
|
# pump it adiabatically to p_max
|
||||||
pump_work = pump(w, p_max, eta_pump)
|
pump_work = pump(w, p_max, eta_pump)
|
||||||
h2 = w.h
|
h2 = w.h
|
||||||
printState(2, w)
|
print_state(2, w)
|
||||||
|
|
||||||
# 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 * ct.units.dimensionless
|
||||||
h3 = w.h
|
h3 = w.h
|
||||||
heat_added = h3 - h2
|
heat_added = h3 - h2
|
||||||
printState(3, w)
|
print_state(3, w)
|
||||||
|
|
||||||
# expand back to p1
|
# expand back to p1
|
||||||
turbine_work = expand(w, p1, eta_turbine)
|
turbine_work = expand(w, p1, eta_turbine)
|
||||||
printState(4, w)
|
print_state(4, w)
|
||||||
|
|
||||||
# efficiency
|
# efficiency
|
||||||
eff = (turbine_work - pump_work)/heat_added
|
eff = (turbine_work - pump_work)/heat_added
|
||||||
|
@ -2,14 +2,15 @@
|
|||||||
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 >= 2.6.0
|
||||||
|
Keywords: thermodynamics, equilibrium
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import cantera.units as ct
|
import cantera.with_units as ct
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
ct.units.default_format = ".2F~P"
|
ct.units.default_format = ".2F~P"
|
||||||
|
|
||||||
def equilSoundSpeeds(gas, rtol=1.0e-6, max_iter=5000):
|
def equilibrium_sound_speeds(gas, rtol=1.0e-6, max_iter=5000):
|
||||||
"""
|
"""
|
||||||
Returns a tuple containing the equilibrium and frozen sound speeds for a
|
Returns a tuple containing the equilibrium and frozen sound speeds for a
|
||||||
gas with an equilibrium composition. The gas is first set to an
|
gas with an equilibrium composition. The gas is first set to an
|
||||||
@ -43,6 +44,7 @@ def equilSoundSpeeds(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
|
||||||
afrozen2 = np.sqrt(gamma * ct.units.molar_gas_constant * gas.T /
|
afrozen2 = np.sqrt(gamma * ct.units.molar_gas_constant * gas.T /
|
||||||
gas.mean_molecular_weight).to("ft/s")
|
gas.mean_molecular_weight).to("ft/s")
|
||||||
|
|
||||||
@ -56,4 +58,4 @@ if __name__ == "__main__":
|
|||||||
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 * ct.units.atm
|
||||||
print(T, *equilSoundSpeeds(gas), sep = " ")
|
print(T, *equilibrium_sound_speeds(gas), sep = " ")
|
||||||
|
Loading…
Reference in New Issue
Block a user