2. LS-DYNA软件环境与工作流程

LS-DYNA 的显式动力学求解能力并不依赖某个统一的图形界面,而是由“关键字输入文件 + 求解器 + 前后处理器”三部分协作完成。理解这一分工,是后续所有建模与调试工作的前提。本节围绕软件界面、关键字文件结构、前后处理器选择、求解器调用方式,以及一个最小可运行案例的完整操作流程展开。

一、软件构成与界面分工

LS-DYNA 的核心是求解器可执行程序(如 ls-dyna_smp_d_R11_1_winx64_ifort131.exe 或 Linux 下的 ls-dyna_smp_d),它只读取关键字文件、输出结果文件,本身没有建模界面。用户日常接触的“界面”通常来自前后处理器:

  • LS-PrePost:LSTC/Ansys 官方免费工具,可建模、编辑关键字、提交求解、查看 d3plot 结果,是学习阶段的首选。
  • ANSYS Workbench / LS-DYNA ACT:在 Workbench 中通过 ACT 插件生成关键字,适合与 ANSYS 前处理体系配合。
  • HyperMesh + HyperView:Altair 体系,网格划分与关键字导出能力强,工程界使用广泛。
  • LS-DYNA keyword 文本编辑:任何文本编辑器都可直接修改关键字,是排错与精细控制的关键手段。

无论使用哪种前处理器,最终交付给求解器的都是一份 *.k(或 *.key)关键字文件。前处理器只是“生成器”,求解器只认关键字。

二、关键字输入文件结构

LS-DYNA 关键字文件由若干“关键字块”组成,每个块以 * 开头,块内数据按固定字段格式书写。一个典型的最小文件包含以下块:

*KEYWORD
*TITLE
Minimal LS-DYNA example
*CONTROL_TERMINATION
$  ENDTIM  ENDCYC  DTMIN  ENDENG  ENDMAS
   0.001
*CONTROL_TIMESTEP
$  DTINIT  TSSFAC  ISDO
   0.0     0.9
*DATABASE_BINARY_D3PLOT
$  DT/CYCL  LCDT   BEAM   NPLTC
   2.0E-5
*PART
Part 1 - solid block
         1         1         1
*SECTION_SOLID
         1         1
*MAT_ELASTIC
         1  7.85E-9  2.10E5   0.30
*NODE
       1  0.0  0.0  0.0
       2  1.0  0.0  0.0
       ...
*ELEMENT_SOLID
       1   1   1   2   3   4   5   6   7   8
*SET_NODE_LIST_TITLE
Fixed nodes
         1
       1
*BOUNDARY_SPC_SET
         1         0         1         1         1
*END

关键字块大致分为几类:控制类(*CONTROL_*,如终止时间、时间步、沙漏控制)、数据库类(*DATABASE_*,控制 d3plot、glstat、matsum 等输出)、模型类(*NODE、*ELEMENT_*、*PART、*SECTION_*、*MAT_*)、边界与载荷类(*BOUNDARY_*、*LOAD_*、*INITIAL_*)。文件必须以 *END 结束,否则求解器会报错。

字段格式上,LS-DYNA 采用固定列宽(通常每字段 10 字符),但现代版本也支持逗号分隔。建议初学者使用 LS-PrePost 的“Keyword Editor”查看每个关键字的字段含义,避免手工对齐出错。

LS-DYNA 最小可运行案例:从关键字到结果 前处理器 LS-PrePost / HyperMesh ANSYS Workbench 建模 · 网格 · 边界 导出 *.k 文件 关键字文件 *.k *CONTROL_TERMINATION *PART / *SECTION_SOLID *MAT_ELASTIC *NODE / *ELEMENT_SOLID LS-DYNA 求解器 显式时间积分 中心差分 · 稳定步长 命令行调用 ls-dyna i=... o=... 结果文件 d3plot glstat matsum d3hsp 关键字文件内部结构(按功能分类) 控制类 *CONTROL_TERMINATION *CONTROL_TIMESTEP *CONTROL_ENERGY 数据库类 *DATABASE_BINARY_D3PLOT *DATABASE_GLSTAT *DATABASE_MATSUM 模型类 *NODE / *ELEMENT_SOLID *PART / *SECTION_SOLID *MAT_ELASTIC / *MAT_PLASTIC 边界与载荷类 *BOUNDARY_SPC_SET *INITIAL_VELOCITY *LOAD_RIGID_BODY 文件必须以 *END 结束;字段按固定列宽或逗号分隔;单位制需全局一致(示例:mm-ton-s-N-MPa) 常见错误:长度用 mm、质量用 kg、时间用 s,导致密度与模量量级不匹配

三、前后处理器选择建议

选择前处理器主要看三点:网格能力、关键字覆盖度、结果后处理便利性。若只做简单教学案例,LS-PrePost 足够:它自带几何创建、网格划分、关键字编辑、求解提交和 d3plot 查看,且完全免费。若模型来自 CAD 且需要复杂六面体网格,HyperMesh 或 ANSYS Meshing 更合适。若团队已使用 ANSYS 体系,Workbench + LS-DYNA ACT 能保持参数化流程。后处理方面,LS-PrePost 对 d3plot 的支持最直接,HyperView 在云图和动画方面更流畅。

四、求解器调用方式

求解器调用本质是命令行执行。Windows 下可在 CMD 或 LS-PrePost 的“Solve”菜单中提交:

ls-dyna_smp_d_R11_1_winx64_ifort131.exe i=block.k o=block.out memory=200m ncpu=4

Linux 下类似:

ls-dyna_smp_d i=block.k o=block.out memory=200m ncpu=4

常用参数:i= 指定输入关键字文件,o= 指定输出日志,memory= 指定内存,ncpu= 指定 SMP 线程数。求解过程中可查看 block.out 和 d3hsp 判断是否正常推进。若出现“negative volume”“node out-of-range”等错误,需回到关键字检查网格与边界。

五、最小可运行案例操作流程

下面以一个 10 mm × 10 mm × 10 mm 的弹性立方体为例,单位制采用 mm-ton-s-N-MPa,密度 7.85e-9 ton/mm³,弹性模量 2.1e5 MPa,泊松比 0.3。底面节点全约束,顶面施加 0.001 s 的初始速度或短时压力,观察应力波传播。

  1. 打开 LS-PrePost,选择 File → New,在 Model → Create → Block 中创建 10×10×10 的实体,划分 2 mm 六面体网格,得到约 125 个单元。
  2. 在 Model → Boundary → Create → SPC 中选中 z=0 的节点,约束 1~3 自由度。
  3. 在 Model → Initial → Velocity 中给 z=10 的节点施加 z 向初速度,例如 1000 mm/s。
  4. 在 Model → Material → Elastic 中定义材料:密度 7.85e-9,E=2.1e5,ν=0.3,并赋给 Part。
  5. 在 Model → Control → Termination 中设置 ENDTIM=0.001 s;在 Database → Binary → D3PLOT 中设置输出间隔 2e-5 s。
  6. 点击 Solve → Submit,选择求解器路径,生成 block.k 并运行。观察 block.out 中时间步是否稳定,若时间步过小可检查最小单元尺寸。
  7. 求解完成后,在 LS-PrePost 中打开 d3plot,用 Fringe → von Mises 查看应力云图,用 History → Nodal 提取顶面节点 z 向位移,判断波是否在 0.001 s 内到达底面并反射。
最小案例的价值在于验证“关键字—求解器—结果”链路是否通畅。只要这个案例能跑通并看到应力波,后续复杂模型只是增加关键字块和网格量,工作流程不变。
常见失败原因:忘记写 *END;单位制混用导致密度量级错误;*PART 中引用的 SECTION 和 MAT 编号不存在;输出间隔大于终止时间导致没有 d3plot。遇到报错先看 d3hsp 末尾的错误编号,再定位关键字。