我试图用Cantera和一个生物质热解动力学方案来观察在间歇反应器中浓度随时间的变化。下面是对动力学的概述,并参考了论文。请注意,物种浓度是以质量为基础的,如kg/m^3。


参考资料:科伦巴·迪·布拉西。多孔固体燃料热解过程中对流和二次反应效应分析。燃烧科学和技术,第90卷,第315-340页,1993年。
假设初始木材浓度为1.0,我可以用Python求解反应速率方程系统,并按时间绘制转换图,如下所示。

不幸的是,我试图使用的动力学方案与Cantera是错误的不相容的相类型。我的blasi.cti文件包含以下内容:
#-------------------------------------------------------------------------------
# Phases data
#-------------------------------------------------------------------------------
stoichiometric_solid(
name = "wood",
species = "wood",
density = (700, "kg/m3")
)
ideal_gas(
name = "gas",
species = "gas"
)
ideal_gas(
name = "tar",
species = "tar"
)
stoichiometric_solid(
name = "char",
species = "char",
density = (110, "kg/m3")
)
#-------------------------------------------------------------------------------
# Species data
#-------------------------------------------------------------------------------
species(
name="wood"
)
species(
name = "gas"
)
species(
name = "tar"
)
species(
name = "char"
)
#-------------------------------------------------------------------------------
# Reaction data
#-------------------------------------------------------------------------------
# Reaction 1
reaction("wood => gas", [1.4345e4, 0, 88.6])
# Reaction 2
reaction("wood => tar", [4.125e6, 0, 112.7])
# Reaction 3
reaction("wood => char", [7.3766e5, 0, 106.5])
# Reaction 4
reaction("tar => gas", [4.28e6, 0, 108])
# Reaction 5
reaction("tar => char", [1.0e6, 0, 108])使用上述blasi_reactor.py文件的Python是:
import cantera as ct
import matplotlib.pyplot as plt
tk = 773.15 # temperature [K]
p = 101325.0 # pressure [Pa]
gas = ct.Solution('blasi.cti')
gas.TP = tk, p
r = ct.IdealGasConstPressureReactor(gas)
sim = ct.ReactorNet([r])
time = 0.0
states = ct.SolutionArray(gas, extra=['t'])
for n in range(50):
time += 1.0
sim.advance(time)
states.append(r.thermo.state, t=time)
plt.figure()
plt.plot(states.t, states.X[:, gas.species_index('wood')])
plt.plot(states.t, states.X[:, gas.species_index('gas')])
plt.plot(states.t, states.X[:, gas.species_index('tar')])
plt.plot(states.t, states.X[:, gas.species_index('char')])
plt.xlabel('Time [s]')
plt.ylabel('Concentration [kg/m^3]')
plt.show()Cantera的错误消息是:
Traceback (most recent call last):
File "blasi_cantera.py", line 9, in <module>
r = ct.IdealGasConstPressureReactor(gas)
File "interfaces/cython/cantera/reactor.pyx", line 191, in cantera._cantera.Reactor.__init__
File "interfaces/cython/cantera/reactor.pyx", line 28, in cantera._cantera.ReactorBase.__init__
File "interfaces/cython/cantera/reactor.pyx", line 199, in cantera._cantera.Reactor.insert
File "interfaces/cython/cantera/reactor.pyx", line 50, in cantera._cantera.ReactorBase.insert
cantera._cantera.CanteraError:
***********************************************************************
CanteraError thrown by IdealGasReactor::setThermoMgr:
Incompatible phase type provided
***********************************************************************我如何定义集中的物种,如木材,气体,焦油和焦炭与Cantera?在Cantera甚至可以使用这样的动力学方案吗?我通常使用Python创建自己的热解模型,但我想使用Cantera中的反应堆特性。这也允许我比较Cantera和我的个人Python模型之间的结果。
注意-我看了Cantera文档网站上的例子,但是所有的东西都是为定义明确的气相物种,在那里你知道元素组成和NASA系数。
发布于 2018-12-17 20:43:37
只要热力学数据(具有特定热系数的数据是存在和正确的),就可以使用你自己的,甚至是合成的元素和物种,然而,为这样的散装材料找到正确的系数(检查这些:https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19940013151.pdf)。
此外,对于动力学计算和反应器链,它更容易与ct.IdealGasReactor工作,它也应该支持多相。
此外,你至少需要上游水库之间的反应堆和syncState他们在每次迭代。
附注:您可以查看此出版物,由Cantera:formation完成
https://stackoverflow.com/questions/53639820
复制相似问题