cantera/Cantera/python/examples/reactor1.py
2004-04-24 15:44:57 +00:00

65 lines
1.5 KiB
Python

"""
Constant-pressure, adiabatic kinetics simulation.
"""
from Cantera import *
from Cantera.Reactor import *
from Cantera.Func import *
from Cantera import rxnpath
gri3 = GRI30()
gri3.set(T = 1001.0, P = OneAtm, X = 'H2:2,O2:1,N2:4')
r = Reactor(gri3)
env = Reservoir(Air())
# Define a wall between the reactor and the environment, and
# make it flexible, so that the pressure in the reactor is held
# at the environment pressure.
w = Wall(r,env)
w.set(K = 1.0e6) # set expansion parameter. dV/dt = KA(P_1 - P_2)
w.set(A = 1.0)
sim = ReactorNet([r])
time = 0.0
tim = zeros(100,'d')
data = zeros([100,5],'d')
for n in range(100):
time += 1.e-5
sim.advance(time)
tim[n] = time
data[n,0] = r.temperature()
data[n,1] = r.moleFraction('OH')
data[n,2] = r.moleFraction('H')
data[n,3] = r.moleFraction('H2')
print '%10.3e %10.3f %10.3f %14.6e' % (r.time(), r.temperature(),
r.pressure(), r.intEnergy_mass())
# plot the results if matplotlib is installed.
# see http://matplotlib.sourceforge.net to get it
try:
from matplotlib.matlab import *
clf
subplot(2,2,1)
plot(tim,data[:,0])
xlabel('Time (s)');
ylabel('Temperature (K)');
subplot(2,2,2)
plot(tim,data[:,1])
xlabel('Time (s)');
ylabel('OH Mole Fraction');
subplot(2,2,3)
plot(tim,data[:,2]);
xlabel('Time (s)');
ylabel('H Mole Fraction');
subplot(2,2,4)
plot(tim,data[:,3]);
xlabel('Time (s)');
ylabel('H2 Mole Fraction');
show()
except:
pass