Elmer多物理场
理论:串联求解器实现耦合
概述
听说Elmer是免费的多物理场软件。它用什么机制同时求解多个物理场?
机制是把求解器列在输入文件中,依次反复求解。Elmer由芬兰研究机构CSC自1995年前后开发,拥有热传导(HeatSolver)、电流(StatCurrentSolver)、弹性(StressSolver)、流体(FlowSolver)、磁场(MagnetoDynamics)等数十个求解器。输入文件(.sif)中写出Solver 1、Solver 2……等要用的求解器,并按区域给出材料和边界条件。稳态耦合问题中依次求解各求解器并把结果传给下一个,重复到整体变化足够小为止(分离式耦合)。耦合较强时迭代次数增加,可用松弛因子(Relaxation Factor)帮助收敛。也可以用图形界面处理几何和网格并生成设置文件。
焦耳发热的耦合方程
φ为电势,σ(T)为随温度变化的电导率,k为导热系数,h为表面换热系数。电流方程与热方程通过电导率的温度依赖性联系起来。
圆棒的理论解
P′为单位长度发热量,ρ为电阻率,α为电阻温度系数,A为截面积,d、a为直径和半径,T_s、T_c为表面和中心温度,q‴为单位体积发热量。
诞生于北欧的免费多物理场软件
Elmer是为推动芬兰各大学和研究所的计算科学合作而开发的,2005年作为开源软件公开。除工程外,它在地球科学研究界也被广泛使用,例如求解冰川流动的Elmer/Ice,作为冰盖模型为气候研究做出贡献。
算例
表格是径向简化热平衡模型的迭代结果,并非Elmer运行结果。假设电阻率1.72×10⁻⁸ Ω·m、热导率400 W/(m·K),不计端部散热、辐射及自然对流系数变化。
例:直径10 mm铜棒通300 A(环境20℃,电阻温度系数0.0039/K)
| 冷却条件 | 电阻率固定(20℃) | 计入电阻率温度依赖 | 耦合迭代次数 | 内部温差 |
|---|---|---|---|---|
| 自然对流 h = 10 W/(m²·K) | 82.7 ℃ | 103.1 ℃ | 8 | 0.005 K |
| 微风 h = 25 W/(m²·K) | 45.1 ℃ | 47.8 ℃ | 5 | 0.004 K |
温度升高使电阻增大、发热增加,自然对流时温度高出20 K。每次迭代按“电流→发热→温度→更新电阻率”循环,以温度变化小于0.01 K为收敛。冷却越弱耦合越强,迭代次数越多。
用Elmer求解同样的问题,表面温度比理论值低了约10 K。是网格太粗吗?
在怀疑网格之前,先确认耦合迭代是否收敛。如表所示,电阻率保持20℃的值只算一次时表面为83℃,第二次98℃,第三次102℃,逐步上升。整体迭代次数(Steady State Max Iterations)太小时,会停在中间值而偏低。查看输出中每次“Steady state iteration”温度范数变化如何减小,确认满足收敛判据(Steady State Convergence Tolerance)。棒内温差只有0.005 K,加密内部网格结果几乎不变。真正大幅影响结果的是换热系数:h为10和25时表面温度相差55 K。实际自然对流的h随温差变化,高温时还要加上辐射,最好由关联式把h作为温度的函数给出。
入门流程
- 用ElmerGUI或官方例题运行一个纯热传导问题,掌握.sif文件的结构。
- 在同一几何上加入StatCurrentSolver,把焦耳热作为热源传递。
- 把电阻率作为温度的函数给出,设置整体迭代次数和收敛判据。
- 与圆棒理论解比较,确认迭代收敛和网格影响。
- 进入实际几何,换热系数由关联式或测量给出。
“看似收敛,其实只是停了”
耦合分析的日志中最后一次迭代残差很小、计算“正常结束”,有时其实只是达到了整体迭代次数上限而停止。Elmer分别管理各求解器内部的迭代和求解器之间的外部迭代,可能内部已收敛而外部尚未收敛。养成检查最后几次外部迭代中温度和电势是否还在变化的习惯,就能避免这种疏漏。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 外部迭代不足 | 低估温度 | 确认收敛判据和上限 |
| 电阻率取常数 | 低估发热 | 作为温度的函数给出 |
| 换热系数取常数 | 表面温度不准 | 关联式加辐射 |
| 区域编号搞错 | 材料赋到别的区域 | 检查网格编号 |
| 强耦合下发散 | 迭代振荡 | 降低松弛因子 |
我想了解相关内容。
常见问题
Elmer是什么?
由芬兰CSC(IT Center for Science)开发的开源有限元软件。拥有热传导、结构、流体(Navier-Stokes)、静电场、静磁场、涡流、声学等众多求解器,在输入文件(.sif)中列出所需求解器即可耦合。还有图形界面ElmerGUI,以GPL许可证免费使用。
在Elmer中如何进行耦合分析?
把要耦合的求解器写在同一个输入文件中,稳态问题用“Steady State Max Iterations”设置整体迭代次数。依次求解各求解器,把温度、电势等结果传给下一个求解器,重复直到变化低于收敛容差。铜棒焦耳发热的例子中,计入电阻的温度依赖后迭代8次收敛。
焦耳发热分析要注意什么?
电阻率的温度依赖性和表面散热方式。直径10 mm、300 A的铜棒,电阻率保持20℃的值时表面温度为83℃,计入随温度增大的电阻率时为103℃,相差20 K。而棒内温差只有0.005 K,与其把内部网格划得很细,不如正确给出换热系数,对结果影响更大。
参考资料与检验范围
所列数值是基于文中假设的教学参考计算。资料用于理论和设置参考,不证明已在各软件中复现这些数值。工程决策须按实际条件验证。