做空间飞网捕获方案的有限元仿真,最折磨人的往往不是网展开之后飞得漂不漂亮,而是它在发射之前怎么被装进容器。你如果正在用ABAQUS做这类柔性网机构的展开动力学分析,一定会卡在同一个问题上:展开仿真的初始折叠态,到底从哪里来?
这篇内容想聊的就是这件事。我以实际跑过的空间飞网折叠-展开模拟为例,把完整思路和操作细节拆开讲一遍:为什么折叠模拟必须从展开态开始、如何规划"沿两个方向"的加载过程、折叠态怎么导出来作为展开仿真的起点,以及折叠过程中那些让人想砸键盘的数值问题。适合正在做太空绳网、太阳帆、可展开天线等柔性结构仿真的人参考,也适合做柔性织物包装、折叠机构分析的工程师当个思路模板。
1. 项目背景与整体设计思路
1.1 为什么必须从"展开态"开始折
刚开始接触这个项目时,我的第一反应是直接建模一个折叠好的飞网:把绳网画成几层叠在一起的小方块,然后直接丢进展开仿真里。结果发现这条路根本走不通。
编织飞网不是一块布,它是由几十根纵横绳股编织出来的网状结构。真实折叠后,每根绳股在狭小容器里会形成什么路径、会和哪些绳段发生接触挤压,完全是力学过程自然演化出来的结果,而不是某个CAD工程师在软件里"画"得出来的。如果你硬要在几何上摆一个折叠态,只能得到一堆绳子互相穿插、初始穿透的形态。这种模型一进求解器,第一时间就是无穷大的接触力,然后直接算飞。
所以标题里"初始为展开状态,沿两个方向折叠至折叠态"这个描述,其实就是这个项目最核心的技术路线:让ABAQUS自己通过力学过程"折"出一个自洽的折叠态。先把飞网建成完全展开的平整状态,加运动约束把它折起来,折的过程里包含了真实的接触、摩擦、应力累积,最后得到的是物理上可信的折叠构型。它自带残余应力、自带摩擦锁定状态、自带绳段间的接触历史,这些对后续展开响应影响极大。
打个比方:你要模拟一团纸展开,与其用软件精确描述一团揉皱纸的每一条纤维,不如直接把纸揉一遍。揉出来的结果才是真实形态。
1.2 "沿两个方向折叠"的工程含义
空间飞网的折叠不是随手一团的,工程上通常是设计好的规则折叠,否则无法保证入轨后的展开时序和可靠性。我接触到的方案里,"沿两个方向"大致对应两道折痕工艺:第一个方向先把整张平网折成一条细长的风琴状/带状结构,第二个方向再把长条整体压紧,让它收敛到发射舱能容纳的小包络里。
这个细节在仿真里不是小事。两个方向的折叠顺序、折痕间距、压紧量,直接决定了最终折叠态的内部绳网走向,也决定了后续展开时先解开哪一层、后释放哪一段。你如果一把梭哈,用一块压板两个方向同时挤,折叠形态会非常随机且不可复现,根本没法用来做展开仿真的初始条件。
我当时的做法是把折叠过程拆成两个独立加载阶段,每个阶段单独控制加载行程和速度,两段之间还设置了短暂的停顿,让绳网内部的动量先消散一部分。这种方式不仅更贴近实际工艺,也极大方便了后续排查问题——哪一段形态不对,单独回看那个阶段就行。
1.3 求解器为什么选Abaqus/Explicit
飞网折叠过程里伴随着大量自接触、摩擦滑移、局部绳段的突然滑脱和屈曲,接触拓扑变化非常剧烈。这类问题如果用Abaqus/Standard做隐式求解,迭代收敛会非常困难——接触对不断开合,刚度矩阵反复变化,经常出现"负特征值"然后崩掉。即使勉强收敛,时间成本也高得离谱。
Abaqus/Explicit的本质是显式时间积分,它不做隐式迭代,不存在"收敛失败"的概念,只要稳定时间增量满足条件,就能一路算到底。这正好适合折叠这类接触大变形问题。代价也很明显:显式的稳定增量步通常小到微秒级,一个0.5秒的折叠过程可能要跑几十万步。这个矛盾后面在质量缩放部分我会细说。
另外,飞网折叠过程中绳段会突然滑移、突然绷紧,产生的应力波传递和局部动态响应,在隐式求解里经常被"静力平衡"的假设掩盖,而显式求解器能把这些真实瞬态行为保留下来。对后续展开动力学的准确性来说,这是个重要优势。
1.4 整体流程先捋一遍
整个模拟流程可以梳理成六个环节,我先摆在这里,后面每个环节具体展开:
| 环节 | 主要工作 | 关键输出 |
|---|---|---|
| 1 | 建立展开态飞网几何模型 | 完整展开网、边界绳、网格 |
| 2 | 配置材料、截面、接触 | 材料卡片、接触定义 |
| 3 | 定义两阶段折叠加载 | 刚体压板、幅值曲线 |
| 4 | 运行折叠模拟并验收形态 | 折叠态ODB、能量曲线 |
| 5 | 将折叠态导入展开模拟 | 初始状态、去除压板约束 |
| 6 | 展开模拟计算与结果分析 | 展开位移场、应力场 |
这个流程里的第5步最容易被人忽略,很多人直接在一块模型里把"折叠"和"展开"连着算,结果压板一直按着网,网根本展不开。正确做法是把折叠模拟的末状态作为独立的初始状态,导入到新模型里重新配置边界条件。后面我会专门讲这部分的衔接细节。
2. 模型构建与材料参数配置
2.1 飞网几何建模与单元选择
飞网模型我建议用一维线体建立,也就是用wire特征来画绳股的路径。以常见的4米量级方形飞网为例,纵横绳股间距可以按网孔尺寸划分,比如每200毫米一根绳股,边界再加一圈加强边界绳。这样整张网大约有几十根纵向绳股和几十根横向绳股,交叉点数量在几千到上万个量级。
单元类型方面,我推荐用T3D2两节点三维桁架单元。很多人会纠结该用桁架还是梁单元,这里我说下自己的结论:空间飞网的绳股弯曲刚度极低,几乎可以忽略,用梁单元B31计算出来的弯曲响应其实是不真实的。而且如果用了梁单元,交叉节点共节点时会产生弯矩传递,真实网结是打结/编织节点,几乎不传弯矩。T3D2只有平动自由度,交叉处共节点等价于销接,反而和真实网结力学特性一致。
网格密度要控制。T3D2单元长度如果取30~80毫米,一张4米网的总单元数大概在1万到5万之间,跑起来压力还能接受。如果你想加密到10毫米以下,接触搜索的计算量会指数级增长,建议先把粗网格流程跑通,再逐步加密验证。
2.2 材料、截面与绳索特性设置
空间飞网绳材一般是Kevlar或Dyneema这类高比强度纤维材料。这里给一组参考参数,实际项目请以材料试验数据为准:如果是Kevlar纤维,弹性模量可取70GPa左右,密度1440kg/m³;如果是Dyneema,模量大约在87~100GPa,密度约970kg/m³。两种材料模量密度比都很高,声速在7000m/s量级。
截面设置只给桁架单元一个横截面积即可。绳径1.5毫米的话,面积大约1.77e-6 m²。这个参数直接影响绳股张力和整体刚度,别随手乱填。
这里有个关键设置必须提醒:桁架单元默认是可以承受压缩的,但真实的柔性绳只会受拉、不会承压。如果不处理,绳股在松弛状态下会出现假想的"受压刚度",折叠时松垮的绳段会产生严重畸变。ABAQUS里需要在材料或单元定义时设置只允许拉伸,也就是No Compression选项。开了这个选项之后,绳段松弛状态下刚度为零,完全依靠接触定义来防止穿越,这样才符合物理。
另外建议加一点材料阻尼。显式动力学里如果没有能量耗散,折叠完成后网体会长时间高频抖动,导致状态非常不稳。我一般用质量比例Rayleigh阻尼,系数取1~5秒的倒数量级,先做小值试算,观察能量曲线是否平缓衰减。
2.3 接触定义与摩擦参数
飞网折叠本质上是绳网自身的大量接触问题。整车接触我建议直接用General Contact通用接触,开启Self-contact自接触,让任意绳段可以和任意其他绳段发生接触。用接触对的方式手动定义几十对绳段接触面,在这个模型里就是给自己找罪受。
摩擦参数的取值要非常小心,它几乎决定折叠形态是否可信。Kevlar绳与Kevlar绳之间的摩擦系数,根据表面编织状态大概在0.15到0.3之间。我起步取0.2,然后会做一组0.1和0.3的敏感性对比。摩擦系数偏大,折叠后折痕会过度"粘住",展开初期解包困难;偏小则折痕不稳定,折叠态一撤掉压板就自己弹开。通过敏感性对比你能看到摩擦对展开时序的影响到底有多大,这本身也是项目报告里很有价值的内容。
法向接触行为用硬接触(Hard Contact)加罚函数算法即可,ABAQUS默认参数一般够用。如果计算中出现穿透,优先检查接触稳定性和增量步,而不是一上来就狂调接触刚度。
2.4 质量缩放与求解控制
显式求解的稳定时间增量由最短单元和材料波速共同决定。以单元长度30毫米、声速7000m/s估算,天然稳定增量在4微秒左右。如果某些局部网格更细,增量会更小。折叠过程就算压缩到0.5秒,也需要十几万步起步,加上接触计算,单次作业可能跑几十个小时。
工程上通行做法是开质量缩放(Mass Scaling),把稳定时间增量目标设到1e-5到1e-4秒量级,相当于让材料密度"变重"几十倍。密度变了,声速就变了,增量步就能加大。但质量缩放改变的是惯性效应,如果缩放太猛,折叠过程中绳网的惯性力会掩盖真实的接触力,形态就会失真。
我的经验是:质量缩放要分阶段。先用Fixed Mass Scaling设一个目标增量步跑通流程,确认形态符合预期;然后把质量缩放系数降低一档,对比折叠形态差异。如果两次折叠结果差别肉眼可见,说明惯性污染太严重,需要降低加载速度或减小目标增量步。判据上,折叠加载阶段动能峰值与内能峰值的比值最好控制在5%以内。
3. 两阶段折叠的加载实现与参数控制
3.1 用刚体压板控制折叠轨迹
折叠加载我用的是刚性压板方案,没有直接在绳网节点上加位移。原因很简单:直接给绳端加位移虽然省事,但折叠形态完全不可控,绳网会在中间随意堆叠缠绕,产生大量非物理形态。金刚石压板的好处是运动轨迹清晰、物理直观,而且后续展开模拟中可以直接把压板删掉,干净利落。
第一方向折叠我布置了两块平行的解析刚体压板,分别位于网的两侧,通过压板参考点施加相向的位移,把平面网逐渐夹成带状。压板长度要覆盖整张网,宽度决定最终折叠带宽。第二方向折叠则换成两组指状压条或者一块窄压板,从另一个方向压合已经折好的长条,让它最终收敛到目标包络尺寸。
解析刚体的网格不存在,计算时不产生变形自由度,接触力反而更稳定。压板表面要记得赋予摩擦属性,否则绳网接触压板后会打滑,折叠形态对不齐。
3.2 幅值曲线与加载时间的选取
加载时间的选择是我踩过最多坑的地方。真实地面折叠设备速度很慢,可能每秒零点几米,如果按真实时间跑,即使开了质量缩放,计算步数也太多了。所以一般会人为把折叠过程压缩到0.1~0.5秒的时间尺度来模拟。
注意,这里"压缩时间"是仿真策略,不是真实的物理时间。加载速度越快,惯性效应越严重。我用的是ABAQUS内置的Smooth Step幅值曲线来定义压板位移,这种幅值的位移、速度和加速度曲线都很平滑,不会在起步和停下时产生加速度突变,大幅减少应力波冲击。
以我调试过的模型为例,一个4米见方的飞网,第一方向折叠行程大约1.5米,加载时间0.3秒;之后设置0.2秒的保压段,让网内动量耗散;第二方向折叠行程0.5米,加载时间0.2秒;再保压0.2秒。整体模拟时长约1秒。这组参数供参考,具体数值取决于你的包络尺寸和质量缩放目标。
加载时间的合理性用能量曲线来检验。如果折叠结束时动能迅速衰减到一个很小值,内能曲线连续增长没有突变,说明加载速度基本合适。如果动能曲线上有尖锐振荡,说明惯性效应过强,需要延长加载时间或降低质量缩放。
3.3 折叠过程中的监控指标与验收标准
算的过程不能只看云图。我习惯同时监控几类指标,判断折叠过程是否正常:
第一是接触力输出。压板参考点的反作用力曲线应该平滑上升,如果有突然的毛刺或阶跃,说明局部绳段发生了剧烈的滑移冲击,可能有问题。
第二是能量比输出。ALLKE(动能)与ALLIE(内能)的比值,加载末端要回落稳定,不能高企。同时看一眼伪应变能ALLAE,如果占比过高说明单元变形模式有问题。
第三是形态快照。每个阶段结束保存一帧,人工检查折叠形状是否符合工艺预期,有没有局部的绳股缠绕、异常拱起。这一步别省,数值指标再好看,形态不对就白算。
折叠态验收标准我通常看三条:最终包络尺寸是否落入目标范围;拆掉压板后网体是否会发生明显的自发回弹(如果回弹严重说明折痕不稳定、摩擦锁定不足);绳股之间是否还残留明显的初始穿透(有穿透说明接触或质量缩放还有问题)。
3.4 折叠态导出与模型切换准备
折叠模拟运行完成后,最后一个增量步的结果就是你要的折叠态。现在先别急着跳到展开仿真,有几件事要先做。
首先回到折叠模拟里删掉所有压板刚体和加载边界条件,重新做一个"静置段"计算,看看折叠态会不会在无约束下保持稳定。这一步相当于验证折叠态的力学稳定性。如果静置段里网体发生了大幅回弹或滑脱,说明摩擦锁定不够,回到接触参数重新调试。
其次,把折叠态初始速度要清零。如果折叠模拟的最后阶段还有残余动能,直接作为展开仿真的初始条件会导致前几毫秒的响应全被假振动污染。我通常会在折叠流程末尾增加一段阻尼松弛阶段,让动能充分衰减到接近零,再导出状态。
做好了这些准备,折叠态就可以作为新模型的初始状态输出了。具体切换方式在下一节说。
4. 从折叠态展开仿真的衔接处理
4.1 两种衔接方式:重启动与初始状态导入
从折叠态切换展开仿真,我试过两种路径,各有适用场景。
第一种是重启动(Restart)。在折叠模拟的模型基础上继续建新Job,保留所有接触和网格信息,通过重启动点读取折叠末帧。优点是继承状态最完整,缺点是原模型里压板、加载条件全混在一起,改起来容易出错。
第二种是初始状态导入(Initial State)。新建一个单独的展开仿真模型,在模型属性里指定从折叠模拟的ODB文件读取初始网格和应力状态。Abaqus/CAE里操作路径是Model Edit Attributes -> Model -> Initial State,选择折叠模拟的ODB文件,指定最后一个分析步和最后一个增量帧。这种方式的优点是折叠问题和展开问题彻底解耦,展开模型里想加什么边界条件、想删掉什么约束,都很干净。
我个人推荐第二种。展开模型独立调试的时候,不用每次都被折叠阶段的压板约束干扰,排查问题效率高很多。
4.2 释放约束与初始状态的处理
用Initial State方式建好展开模型后,第一个要确认的事是:折叠时的压板约束全部不存在了。展开模型是从折叠末帧导入的,压板本身不在模型里,绳网带着折叠形状和残余应力一起出现。如果这时绳网的弹性应变能和接触储能足够,它自己就会"弹"着展开。
但这里有个物理上的坑:折叠态里绳网内部存在大量的初始接触力和摩擦锁定区域。当外部约束一撤,这些接触力会瞬间重新分配,局部绳段可能产生高速滑移,应力波会在网面快速传播。这会导致展开初期几毫秒内出现剧烈的局部振动,看起来很像数值不稳定,但其实是一种真实的"解包冲击"。
处理这个问题的办法是分两步走:先不加任何主动展开力,让导入的折叠态在只受接触和阻尼作用下自由松弛一小段时间,观察它是否稳定展开。然后再根据实际机构原理,给需要的节点或边界加展开驱动力。如果自由松弛阶段就出现明显的异常穿透或速度发散,那大概率还是折叠态本身有问题,别急着往下走。
4.3 展开结果怎么看:关键输出与对比验证
展开模拟的输出,除了常规应力应变,更关键的是网形演化。我习惯在网面中心、四个边角点和边界绳中段布置输出点,提取位移-时间曲线。展开是否对称、是否卡滞、是否出现局部缠结,从这几条曲线的相对关系能快速判断。
这里分享一个很重要的对比方法:做一组"理想折叠态"展开模拟作为对照组。理想折叠态指的是不经过折叠模拟、直接用几何手段近似摆出来的折叠形状。两组结果对比,你会清晰看到摩擦和残余应力对展开早期轨迹的影响。我实测下来,理想折叠态的展开总是更"顺",但真实折叠态会有明显的分段解锁特征——先松开第一层,再猛地跳出第二层,展开时间也可能差20%以上。这个差异本身就是折叠工艺必须单独建模论证的有力证据。
5. 常见问题与排查技巧实录
5.1 绳网穿透与数值"爆炸"
折叠模拟里最常见的现象是绳段互相穿透,然后接触力瞬间爆表,整个模型像被炸开一样散掉。
遇到这个问题先按这个顺序排查:第一,确认General Contact里Self-contact确实开了,这是最容易漏的一步;第二,检查加载速度是否过快,Smooth Step幅值曲线的时间段是否过短;第三,看质量缩放系数是不是设得过大,惯性力把接触压穿;第四,才考虑增大罚函数接触刚度或局部加密网格。
穿透有个经典特征:模型整体不发散,但局部绳段像"幽灵"一样互相穿过,过几帧又弹回来。这种是接触搜索漏掉了某些可能接触区域,可以在接触定义里把接触域从All * with self改成Active elements with self,或者补一个显式的接触对覆盖问题区域。
5.2 展开初期的异常振荡与能量尖峰
展开仿真一启动,模型动能瞬间冲得很高,网面产生剧烈抖动,看起来不像正常展开。
这通常是折叠模拟结束后没有做充分的松弛阻尼,折叠态内部还留有大量残余动能就导出了。记住,Initial State导出前,折叠模拟必须已经处于一个动能极低的状态。判断标准是看折叠模拟最后阶段ALLKE曲线,要求它已经平缓衰减到ALLIE的1%以下。如果还是很活跃,就延长阻尼段的时长。另外一个常见原因是两段折叠之间没有停顿,第二阶段的折叠是在第一阶段惯性还没散去的情况下叠加的,最终折叠态的应力和动量分布就很乱。
展开模型里如果振荡还是压不住,可以在接触定义中开启接触阻尼,给接触对的法向和切向都加一点粘性阻尼,能把高频抖动有效压下去,同时不至于扭曲低频率的整体展开轨迹。
5.3 折叠形态失控与折痕偏移
跑完整个折叠模拟,发现折叠包形态和工艺预期差距很大:某些绳股跑位了、折痕不在预定位置上、网包一侧鼓起一侧塌陷。
我遇到过的主要原因是压板几何尺寸和网孔尺寸不匹配。压板宽度太窄,折痕就会挤到网孔中间而不是沿着绳股走;压板太宽,折叠层数不足,形态就不紧凑。解决办法是先做一个简化的二维平面模型或单列绳股模型,快速扫几个压板宽度参数,把几何匹配关系定下来,再跑全尺寸三维模型。这样调参速度快十倍。
摩擦系数取太大会导致绳段在压板表面"卡住",取太小会打滑,两者都会让折痕跑偏。建议先取0.2跑一版,然后对比0.1和0.3的结果,选择折痕最稳定、展开最顺的取值。
5.4 计算成本、并行与软环境坑
这个模型不许算太快,但也不能慢到没法迭代。我常用的降本手段包括:利用对称性只建半场或四分之一模型(前提是折叠工艺对称);用多线程和MPI并行跑显式求解;不参与折叠行为的远端部件直接去掉,不要留在模型里浪费接触计算。
这里顺便提一个很多人问过的环境问题:ABAQUS和UG西门子的NX装在同一台机器上时,经常出现许可证冲突,报错信息看起来像是ABAQUS服务起不来。这本质上是两个软件共用FlexLM许可体系时的服务端口和环境变量发生了冲突。常规解决办法是把两个软件的许可服务端口和vendor daemon分别指定,互不干扰,环境变量里的LICENSE变量按需切换。这类问题属于软环境范畴,先排查服务启动顺序和环境变量,通常比反复重装更有效。
折叠模拟的过程管理还有个实际建议:每一阶段单独保存状态和输出,不要指望一个长Job从头跑到尾不出问题。我习惯拆成三段——第一方向折叠、保压、第二方向折叠——分别提交,每段完成后检查能量和形态,通过后再接着算下一步。虽然多写几个模型,但排查问题的成本低得多。
做飞网折叠模拟这些年,我最大的体会是:折叠过程绝不是"展开仿真的准备工作"那么简单。折叠时产生的摩擦锁定、残余应力和绳段分布,会深深影响展开初期的动力学行为。你越想省掉折叠阶段的模拟,后面展开阶段的不可信程度就越高。
最后分享一个实用的小经验:如果你时间紧,其他环节都可以压缩,唯独折叠模拟末端的"松弛静置段"别砍掉。宁可多加一百毫秒的阻尼时间,也要确保导入展开模型时的初始动能清零。我在这上面吃过太多次亏,每次舍不得那半天计算时间,后面都要多花三五天去排查展开初期那一大堆来路不明的噪声。慢即是快,这句老话用在这类仿真里完全成立。