目的:介绍Cantera灵敏度分析在研究反应机理中的应用。提出了一种针对具体问题的反应机理简化方法,只包含对最终结果至关重要的反应。
所用模块:Materials Visualizer、Cantera
前提条件:Continuous stirred-tank reactor(连续搅拌釜式反应器)、Visualizer Tutorial(可视化界面教程)
背景
化学动力学中的反应机制通常包含数以百计的物质和反应。对于特定的情况和应用领域,可能仅有一小部分物质与反应与之相关。在运行计算任务时,使用不必要的反应将产生冗余数据,降低计算效率。灵敏度分析是一种对特定情况进行分析和研究的方法,从而了解其中最重要的反应。可以利用其对给定反应的决速步进行合理估计,并简化反应机制,使其仅包含具体过程所需信息。通常用于确定关键反应,其参数应进行优化,以提高精度,并消除不相关的冗余反应,以降低大规模流体动力学计算的成本。
介绍
在本教程中,将学习如何使用Cantera灵敏度分析详细研究Continuous stirred-tank reactor(连续搅拌釜式反应器)教程中的问题,并将生成与完整反应相同的还原反应机理。
本教程包括如下部分:
-
开始
-
设置Cantera灵敏度分析参数
-
分析灵敏度计算数据
-
详细分析点燃过程
-
删减反应机理
注意:为了和本教程中的参数保持一致,可以使用Settings Organizer对话框将项目中所有参数都设置为BIOVIA的默认值。
1、开始
首先启动Materials Studio并创建一个新项目。
打开New Project对话框,输入sensitivity作为项目名,单击OK按钮。
新项目将以sensitivity为项目名显示于Project Explorer中。在本教程中,将使用CSTR教程中已经观测到的氢气点燃机制。首先,设置与绝热CSTR相同的初始条件。
单击“导入Import”按钮

打开 Import Document对话框。导航到ExamplesCantera文件夹,将文件类型过滤器更改为所有Materials Studio文件All Materials Studio Files,然后双击MS_h2o2.std。
该数据表包含将在本教程中使用的所有反应,将用作Cantera的输入。
2、设置Cantera灵敏度分析参数
MS_h2o2.std中的数据将用作Cantera的输入。
单击Modules工具栏上的Cantera按钮

选择Calculation或从菜单栏中选择Modules | Cantera | Calculation,打开Cantera Calculation对话框。
从任务Task下拉列表中选择CSTR,并在气体Gas部分中选择摩尔分数Mole fraction。
从化合物种类Species下拉列表中选择H2,然后在下一个新创建的行中选择O2。
将H2的分数Fraction设置为2,将O2的分数Fraction设置为1。
将温度Temperature设置为960 K,并将压强Pressure更改为101325 Pa。
以上为基本的反应器条件参数设置。接下来,将设置灵敏度分析和更具体的CSTR选项。
点击More…按钮打开Cantera CSTR对话框,取消勾选Isothermal等温复选框,将输出时间窗口Output time window设置为从0.0 s(From 0.0)到50.0 s(To 50.0),时间步长Time step设置为0.5 s。
在灵敏度分析部分,选中Mechanism reduction复选框。从化合物种类Species下拉列表中选择H2,然后在新创建的下两行中选择O2和H2O。
关闭对话框。
现在即准备运行与连续搅拌釜式反应器Continuous stirred-tank reactor教程中相同的绝热计算任务。
选择Job Control选项卡并查看设置,选择适当的网关位置Gateway location和队列Queue。单击Run按钮。
计算完成后,打开MS_h2o2 Cantera CSTRMS_h2o2 Results.std数据表。
本数据表包含五个表单:
-
结果表单Results存储气体的物理参数(如压强、温度、焓值)与时间的函数关系,还包含每种物质的质量分数。
-
机制删减表单Mechanism reduction包含反应机制中每个反应的全局灵敏度度量,按灵敏度值排序。在本教程后面的部分中,将使用这些信息来消除不必要的反应。
-
H2灵敏度表单Sensitivity H2包含氢分子浓度对每个反应速率系数的灵敏度。
-
O2灵敏度表单Sensitivity O2包含氧分子浓度对每个反应速率系数的灵敏度。
-
H2O灵敏度表单Sensitivity H2O包含水分子浓度对每个反应速率系数的灵敏度,作为时间的函数。
表单上的所有结果均按其最大绝对值排序。
分析此计算的结果,然后放大反应发生的时间窗口。
右键单击Project Explorer中的MS_h2o2 Cantera CSTR文件夹,并将其重命名为coarse。
在coarseMS_h2o2 Results.std数据表中,选择Results表单。按住CTRL键并选择A列Time (s)和B列Temperature (K),然后单击“快速绘制Quick Plot”按钮。右键单击Project Explorer中的MS_h2o2 Results Scatter plot.xcd,并将其重命名为temperature.xcd。
再次双击MS_h2o2 Results.std,选择M列Mass fraction HO2,然后按住SHIFT键并单击以选择从M列Mass fraction HO2到F列Mass fraction O2的所有列。按住CTRL键并选择A列Time (s)。单击“快速绘制Quick Plot”按钮并将图表重命名为fractions.xcd。
到目前为止的操作步骤与上一篇教程中完全相同。该体系随着温度和压强的增加的爆炸性增大,质量分数在25.5s左右发生近乎瞬时的变化。
首先,将分析导致爆炸的主要反应。
点击More…按钮打开Cantera CSTR对话框。取消选中等温Isothermal复选框,并将输出时间窗口Output time window设置为从0.0 s(From 0.0)到25.0 s(To 25.0)。保持MS_h2o2.std数据表为当前活动文档,然后单击Run按钮。
计算完成后,绘制并分析一些最重要物质的灵敏度,以确定最有可能导致这种现象的单步反应。
右键单击Project Explorer中的MS_h2o2 Cantera CSTR文件夹,并将其重命名为preexplosion。
双击MS_h2o2 Results.std数据表并选择“H2O灵敏度Sensitivity H2O”选项卡。按下SHIFT键并选择A列Time (s)到E列Sensitivity of H2O wrt rate H + H2O2 H2 + HO2。单击“快速绘制Quick Plot”按钮并将图表重命名为sensitivity_H2O.xcd。对结果数据表上“O2灵敏度snesitivity O2”和“H2灵敏度sensitivity H2”选项卡的前五列重复此步骤,以生成图表sensitivity_O2.xcd和sensitivity_H2.xcd。
并列查看三个灵敏度曲线图。
物质i对速率系数j的灵敏度定义为:

表示一种物质的浓度ci与对应于特定反应的速率系数kj值的关系。对数的微分使得即使浓度或速率系数的大小相差许多数量级,每个反应的影响仍存在可比性。灵敏度值越大,对应于该反应在特定情况下越重要。
在刚刚生成的图表中查看其中各行。在这三种情况下,相同的四个反应主要负责确定水、氧和氢分子的浓度:
-
H + O2 ↔ O + OH -
H + O2 + M ↔ HO2 + M -
H + 2 O2 ↔ HO2 + O2 -
H + H2O2 ↔ H2 + HO2
这几个反应的顺序可能会改变,但所有都在体系中存在。注意,所有的反应都涉及氧和氢分子,且不涉及水分子的形成。对最终结果影响最大的机制是O2的解离。
从菜单栏中选择File | Save Project,然后选择Window | Close All。
4、详细分析点燃过程
在本节中,将重点讨论实际点燃时刻,并详细证明最后一节中简单实验得出的结论仍然有效。将放大与”连续搅拌釜式反应器Continuous stirred-tank reactor“教程得到的同一时间窗口,以分析点火点。
双击Cantera Calculation中的MS_h2o2.std文件,打开Cantera Calculation对话框和Cantera CSTR对话框。
将输出时间窗口更改为从25.65969 s(From 25.65969)到25.65979 s(To 25.65979),并将“时间步长Time step”更改为1e-7 s。
单击Run按钮并关闭对话框。
该计算任务只需几秒钟即可完成。完成后,可将一些输出数据绘图,以便更好地理解灵敏度。
将文件夹MS_h2o2 Cantera CSTR重命名为zoom。
打开zoomMS_h2o2 Results.std并选择“H2O灵敏度Sensitivity H2O”选项卡。按下SHIFT键并选择A列Time (s)到E列Sensitivity of H2O wrt rate H + H2O2 H2 + HO2。单击快速绘制Quick Plot按钮 并将图表重命名为sensitivity_H2O.xcd。
对结果数据表上“H2灵敏度Sensitivity H2”和“O2灵敏度Sensitivity O2”选项卡重复此步骤,以生成图表sensitivity_H2.xcd和sensitivity_O2.xcd。
将生成与下图类似的图表。
注:示例图表已缩放从而对Y轴数据进行比较。使用Properties Explorer更改Y轴的Max和Min属性值,使它们在所有三个图表中都相同。



可见,在对H2和O2气体混合物的爆炸反应进行详细分析期间,相比于上述爆炸前的计算结果,主要反应发生了变化。在爆炸过程中的主要反应为水分子的生成。从上面的图表中也可以明显看出,产物物质H2O对给定反应的灵敏度与反应物H2或O2对相同反应的灵敏度符号相反。这也符合一般认知,因为在反应过程中,产物和反应物的浓度比率符号相反。
在灵敏度分析中,需确保反应的相对顺序相对于时间步长收敛。特别是对于爆炸等快速反应。
5、删减反应机理
直接应用上述灵敏度计算可能会产生大量数据,以及大量的可视化图表。对于每个反应步骤,不必绘制大量曲线图,可以用单个测量值Bj平均整个过程中的所有灵敏度。
该测量值通过简单地将单个灵敏度相加计算得出的:

其中,总和取自反应机制中的所有物质,其平均值随时间而变化。外括号中的数量是在每个时间点计算的,然后在时间步长上取平均值。每个反应均会得到一个数值,列在结果数据表的机制删减表单Mechanism reduction上。必须将灵敏度从结果数据表复制到输入数据表的副本中,以获得简化的机制。
打开原MS_h2o2.std数据表并选择Reactions选项卡,然后将其重命名为Reactions all。
Materials Studio Cantera将仅识别名为Reactions的选项卡,并且在该选项卡上,仅利用可识别的列。因此可以添加包含完整原始数据集合的其他列和选项卡。现在,将创建包含简化后机制的Reactions选项卡版本。
在Reactions all选项卡上,选择D ID列,然后单击“升序排序Sort Ascending”按钮,按字母顺序对方程进行排序。在D ID列的右侧插入一列。
打开zoomMS_h2o2 Results.std为当前文档,并选择Mechanism reduction选项卡。按B ID列的字母顺序排序,并复制C列Global sensitivity的内容。
粘贴到MS_h2o2.std数据表的新建列中。此列现在将命名为E Global sensitivity。
选择列E Global sensitivity列并单击“降序排序Sort Desending”按钮。
现在,反应列表是按每个步骤的重要性排序的,这使我们能够删减机制。将使用较少的反应来重新运行模拟,并查看此简化机制是否仍能表示原始反应。
在Reactions all选项卡上选择前23行top 23(对应于全局灵敏度大于10-5的所有反应)。单击“过滤器Filter”按钮,对选中的数据生成新表单。将新生成的表单重命名为Reactions。
注意,当对几个反应运行Cantera时,必须验证标记为“副本duplicate”的所有反应成对出现。如果筛选出有“副本”关键词的反应,则必须在运行Cantera之前删除该关键字。
在Reactions选项卡上选择L列Options。按下按钮可将所有重复的反应置于顶部。“删除Delete”所有未配对反应的“副本duplicate”一词。
当现在运行相同的Cantera计算时,Materials Studio将基于与简化反应机制相对应的新的Reactions选项卡中的内容运行模拟计算。为了评估简化后的反应机制,将重新运行初始燃烧计算并放大主要反应发生的时间窗口。
双击coarseMS_h2o2 – Calculation计算设置文件以打开Cantera Calculation对话框,其设置与第一次计算任务中相同。将原MS_h2o2.std数据表设置为当前文档,然后单击Run按钮。
计算完成后,将输出文件夹重命名为reduced_coarse。打开reduced_coarseMS_h2o2 Results.std并创建H2、O2和H2O灵敏度以及温度随时间变化的图表。
根据温度曲线,确定反应中发生阶跃变化的点,并使用Cantera CSTR对话框上的时间窗口控件放大该特定区域。可能需要单独运行两次或三次,然后才能解析10-7秒的时间步长。
计算完成后,将输出文件夹重命名为reduced_zoom。打开reduced_zoomMS_h2o2 Results.std并创建H2、O2和H2O灵敏度图表。
可见简化后的机制与完整机制相比,温度范围和最终产物非常接近,点火时间变化也非常小。这表明,在许多情况下,仅使用23个方程式进行本教程中所做的模拟是可行的。
或者,可以按照上述步骤进一步删减该机制,例如,仅使用前15个或前10个最重要的反应步骤。发现温度和最终产物保持不变,但对于不同反应组数,点火时间变化量不同。根据具体应用领域,这可能是可以接受的,并且如果处理的是长时间的反应,计算速度会快得多。
从菜单栏中选择File | Save Project,然后选择Window | Close All。
本教程到此结束。