跑过方管碰撞仿真的人,大概率都见过这么一幕:模型提交到LS-DYNA 里,跑了大半天,后处理一翻,沙漏能占比飙到 12% 以上,变形模式从规则的折叠压溃变成了歪歪扭扭的锯齿状,峰值力曲线毛刺一大堆。这时候有人直接去调沙漏控制参数,有人回头换单元公式,但真正的问题往往在一开始建模型时的几个关键设置上。这篇文章要聊的,就是用 LS-DYNA 做壳单元冲击仿真时必须要盯住的 5 个关键设置,全部以方管碰撞为例展开,把沙漏控制参数单独拎出来讲透,顺便把“壳单元厚度与积分点个数到底什么关系”这个问题一起解决掉。
方管碰撞是个特别适合当教材的案例。方管是工程里最基础的薄壁吸能结构,碰撞过程中弯曲、压溃、折叠、甚至局部撕裂全都会出现,几乎覆盖了壳单元冲击仿真能遇到的所有典型问题。把这 5 个设置搞明白,再去做 B 柱、防撞梁、电池包护板这类真实结构,思路完全可以迁移。全文会给参数推荐取值和背后的逻辑,也会说明哪些情况下默认值就够用,哪些情况必须动手干预。
1. 为什么拿方管碰撞当案例:一个设置不当就“翻车”的典型场景
1.1 方管碰撞里有哪些“壳单元杀手”
先说结论:方管碰撞看着简单,实际上比很多车身钣金件更挑设置。原因有三点。
第一,方管压溃是弯曲主导的问题。碰撞时壁板发生大幅弯曲,塑性铰沿着管壁依次形成,折叠模式是不是合理,直接取决于壳单元能不能准确传递弯矩。一旦单元公式或者积分点个数不到位,弯矩-曲率关系就会失真,压溃力峰值和折叠波长全都会跑偏。
第二,方管存在复杂的自接触。折叠的管壁会层层叠在一起,不同壁面之间发生摩擦和挤压,这意味着接触算法必须稳定,否则节点穿透、初始穿透这两个大坑会接踵而来。节点穿透会导致局部应力集中,初始穿透又会让力曲线上来就是一根尖峰,怎么看怎么假。
第三,方管压溃后单元扭曲严重。壳单元在经历大转动和大变形之后,原来的平面可能被扭曲成马鞍形状,如果翘曲刚度控制不好,网格一旦扭曲就会“锁死”或者“软化”,仿真结果自然不可信。
1.2 这个案例的迁移价值
方管碰撞模型不算大,几千到几万个单元就能跑出像样的结果,没有整车模型那么长的建模周期,很适合用来摸清各种参数对结果的影响。我平时做防撞梁、副车架这类结构时,遇到拿不准的壳单元设置,都是先拿一个方管或者帽型梁模型做验证,趋势对了再上真实结构,这个方法强烈推荐。
如果你发现自己的方管碰撞仿真出现了下面任何一种现象,这篇博文里的 5 个设置大概率能帮你定位问题:
- 压溃力峰值异常偏高,曲线毛刺多;
- 变形模式是歪的,该对称的不对称;
- 沙漏能占比一直压不下来,超过内能的 5%;
- 计算中途报错或者结果对网格尺寸极其敏感。
2. 关键设置一:壳单元公式怎么选:BT 还是全积分
2.1 ELFORM=2 和 ELFORM=16 的本质区别
LS-DYNA 的壳单元公式很多,日常冲击仿真里真正需要关注的其实就是两类:默认的 Belytschko-Tsay(ELFORM=2)和全积分壳(ELFORM=16)。它们之间的区别,用大白话说就是“计算一个单元截面内力时采样几个点”。
Belytschko-Tsay 是单点积分,也就是在单元中心取一个积分点。它的核心优势是快,而且是又快又稳,尤其适合显式动力学里动辄百万单元的碰撞模型。但单点积分有个天然缺陷:单元会产生一种“变形了却不产生应变能”的变形模式,也就是沙漏。这个后文会重点展开。
全积分壳在每个单元里布置多个积分点,理论上不会出现沙漏,计算精度看似更高,但代价也摆在那里:计算量成倍增加,而且在弯曲主导的问题中容易出现剪切锁死,就是单元过于刚硬,导致结构整体刚度偏大。锁死会让压溃力虚高,需要加额外的假设应变方法来修正。
2.2 方管碰撞选型逻辑
方管碰撞这类问题,我的推荐是:默认用 ELFORM=2,同时把沙漏控制做好。理由很直接——方管碰撞模型少则几千单元,多则几十万单元,显式分析每增加一点点单元开销,都会反映到实际计算时长上。BT 单元的计算效率高,配合合理的沙漏控制参数,精度完全够用。
只有在下面两种情况下,才建议考虑局部换成 ELFORM=16:
- 管壁扭曲特别严重,沙漏控制参数已经调到合理范围,沙漏能仍然压不住;
- 你关心的是某一小区域的精细应力分布,比如焊点附近的疲劳热点分析,需要更准确的局部应力场。
实际工程中我会做的是:整个模型保持 ELFORM=2,把可能发生严重折叠的局部区域单独设置成 ELFORM=16,同时注意两种单元之间的连接和过渡。这个做法能兼顾效率与精度,但也提醒一句——局部切换后一定要检查过渡区的应力是否连续。
2.3 壳单元公式选择的参考对照
| 单元公式 | 积分方式 | 沙漏风险 | 弯曲精度 | 计算成本 | 适用场景 |
|---|---|---|---|---|---|
| ELFORM=2(Belytschko-Tsay) | 单点积分 | 较高,需沙漏控制 | 一般,依赖网格质量 | 低 | 大模型、冲击、碰撞 |
| ELFORM=16(全积分) | 多点积分 | 基本无 | 较高 | 高 | 局部精细区、压力集中区 |
| ELFORM=8/20 | 多点积分 | 低 | 高 | 更高 | 特殊工况,使用较少 |
需要特别提醒的是:ELFORM=16 不是万能的。有的工程师一看到沙漏就把全部单元改成全积分,结果计算时间翻倍,压溃力反而偏高,最后发现是剪切锁死。全积分壳需要配合 LS-DYNA 的假设应变选项来缓解锁死,不能无脑使用。
3. 关键设置二:厚度方向积分点个数:2 个还是 5 个
3.1 壳单元厚度方向积分点到底在算什么
这是很多新手最容易忽略的一个参数。壳单元虽然在几何上是二维的,但它要代表一个带厚度的三维板壳。厚度方向上的应力分布,就是通过积分点来还原的。默认情况下,LS-DYNA 的 BT 壳单元厚度方向只取 2 个积分点,位置大约在厚度上下表面附近,这只能还原一种线性的应力分布。
当结构以纯弯曲为主时,线性应力分布勉强够用。但方管碰撞不是纯弯曲——压溃过程中,壁板一侧受拉一侧受压,同时还有膜力叠加。中性层位置会随着塑性流动发生移动,应力分布会变成明显的非线性。这时候 2 个积分点就像拿一把两齿的叉子去叉牛排,能叉住但不稳,结果要么是弯矩给的偏保守,要么是塑性变形推进速度不对。
3.2 压溃过程对应力分布的要求
方管折叠时,每一道塑性铰都是“先外侧屈服、再向内侧扩展”的过程。外侧纤维应变很大,内侧纤维应变小甚至为负,中性层一直在移动。厚度方向上至少要 3 到 5 个积分点,才能捕捉到这个渐变过程。
我做过一个对比测试:同一个方管模型,分别设置 NIP=2、3、5,其余条件完全一致。结果是 2 个积分点的模型最先出现压溃形态偏移,折叠间距明显偏大,峰值力比 5 积分点模型高了大约 8%;5 积分点模型的变形模式对称性更好,力-位移曲线也更平滑。这个差距在做整车碰撞安全件分析时是不可接受的。
3.3 积分点个数与厚度的关系
这里正好回应一下热搜里那个问题:“ansys 壳单元厚度与积分点个数关系”。严格来说,积分点个数与物理厚度本身不是绑定关系——厚度多大,都可以只取 2 个积分点。但有效应力和应变的精度与积分点个数相关:薄壳在弯曲时,上下表面距离近,应力梯度不算极端;厚壳或者多层复合材料壳,厚度方向应力变化剧烈,积分点不足就会明显丢失精度。
工程上推荐这样做:
- 普通金属薄壁件碰撞仿真:NIP=3 起步;
- 方管这类以弯曲压溃为主的结构:NIP=5,费用增加不多;
- 涉及复合材料层合板:每一层至少 2-3 个积分点。
NIP 从 2 提高到 5,计算量会增加 20%-30% 左右,相对接触和总体的计算开销来说完全可以接受。为了省那 30% 的单元计算时间去冒精度风险,非常不划算。
4. 关键设置三:网格尺寸与翘曲刚度控制
4.1 网格密度如何改变折叠模式
网格尺寸对碰撞仿真的影响,远远超出很多人的直觉。方管碰撞中,折叠波长的形成和网格密度强相关。网格太粗的时候,模型没有足够的自由度去表达塑性铰的连续弯曲,变形会被迫集中在个别单元上,压溃力虚高,折叠模式会变成“多边形的棱”,而不是光滑的弧线。
对于方管这类结构,我建议沿管壁宽度方向至少划分 6 到 10 个单元,单元长宽比尽量控制在 3:1 以内,最好接近正方形。比如一根 50mm×50mm 的方管,用 5mm 左右的单元尺寸就差不多;如果重点关注压溃模式的细节,进一步加密到 3mm 也有必要。网格大小同时决定了显式分析的最小时间步长,这个后面会再提到。
做个简单测试就能理解网格敏感性的“可怕”:把网格从 10mm 加密到 5mm,峰值力可能下降 10%-15%,变形模式也可能完全不同。如果两个网格密度下结果差异很大,先别急着怀疑参数,大概率是网格还没收敛。碰撞仿真至少要做一个“网格加密一倍,结果基本不变”的验证。
4.2 翘曲刚度 warping stiffness 的含义与调整
壳单元在发生大变形后,原本的平面会变成空间曲面,这时单元不能再用简单的平面应力公式来描述了。翘曲刚度(warping stiffness)就是描述单元抵抗这种“离开平面”变形能力的一个量。LS-DYNA 中通过 *CONTROL_SHELL 里的 WARPP 参数控制,默认值是 1.0 左右。
这个参数一般在网格质量好的时候几乎感知不到,它的“存在感”恰恰在网格质量差的时候刷满。网格一旦被压溃挤歪,翘曲刚度会被过度激活,导致整个单元的刚度被人为抬高,结果就是压溃力虚高。反过来,如果网格一直保持规则的四边形,翘曲刚度对结果的影响就很小。
所以处理翘曲刚度的正确方式是:先改善网格形态,而不是先调 WARPP。尝试把 WARPP 在 0.5 到 1.5 之间做敏感性测试,如果结果对 WARPP 异常敏感,说明网格质量不行,加密网格才是正解。
4.3 壳单元厚度建模的常见错误
壳单元厚度与积分点个数这个热搜词背后,隐藏着一个更基础的问题——很多人建壳模型的时候,厚度定义就是随手一填。壳单元的厚度通过 *SECTION_SHELL 的 T 字段定义,如果厚度方向和实际结构不一致,或者把同一个厚度分配给整个零件,局部刚度就错了。
方管建模里常见的错误有三个:
- 把厚度填成 0,导致膜刚度和弯曲刚度全错;
- 忽略了方管弯角处的壁厚变化,真实管材在弯角处厚度往往略小;
- 惯性释放时用集中质量代替真实质量分布,导致冲击响应偏差。
这些错误不会报错,但是结果就是“看起来差不多,细节全不对”。建议每次建模都单独检查一遍零件厚度,而不是依赖默认值。
5. 关键设置四:沙漏控制参数:方管碰撞最容易踩的坑
5.1 沙漏的本质:单点积分单元的零能模式
沙漏这个词听起来玄乎,原理其实不难理解。单点积分单元只在中心取一个积分点,当单元发生某种“交替变形”时——比如顶角往相反方向翘——所有积分点处的应变都恰好为零,于是单元变形了却不产生任何应变能。这种没有刚度抵抗的变形模式就是零能模式,因为它的变形云图看起来像一个沙漏,所以叫沙漏。
方管碰撞最容易激发沙漏,因为压溃过程中单元要经历剧烈的弯曲和扭曲,非常容易触发这种“不花力气”的变形模式。沙漏一旦蔓延开来,单元彼此之间就像没有连接一样,结果就是结构看起来变形了,但实际上没有承受力,力的峰值会严重失真。
判断沙漏有三个方法,任何一个都可以用:
- 看 GLSTAT 文件里的沙漏能与内能比值,控制在 5% 以内算合格,严格一些可以按 1%-2% 控制;
- 看后处理中 *DATABASE_BINARY_D3PLOT 的沙漏能云图,如果沙漏能集中的区域和主要塑性铰重合,说明该区域单元需要处理;
- 看力-位移曲线,如果出现异常锯齿或者力突然下降,也要回头检查沙漏。
5.2 沙漏控制卡片参数详解
LS-DYNA 的沙漏控制参数集中在 *HOURGLASS 和 *CONTROL_HOURGLASS 里。这里先把核心参数拆开讲。
IHQ 是沙漏控制类型,对壳单元来说,常用的有几种:
| IHQ | 类型 | 特点 |
|---|---|---|
| 1 | 标准粘性沙漏控制 | 默认值,稳定性好,但刚度型问题误差可能偏大 |
| 2 | Flanagan-Belytschko 粘性 | 适合高速冲击,耗散沙漏能 |
| 3 | Flanagan-Belytschko 刚度 | 适合低频弯曲,但过大容易刚化 |
| 4 | 刚度+粘性组合 | 兼顾两种机制,通用性好 |
| 6 | Belytschko-Bindeman 假设应变 | 对壳单元冲击仿真最推荐的组合,沙漏控制精度高 |
QM 是沙漏控制系数,取值范围通常在 0.03 到 0.15 之间,默认 0.05 或 0.1。QM 越大,抵抗沙漏的刚度/粘性越强,但过大也会让结构整体变刚,压溃力虚高。QB 是壳单元弯曲刚度放大系数,典型值为 1.5,它主要用于提高弯曲主导问题中壳单元的沙漏抵抗能力。QH 是粘性系数,常用于高速冲击,取 0.1 左右。
如果要在 *HOURGLASS 卡片里写全参数,可以这样参考某种流行的配置:
*HOURGLASS $ HGIHQ IHQ QM QB QH QI QL QM 1 6 0.05 1.5 0.10 2.0 2.0 1.5这里 HGIHQ 表示沙漏控制的组编号,后续通过 *SECTION_SHELL 的 HGID 字段把特定的沙漏控制类型应用到对应的壳单元上。比如部分单元用 IHQ=6,部分单元用 IHQ=4,这样可以分区控制。
5.3 方管碰撞实战调参流程
我对方管碰撞的沙漏控制套路是这样的:
先跑一个什么都不调的基线模型,看两个数据:沙漏能占比和变形模式。如果沙漏能占比在 5% 以内、压溃模式正常,那就不用动沙漏参数,默认 IHQ=1 就够了。
如果沙漏能超标,第一步不是加系数,而是检查网格。网格太粗、长宽比太大,是沙漏激发的首要原因。把关键区域网格加密后,沙漏能往往能直接降下来一大截。
如果网格没问题,再动手换控制类型。优先试 IHQ=6,配合 QM=0.05、QB=1.5。原因很简单:IHQ=6 属于假设应变法,它通过应变场投影来消除零能模式,在抑制沙漏的同时对结构刚度的附加影响最小,非常适合壳单元冲击仿真。对比 IHQ=1,IHQ=6 在弯曲主导问题中能有更好的表现。
如果 IHQ=6 之后沙漏能仍然偏高,再适度提高 QM 到 0.08 或者 0.1,同时观察压溃力变化。如果峰值力明显抬高,说明控制过强了,需要回退。
现场经验是:沙漏能偏高的模型,十有七八是网格质量的问题;只有两三成需要动沙漏参数。一句话总结——先用网格治病,再用参数调整,最后才能用全积分救场。
6. 关键设置五:接触定义与时间步长缩放
6.1 自接触与摩擦参数
方管压溃时,管壁会一层层叠在一起,自己和自己发生接触,这属于自接触问题。用 *CONTACT_AUTOMATIC_SINGLE_SURFACE 是标准选择,它能自动识别所有外表面,处理壳单元的自接触时比较省心。
接触参数里最容易影响结果的三个值是静摩擦系数 FS、动摩擦系数 FD 和接触粘性阻尼 VDC。金属方管碰撞时,推荐 FS 取 0.15 到 0.2,FD 取 0.1 左右,VDC 取 10 到 20。摩擦系数影响接触面上的能量耗散,FS 太大,压溃力会偏高;FS 太小,管壁之间会过于顺滑,折叠模式看起来不自然。
接触算法里还有一个 SOFT 参数值得重视。SOFT=0 是默认的罚函数法;SOFT=1 或 SOFT=2 用于处理初始穿透和接触稳定性问题。方管压溃时单元会发生大翻转,网格节点可能瞬时穿透到对面壁内,开启 SOFT=2(segment-based contact)能明显提升接触稳定性。实际做下来,SOFT=2 配合单面接触,可以有效减少尖峰力和初始穿透引起的伪振荡。
6.2 时间步长缩放与质量增加
LS-DYNA 是显式积分求解器,时间步长受最小单元尺寸控制。理论上要满足 Courant 稳定性条件,时间步长不能超过声波穿过最小单元所需的时间。实际计算中我们很少手动去算声速,直接看 *CONTROL_TIMESTEP 里的 DT2MS 和 TSSFAC。
TSSFAC 是时间步缩放系数,默认 0.9。冲击仿真里,我通常建议压到 0.6 到 0.7。原因很简单:壳单元在碰撞过程中会扭曲,扭曲后的实际临界时间步要小于初始值,默认系数偏高时,容易在变形后期出现数值不稳定。
如果时间步太小导致计算太慢,第一时间想的不是降低 TSSFAC,而是去查最小单元在哪、为什么那么小。把局部细小网格通过网格划分策略优化掉,往往能把整体时间步立刻提上去。
另一个必须盯住的指标是质量增加。LS-DYNA 在时间步不足时会自动在节点上增加质量来维持稳定,体现在 GLSTAT 文件里的增加质量占比。业界通行规则是控制在 5% 以内,超过这个值说明模型里存在过小单元或者不合理的时间步缩放,需要返工。质量增加超过 10% 的结果基本不可信。
6.3 冲击问题的时间稳定性:一点类比
做电路仿真的同事有时候会跟我聊 LTspice 里的冲击电流仿真——步长设大了,电流峰值会被平滑掉;步长设小了,运算时间又激增。LS-DYNA 冲击仿真面对的问题本质上是一样的:时间步长是精度和效率的平衡点。结构冲击过程里的峰值力对应着应力波传播的瞬间,步长过大就会把这个瞬间抹平。虽然两个软件解决的物理问题完全不同,但这套“数值步长”的逻辑是共通的。
所以当你发现力-位移曲线明显失真时,除了看接触和沙漏,也要回头确认一下时间步长设置。方管这类小模型,时间步长即使压紧一点也花不了多少时间;但到了整车级大模型,这个取舍就得精打细算了。
回到开头那个问题:如果你的方管碰撞仿真出现了沙漏能超标、压溃模式不对、尖峰力乱跳,不要急着把责任推给 LS-DYNA,更不要盲目堆沙漏刚度。按这个顺序排查:网格质量是否足够、单元公式是否匹配、厚度方向积分点是否太少、翘曲刚度是否有异常、沙漏控制参数是否合理、接触定义是否稳定、时间步长是否太大。大多数情况下,问题出在最容易被忽略的那两三个设置上。
我做这些方管碰撞算例最大的体会是:显式动力学仿真的参数不是越多越好,而是每个参数都得知道它在控制什么。壳单元公式、积分点个数、网格尺寸、沙漏控制、接触与时间步长,这 5 个设置像一根链条,任何一环出了问题,最终都会在力-位移曲线和变形模式上暴露出来。建议你拿手头任何一个方管碰撞模型,把网格加密一档、把 NIP 改成 5、把沙漏控制切到 IHQ=6 各跑一遍,对比一下峰值力和压溃模式的变化,直观感受会比任何理论都深刻。