在 Cantera 反应器中使用生物质热解动力学

Posted

技术标签:

【中文标题】在 Cantera 反应器中使用生物质热解动力学【英文标题】:Use biomass pyrolysis kinetics in Cantera reactor 【发布时间】:2018-12-05 19:56:14 【问题描述】:

我正在尝试将 Cantera 与生物质热解的动力学方案结合使用,以观察间歇反应器中浓度随时间的变化。下面显示了动力学的概述以及对论文的参考。请注意,物种浓度是基于质量的,例如kg/m^3

木材 = 生物质,通常是松木 gas = 包含轻质不凝性气体的集总物质 焦油 = 可冷凝热解蒸气的集总种类 char = 完全热解的木材,基本上是碳

参考:Colomba Di Blasi。多孔固体燃料热解过程中的对流和二次反应效应分析。燃烧科学与技术,卷。 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])

而使用上述cti文件的Python文件blasi_reactor.py是:

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 系数。

【问题讨论】:

嗨!我想你最近问了一个非常相似的问题,但我现在看不到它......无论如何,我认为我在那里给出的在 Google Group 上发布的建议仍然是正确的,你更有可能在那里得到更有用的回应。简短的版本是,据我所知,Cantera 对反应强制执行元素守恒,因此您至少必须为您的物种提供元素。 @darthbith 我在哪里定义cti 文件中的物种元素?而按元素,你指的是CHON等吗?对于热解动力学,我不知道构成物种的元素。这些物种都是集中的群体。 @darthbith 我在 Google 群组中发布了我的问题,但看起来它没有被接受。我是否需要获得许可才能提交帖子或新主题? 您需要按照群组页面顶部的说明,在帖子中包含所有详细信息,而不是在此处链接到帖子。最好将所有内容都包含在您在群组上的帖子中,这样人们就不必去不同的地方进行回复。具体来说,“请在您的帖子中提供一个最小、完整且可验证的示例,以说明您在发布帖子时遇到的问题;简而言之,这意味着包括代码示例和输入文件以及有关您的操作系统和 Cantera 版本的信息。”跨度> @darthbith 好的,我在 Cantera Google Group 上发布了这个问题。 【参考方案1】:

只要热力学数据(具有特定热系数的数据存在且正确),就可以使用您自己的,甚至是组成的元素和物种,但是,为此类散装材料找到正确的系数(检查这些:https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19940013151.pdf)。

此外,对于动力学计算和反应器链,使用 ct.IdealGasReactor 更容易,它还应该支持多相。

此外,您至少需要反应器之间的上游存储库,并在每次迭代时同步它们。

附言您可以查看此出版物,由 Cantera 完成: https://www.researchgate.net/publication/320592565_Modelling_of_biomass_combustion_chemistry_to_investigate_gas_phase_alkali_sulfate_formation

【讨论】:

我建议您也将其发布到 Google 网上论坛上。一个小的修正,IdealGasReactors(本质上)无法处理多阶段Solutions。 是的,Google 小组非常有帮助。一些开发者也在积极回答一些问题。

以上是关于在 Cantera 反应器中使用生物质热解动力学的主要内容,如果未能解决你的问题,请参考以下文章

斯坦福大学化学工程专业学啥?宾夕法尼亚大学创业管理专业学啥?

在 Python 上安装 Cantera 的问题

在 CANTERA 中写入 .cti 或 .xml 文件

BTS运动生物力学系列—BTS SMART Analyzer生物力学动作分析模块

如何在ABAQUS中加载动载荷

python 2.7 中的 Cantera 问题