基于分区式耦合热传递(Partitioned CHT)的CFD-FEM热耦合分析

分类: 熱解析 > 共役熱伝達 | 更新 2026-04-12
Partitioned conjugate heat transfer coupling diagram showing fluid CFD and solid FEM solvers exchanging temperature and heat flux at the interface
分離型連成の概念図 — CFDソルバーとFEMソルバーが界面で温度・熱流束を交互にやり取りする

理论与物理

概述 — 什么是分离式耦合

🧑‍🎓

老师,分离式耦合是把流体和固体分开求解吗?和一起求解的直接耦合有什么区别?

🎓

问得好。分离式耦合(Partitioned Conjugate Heat Transfer)是一种方法,它分别独立地用CFD求解器求解流体侧,用FEM的热传导求解器求解固体侧,然后在流体-固体界面上交替交换温度和热流密度。

🧑‍🎓

原来如此,分开求解有什么好处吗?没必要特意分开吧…

🎓

最大的好处是可以直接使用现有的CFD代码和FEM代码。例如,在燃气轮机叶片的冷却设计中,外部高温燃气流道用Ansys Fluent求解,叶片内部的固体热传导用Abaqus求解——这种组合是实际工程中的标准做法。直接耦合则需要把所有东西塞进一个求解器,开发成本和计算成本都会急剧上升。

🧑‍🎓

诶,但是分开求解不会导致精度下降吗?

🎓

只要在界面上充分迭代,就能收敛到与直接耦合相同的精度。不过有时收敛需要时间——特别是当固体与流体的热容比接近时,收敛会变慢。这时就需要用到松弛系数Aitken加速这类技巧。我们稍后再详细讨论。

分离式耦合的基本思想是将共轭传热(CHT)问题分割为以下两个子问题:

  • 流体子问题: Navier-Stokes方程 + 能量方程(用CFD求解器求解)
  • 固体子问题: 热传导方程(用FEM求解器求解)

通过“界面条件”将这两个求解器耦合起来,迭代地求得一致解。

Dirichlet-Neumann界面条件

🧑‍🎓

您刚才说在界面上交换温度和热流密度,具体是什么样的公式呢?

🎓

在界面 $\Gamma$ 上,物理上必须满足两个条件。首先是温度的连续性(Dirichlet条件):

$$ T_f \big|_{\Gamma} = T_s \big|_{\Gamma} $$
🎓

然后是热流密度的连续性(Neumann条件):

$$ -k_f \frac{\partial T_f}{\partial n}\bigg|_{\Gamma} = -k_s \frac{\partial T_s}{\partial n}\bigg|_{\Gamma} $$
🧑‍🎓

$k_f$ 和 $k_s$ 分别是流体和固体的热导率吧。$n$ 是界面的法线方向… 也就是说“界面温度一致,流入的热量和流出的热量相等”对吗?

🎓

正是如此。在分离式耦合中,这两个条件被交替地赋予各个求解器。典型的Dirichlet-Neumann分割法如下:

  1. 将界面温度 $T_\Gamma$ 赋予固体求解器(Dirichlet条件)→ 求解固体侧温度场,计算界面热流密度 $q_\Gamma$
  2. 将界面热流密度 $q_\Gamma$ 赋予流体求解器(Neumann条件)→ 求解流体侧温度场,得到界面温度 $T_\Gamma^{\text{new}}$
  3. 将 $T_\Gamma^{\text{new}}$ 作为新的界面温度,返回步骤1

重复此过程直到温度收敛。

🧑‍🎓

明白了!就像投接球一样来回传递温度和热流密度呢。

松弛系数与稳定化

🧑‍🎓

刚才您说松弛系数很重要,为什么不能直接使用计算出的温度呢?

🎓

如果直接将新得到的界面温度 $T_\Gamma^{\text{new}}$ 用于下一次迭代,可能会产生振荡并导致发散。特别是当固体的热容比流体小时,这种现象会更明显。因此需要施加松弛(under-relaxation)

$$ T_\Gamma^{k+1} = \omega \, T_\Gamma^{\text{new},k} + (1 - \omega) \, T_\Gamma^{k} $$

这里 $\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$,这样就不必为固定值而烦恼了。

收敛判定标准

🧑‍🎓

要迭代多少次才能判断为“收敛”了呢?

🎓

当界面温度的变化足够小时,即可判定为收敛。一般的标准是:

$$ \frac{\| T_\Gamma^{k+1} - T_\Gamma^{k} \|_2}{\| T_\Gamma^{k+1} \|_2} < \varepsilon_{\text{rel}} $$

这里 $\varepsilon_{\text{rel}}$ 是相对收敛阈值,工程精度通常取 $10^{-4} \sim 10^{-6}$。同时也要监控热流密度连续性的残差:

$$ R_q = \| q_f^k - q_s^k \|_\infty < \varepsilon_q $$
🧑‍🎓

温度和热流密度两者都要看呢。实际案例中大概要迭代多少次?

🎓

这取决于问题的性质和松弛方法。固定松弛 $\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}$ 较大时,无松弛情况下会变得不稳定。

定量地说,松弛系数的稳定上限是:

$$ \omega < \frac{2 \, \rho_s c_{p,s} \, L_s}{\rho_s c_{p,s} \, L_s + \rho_f c_{p,f} \, L_f} $$

这里 $L_s, L_f$ 分别是固体和流体侧的特征长度。

🧑‍🎓

例如液态金属(钠冷却)的 $\rho_f c_{p,f}$ 很大,所以容易变得不稳定,对吧?

🎓

正是如此。液态钠冷却的核反应堆燃料棒的CHT分析,是分离式耦合最不擅长的案例之一。这种情况下,交换Dirichlet和Neumann的角色(采用Robin-Neumann法或Robin-Robin法)可以实现稳定化。在实际工程中,preCICE库会自动切换这些加速方法。

Coffee Break 闲谈

“乒乓球”还是“投接球”

有些研究者将分离式耦合的迭代称为“乒乓法”,但我个人认为“投接球”更贴近实际。乒乓球是把对方的球直接打回去,而分离式耦合则是在接到球(温度)后,通过求解器的计算施加“变化”再投回去。而且还要用松弛系数调整球速——投得太快对方接不住(发散),所以诀窍是以合适的速度($\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分离式耦合伪代码如下:

  1. 设定界面温度的初始估计 $T_\Gamma^{0}$
  2. 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$ 则结束
  3. end do
🧑‍🎓

很简单呢!但实际实现中麻烦的是,两个求解器之间如何传递数据吧?

🎓

很敏锐。数据传递有三个课题:

  • 网格不一致:CFD网格和FEM网格在界面上的节点位置不同 → 需要插值
  • 数据格式差异:不同求解器的温度·热流密度输出格式不同
  • 进程间通信:MPI并行时,不同进程组之间的数据传输

能自动处理这些的就是MpCCI或preCICE这类耦合中间件。

Aitken加速与拟牛顿法

🧑‍🎓

您说固定的 $\omega$ 太慢,请告诉我动态优化的方法。

🎓

最广泛使用的是Aitken $\Delta^2$ 加速。它自动估计每次迭代的最优松弛系数:

$$ \omega^{k+1} = -\omega^k \frac{(\Delta r^{k-1})^T \, (\Delta r^k - \Delta r^{k-1})}{\| \Delta r^k - \Delta r^{k-1} \|_2^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 反复修正后发布”。

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ