迭代耦合法
迭代耦合的理论基础
共轭传热与界面条件
共轭传热(CHT:Conjugate Heat Transfer)是把流体的对流与固体的热传导在界面上耦合求解的问题。在界面 \( \Gamma \) 上,两个条件必须同时成立。
$$ T_f = T_s \quad (\text{温度连续}), \qquad -k_f \frac{\partial T_f}{\partial n} = -k_s \frac{\partial T_s}{\partial n} \quad (\text{热流连续}) $$
如何满足这两个条件,把解法分成了两大类。整体式(monolithic)方法把流体与固体组装成一个方程组同时求解;分区(partitioned)方法则让流体求解器与固体求解器分别运行、在界面上交换信息。迭代耦合属于分区法的一种,特点是在同一时刻(或同一稳态解)内反复交换直到收敛——既保留分区法的灵活性(可以直接沿用久经验证的成熟求解器),又获得整体式的严格性(界面条件确实被收敛)。
Dirichlet-Neumann分割的机理
所谓"流体与固体交换信息",具体到底是把什么传给对方?
标准做法是Dirichlet-Neumann(D-N)分割。给一侧求解器传界面温度(Dirichlet条件),给另一侧传界面热流密度(Neumann条件)。例如这样一个循环:流体侧固定壁温求解 → 把得到的壁面热流传给固体侧 → 固体侧返回新的界面温度 → 再回到流体侧……究竟哪一侧收温度、哪一侧收热流,看似可以随意选,实则是决定稳定性的最关键设计判断——仅仅把方向反过来,同一个问题就可能从收敛变成发散。
决定稳定性的是物性比
D-N迭代的稳定性,由界面两侧介质热学"强度"之比决定。稳态问题的支配参数是界面热阻比(导热热导比),非稳态问题则是热渗透系数 \( b = \sqrt{k \rho c_p} \) 之比。经验规律是:把热流传给导热好的一侧(通常是金属固体)、把温度传给导热差的一侧(流体),这样的配置稳定,反向则容易发散。金属与空气这类物性比极端的组合稳定裕度很大;而树脂与水这类热渗透系数相当的组合,无论哪个方向衰减都很慢,后文的松弛与加速手段就成为必需。
算法的数值手法
迭代循环的基本形与收敛判据
对时刻 \( t^{n+1} \)(或稳态解)而言,迭代耦合的循环具有下述形式。
- 以界面温度 \( T_\Gamma^{(k)} \) 求解流体,得到界面热流 \( q_\Gamma^{(k)} \)
- 以 \( q_\Gamma^{(k)} \) 求解固体,得到新的界面温度 \( \tilde{T}_\Gamma^{(k+1)} \)
- 施加松弛更新:\( T_\Gamma^{(k+1)} = (1-\omega) T_\Gamma^{(k)} + \omega \tilde{T}_\Gamma^{(k+1)} \)
- 重复迭代,直到界面残差 \( \| T_\Gamma^{(k+1)} - T_\Gamma^{(k)} \| \) 降到判据值以下
稳妥的做法是:收敛判据不仅看界面温度的变化,还要确认两侧热流的一致性(积分值的相对差在0.1~1%以下)。温度已经不再变化而热流仍然对不上,那不是收敛,而是停滞。
松弛与加速——固定ω·Aitken·拟牛顿
| 方法 | 机理 | 特点 |
|---|---|---|
| 固定松弛 | 用恒定的 \( \omega \)(0.3~0.8左右)钝化更新量 | 实现最简单。需要人工调 ω,取值偏保守则迭代次数增加 |
| Aitken动态松弛 | 由最近两次迭代的残差每步自动更新 \( \omega \) | 实现容易且效果显著。分区CHT在实务上的首选 |
| 拟牛顿(IQN-ILS等) | 由迭代历史构造界面雅可比矩阵的低秩近似 | 即使强相互作用也能少迭代收敛。耦合库中已有实现 |
| Robin-Robin(混合条件) | 向两侧都传温度与热流的线性组合 | 耦合系数按物性选取时,本质上比D-N更稳定。支持的求解器有限 |
非匹配网格之间的数据映射
流体与固体的界面网格密度通常相差很大(流体侧细上一个数量级)。界面数据的插值方面,温度这类强度量用形函数插值即可;但热流的传递必须使用守恒型映射(保证积分热量一致的权重),否则界面处会漏掉能量。映射误差属于迭代无法消除的系统误差,因此"穿过界面的热量在两侧一致"必须作为耦合设置的验证项目逐次测量。
实务应用指南
稳态CHT的推进方式
稳态问题中,①先让流体单独(壁面设为绝热或估计温度)部分收敛,②用估计的换热系数把固体预热,③从该状态开始耦合迭代——这种对初值的精心构造能大幅减少迭代次数。若直接从冰冷的固体与均匀流体起步,初期的巨大不协调会让迭代剧烈震荡。耦合频率(流体每迭代多少次交换一次)同样是调整对象:流体侧跑得过多会浪费每次交换的成本,跑得过少则会把尚未收敛的热流传出去,成为振荡的种子。
非稳态CHT与时间尺度差
CHT在实务上最大的特征,是流体与固体的时间尺度相差几个数量级(流体的对流时间:毫秒~秒;固体的热扩散时间:分钟~小时)。明明想追踪固体的温度历程,时间步长却被流体的CFL约束锁死,计算就会破产。常规对策如下。
- 准稳态方法——在固体的每个大时间步上,把流体作为稳态分析重新求解(流体响应远快于固体时有效)
- 子循环——在固体的一个时间步内让流体推进多步,传递时间平均热流
- 每个时刻做迭代(强耦合)——适用于热渗透系数相当、弱耦合不稳定的场合。每个时刻迭代2~5次把界面残差压下去
验证检查清单
- 界面热流的积分值在流体侧与固体侧是否一致(相对差1%以下)
- 系统整体的能量收支(输入热量=输出热量+蓄热)是否成立
- 把耦合收敛判据收紧一个数量级后结果是否不变
- 流体侧的壁面解析(y+与壁面处理)是否满足换热系数的精度要求
- 非稳态情形下,把时间步长与子循环次数减半后固体温度历程是否不变
主要工具的支持情况
各工具的实现
| 工具/配置 | 耦合方式 | 实务备注 |
|---|---|---|
| OpenFOAM(chtMultiRegionFoam系列) | 区域分割的分区迭代(同一代码内) | 界面为coupledBoundary。松弛与迭代次数在fvSolution中控制 |
| Ansys(Fluent单独的CHT) | 网格一体化的CHT(实质接近整体式) | 只要固体区域能放进同一套网格,这就是最快捷的路线 |
| Ansys System Coupling(Fluent×Mechanical) | 代码之间的迭代耦合 | 务必确认数据传递的守恒性设置与收敛监视器 |
| STAR-CCM+ | 内置CHT+co-simulation | 内置CHT能覆盖的范围很广;外部耦合走co-simulation API |
| preCICE(+OpenFOAM/CalculiX/自研代码) | 通用耦合库(已实现Aitken与IQN-ILS) | 开源耦合的事实标准。增加适配器即可接入任意求解器 |
| Abaqus co-simulation | 结构热与流体的联合仿真 | 需要一直连到热应力时的路线 |
内置CHT与分区耦合,该选哪个
能在同一代码内处理固体区域时(Fluent、STAR-CCM+、chtMultiRegionFoam),界面的协调性由代码本身保证,因此是第一选择。应当选择分区耦合(System Coupling、preCICE)的情形有三种:①固体侧需要非线性结构·材料的专用功能,②希望复用已有的、经过验证的固体模型,③流体与固体分属不同团队·不同工具且已经固化。分区耦合换来灵活性的代价,是本文所述的稳定性、映射与收敛判据的管理责任转移到用户身上——要有这个心理准备再选。
前沿研究动态
界面雅可比近似的高级化
拟牛顿系列(IQN-ILS、IQN-IMVJ等)的研究,呈现出把流固耦合(FSI)中发展成熟的方法向CHT移植的格局。复用多个时间步历史的多向量法、以模拟界面物理的表面算子作预处理等改进持续推进,方向都是"把迭代次数压到几次、且不随物性比变化"。越是需要强耦合的问题受益越大,而且正通过耦合库落到实务层面。
时间尺度分离的数理与多时间步方法
正面处理流体与固体时间尺度差的多时间尺度方法(不同时间步长下同步·插值的高阶化),以及直接求解周期定常(叶轮机械的旋转周期)的时间谱方法与CHT的结合,都在研究之中。发动机·燃气轮机热管理这类"秒量级流体×小时量级热惯性"的产业问题是主要驱动力。
机器学习代理模型加速耦合
与其每次迭代都跑昂贵的流体分析,不如用代理模型(GP·NN)近似"界面温度→界面热流"的响应来加速迭代,只在最终确认时使用真实求解器——这方面的研究正在推进。在设计优化循环内嵌CHT这类反复调用的场景中尤其有效。实用化的关键在于检测状态离开代理模型适用范围(超出训练域的温度区间)时的精度劣化,用Kriging的预测方差做监视,与之十分契合。
故障排查
按症状的原因与对策
| 症状 | 可能原因 | 对策 |
|---|---|---|
| 每次迭代界面温度都振荡·发散 | D-N分割的方向取在不稳定一侧;物性比相当 | 把温度与热流的传递方向反转。引入Aitken松弛 |
| 能收敛但极慢(几十次迭代以上) | 固定松弛取得过于保守;设置面向弱相互作用 | 改用Aitken/拟牛顿。精心构造初值(预热) |
| 界面热流在两侧对不上 | 非守恒型映射;收敛不足 | 改为守恒型插值。把热流一致性加入收敛判据 |
| 非稳态计算中固体温度单调漂移 | 子循环之间热量同步误差的累积 | 改为传递时间平均热流,并监视整体能量收支 |
| 壁面换热系数与实验偏差很大 | 流体侧壁面解析不足(y+与壁面函数不匹配) | 耦合之前先用流体单独验证壁面换热(如平板验证) |
| 每次交换流体都发散 | 传入的界面温度突变超出流体的稳定极限 | 对界面值做渐变处理(上下限·变化率限制),并提高交换频率以减小单次变化量 |
不稳定的排查步骤
耦合计算发散的时候,到底是流体不好、固体不好,还是耦合不好,该怎么区分?
分三级排查是常规做法。第1级:单独健全性——把流体的界面设为固定温度、固体的界面设为固定热流,确认各自单独都能稳定收敛。若在这里就坏掉,那是耦合之前的问题。第2级:单向耦合——不做迭代,只交换一次,目视检查传递值是否合理(量级·符号·分布)。映射的错误在这里就能看出来。第3级:迭代耦合——如果到这一步才发散,那就可以确定原因是"耦合算法的问题":要么是分割的方向,要么是松弛不足。第3级的对策就是正文表里那些,按反转方向 → Aitken → 拟牛顿的顺序逐步加强即可。
相关文章:共轭传热文章一览、平板上的强制对流、求解器收敛的确认与诊断。
帮助
更多
错误