表面反応
- 表面反応を取り込むことにより、触媒反応を計算することができる
- 表面反応において変更すべき点は以下の通り
area_cat_vol
= 3149.0 # catalyst surface area [m^2/m^3]
porosity
= 1.0 # catalyst porosity
n_reactor
= 200 # numerical parameter to divide reactor
surf = ct.Interface(filename, "Pt_surf", [gas])
surf.TP = Tin, p
スクリプトの例
import cantera as ct
import csv
p = ct.one_atm
Tin = 1500
comp = "CH4:1, O2:1, AR:0.5"
vin = 0.005
length = 5.0e-6
area = 1.0e-4
area_cat_vol = 3149.0
porosity = 1.0
n_reactor = 200
filename = "ptcombust.yaml"
gas = ct.Solution(filename, "gas")
gas.TPX = Tin, p, comp
mdot = vin * area * gas.density
dx = length / n_reactor
surf = ct.Interface(filename, "Pt_surf", [gas])
surf.TP = Tin, p
r = ct.IdealGasReactor(gas)
vol = area * dx * porosity
r.volume = area * dx
upstream = ct.Reservoir(gas, name="upstream")
downstream = ct.Reservoir(gas, name="downstream")
m = ct.MassFlowController(upstream, r, mdot=mdot)
v = ct.PressureController(r, downstream, primary=m, K=1.0e-5)
area_cat = area_cat_vol * vol
rsurf = ct.ReactorSurface(surf, r, A=area_cat)
net = ct.ReactorNet([r])
outfile = open("catalytic_pfr.csv", "w", newline="")
writer = csv.writer(outfile)
writer.writerow(["Distance [m]", "u [m/s]", "time [s]", "T [K]", "P [Pa]"] + gas.species_names + surf.species_names)
t_res = 0.0
for n in range(n_reactor):
gas.TDY = r.thermo.TDY
upstream.syncState()
net.reinitialize()
net.advance_to_steady_state()
dist = n * dx
u = mdot / area / r.thermo.density
t_res += r.mass / mdot
writer.writerow([dist, u, t_res, r.T, r.thermo.P] + list(r.thermo.X) + list(rsurf.kinetics.coverages))
outfile.close()