概要
在燃烧反应动力学中,点火延迟时间是重要的验证参数,本文将以OH自由基浓度的最大增长速率对应的时间作为点火延迟时间的判据,编写python代码。
整体流程
首先要确保已安装cantera库以及numpy库
- 导入Cantera热化学计算库
- 导入数值计算库NumPy
import cantera as ct
import numpy as np
- 定义点火延迟函数,填写默认参数
def ignition_delay(phi=“填入当量比”, P=“填入压强”, T=“填入温度”):
# 从指定路径加载化学反应机理文件
gas = ct.Solution("yaml机理文件格式的路径")
X = {
此处填入所需组分(燃料混合物、氧化剂。注:有稀释气体也可加入)的摩尔分数,自行定义或看文献中是如何定义组分的摩尔分数
}
# 设置气体的温度、压力和组分
gas.TPX = T, P,X
- 建立反应器
reactor = ct.IdealGasReactor(contents=gas, name='Batch Reactor')
reactor_network = ct.ReactorNet([reactor])
- 初始化数组
- 预分配存储空间:
a. 时间序列
b. OH自由基浓度
c. OH浓度随时间的变化率
times = np.zeros(10000)
OH_concentrations = np.zeros(10000)
dOH_dt = np.zeros(10000)
- 逐步推进反应时间
记录每个时间步的OH浓度
通过差分计算OH浓度变化率
i = 0
prev_OH_concentration = gas['OH'].X
while reactor_network.time < 1:
reactor_network.step()
times[i] = reactor_network.time
current_OH_concentration = gas['OH'].X
if i > 0:
dOH_dt[i] = (current_OH_concentration - prev_OH_concentration) / (times[i] - times[i - 1])
OH_concentrations[i] = current_OH_concentration
prev_OH_concentration = current_OH_concentration
i += 1
- 确定点火延迟
- 找到OH浓度变化率最大的时间点
- 将该时间点作为点火延迟时间
max_index = np.argmax(dOH_dt)
ignition_delay_time = times[max_index]
return ignition_delay_time
- 调用函数
这里将结果转化为了毫秒ms
delay_time = ignition_delay()
print(f'点火延迟时间: {delay_time*1000} ms')
小结
整体的代码编写过程中,值得注意的是:当定义点火延迟函数时,当量比、温度以及压强是定值,只能分析固定的一点,因此此处有改写的空间,可通过循环将所有温度点加入其中进行输出;关于反应器的设置,cantera库中有很多,如下图:
如详细了解,链接https://cantera.org/stable/python/zerodim.html#reactor。
由于小编对python代码还未深入了解,学识尚浅,读者若对此文章里代码有更好的建议,还请在评论区留言!