基于分区式耦合热传递(Partitioned CHT)的CFD-FEM热耦合分析
理论与物理
概述 — 什么是分离式耦合
老师,分离式耦合是把流体和固体分开求解吗?和一起求解的直接耦合有什么区别?
问得好。分离式耦合(Partitioned Conjugate Heat Transfer)是一种方法,它分别独立地用CFD求解器求解流体侧,用FEM的热传导求解器求解固体侧,然后在流体-固体界面上交替交换温度和热流密度。
原来如此,分开求解有什么好处吗?没必要特意分开吧…
最大的好处是可以直接使用现有的CFD代码和FEM代码。例如,在燃气轮机叶片的冷却设计中,外部高温燃气流道用Ansys Fluent求解,叶片内部的固体热传导用Abaqus求解——这种组合是实际工程中的标准做法。直接耦合则需要把所有东西塞进一个求解器,开发成本和计算成本都会急剧上升。
诶,但是分开求解不会导致精度下降吗?
只要在界面上充分迭代,就能收敛到与直接耦合相同的精度。不过有时收敛需要时间——特别是当固体与流体的热容比接近时,收敛会变慢。这时就需要用到松弛系数和Aitken加速这类技巧。我们稍后再详细讨论。
分离式耦合的基本思想是将共轭传热(CHT)问题分割为以下两个子问题:
- 流体子问题: Navier-Stokes方程 + 能量方程(用CFD求解器求解)
- 固体子问题: 热传导方程(用FEM求解器求解)
通过“界面条件”将这两个求解器耦合起来,迭代地求得一致解。
Dirichlet-Neumann界面条件
您刚才说在界面上交换温度和热流密度,具体是什么样的公式呢?
在界面 $\Gamma$ 上,物理上必须满足两个条件。首先是温度的连续性(Dirichlet条件):
然后是热流密度的连续性(Neumann条件):
$k_f$ 和 $k_s$ 分别是流体和固体的热导率吧。$n$ 是界面的法线方向… 也就是说“界面温度一致,流入的热量和流出的热量相等”对吗?
正是如此。在分离式耦合中,这两个条件被交替地赋予各个求解器。典型的Dirichlet-Neumann分割法如下:
- 将界面温度 $T_\Gamma$ 赋予固体求解器(Dirichlet条件)→ 求解固体侧温度场,计算界面热流密度 $q_\Gamma$
- 将界面热流密度 $q_\Gamma$ 赋予流体求解器(Neumann条件)→ 求解流体侧温度场,得到界面温度 $T_\Gamma^{\text{new}}$
- 将 $T_\Gamma^{\text{new}}$ 作为新的界面温度,返回步骤1
重复此过程直到温度收敛。
明白了!就像投接球一样来回传递温度和热流密度呢。
松弛系数与稳定化
刚才您说松弛系数很重要,为什么不能直接使用计算出的温度呢?
如果直接将新得到的界面温度 $T_\Gamma^{\text{new}}$ 用于下一次迭代,可能会产生振荡并导致发散。特别是当固体的热容比流体小时,这种现象会更明显。因此需要施加松弛(under-relaxation):
这里 $\omega \in (0, 1]$ 是松弛系数(relaxation factor),$k$ 是迭代次数的索引。
$\omega$ 等于1就是直接更新,接近0的话就几乎保持上一次的值,是这个意思吗?
是的。$\omega$ 小则稳定但收敛慢,大则快但有发散风险。实际工程中通常以 $\omega = 0.3 \sim 0.7$ 为起点,根据问题进行调整。这是数值计算中常见的“稳定性与收敛速度的权衡”。
比如燃气轮机叶片,会使用多大的 $\omega$ 呢?
像叶片这样薄的固体受到高温气体冲击的案例中,固体侧的热容相对较小,所以通常从 $\omega = 0.3 \sim 0.5$ 开始尝试。后面会讲到的Aitken加速可以动态调整 $\omega$,这样就不必为固定值而烦恼了。
收敛判定标准
要迭代多少次才能判断为“收敛”了呢?
当界面温度的变化足够小时,即可判定为收敛。一般的标准是:
这里 $\varepsilon_{\text{rel}}$ 是相对收敛阈值,工程精度通常取 $10^{-4} \sim 10^{-6}$。同时也要监控热流密度连续性的残差:
温度和热流密度两者都要看呢。实际案例中大概要迭代多少次?
这取决于问题的性质和松弛方法。固定松弛 $\omega = 0.5$ 时大约需要10~30次。使用Aitken加速的话,通常5~10次就够了。不过,如果存在强非线性(例如辐射或相变),有时可能需要50次以上。
稳定性条件与热容比
刚才您说“固体的热容比流体小时容易发散”,这有理论依据吗?
有的。分离式CHT的稳定性已被Causin, Gerbeau & Nobile(2005)等人严格分析过,对于Dirichlet-Neumann分割且将Neumann条件赋予流体侧的情况,稳定性条件归结于界面的“附加质量效应”。粗略地说,当流体的热容 $\rho_f c_{p,f}$ 相对于固体的 $\rho_s c_{p,s}$ 较大时,无松弛情况下会变得不稳定。
定量地说,松弛系数的稳定上限是:
这里 $L_s, L_f$ 分别是固体和流体侧的特征长度。
例如液态金属(钠冷却)的 $\rho_f c_{p,f}$ 很大,所以容易变得不稳定,对吧?
正是如此。液态钠冷却的核反应堆燃料棒的CHT分析,是分离式耦合最不擅长的案例之一。这种情况下,交换Dirichlet和Neumann的角色(采用Robin-Neumann法或Robin-Robin法)可以实现稳定化。在实际工程中,preCICE库会自动切换这些加速方法。
“乒乓球”还是“投接球”
有些研究者将分离式耦合的迭代称为“乒乓法”,但我个人认为“投接球”更贴近实际。乒乓球是把对方的球直接打回去,而分离式耦合则是在接到球(温度)后,通过求解器的计算施加“变化”再投回去。而且还要用松弛系数调整球速——投得太快对方接不住(发散),所以诀窍是以合适的速度($\omega$)投回去。
各项的物理意义
- 界面温度 $T_\Gamma$:固体-流体边界面的温度。该值在两侧一致是物理要求。燃气轮机叶片表面约为700~1000℃,电子设备机箱约为50~100℃。
- 界面热流密度 $q_\Gamma$:通过界面的单位面积热量 [W/m²]。由傅里叶定律 $q = -k \partial T / \partial n$ 计算。流体侧的对流传热与固体内部的热传导达到平衡。
- 松弛系数 $\omega$:控制迭代稳定性的无量纲参数。$\omega = 1$(无松弛)对应强耦合的极限,$\omega \to 0$ 则是“几乎不更新”的保守设置。
- 热容比 $\rho c_p$:材料对温度变化的“抵抗”程度。钢的 $\rho c_p \approx 3.6$ MJ/(m³·K),空气的 $\rho c_p \approx 0.0012$ MJ/(m³·K),相差约3000倍。这个比值支配着稳定性。
假设条件与适用范围
- 假设界面固定(不变形)。如果界面移动(如流体-结构耦合FSI),则需要额外的处理(如ALE法)
- 假设界面处的温度跳跃(热阻)为零。存在接触热阻时需用Robin条件处理
- 伴随化学反应或烧蚀的情况(如再入飞行器的热防护材料),需要额外的质量·能量界面条件
- 稳态CHT问题只涉及迭代次数,但瞬态问题需要在每个时间步内收敛(子迭代)
数值解法与实现
迭代算法整体概览
理论我明白了,但能给我看看实际的算法伪代码吗?
稳态问题的Dirichlet-Neumann分离式耦合伪代码如下:
- 设定界面温度的初始估计 $T_\Gamma^{0}$
- do $k = 0, 1, 2, \ldots$
- 固体求解器:以 $T_\Gamma^k$ 为Dirichlet边界条件求解热传导方程 → 计算界面热流密度 $q_s^k$
- 流体求解器:以 $q_s^k$ 为Neumann边界条件求解NS + 能量方程 → 获取界面温度 $T_f^k$
- 松弛:$T_\Gamma^{k+1} = \omega \, T_f^k + (1 - \omega) \, T_\Gamma^k$
- 收敛判定:若 $\| T_\Gamma^{k+1} - T_\Gamma^k \| / \| T_\Gamma^{k+1} \| < \varepsilon$ 则结束
- end do
很简单呢!但实际实现中麻烦的是,两个求解器之间如何传递数据吧?
很敏锐。数据传递有三个课题:
- 网格不一致:CFD网格和FEM网格在界面上的节点位置不同 → 需要插值
- 数据格式差异:不同求解器的温度·热流密度输出格式不同
- 进程间通信:MPI并行时,不同进程组之间的数据传输
能自动处理这些的就是MpCCI或preCICE这类耦合中间件。
Aitken加速与拟牛顿法
您说固定的 $\omega$ 太慢,请告诉我动态优化的方法。
最广泛使用的是Aitken $\Delta^2$ 加速。它自动估计每次迭代的最优松弛系数:
这里 $r^k = T_f^k - T_\Gamma^k$(残差),$\Delta r^k = r^k - r^{k-1}$(残差差分)。
也就是说根据前两次的迭代结果来估计最优的 $\omega$ 对吧。有点像牛顿法?
概念上是的。更高级的方法还有拟牛顿法(Quasi-Newton: IQN-ILS)。它利用过去数次迭代的历史来近似界面的“雅可比矩阵”,从而求得多维空间中的最优更新方向。在preCICE中,IQN-ILS是默认的加速方法,在许多CHT基准测试中显示出最快的收敛速度。
| 加速方法 | 收敛速度 | 内存使用 | 实现难度 |
|---|---|---|---|
| 固定松弛 | 慢(线性) | O(1) | 简单 |
| Aitken $\Delta^2$ | 中等 | O(N) | 简单 |
| IQN-ILS(拟牛顿) | 快(超线性) | O(N·m) | 中等 |
| Anderson加速 | 快 | O(N·m) | 中等 |
异种网格间的插值
当CFD和FEM的界面网格不同时,如何传递温度或热流密度呢?
主要有三种方法:
- 最近邻插值:使用最近节点的值。简单但精度低
- RBF(径向基函数)插值:从所有节点的值构建光滑的插值面。精度高,但在大规模问题中成本高
- 投影法(Mortar法):精确计算界面元素的重叠部分,实现守恒性传递。热流密度的守恒性最高
重要的是,温度可以用点对点插值,但热流密度需要守恒性传递(界面整体热量总和一致)。否则能量会产生或消失。
瞬态问题的时间积分
瞬态分析的话,每个时间步都需要迭代吗?那岂不是要花非常多时间…
这正是分离式耦合最大的计算成本因素。每个时间步 $\Delta t$ 内都需要进行界面迭代(子迭代)。不过也有对策:
- 松耦合:每个时间步只交换一次(不迭代)。精度低但速度快。如果时间步长足够小,可以接受
- 紧耦合:每个时间步迭代到收敛。保证精度
- 利用预测器:根据前一步的解外推下一个界面温度,提高初始估计精度以减少迭代次数
对于瞬态问题,流体侧和固体侧也可以使用不同的时间步长(子循环)。流体的对流时间尺度 $\Delta t_f \sim \Delta x / u$ 和固体的热扩散时间尺度 $\Delta t_s \sim \Delta x^2 / \alpha_s$ 常常差异很大,通过子循环可以大幅提高计算效率。
显式与隐式的比喻
松耦合与紧耦合的区别,类似于“天气预报只报一次 vs 反复修正后发布”。
なった
詳しく
報告