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” 计时、单元删除数量、以及是否出现大量收敛困难。
三、性能剖析工具与关键指标
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 的收敛容差比删单元更有效。
四、从指标到简化决策
拿到计时分布后,简化方向就变得有据可依。若接触占比超过 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 频率 | 重启动文件大小 | 降低输出频率、精简输出变量 |
把这张表填满一次,你就能清楚判断:当前模型是“步数太多”“接触太重”“单元太密”还是“材料太复杂”。下一步的简化才有明确靶点,而不是盲目试错。