2. LS-DYNA计算瓶颈诊断

在动手做模型简化之前,必须先回答一个更基础的问题:时间到底花在哪里?如果只是凭感觉删单元、改接触,很可能把计算量从 8 小时降到 7 小时,却把关键响应精度破坏掉。瓶颈诊断的目标,是用可观测的指标把“慢”拆解成可归因的几类来源,再决定简化方向。

一、显式与隐式的耗时结构完全不同

LS-DYNA 的显式分析(*CONTROL_IMPLICIT 未激活,默认显式时间积分)以稳定时间步长 Δt 推进,总步数约为 T_end / Δt。显式单步成本低、无需迭代收敛,但步数极多,因此耗时近似正比于“步数 × 单步成本”。而隐式分析(*CONTROL_IMPLICIT_SOLUTION)每步要组装刚度矩阵并做牛顿迭代,单步成本高、步数少,耗时更多取决于迭代次数与收敛性。两者不能用同一套直觉去判断瓶颈。

显式稳定步长由最小单元特征长度与材料波速决定:

Δt ≤ L_min / c
c = sqrt(E / ρ)   (弹性波速,一维近似)

这意味着:一个 0.5 mm 的极小单元,可能把整体 Δt 从 1e-6 s 压到 2e-7 s,步数直接翻 5 倍。所以显式分析中,最小单元尺寸往往比单元总数更致命。

二、四类主要耗时来源及其识别指标

无论显式还是隐式,耗时通常可归入以下四类,每类都有对应的观测指标:

  • 时间步长受限:显式看 d3hsp 中的 “smallest timestep” 与 “time step size”,以及 *DATABASE_TIMESTEP 输出的步长曲线;隐式看每步迭代次数与是否频繁触发自动步长缩减。
  • 接触计算:接触搜索与穿透处理在显式中占比常达 20%–50%。观察 d3hsp 的 “contact” 计时、*DATABASE_CONTACT 的接触力与穿透量,以及接触对数量。
  • 单元数量与类型:实体单元、壳单元、厚壳、SPH 的单步成本差异明显。用 *DATABASE_ELOUT 或 d3hsp 的 “element processing” 计时判断。
  • 材料非线性:塑性、损伤、失效、状态方程会显著增加本构积分成本。观察 “material” 计时、单元删除数量、以及是否出现大量收敛困难。
诊断顺序建议:先看总步数与 Δt,再看接触与材料计时占比,最后才考虑删单元。顺序反了容易误伤精度。

三、性能剖析工具与关键指标

LS-DYNA 自带多种剖析输出,最常用的是 d3hsp 文件中的 “CPU time summary”,它按模块列出耗时:

CPU time summary (seconds):
  initialization ......... 12.4
  element processing ...... 318.7
  contact ................. 402.1
  material ................ 156.3
  time step ............... 8.9
  output .................. 21.5
  total ................... 920.0

上例中接触占 43.7%,是首要瓶颈;材料占 17%,单元处理占 34.6%。若同时看到 Δt 很小、步数极大,则时间步长也是隐性放大器。此外,*DATABASE_BINARY_D3PLOT 的输出频率过高会显著增加 I/O 时间,容易被忽略。

对于隐式分析,重点看 d3hsp 中每步的 “iteration count” 与 “convergence ratio”。若某步迭代超过 15 次仍不收敛,往往意味着接触状态跳变或材料软化导致刚度矩阵病态,此时简化接触或调整 *CONTROL_IMPLICIT_SOLUTION 的收敛容差比删单元更有效。

LS-DYNA 耗时来源诊断图 显式:步数 × 单步成本 | 隐式:迭代次数 × 单步成本 显式分析(Explicit) ① 时间步长 Δt 受限 指标:d3hsp 最小步长、步数 T_end/Δt ② 接触计算 指标:contact 计时占比、穿透量、接触对数 ③ 单元数量与类型 指标:element processing 计时、单元总数 ④ 材料非线性 指标:material 计时、单元删除数、收敛困难 诊断顺序 步数/Δt → 接触占比 → 材料占比 → 单元规模 避免先删单元破坏精度 隐式分析(Implicit) ① 牛顿迭代收敛性 指标:iteration count、convergence ratio ② 接触状态跳变 指标:接触开闭切换、刚度矩阵病态 ③ 刚度矩阵规模 指标:自由度总数、求解器计时 ④ 材料软化/损伤 指标:切线刚度下降、迭代发散 诊断顺序 迭代次数 → 接触跳变 → 矩阵规模 → 材料软化 优先调收敛容差而非删单元 对比

四、从指标到简化决策

拿到计时分布后,简化方向就变得有据可依。若接触占比超过 40%,优先检查是否存在大量小面接触对、是否可用 *CONTACT_AUTOMATIC_SINGLE_SURFACE 替代多对接触、是否可增大接触厚度或使用 *CONTACT_INTERIOR 减少搜索频率。若材料计时突出,检查是否所有单元都需要完整塑性/损伤模型,非关键区域可退化为弹性或刚体。若 Δt 被极小单元拖累,定位这些单元并做网格过渡或质量缩放(*CONTROL_TIMESTEP 的 DT2MS),但需控制质量增加在 1%–5% 以内。

隐式分析中,若迭代次数长期偏高,可先放宽 *CONTROL_IMPLICIT_SOLUTION 的收敛容差(如从 1e-3 放到 1e-2),或改用 *CONTROL_IMPLICIT_DYNAMICS 的准静态选项。接触跳变频繁时,增加接触阻尼或改用 *CONTACT_AUTOMATIC_SURFACE_TO_SURFACE 的 soft 选项往往比删单元更有效。

质量缩放会改变惯性效应,动力学问题中需谨慎;准静态问题可接受,冲击问题应严格限制缩放比例。

五、一个可复用的诊断记录表

建议每次诊断都记录以下字段,便于横向对比不同简化方案的效果:

指标显式关注点隐式关注点简化方向
时间步长/迭代最小 Δt、总步数平均迭代次数网格过渡、质量缩放、收敛容差
接触计时占比>40% 需优化接触跳变次数合并接触对、增大接触厚度
单元处理计时单元总数、类型自由度规模非关键区刚体化、降阶单元
材料计时塑性/损伤单元数切线刚度下降弹性替代、简化本构
I/O 与输出d3plot 频率重启动文件大小降低输出频率、精简输出变量

把这张表填满一次,你就能清楚判断:当前模型是“步数太多”“接触太重”“单元太密”还是“材料太复杂”。下一步的简化才有明确靶点,而不是盲目试错。