第四章 有限元分析入门

做轻量化反射镜,你绕不开有限元分析。说白了,它就是把你手里那个连续的整体,拆成一个个小单元,然后挨个算变形,再拼回去。我刚开始接触这行的时候,总觉得这玩意儿太抽象,直到第一次用有限元算出一块镜子的面形误差,跟实测数据对上了——嗯,那种感觉,就像你亲手调出来的光路终于出了干涉条纹。

4.1 有限元法的基本思想

有限元法的核心就八个字:化整为零,积零为整。你想想看,一块直径300mm的反射镜,你不可能用一个方程描述它整个面的变形。但如果你把它切成几千个小三角形,每个小三角形内部的变形规律就简单多了。

核心流程:

  1. 离散化——把连续体切成有限个单元,单元之间通过节点连接
  2. 单元分析——建立每个单元的刚度矩阵 [k] 和节点力向量 {f}
  3. 整体组装——把所有单元的刚度矩阵拼成总刚矩阵 [K]
  4. 施加边界条件——固定某些节点的自由度
  5. 求解——解方程 [K]{u} = {F},得到每个节点的位移 {u}
  6. 后处理——从节点位移反推单元应变、应力

我在项目中遇到过一位同事,他总觉得网格越密越好。结果算一个简单的悬臂梁,网格密到几十万单元,算了一整夜。其实没必要。你只要抓住关键区域加密,其他地方粗一点就行。这就是有限元分析的「性价比」思维。

4.2 网格划分原则

网格划分是有限元分析里最吃经验的一步。我见过太多人栽在这上面。网格分得好,结果准;分得不好,算出来也是垃圾。

4.2.1 单元类型选择

对于反射镜分析,我常用的单元类型就三种:

单元类型 适用场景 节点数 自由度
壳单元 (Shell) 薄壁反射镜、镜面厚度均匀 4 或 8 每个节点 6 个
实体单元 (Solid) 厚镜、变厚度镜、蜂窝背板 8 或 20 每个节点 3 个
梁单元 (Beam) 支撑结构、柔性铰链 2 每个节点 6 个

我个人习惯,对于直径厚度比大于 20:1 的反射镜,优先用壳单元。计算量小,精度也够。如果镜体有复杂的背部结构,比如蜂窝状减重孔,那就得上实体单元了。

4.2.2 网格密度控制

网格密度不是均匀的。你想想看,镜面边缘的支撑点附近、减重孔的转角处,应力集中,变形梯度大,这些地方必须加密。而镜面中心区域,变形平缓,网格可以粗一些。

我的经验法则:

  • 支撑点附近:网格尺寸 ≤ 支撑点直径的 1/4
  • 镜面光学区域:至少 6 层单元厚度方向
  • 减重孔转角:至少 3 个单元过渡
  • 整体网格数量:对于直径 300mm 的反射镜,1~3 万单元足够

4.2.3 网格质量检查

网格画完了,别急着算。先检查质量。我常用的指标有这几个:

  • 长宽比 (Aspect Ratio)——理想值接近 1,不要超过 5
  • 翘曲度 (Warpage)——对于壳单元,翘曲角不要超过 15°
  • 雅可比 (Jacobian)——单元变形后的质量指标,不要低于 0.7
  • 最小内角——三角形单元不要小于 20°,四边形不要小于 45°

我曾经踩过的坑:有一次我算一块 500mm 的 SiC 反射镜,网格画完没检查就直接提交计算。结果算出来的面形 RMS 值异常大,排查了两天才发现是几个单元的雅可比只有 0.3,导致局部刚度矩阵奇异。从那以后,网格质量检查成了我流程里的固定步骤。

4.3 边界条件设置

边界条件设置,说白了就是告诉软件「哪里固定、哪里受力」。这一步错了,后面全白搭。

4.3.1 支撑边界

反射镜的支撑方式决定了边界条件的类型:

支撑方式 边界条件设置 注意事项
三点支撑 约束支撑点处节点的所有平动自由度 (UX=UY=UZ=0) 不要过度约束转动自由度,否则会产生虚假弯矩
背部多点支撑 在支撑点施加弹性约束 (弹簧单元) 弹簧刚度需根据实际支撑结构计算
周边支撑 约束镜面边缘节点的轴向位移 (UZ=0) 径向自由度应释放,避免热应力
柔性支撑 用梁单元或弹簧单元模拟柔性铰链 注意柔性铰链的刚度方向性

我建议,对于三点支撑,不要简单地把三个点全部固定死。你想想看,如果三个点都完全固定,镜体在温度变化时无法自由膨胀,算出来的热变形会偏大。正确的做法是:一个点固定所有平动自由度,另外两个点只固定轴向自由度,释放径向。

4.3.2 载荷边界

反射镜承受的载荷主要有:

  • 重力载荷——施加整体重力加速度,注意方向(通常沿光轴方向或垂直光轴)
  • 温度载荷——施加均匀温度变化或温度梯度
  • 装配预紧力——在支撑点施加预紧力或预位移
  • 风载/振动——施加压力或加速度谱

关键提醒:重力载荷的方向一定要跟实际使用状态一致。我见过有人把反射镜竖着放(光轴水平)分析,结果重力方向设成了垂直光轴,算出来的面形完全不对。地面测试时镜子是水平放置的,但在轨使用时可能是竖直的——这两个工况要分别算。

4.4 求解器选择

求解器选对了,事半功倍;选错了,算到天荒地老。

4.4.1 常见求解器对比

求解器类型 适用问题 内存需求 计算速度
直接求解器 (Sparse Direct) 中小规模模型 (<10万自由度) 高 快
迭代求解器 (PCG/AMG) 大规模模型 (>10万自由度) 低 中等
模态求解器 (Lanczos) 模态分析 中等 快
显式求解器 (Explicit) 冲击、碰撞、大变形 低 慢(但稳定)

对于反射镜的静力分析,我通常用直接求解器。模型自由度一般不超过 20 万,直接求解又快又稳。如果模型特别大,比如整块 1.5m 的 SiC 镜体,网格细到 50 万自由度以上,那就得上迭代求解器了。

4.4.2 求解参数设置

求解参数里,有几个关键项要注意:

  • 大变形开关 (NLGEOM)——反射镜变形通常很小(微米级),关掉大变形,用线性求解即可
  • 自动时间步 (AUTOTS)——静力分析一般不需要,直接一个载荷步算完
  • 求解精度 (TOLERANCE)——默认值通常够用,如果收敛困难,可以适当放宽到 1e-4
  • 输出控制 (OUTRES)——只输出节点位移和单元应力,别把中间迭代步全输出,文件会爆炸

一个小技巧:在提交计算前,先做一个「试算」。把网格数量降到 1/10,快速跑一遍,看看边界条件有没有设错、载荷方向对不对。确认没问题了,再用完整网格算。这个习惯帮我省了不知道多少重算的时间。

4.5 有限元分析流程总览

下面这张图,是我自己总结的反射镜有限元分析流程。每次做项目前,我都会对着它过一遍,确保没有遗漏。

反射镜有限元分析流程 1. 几何建模 2. 网格划分 网格质量检查 (长宽比/雅可比) 3. 边界条件设置 支撑 + 载荷 4. 求解器选择与计算 5. 后处理与结果分析 结果验证 (与实测对比) 不满足精度,返回调整网格 💡 每次迭代后,检查面形 RMS 值是否收敛。如果 RMS 随网格加密变化超过 5%,说明网格还不够密 —— 这就是网格收敛性分析,是有限元分析里最容易被忽略的一步

你看这个流程,其实是个闭环。算完结果,发现不对,就回到网格划分那一步重新调整。我一般会做三次网格收敛性分析:粗网格、中等网格、细网格,看面形 RMS 值的变化趋势。如果粗网格和细网格的 RMS 差不到 5%,那粗网格的结果就可以用了。

最后再啰嗦一句:有限元分析不是「算出来就完事」。你算出来的面形变形,最终要跟干涉仪的实测数据去对标。如果对不上,别急着怀疑仪器,先回头检查你的模型——边界条件设对了没有?材料参数准不准?网格质量过不过关?我吃过这个亏,所以现在每次出报告,都会附上一句:「本计算结果需经实验验证。」