本节摘要:默认求解器配置八成情况下不用动,剩下两成决定了你是顺利收工还是通宵排障。本节掀开"显示默认求解器"这口锅:直接与迭代求解器的内存换速度、全耦合与分离的阻尼与伪时间步进,以及一张按命中率排序的不收敛排查清单。
右键"研究"→"显示默认求解器",模型树里多出"求解器配置"分支——此前它一直隐身。稳态问题下的典型结构是:稳态求解器(管非线性外层迭代)下面挂着全耦合或分离式(管场的组织方式),再往下是代数求解器(管每一步怎么解线性方程组)。三层各有各的旋钮,排障前先分清报错发生在哪一层:收敛问题看外层误差列,内存爆掉看代数层。
**代数层的两派。**直接求解器(MUMPS、PARDISO 这一族)对矩阵做完整分解,万无一失、对病态问题极其皮实,代价是内存——分解产生的填充让内存随自由度超线性增长,三维问题百万自由度就要两位数 GB。迭代求解器(GMRES 一族)靠预条件器一轮轮逼近解,配几何多重网格或代数多重网格处理传热、扩散类问题时内存能省到直接法的零头,代价是要为不同物理问题配不同的预条件组合,配错不收敛还以为方程有问题。选择规则粗暴有效:小模型、病态嫌疑大、赶时间不赶内存——直接;大模型、方程结构规整(扩散型、泊松型)——迭代加多重网格。
**非线性外层的两个救兵。**全耦合求解器的牛顿迭代里藏着一个阻尼因子,默认按自动策略走;手动手调的口诀是从 0.9 起步,迭代来回震荡就减半到 0.5、0.1——步子迈小,收敛变慢但至少前进。稳态问题更常用的救兵是伪时间步进:给稳态方程虚拟地加上时间项,让求解器像瞬态那样从初始值"演化"到平衡态,每步都容易,绕过非线性一步到位的翻车风险;强非线性稳态(辐射主导、相变、湍流)几乎都靠它兜底。位置在稳态求解器的"步进"设置里,选项名就叫伪时间步进,CFL 数按默认即可。

5.2 讲了分离与全耦合的取舍,这里补分离式的两处细节。其一,分离步的顺序可以调整:把最线性、最便宜的场放在轮转最外层先解,往往能减少轮数;铜排案例里电流场最快,默认顺序就合理。其二,每个分离步有自己的容差因子,它控制该场相对整体容差解到多精——默认值在绝大多数场景够用,但当场间量级悬殊(比如温度变化一开尔文而电位变化几百伏)时,适度收紧反馈场的容差能显著减少外层轮数。判断外层是否健康的依据在收敛日志的"分离"段:每一轮场间传递量的相对变化应单调衰减,轮数四到八轮正常,超过十轮就该回头检查反馈强度与容差搭配,而不是干等。
收敛历史不是进度条,是心电图,三种病态各有含义。平台型:误差卡在某个水平横走——要么遇到无解的方程组(缺约束、奇性),要么迭代在两个状态间打摆(阻尼太大),对照清单①③。锯齿型:误差上下来回——牛顿步子迈过了谷底,阻尼因子减档或开伪时间步进,对应③。上翘型:误差越修越大——初值离谱或网格里有致命畸形单元,对应②④。读图的另一个用途是判断"够好了没":稳态问题误差降到容差以下自然停机,但若你看到误差降了两三个量级后进入缓慢爬行,多等十个迭代通常不会有奇迹,收紧容差才是让它继续降的正路。每张收敛图都截图存档的习惯,在写报告时还会第二次回报你:它是"求解过程受控"的直接证据。
求解器配置的核心是两个选择:直接求解器还是迭代求解器,以及预条件子的选择。直接求解器(如 MUMPS、PARDISO)把方程组一次性分解求解——结果稳定、对网格质量不敏感,但内存消耗与自由度的平方到三次方成正比,大型模型内存爆炸。迭代求解器(如 GMRES、CG)逐步逼近解——内存只与自由度线性相关,但收敛速度取决于预条件子的质量——预条件子不好则迭代次数爆炸甚至不收敛。COMSOL 的默认策略是:中小模型用直接求解器(省心),大模型用迭代加预条件(省内存)。预条件子的选择是一门经验学科——不完全 LU 分解(ILU)是通用选项,代数多重网格(AMG)对扩散主导的问题效果好,几何多重网格(GMG)对结构力学效果好。迭代不收敛时的排查清单:检查预条件子的迭代次数上限是否被设置得过低、容差是否设得过紧(对于强非线性问题需要宽松容差加阻尼)、以及是否有接近奇异的材料或边界(如绝缘体上的电压边界)。求解器配置是仿真工程中最"看不见摸不着"的部分——它不像几何和物理场那样有直观对应,全靠对数值方法的理解和经验积累。
补一个非线性和不收敛的实战排查流程。非线性问题的不收敛通常有三种形态:形态一,第一次迭代就发散——初始值太差或方程有奇异(比如除以零),检查初始值是否合理、方程分母是否有为零的可能。形态二,迭代几步后发散——步长太大跳过了关键区间(对于强非线性问题需要减步或加阻尼),在 COMSOL 中通过"阻尼因子"或"分段连续"来控制。形态三,迭代停滞不降——残差降到某个值就不动了,可能到达了机器精度(参数设置过严),也可能是物理上有分叉或多解(同一组参数对应多个稳定解),需要换初始值探索其他解分支。三种形态的排查工具有一个共同起点:在求解器节点中打开"日志"查看每步迭代的残差变化——残差持续下降说明在正确轨道上只是需要更多迭代、残差反弹说明步长过大、残差卡在某个值说明到达极限。日志是求解器的心电图,学会读日志是调试收敛问题的基本功。
求解器配置的最后一块拼图是阻尼策略。非线性问题(如接触分析、大变形、弹塑性)的牛顿迭代可能因为步长过大而跳过解——阻尼的作用就是把每步的更新量缩小一个系数(比如 0.5),让迭代更保守但更稳定。COMSOL 的自动阻尼会根据残差的下降趋势动态调整阻尼因子:残差正常下降时阻尼因子接近 1(全步更新),残差反弹时阻尼因子自动减小(保守更新)。手动设置阻尼的场景:强非线性问题的初始阶段(解离真实解很远时需要大阻尼防止飞掉)、接触分析从分离到接触的突变时刻(需要极小步长跨越不连续)、以及材料软化的负刚度段(需要弧长法而不是常规牛顿法)。阻尼策略的选择没有万能公式,但有一个通用的调试方法:先用全自动阻尼跑一遍看日志——如果残差曲线平滑下降但最终不收敛,加大迭代次数;如果残差在某步突然跳升,说明需要加阻尼或减步长。求解器的配置就像调音台——每个旋钮都有一个合理范围,超出范围就会产生杂音,关键是知道哪个旋钮控制哪个频率段。