cantera/Cantera/python/examples/gasdynamics/soundSpeeds.py
2005-10-21 01:03:40 +00:00

55 lines
1.3 KiB
Python

from Cantera import *
import math
def equilSoundSpeeds(gas):
"""Returns a tuple containing the equilibrium and frozen sound
speeds for a gas with an equilibrium composition. The gas is
first set to an equilibrium state at the temperature and pressure
of the gas, since otherwise the equilibrium sound speed is not
defined.
"""
# set the gas to equilibrium at its current T and P
gas.equilibrate('TP')
# save properties
s0 = gas.entropy_mass()
p0 = gas.pressure()
r0 = gas.density()
# perturb the density
r1 = r0*1.0001
# set the gas to a state with the same entropy and composition but
# the perturbed density
gas.set(S = s0, V = 1.0/r1)
# save the pressure for this case for the frozen sound speed
pfrozen = gas.pressure()
# now equilibrate the gas holding S and V constant
gas.equilibrate("SV")
p1 = gas.pressure()
# equilibrium sound speed
aequil = math.sqrt((p1 - p0)/(r1 - r0));
# frozen sound speed
afrozen = math.sqrt((pfrozen - p0)/(r1 - r0));
return (aequil, afrozen)
# test program
if __name__ == "__main__":
gas = GRI30()
gas.set(X = 'CH4:0.1.1, O2:2.0, N2:3.76')
for n in range(27):
temp = 300.0 + n*100.0
gas.set(T = temp, P = OneAtm)
print temp, equilSoundSpeeds(gas)