3. 有限元法入门:网格划分、单元类型、边界条件设定

说实话,很多搞光机的人一听到「有限元」三个字就头大。我当年刚入行时也一样,觉得这东西是搞力学的人玩的,跟我做光学设计有什么关系?直到有一次,我设计的一个反射镜在温度变化后像质崩得一塌糊涂,我才意识到——不懂有限元,光机系统根本做不精。

这一章,我就带你从工程应用的角度,把有限元法的三个核心环节讲透:网格怎么划、单元怎么选、边界条件怎么设。不扯虚的,全是实战经验。

3.1 网格划分:不是越密越好

网格划分是有限元分析的第一步,也是最容易踩坑的一步。我见过不少新手,一上来就把网格划得密密麻麻,觉得越精细越准。结果呢?计算跑了一整天,出来的结果跟实测差了一大截。

网格划分的核心原则就两条:

  • 关键区域加密,非关键区域稀疏——比如镜面支撑点附近、胶接界面、螺栓连接处,这些地方应力集中,网格必须细。而远离光路的壳体、底座,网格可以粗一些。
  • 网格质量比数量重要——一个扭曲的六面体网格,不如一个规整的四面体网格。我习惯用「长宽比」和「翘曲度」两个指标来检查网格质量。长宽比超过5的,我会手动调整。

实战经验: 我在做某星载相机热变形分析时,最初用了全局0.5mm的网格,算出来镜面变形0.3μm。后来把支撑结构局部加密到0.1mm,其他区域放松到2mm,结果镜面变形变成了0.18μm,跟实测只差5%。你看,网格策略对了,精度和效率都能兼顾。

3.2 单元类型:选对了事半功倍

有限元软件里单元类型一大堆:实体单元、壳单元、梁单元、弹簧单元……你想想看,光机系统里哪些地方该用哪种?

我个人的选择习惯是这样的:

结构类型 推荐单元 理由
镜体、镜座、厚壁结构 二阶四面体(C3D10) 能较好模拟弯曲和扭转,对复杂几何适应性强
薄壁壳体、遮光罩 壳单元(S4R) 厚度方向应力梯度小,用壳单元效率高
支撑杆、桁架 梁单元(B31) 细长结构,轴向和弯曲行为为主
胶层、柔性环节 弹簧/阻尼单元 简化建模,避免网格畸变

一个小技巧: 对于光机系统里的镜面,我建议用二阶单元。因为一阶单元在弯曲变形时容易出现「剪切闭锁」现象,算出来的变形量偏小。你想想看,镜面变形差个0.1μm,光学像质可能就完全不一样了。

3.3 边界条件设定:最容易被忽视的环节

边界条件设错了,网格再密、单元再高级,结果也是错的。我曾经犯过一个低级错误——把镜座的底面设成了全约束(所有自由度都固定),结果算出来的热变形只有实测的一半。后来才发现,实际安装时镜座是通过三个柔性支撑点固定的,底面并不是完全刚性连接。

光机系统里常见的边界条件类型:

  • 固定约束: 用于模拟螺栓连接、焊接等刚性连接。注意,实际螺栓连接是有刚度的,不是理想刚性。我一般会在螺栓位置加一个弹簧单元来模拟连接刚度。
  • 位移约束: 用于模拟导轨、滑槽等导向结构。比如镜筒在导轨上滑动,只约束垂直于导轨方向的位移,沿导轨方向释放。
  • 热边界条件: 包括温度载荷和对流换热系数。温度场不均匀时,要特别注意梯度变化大的区域——比如镜面边缘和中心温差超过5℃,就可能导致明显的热像差。
  • 接触边界: 镜片和镜座之间的接触,不是理想绑定。我习惯用「无摩擦接触」或「小滑移接触」来模拟,这样能更真实地反映热变形时的相对位移。

避坑指南: 我曾经在分析一个离轴三反系统时,把主镜和次镜之间的支撑结构设成了「绑定接触」。结果算出来的光轴偏移量只有0.02mm,但实际装调时发现偏移了0.15mm。后来改成「摩擦接触」并设置摩擦系数0.15,结果就对了。记住:光机系统里,刚性连接是理想情况,实际都是柔性连接。

3.4 知识体系总览

为了让你对本章内容有个整体印象,我画了一张流程图。它把网格划分、单元类型、边界条件设定这三个环节串起来了,也标出了每个环节的关键决策点。

有限元法入门:三大核心环节 网格划分 单元类型选择 边界条件设定 关键决策点 • 关键区域加密(支撑点、胶接面) • 非关键区域稀疏(壳体、底座) • 检查长宽比 ≤ 5 • 避免扭曲网格 推荐单元类型 • 镜体/镜座 → C3D10 • 薄壁壳体 → S4R • 支撑杆 → B31 • 胶层 → 弹簧单元 常见类型 • 固定约束(螺栓连接) • 位移约束(导轨/滑槽) • 热边界(温度/对流) • 接触边界(摩擦/小滑移) 核心原则 网格质量 > 网格数量 | 单元类型匹配结构特征 | 边界条件贴近实际 输出:可靠的热变形仿真结果

3.5 一个完整的操作流程

说了这么多理论,咱们来走一遍实际流程。假设你要分析一个反射镜在温度变化20℃时的面形变化:

  1. 导入几何模型——从CAD软件导出STEP或IGS格式,注意去除小倒角、小孔等不影响结果的细节。
  2. 设置材料属性——镜体用微晶玻璃(膨胀系数0.05×10⁻⁶/K),镜座用钛合金(膨胀系数8.6×10⁻⁶/K)。
  3. 划分网格——镜面区域用0.2mm二阶四面体,镜座用1mm二阶四面体,支撑点局部加密到0.1mm。
  4. 施加边界条件——镜座底面三个支撑点施加位移约束(仅约束Z向),镜面施加20℃均匀温升。
  5. 求解并提取结果——提取镜面节点的位移数据,用Zernike多项式拟合出面形误差。

嗯,这里要注意: 提取镜面节点位移时,一定要用「节点坐标系」而不是「全局坐标系」。因为镜面可能是曲面,全局坐标系下的位移不能直接反映面形变化。我习惯在镜面中心建立一个局部坐标系,Z轴沿镜面法向,这样提取的Z向位移就是面形误差。

3.6 常见错误与避坑指南

最后,我把自己这些年踩过的坑总结一下,你遇到了可以直接拿来用:

  • 网格过渡太突然: 从细网格到粗网格,中间要有2-3层过渡单元。我曾经直接跳了5倍尺寸,结果应力集中区域算出来的值偏大30%。
  • 单元类型混用不当: 壳单元和实体单元连接时,要加MPC(多点约束)或RBE2单元来传递自由度。直接共节点的话,壳单元的转动自由度会丢失。
  • 边界条件过约束: 这是最常见的问题。实际结构总有自由度,全约束会让结构变「刚」,变形量偏小。我一般会先做一次模态分析,看看约束后的固有频率是否合理。
  • 忽略热辐射: 在真空环境下,热辐射是主要传热方式。如果只考虑热传导,温度场会偏均匀,热变形算出来也会偏小。

好了,这一章的内容就到这里。网格划分、单元类型、边界条件——这三个环节你掌握了,有限元分析的基本功就算打牢了。下一章我们会聊更具体的内容,到时候见。

专注资料整理