首页 / 资讯中心 / 文章详情

LS-DYNA负体积问题排查指南:从报错定位到网格与参数优化

LS-DYNA负体积问题排查指南:从报错定位到网格与参数优化 ★ FEATURED ARTICLE
简介LS-DYNA 计算中负体积是常见且棘手的收敛问题直接影响仿真稳定性和结果可信度。这份文档面向 CAE 工程师、力学仿真学习者及需要开展高速冲击、大变形分析的 Dyna 用户系统梳理了负体积出现的典型原因与可落地的排查方案包括材料参数与状态方程校核、人工时间步长调整、边界约束完善、网格质量修复及修正算法选用等。文中结合工程实例给出关键操作思路例如通过将 *CONTROL_TIMESTEP 的第二个参数由 0.9 改为 0.7 来降低时间步长从而缓解负体积引发的不收敛。资源为单个 docx 文档压缩包约 32KB内容精炼、便于直接查阅和随用随取。目前已有 1217 人学习下载适合在建模计算前快速对照自查也可作为解决类似数值异常的备忘笔记。 负体积是显式动力学里最不讲情面的翻车现场。某开发者设好材料、装好接触提交一个 12 小时的大算例后去休息第二天打开 message 文件算例在第 42000 个 cycle 中断报错只有一行negative volume in solid element 318402。没有预兆、没有提示哪个参数错了前面几十小时的计算全部作废。这个问题在 LS-DYNA 等显式动力学软件里太常见了常见到很多团队默认它会来只求它来得晚一点。它的本质是实体单元在压缩、剪切或弯曲大变形中节点翻卷单元行列式为负求解器无法继续。这篇文章按一条正常排查路径展开怎么从报错反推源头、网格怎么改、时间步和材料失效怎么调、哪些参数组合是白费力气最后给一套批量计算前的快速验证方法。适合正在被负体积卡住、或者想在下一次提交前就把它挡住的仿真工程师。2. 先搞清楚负体积在哪一层从报错信息反推畸变源头2.1 负体积的数学本质以及为什么程序说停就停对于六面体实体单元单元内任一点的坐标通过形函数由 8 个节点插值得到雅可比矩阵 J 描述了物理坐标与等参坐标之间的映射关系。当单元被压缩到某个节点越过对面、或者某个内角翻转超过 180°J 的行列式会降为零甚至变成负值。行列式为零意味着映射不可逆形函数梯度的计算结果失去物理意义中心差分显式求解继续推下去就会出现离谱的节点速度求解器只能立刻停机并写一行 negative volume。这个错误和单元大小或质量缩放无关时往往说明局部出现了几何意义上的拓扑翻转。LS-DYNA 在报错信息里会给出 element id、cycle 数和时间戳大部分情况下单元就在你预判的应力集中区附近——但偶尔也会出现在完全想不到的位置这时候就需要按下面的方法逐步反查。2.2 定位到具体单元从 message 文件和 cycle 数反查现场报错后的第一件事不是改参数是先把现场钉死。操作路径分四步。第 1 步打开 message 文件搜索 negative volume。记录报错给出的 element id、cycle 数和 time 值。如果计算采用了重启文件可以在 restart 里看最后一次成功的状态输出。第 2 步用 LS-PrePost 打开 d3plot找到最接近报错时间的输出帧。如果该帧没有畸变迹象把输出帧间隔调密再算一次或直接看 element 早期的应变张量历史。第 3 步选中报错的单元检查它的 8 个节点在当前帧的位置看畸形是哪一个角被压穿、被推入到对面。这决定了后续是修网格、改材料还是检查接触曲率。第 4 步用 glstat 看全局能量曲线用 matsum 看该材料的总应变能。如果全局动能出现尖峰同时沙漏能占比异常高那负体积往往只是沙漏不受控的表现形式而不是根源。这个判断很关键很多人把负体积当独立错误一次次调参数实际上它经常是沙漏失控、接触穿透或材料无失效这些上游问题的下游症状。定位时如果只盯着报错单元本身很容易绕弯路。提示报错信息里给出的 element id 是最后一次成功输出之后的单元编号。先在 message 里确认它属于哪个 PART再回到 d3plot 里找对应位置这样比直接全局搜索单元号快得多。2.3 三类触发路径网格、材料、边界条件触发路径典型征兆主要修改方向网格畸变单元内角接近 180°、初始 Jacobian 低于 0.5、过渡区最小边长过小局部加密、重划分、保持渐进过渡材料无失效/过软单元持续被压缩、等效应变远超材料断裂点还继续计算加 *MAT_ADD_EROSION、改用泡沫材料或状态方程接触穿透与加载失衡接触界面节点位移穿透对侧、压力集中、刚性墙附近压溃调 SOFT、检查初始穿透、复核载荷曲线物理过程一旦开始三个路径不是独立作用的通常是网格在局部提供了薄弱点接触或载荷把变形喂进去材料本构又没有退出机制三者凑齐才最终触发报错。排查顺序我习惯按成本从低到高先看接触和加载再试失效最后动网格。理由很简单接触参数改一改只要几分钟网格重划一干就是半天先用低成本手段排除再决定要不要动网格这个大工程。3. 网格层的正解把单元畸变的苗头掐断在建模阶段3.1 检查初始网格质量雅可比行列式和单元内角不能将就网格是负体积的第一道防线也是很多人最不愿意回头改的一步——前期画网格花的时间太久总是想靠求解参数兜底。但实话说任何一组好的求解参数都救不了一个被拧成麻花的初始单元。显式计算里单元在加载中可承受的额外变形量是有限的如果初始 Jacobian 只有 0.4一个中等程度的压缩就足以让行列式跨过零线。我一般要求压缩区、材料要进入塑性区的实体单元满足几个底线Jacobian 不低于 0.7六面体单元内角在 45°135° 之间最小边长不要出现在应力集中区更不要有那种为了过渡而在局部切出一排极薄单元的做法。最小边长还直接决定特征时间步长——单元越薄稳定时间步越小计算越慢还可能因为过渡区刚度差异在加载中先畸变。用前处理软件里的质量指标面板扫一遍模型重点看 Jacobian、Skew、Warpage。如果只有少量不合格单元可以局部重画如果有成片的低质量单元建议重新规划这块区域的网格拓扑而不是用网格光顺功能硬拉。网格光顺只能微调节点位置救不了拓扑层面的劣化。3.2 局部加密的时机与范围哪里压缩就往哪里补网格加密是处理负体积最高频的手段但它有讲究。负体积几乎总是出现在应力集中区圆角根、铆接孔边缘、截面突变处、刚性壁正对的位置。加密时只加密这个区域并且在加密区与粗网格之间留出至少 12 层渐进过渡单元尺寸比不要超过 1.3。血泪经验是加密时只盯着出问题的单元本身结果把旁边过渡区带出更细的单元时间步反而被这些过渡单元拖小在过渡区冒出新负体积。加密后先查整个模型的最小边长落在哪如果最小边长落在非关注区说明加密接引失败。还有一个可能被忽略的点加密之后同一位置的单元体积变小同样的体积压缩量对应的单元应变更大。换句话说纯粹加密不总是能缓解负体积如果压缩总量大且材料不可压缩加密只是在更小的尺度上重复同样的问题。遇到这种情况应该把加密和失效应变放在一起考虑而不是只加密。3.3 单元类型与积分方式的替代从全积分到一阶单元的选择负体积大多发生在一阶六面体单元上这与单元积分方式的沙漏特性有直接关系。LS-DYNA 中实体单元默认 ELFORM1 是单点积分计算快但存在零能模式沙漏。当沙漏能量不被有效控制时单元可以出现不真实的网格变形进而发展为负体积。检查一下沙漏能占总内能的比例如果超过 5% 且负体积发生在沙漏能集中的区域先把单元改全积分或把 *HOURGLASS 的刚度参数提上来。这里有两条路可以并行验证。一是把压缩区单元的 ELFORM 改成 2全积分全积分单元没有沙漏模式抗畸变能力更强代价是刚度偏硬、计算量增加对弯曲主导的工况要留意是否会引入锁定。二是给单点积分单元配置合适的 *HOURGLASS 卡片IHQ4 或 6 的刚度控制形式在压缩类工况中表现更稳QM 从默认值小幅上调到 0.050.1 一般够用调太大反而会引入额外的非物理刚度。*SECTION_SOLID $ SECID ELFORM AET 1 2 0ELFORM2 是全积分实体单元AET0 保持默认算法。如果不想改单元类型只调整沙漏控制参数*HOURGLASS 的卡片长这样*HOURGLASS $ HGID IHQ QM IBQ Q1 Q2 QB QW 1 4 0.05 0 1.5 1.5 0.5 0.5IHQ4 为 Flanagan-Belytschko 刚度公式QM 是刚度系数不要从 0.05 直接跳到 0.5单元会变脆。当模型里原本就有四面体单元时也值得留意很多人以为换四面体能解决六面体畸变的问题但在高度压缩区默认的常应力四面体单元更容易出现体积锁定负体积往往转移得更早。如果模型必须用四面体优先考虑带改进算法的二阶四面体并且配合失效应变删除使用不要指望单靠单元类型一个参数治好这个病。4. 参数层的正解时间步、材料失效与接触刚度的搭配4.1 质量缩放 DT2MS负体积最快的后悔药但别急着调*CONTROL_TIMESTEP 里的 DT2MS 是出现负体积后第一反应要调的参数但也是需要克制使用的参数。先理解它做什么显式求解的时间步由最小单元的特征长度和材料波速决定模型中如果有极小单元时间步会被拖到很小同样的物理时间内要跑非常多 cycle每个 cycle 里单元只获得很小的变形增量。DT2MS 的绝对值是目标时间步的下限求解器通过给部分单元增加质量来把时间步抬到这个下限。负体积经常出现在极短载荷脉冲或大压缩应变累积的场景步长太小时切片太密单元在无数个微小增量里一步步被压翻质量缩放把步长放大后单元在大步长下的积分路径反而避开了翻卷点——这是它有效的原因。但注意DT2MS 调大意味着整个模型或局部单元的质量被人为增大。质量增大后惯性力改变碰撞、冲击类工况的峰值力和变形模式都会偏移结果可能算得“稳定”但物理失真。我一般看 glstat 里的质量增加比超过 5% 就不再继续加时间步转头回到网格或材料方案。*CONTROL_TIMESTEP $ DTINIT TSSFAC ISDO TSLIMT DT2MS LCTM ERODE MS1ST 0.0 0.90 0 0.0 -1.0E-7 0 0 0DT2MS 为负值时只对那些计算时间步小于目标值的单元做质量缩放这是常用做法如果填正值则全模型统一缩放一般不推荐质量增加往往不可控。TSSFAC 是稳定步长安全系数默认 0.9有人遇到负体积就把它降到 0.6但实践下来这通常只是把报错推迟到更多 cycle 之后不是真正的解因为显式积分稳定性问题与畸变累积不是同一件事。在 *CONTROL_TIMESTEP 的 LCTM 字段挂曲线可以让 DT2MS 随时间分段变化加载段放大时间步、卸载段恢复物理质量不过该字段依赖版本和手册确认用之前先查清楚。4.2 材料失效与单元删除给过度畸变的单元一个体面的退出如果负体积的位置在持续塑性压缩区单元没有失效机制材料像橡皮泥一样被无限压缩体积持续减小迟早过零线。这是最常被漏掉的一环很多人给材料赋了弹性模量、屈服应力、硬化参数但从来没考虑过单元变形到极限之后该怎么退出。方案是给材料挂 *MAT_ADD_EROSION设置一个等效塑性应变删除阈值。当单元的平均等效塑性应变超过阈值单元被删除从计算中退出。这个动作本质上承认了拉格朗日单元不适合承担如此大的压缩变形让它在劣化之前体面退场。*MAT_ADD_EROSION $ MID 1 $ FAIL 0.60FAIL 是等效塑性应变删除阈值。起始值可以从材料单轴拉伸试验的断裂延伸率附近取比如铝合金取 0.30.6结构钢取 0.50.8泡沫类材料要更低。设得太低单元在真实承载阶段就被删结构刚度快速下降设得太高负体积可能在阈值达到前就已经触发。真正合适的值是试出来的不是查出来的。这里要提醒一点单元删除会释放节点、改变局部应力路径删得太多时整体刚度失真。如果删除单元的区域是承载关键路径就要小心了——这时应该考虑的不是删除单元而是把这个区域改成 ALE 或 SPH 等能容纳大变形的算法只是 ALE 的学习成本和求解时间的增加需要一并算进决策里。4.3 接触刚度与穿透检查单元在接触面被压垮的隐患负体积的另一种隐蔽来源是接触穿透。接触界面如果存在初始穿透或加载中节点穿透对侧程序会在该节点产生巨大的接触力去“纠正”穿透这个力集中作用在少数几个单元上瞬间就把接触面下的单元压翻。这类负体积在变形最大的接触面上出现或刚好出现在接触力的传力路径上。*CONTROL_CONTACT 里的 SOFT1 对这类问题很有效它把接触算法切到基于软约束的罚函数形式接触力的分布更平滑不容易在单个节点上堆积。把 IGNORE 设为 1 可以忽略初始穿透但忽略了不代表穿透消失后续接触力的建立过程还是要关注。*CONTROL_CONTACT $ SLSFAC RWPNAL ISLCHK SHLTHK PENOPT THKCHG ORIEN ENMASS 0.0 0.0 1 0 1 0 1 0 $ USRCTL NSBCS INTERM XPENE SSTHK ECDT TIEDBSJ IGNORE 0 0 0 0.0 0 0在提交大算例之前先在初始接触面上查一遍有没有穿透。很多前处理软件都有面间隙扫描功能检查穿透量是否超过单元厚度的百分之几。穿透明显时就调初始位置或重新布接触面不要指望 IGNORE1 解决一切。SLSFAC 是罚函数刚度缩放系数默认 0.0 表示使用程序内置默认值手工调大时从 1.0 起步逐步增加每加一档跑一次小算例观察接触力峰值是否异常升高别一次给到 10。5. 避坑指南五个最容易让人白调几个月的负体积误判5.1 加密网格后重新计算还是在同一个位置报错现象把负体积区域的网格从 2mm 加密到 1mm 甚至 0.5mm重新提交报错的单元 ID 变了但位置还在同一块区域时间点也差不多。原因这种“换个单元接着报”通常说明区域材料真实进入了不可压缩的塑性流动阶段。网格加密让单元变小同样的体积压缩量对应更大的单元应变单位体积内的畸变更严重只是把触发点往前挪了一点。解决停掉继续加密的无意义动作。先看这个区域是否已经到了材料极限如果是给材料挂失效应变删除如果区域承载的本来就是泡沫、橡胶这类高压缩材料再考虑升级为 ALE 或带专门的本构。只有当负体积伴随明显的沙漏能异常时加密才是首选答案。5.2 DT2MS 调大后不再报错但结果明显不对质量缩放失衡现象把 DT2MS 从 -1e-7 调到 -5e-7负体积消失计算跑完了后处理时发现动能曲线出现异常高大的尖峰局部变形模式变得奇怪质量增加比超过 15%。原因质量缩放改变了局部惯性。冲击载荷作用下质量被增大的单元获得了更大的惯性力变形回弹变慢局部应力被抬高这种“稳定”是用物理失真换来的程序不再报错但结果已经不是原来想要模拟的物理过程了。解决质量增加比控制在 5% 以内。如果这个约束下负体积仍然出现说明时间步不是根因回退 DT2MS转到网格或失效方案。另外只在关键加载阶段启用质量缩放加载完成后逐步关闭也是一条可用的路LCTM 曲线卡片能实现分段控制按时间点给不同 DT2MS 取值即可。5.3 加了失效准则后单元被成片删除失效应变设低了现象给铝合金设 FAIL0.3结果压缩区单元在等效塑性应变约 0.2 时就开始出现大片删除结构整体刚度明显低于预期载荷曲线出现异常凹陷。原因失效准则用的是单元中心的平均等效塑性应变而应变集中区的峰值应变往往远高于单元平均值。单元尺寸越大平均应变与峰值应变的偏差就越大删除就越偏早。实验得到的材料断裂延伸率是宏观试样的平均值直接把它填到单元删除阈值上几乎必然偏早。解决先用 FAIL1.0 跑一遍在报错前观察该区域实际达到的最大等效应变再往回取 60%80% 作为最终阈值。如果时间紧张把新阈值设为材料断裂延伸率的 1.5 倍起步——宁可让单元多撑一点也别让它提前把结构删空。5.4 改 ALE 后边界材料流失拉格朗日与欧拉界面的耦合现象把高度压缩区切出来改 ALE 算法负体积确实不再出现但计算结果里该区域的总质量随计算时间逐渐减少边界附近材料变形位移异常动画里能看到边界材料溢出的痕迹。原因ALE 网格允许材料在网格间流动但如果 ALE 区域的边界条件定义不完整——比如没有设置对称约束、流动边界条件或封闭域控制——材料会从开放边界流出去这是 ALE 计算最常见的翻车点和负体积没有直接关系是引入新算法带来的新问题。解决确认 ALE 区域的每个开放边界都有明确的边界属性。与拉格朗日区域相邻的界面要单独处理如果算例的主要诉求只是消除负体积且压缩区较小用失效应变删除比引入整套 ALE 体系省力得多。ALE 更像手术做了就回不去了。5.5 后处理看不出畸变却报了负体积输出帧间隙里的瞬时反弹现象打开最后输出的 d3plot选中报错单元体积还是正的节点位置也连续怎么看都不像翻卷了但求解器就是中断了。原因负体积发生在两个输出帧之间。d3plot 输出有固定间隔后处理看到的只是离散帧的状态单元可能在这一帧之间完成了一次大幅畸变又回弹回来或者发生了快速的局部失稳后处理恰好没抓住那个瞬间。解决把 d3plot 输出间隔调密比如从 1e-6 调到 2e-7在报错时间附近再加一层输出同时查看该区域的动能、应力曲线有没有瞬时尖峰。如果确认是瞬时反弹造成的就去看接触刚度和阻尼设置给接触增加少量阻尼往往能把这个尖峰削掉。6. 批量计算前的十分钟验证用单发小算例快速筛选参数组合6.1 截断模型把压缩区周边切出来单独成算例把完整模型截短成小算例是排查负体积最高效的手段。做法很简单在压缩区周围切出一个包含完整应力路径的局部区域把切割边界上节点的平动和转动自由度用固定约束锁住原来有对称关系的面用对称约束然后用缩短的 *CONTROL_TERMINATION 时间跑一遍。算例只需验证到原报错时间点之后一点点就能判断这个方案方向是否成立。局部模型的边界条件要能反映周围材料对这块区域的约束否则算出来的变形模式会和完整模型不一样但作为参数方案的对比验证固定约束偏硬带来的偏差不影响参数组合的好坏排序。*CONTROL_TERMINATION $ ENDTIM ENDCYC DTMIN ENDENG ENDMAS 0.010ENDTIM 设为覆盖报错时间点的 1.2 倍即可不要直接照搬完整模型的终止时间。截断后的算例单元数通常只有完整模型的十分之一单发计算在一小时内完成足够用来评估参数改动方向。6.2 用三个组合快速判定负体积的根因不在建模阶段我提交大批量计算前会先跑三个单发小算例各一小时左右覆盖三条最可能的路径。组合 A只加密压缩区网格并保持单点积分看负体积是否推迟或消失组合 B保持原网格加失效应变删除并检查质量增加比组合 C保持原参数只把接触 SOFT 改成 1 并检查初始穿透。三个结果放一起基本两小时就能判断这个方案是改网格、改材料还是改接触。如果组合 A 和 B 都有明显改善说明网格和材料都在临界状态最后一起处理如果三个组合都无效就要回头检查加载曲线和模型简化本身了。这一步的额外好处是能提前暴露模型中其他脆弱区——小算例跑得快翻车成本低试错的底气就足。这套方法救过我太多次。从前我也是被负体积玩到整夜重启算例的人后来学乖了大算例就像赌博花十几个小时下注之前先用十分钟小额试一下方向成本低得多。负体积这层纸捅破之后剩下的就是对照排查顺序一项项过检查单的事。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站