化学反应动力学基础
理论与物理
概述
老师!化学动力学是燃烧模拟的根本理论,对吧?
没错。化学动力学是一门用数学描述燃料和氧化剂以多快速度进行反应的学科。在燃烧CFD中,如果不能正确建模这个反应速率,火焰温度和排气成分都会得到完全错误的结果。
具体来说,核心是哪些公式呢?
核心是阿伦尼乌斯型反应速率方程。对于每个基元反应,用指前因子 $A$、温度指数 $n$、活化能 $E_a$ 这三个参数来表示速率常数。
控制方程
请先教我阿伦尼乌斯方程。
反应速率常数 $k$ 可以写成如下形式。
这里 $A$ 是指前因子(频率因子),$n$ 是温度指数,$E_a$ 是活化能 [J/mol],$R$ 是通用气体常数 8.314 J/(mol K)。例如,氢的基本反应 H$_2$ + O$_2$ 体系中,$E_a$ 的数量级在几十 kJ/mol。
活化能越大,反应就越慢,是这个意思吗?
是的。$E_a$ 越大,指数项 $\exp(-E_a/RT)$ 就越小,低温下反应几乎不进行。相反,温度升高时,速率会呈指数级增长。这与燃烧的点火延迟和火焰稳定性直接相关。
化学组分 $i$ 的质量分数 $Y_i$ 随时间的变化,可以通过对所有基元反应的贡献求和来写出,如下所示。
$\nu'$ 和 $\nu''$ 是反应物和生成物的化学计量系数吧。
是的。$[X_j]$ 是摩尔浓度,$M_{w,i}$ 是分子量。多个基元反应交织在一起,构成了化学组分的生成/消耗速率 $\dot{\omega}_i$。
刚性化学反应体系
我听说燃烧的化学反应,时间尺度差异极大。
这正是刚度问题。例如,甲烷/空气的详细反应机理 GRI-Mech 3.0 包含 53 个化学组分和 325 个基元反应,但自由基反应的时间常数在 $10^{-9}$ 秒量级,而主反应在 $10^{-3}$ 秒量级,相差 6 个数量级以上。
差异这么大,用普通的显式解法解不了吧?
没错。显式欧拉法或龙格-库塔法需要极小时的时间步长,无法在实用的计算时间内完成。因此,会使用隐式解法(BDF法、Rosenbrock法等),或者像下篇文章会详细介绍的 ISAT(原位自适应列表)这样的列表化方法。
反应机理的层次
反应机理也有不同的层次吗?
反应机理有以下层次。
| 类别 | 化学物种数 | 反应数 | 代表例 | 用途 |
|---|---|---|---|---|
| 全局单步 | 2-5 | 1-2 | Westbrook-Dryer | 估算·初步探讨 |
| 简化机理 | 10-30 | 20-100 | DRM-19, Lu-Law | 3D RANS/LES |
| 骨架机理 | 30-100 | 100-500 | skeletal-iso-octane | 详细RANS |
| 详细机理 | 50-300+ | 300-3000+ | GRI-Mech 3.0, USC Mech II | 0D/1D, DNS |
在3D燃烧LES中直接求解详细机理很困难吗?
因为计算成本会变得非常庞大。如果要在100万个单元的3D网格上求解包含100个化学组分的详细机理,每个单元在每个时间步都需要求解100元的常微分方程组。所以在实际工作中,要么使用简化机理,要么用ISAT或FGM(火焰面生成流形)来降维。
化学动力学的基础理论,我理解清楚了。明白了刚度问题是核心。
嗯。数值方法的细节将在下一篇文章中讨论。如果阿伦尼乌斯方程的参数设置错误,着火温度可能会偏差数百K,所以务必与实验数据进行核对。
阿伦尼乌斯在1889年写下的“活化能”——留给现代CAE的遗产
斯万特·阿伦尼乌斯在1889年发表的论文,在当时是“化学家之间的奇谈怪论”。他用 $k = A \exp(-E_a/RT)$ 这个简单的公式表达了“温度升高反应速率急剧增加”的经验法则,而这个公式在130多年后的今天,仍然是燃烧CFD反应速率计算的核心。GRI-Mech 3.0的325个反应中,每一个都有A、Ea、n这三个参数。也就是说,现代的燃烧模拟是在联立求解1889年的公式超过900次。古典物理化学驱动着现代超级计算机——这是一个能感受到这种连续性的故事。
各项的物理意义
- 时间项 $\partial(\rho\phi)/\partial t$:请想象一下打开水龙头的瞬间。最初水流会不稳定地哗啦哗啦流出,过一会儿就会变成稳定的水流,对吧?描述这个“变化过程中”的就是时间项。心脏搏动导致血流脉动,发动机阀门每次开闭导致流动变化,这些都是非定常现象。那么定常分析是什么?——只观察“经过足够时间流动稳定之后”的状态,也就是将此项设为零。计算成本会大幅下降,因此先用定常求解是CFD的基本策略。
- 对流项 $\nabla \cdot (\rho \mathbf{u} \phi)$:把落叶丢进河里会怎样?会被水流带着运往下游,对吧?这就是“对流”——流体运动搬运物体的效果。暖风的暖气能到达房间的另一端,也是因为空气这个“搬运工”通过对流输送了热量。这里有趣的是——这项包含了“速度×速度”,因此是非线性的。也就是说,流速变快时,这项会急剧增强,变得难以控制。这就是湍流的根本原因。常见的误解:“对流和传导差不多吧?”→ 完全不一样!对流是流动搬运,传导是分子传递。效率有天壤之别。
- 扩散项 $\nabla \cdot (\Gamma \nabla \phi)$:有过在咖啡里倒入牛奶后放置不管的经历吗?即使不搅拌,过一会儿也会自然混合。那就是分子扩散。那么下一个问题——蜂蜜和水,哪个更容易流动?当然是水,对吧?因为蜂蜜的粘度($\mu$)高,所以不易流动。粘度越大,扩散项越强,流体的运动就变得“粘稠”。雷诺数小的流动(缓慢、粘稠)中扩散占主导。相反,在Re数大的流动中,对流占压倒性优势,扩散则成为配角。
- 压力项 $-\nabla p$:推注射器的活塞,液体就会从针头有力地射出,对吧?为什么?因为活塞侧压力高,针头侧压力低——这个压力差产生了推动流体的力。大坝放水也是同样的原理。天气图上等压线密集的地方会怎样?没错,会刮强风。“有压力差的地方就会产生流动”——这就是纳维-斯托克斯方程压力项的物理意义。这里的误解点:CFD中的“压力”通常指表压而非绝对压力。切换到可压缩分析时结果突然变得奇怪,原因可能就是混淆了绝对压力/表压。
- 源项 $S_\phi$:被加热的空气会上升——为什么?因为比周围空气轻(密度低),被浮力推上去了。这个浮力作为源项添加到方程中。此外,燃气灶火焰产生化学反应热,工厂的电磁泵对金属熔液施加洛伦兹力……这些都是“从外部向流体注入能量或力”的作用,都用源项来表示。如果忘记源项会怎样?在自然对流分析中忘记加入浮力,流体就完全不动——会得到冬天开了暖气但热空气却不上升这种物理上不可能的结果。
假设条件与适用范围
- 连续介质假设:克努森数 Kn < 0.01(分子平均自由程 ≪ 特征长度)时成立
- 牛顿流体假设:剪切应力与应变速率呈线性关系(非牛顿流体需要粘度模型)
- 不可压缩假设(Ma < 0.3 时):将密度视为常数处理。马赫数0.3以上需考虑可压缩性效应
- 布西涅斯克近似(自然对流):仅在浮力项中考虑密度变化,其他项使用恒定密度
- 不适用的情形:稀薄气体(Kn > 0.1)、超音速·高超音速流动(需要捕捉激波)、自由表面流动(需要VOF/Level Set等)
量纲分析与单位制
| 变量 | SI单位 | 注意点·换算备忘 |
|---|---|---|
| 速度 $u$ | m/s | 入口条件从体积流量换算时,注意截面积单位 |
| 压力 $p$ | Pa | 区分表压与绝对压力。可压缩分析中使用绝对压力 |
| 密度 $\rho$ | kg/m³ | 空气: 约1.225 kg/m³@20°C,水: 约998 kg/m³@20°C |
| 粘性系数 $\mu$ | Pa·s | 注意与运动粘度系数 $\nu = \mu/\rho$ [m²/s] 混淆 |
| 雷诺数 $Re$ | 无量纲 | $Re = \rho u L / \mu$。层流/湍流转捩的判断指标 |
| CFL数 | 无量纲 | $CFL = u \Delta t / \Delta x$。直接关系到时间步长的稳定性 |
数值解法与实现
数值方法的细节
刚性ODE体系在CFD中具体是如何求解的,请告诉我具体方法。
燃烧CFD中化学反应的数值积分大致分为三种方法。(1) 直接积分(DI),(2) 列表化方法,(3) 算子分裂法。
直接积分法
请先教我直接积分法。
这是在每个CFD单元中,每个时间步都求解化学组分ODE体系的方法。为了处理刚性体系,使用隐式多步法。
我们来比较一下典型的隐式求解器。
| 方法 | 阶数 | 特点 | 典型实现 |
|---|---|---|---|
| BDF (后向差分公式) | 1-5阶 | 高阶A-稳定 | CVODE (SUNDIALS) |
| Rosenbrock法 | 2-4阶 | 雅可比矩阵评估一次 | DASPK |
| SDIRK | 2-4阶 | 对角隐式RK | OpenFOAM标准 |
| 指数积分法 | 可变 | 矩阵指数函数 | 研究阶段 |
CVODE很有名呢。听说Fluent也在用。
是的。Ansys Fluent 中内置了基于 CVODE 的积分器,作为“刚性化学求解器”。STAR-CCM+ 内部也使用了 SUNDIALS 库。雅可比矩阵的评估会成为瓶颈,因此解析雅可比矩阵的自动生成很重要。
ISAT(原位自适应列表)
ISAT 是什么机制呢?
这是 Pope 在 1997 年提出的方法,将计算过一次的化学反应输入输出以二叉搜索树结构记录在表中。当新的组成点到来时,如果可以从现有记录通过线性近似返回答案,则省略直接积分。
近似精度大概是多少?
容许误差 $\epsilon_{\text{tol}}$ 由用户设定。Fluent 的默认值大约是 $10^{-4}$。使用 ISAT 通常可以将直接积分的调用次数减少 90% 以上。但是,表的大小有时会占用大量内存,在大规模并行计算中,由于每个进程独立持有表,内存效率成为课题。
算子分裂法
算子分裂法是什么?
这是一种将流体输运和化学反应分开步骤求解的方法。Strang 分裂是代表性方法,交替执行 CFD 的输运步骤和化学反应的 ODE 积分。
相关主题
なった
詳しく
報告