initial import
This commit is contained in:
parent
6314e7a563
commit
2d5c2e0fcc
1 changed files with 98 additions and 0 deletions
98
Cantera/python/examples/reactors/piston.py
Normal file
98
Cantera/python/examples/reactors/piston.py
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
#
|
||||
# Gas 1: a stoichiometric H2/O2/Ar mixture
|
||||
# Gas 2: a wet CO/O2 mixture
|
||||
#
|
||||
# -------------------------------------
|
||||
# | || |
|
||||
# | || |
|
||||
# | gas 1 || gas 2 |
|
||||
# | || |
|
||||
# | || |
|
||||
# -------------------------------------
|
||||
#
|
||||
# The two volumes are connected by an adiabatic free piston.
|
||||
# The piston speed is proportional to the pressure difference
|
||||
# between the two chambers.
|
||||
#
|
||||
# Note that each side uses a *different* reaction mechanism
|
||||
#
|
||||
from Cantera import *
|
||||
from Cantera.Reactor import *
|
||||
import sys
|
||||
|
||||
fmt = '%10.3f %10.1f %10.4f %10.4g %10.4g %10.4g %10.4g'
|
||||
print '%10s %10s %10s %10s %10s %10s %10s' % ('time [s]','T1 [K]','T2 [K]',
|
||||
'V1 [m^3]', 'V2 [m^3]',
|
||||
'V1+V2 [m^3]','X(CO)')
|
||||
|
||||
gas1 = importPhase('h2o2.cti')
|
||||
gas1.set(T = 900.0, P = OneAtm, X = 'H2:2, O2:1, AR:20')
|
||||
|
||||
gas2 = GRI30()
|
||||
gas2.set(T = 900.0, P = OneAtm, X = 'CO:2, H2O:0.01, O2:5')
|
||||
|
||||
r1 = Reactor(gas1, volume = 0.5)
|
||||
r2 = Reactor(gas2, volume = 0.1)
|
||||
w = Wall(left = r1, right = r2, K = 1.0e3)
|
||||
|
||||
reactors = ReactorNet([r1, r2])
|
||||
|
||||
tim = []
|
||||
t1 = []
|
||||
t2 = []
|
||||
v1 = []
|
||||
v2 = []
|
||||
v = []
|
||||
xco = []
|
||||
xh2 = []
|
||||
|
||||
for n in range(30):
|
||||
time = (n+1)*0.002
|
||||
reactors.advance(time)
|
||||
print fmt % (time, r1.temperature(), r2.temperature(),
|
||||
r1.volume(), r2.volume(), r1.volume() + r2.volume(),
|
||||
r2.moleFraction('CO'))
|
||||
|
||||
tim.append(time)
|
||||
t1.append(r1.temperature())
|
||||
t2.append(r2.temperature())
|
||||
v1.append(r1.volume())
|
||||
v2.append(r2.volume())
|
||||
v.append(r1.volume() + r2.volume())
|
||||
xco.append(r2.moleFraction('CO'))
|
||||
xh2.append(r1.moleFraction('H2'))
|
||||
|
||||
|
||||
# plot the results if matplotlib is installed.
|
||||
# see http://matplotlib.sourceforge.net to get it
|
||||
args = sys.argv
|
||||
if len(args) > 1 and (args[1] == '-plot' or
|
||||
args[1] == '-p' or
|
||||
args[1] == '--plot'):
|
||||
try:
|
||||
from matplotlib.pylab import *
|
||||
clf
|
||||
subplot(2,2,1)
|
||||
plot(tim,t1,'-',tim,t2,'r-')
|
||||
xlabel('Time (s)');
|
||||
ylabel('Temperature (K)');
|
||||
subplot(2,2,2)
|
||||
plot(tim,v1,'-',tim,v2,'r-',tim,v,'g-')
|
||||
xlabel('Time (s)');
|
||||
ylabel('Volume (m3)');
|
||||
subplot(2,2,3)
|
||||
plot(tim,xco);
|
||||
xlabel('Time (s)');
|
||||
ylabel('CO Mole Fraction (right)');
|
||||
subplot(2,2,4)
|
||||
plot(tim,xh2);
|
||||
xlabel('Time (s)');
|
||||
ylabel('H2 Mole Fraction (left)');
|
||||
show()
|
||||
except:
|
||||
print """matplotlib required.
|
||||
http://matplotlib.sourceforge.net"""
|
||||
|
||||
else:
|
||||
print """To view a plot of these results, run this script with the option -plot"""
|
||||
|
||||
Loading…
Add table
Reference in a new issue