本节摘要:不推公式海,只补最小必要底子:有限元把偏微分方程变成刚度矩阵的三步曲,弱形式为什么给不可导性松绑,三类误差各自的对策,以及耦合在数学上"自然"的真相——所谓多场,不过是让源项成为别的场解的函数。
前三章你点过无数次"计算",软件在这两秒里到底干了什么?回答这个问题不是为了考试,而是因为后面所有"算不动、不收敛"的诊断都建立在这层理解上。以一维稳态导热为例:−k·T'' = Q,边界上温度给定。这条方程在数学上叫强形式,它要求温度场二阶可导——而真实物理场景恰恰做不到:两种材料交界面处导热系数跳变,温度场的一阶导数不连续,二阶导数干脆不存在。强形式在这种地方天然失语。
弱形式是松绑的手术:把方程两边乘上一个权函数再对全域积分,分部积分把二阶导数降为一阶。一维稳态导热写出来就是:
∫ k·(dT/dx)·(dv/dx) dx = ∫ Q·v dx (对所有权函数 v 成立)
导数阶数降了,可导性要求松了,交界面跳变不再是障碍;更妙的是,边界条件里有一类(热通量)会自然融进积分式,成为"自然边界条件",软件里那些默认边界之所以是零通量,根源就在这里。COMSOL 的底层是弱形式起家,软件里的数学接口甚至允许你直接编辑弱表达式——那是第 7 章的话题,此处先知道来路。
**第一步,插值。**把求解域切成网格(第 2 章干的事),每个单元内的未知函数用节点值乘形函数表示——二阶拉格朗日单元里,一个四面体用十个节点值撑起一片二次曲面。无限维的温度场被压缩成有限个节点未知数,"求一个函数"变成"求一组数",这组数的个数就是日志里的自由度。
**第二步,组装。**把弱形式施加到每个单元上,权函数轮流取各个形函数,积分(数值上由高斯点完成)得到单元刚度矩阵与载荷向量;按全局编号把它们累加进大矩阵。用伪代码描述这几十毫秒发生的事:
K = 0,f = 0 对每个单元 e: 由节点坐标算雅可比与形函数导数 在高斯点上累加单元刚度 Ke 与载荷 fe 按节点全局编号把 Ke、fe 加进 K、f 施加边界条件,解 K·u = f
**第三步,求解。**K 是稀疏对称(自伴问题时)大矩阵,直接法或迭代法解出节点值,插值重构整个场——这是第 6 章的主场。
| 误差类型 | 产生位置 | 典型症状 | 对策 |
|---|---|---|---|
| 截断误差 | 形函数逼近 | 单元内曲率大处偏差 | 升阶次(p 加密) |
| 离散误差 | 网格分辨率 | 梯度集中区失真 | 网格加密(h 加密) |
| 代数误差 | 迭代求解器 | 残差未降到位 | 收紧容差、换预条件 |
三类误差里,第 2.3 节的网格无关性验证对付第二种;网格不变时换更高阶单元对付第一种;第 6 章的收敛诊断对付第三种。误差各治各的病,混着治只会白花钱。
看穿弱形式与组装逻辑后,多物理场耦合的神秘感自动消散。单场传热里,源项 Q 是个给定的数或函数;焦耳热问题里,Q = σ|E|²,是电场解的函数;热应力问题里,结构方程多了一项热应变,是温度解的函数。所谓耦合方程组,就是刚度矩阵从一块变成分块矩阵:
[ K11 K12 ] [ u1 ] [ f1 ] [ K21 K22 ] [ u2 ] = [ f2 ]
对角块是各场自己的刚度,非对角块就是场间的互相作用。单向耦合 = 略去一行一列、先解一块再解另一块;全耦合 = 联立整块矩阵一次解出;分离式 = 块与块之间迭代着解。软件里"多物理场"分支下那些耦合节点(电磁热、热膨胀、非等温流动),干的正是自动生成非对角块及其对应弱项的活——你挂耦合节点,软件替你写弱形式。这也解释了为什么有些耦合必须用预定义节点、有些可以手工在源项里写表达式:后者是非对角作用只从 A 指向 B 的简单情形,前者是双向作用需要成对项的场合。
💡 面对任何新耦合问题,先手写两条:B 场方程里哪一项依赖 A 的解,A 场方程里有没有依赖 B 的项。前者存在是单向耦合,两者都在是双向——这一分钟决定了后面所有求解器选择。
补一个热-结构耦合的完整实战流程。案例:散热器在工作温度下热膨胀导致的基板翘曲。步骤一,先完成传热分析(第 3 章的散热器案例),得到温度场分布。步骤二,在同一个组件中加固体力学接口,材料自动继承(铝的杨氏模量、泊松比、热膨胀系数 23×10⁻⁶/℃)。步骤三,在固体力学接口的设置中勾选"热膨胀"子节点,参考温度设为 20 ℃(装配温度)。步骤四,加边界条件:基板底面中心点固定(防止刚体位移)、底面的对称约束视几何而定。步骤五,求解序列选择"单向耦合"——传热研究先算,温度场结果作为固体力学研究的输入。结果解读:看 z 方向变形量(基板翘曲量)和 von Mises 应力(是否超过屈服强度 276 MPa 的安全系数)。这个流程是 COMSOL 多物理场耦合的最简入门案例——单向耦合、两个物理场、一个接口引用——掌握了它,你就掌握了 COMSOL 多物理场的钥匙。
补一个热-电耦合的实战案例来说明耦合的必要性。场景:大功率 LED 的结温会影响其发光效率和正向压降——温度越高,同样电流下的正向压降越低(负温度系数),这意味着发热越多。如果只做单向耦合(先算电场得发热功率、再算温度场),温度对电阻率的影响被忽略,结温会被低估。双向耦合的做法:传热接口与电流接口同时求解,电流接口中的电阻率用传热接口的温度场计算(材料属性设为温度相关),传热接口的热源用电流接口的焦耳热计算——两个场在每次迭代中互相更新,直到收敛。COMSOL 中这种双向耦合通过"完全耦合"求解器自动处理。工程意义:LED 灯珠的结温如果被单向耦合低估 10-20 ℃,寿命预测(以 Arrhenius 模型为基础)会偏差数倍——这就是为什么需要双向耦合的原因:不是学术洁癖,是温度对电参数的反馈在物理上不可忽略。
以保险丝的熔断为例走一遍热-电双向耦合。物理:电流通过保险丝产生焦耳热(I²R),温度升高导致电阻增大(金属的正温度系数),电阻增大又产生更多热——正反馈直到熔断。COMSOL 设置:电流接口加固体传热接口,双向耦合完全。焦耳热源在电流接口中自动计算(电场乘以电流密度),传热接口中作为热源出现;材料电阻率的温度系数让电阻随温度上升——耦合通过"温度相关材料属性"自动实现。求解策略:瞬态分析,时间步从毫秒到秒逐步加大,观察温度何时达到熔点。校验方法:用简化的绝热温升公式 t_fuse = ρ·c·ΔT/(j²·ρₑ) 手算熔断时间与仿真对照。这个案例的教学价值在于它展示了正反馈耦合(温度→电阻→发热→温度)的数值处理:时间步必须足够小以捕捉指数增长,否则解会发散。多物理场双向耦合的入门,从这个小小的保险丝开始,比从复杂的电池包开始要友好得多。