""" 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