关于有限差分法求解耦合PDE中Arrhenius表达式计算的疑问
关于有限差分法耦合PDE示例中Arrhenius速率常数计算逻辑的疑问
我正在尝试复现一个用有限差分法求解耦合偏微分方程(PDE)的过程,但其中Arrhenius速率常数函数k里的arrh_expr计算式没有明确温度范围定义,想请教这个表达式的计算逻辑。
import numpy as np nz = 50 dz = 1 / nz nt = 50 t = np.linspace(0, 4, nt) p = np.array([0.01, 0.5, 1.0]) # 初始化浓度和温度数组 C = np.zeros(nz) T = np.zeros(nz) # 设置浓度初始条件 C[0] = 1.0 # 初始化结果存储数组 c_results = np.zeros((nt, nz)) T_results = np.zeros((nt, nz)) # 定义Arrhenius速率常数函数 def k(temperature): arrh_expr = 4.68 * np.exp(-806 / ((600 - 273) * temperature + 273)) return arrh_expr # 计算特定空间点的时间导数 def rhsC(c0, c1, c2, T1, dz, p): return (p[0] * (c2 - 2 * c1 + c0) / dz**2 - p[1] * (c2 - c0) / (2 * dz) - p[2] * k(T1) * c1**2) def rhsT(T0, T1, T2, c1, dz, p): return (0.01 * (T2 - 2 * T1 + T0) / dz**2 - 0.5 * (T2 - T0) / (2 * dz) + 2.45 * k(T1) * c1**2) # 时间步进循环 for it in range(nt): c_results[it, :] = C T_results[it, :] = T for iz in range(1, nz - 1): # 计算浓度和温度的导数 dc_dt = rhsC(C[iz - 1], C[iz], C[iz + 1], T[iz], dz, p) dT_dt = rhsT(T[iz - 1], T[iz], T[iz + 1], C[iz], dz, p) # 用向前欧拉法更新浓度和温度 C[iz] += dz * dc_dt T[iz] += dz * dT_dt
Arrhenius速率常数arrh_expr的计算逻辑拆解
标准Arrhenius公式的形式为:k = A * exp(-Ea/(R*T))
其中:
A为指前因子(频率因子)Ea为活化能R为气体常数T为绝对温度(开尔文,K)
对示例中的表达式逐部分解析:
温度转换逻辑:
代码中的temperature是归一化到[0,1]区间的摄氏温度。通过(600 - 273) * temperature + 273将其转换为绝对温度:- 当
temperature=0时,计算得273K(对应0℃) - 当
temperature=1时,计算得600K(对应327℃)
这意味着输入的temperature变量本身就被限制在0-1之间,转换后自然落在273K到600K的绝对温度区间,无需额外定义温度范围。
- 当
对应标准公式的参数映射:
- 指前因子
A=4.68 - 指数项中的
806是Ea/R的组合值(单位:K),省去了单独的气体常数项,直接使用活化能与气体常数的比值代入计算。
- 指前因子
总结:这个表达式是标准Arrhenius公式的工程变形,核心是通过归一化温度的转换,将输入映射到特定的绝对温度区间,再完成速率常数的计算。
内容的提问来源于stack exchange,提问作者NAA
相关产品推荐
相关产品推荐

