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-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 的初始速度或短时压力,观察应力波传播。
- 打开 LS-PrePost,选择
File → New,在Model → Create → Block中创建 10×10×10 的实体,划分 2 mm 六面体网格,得到约 125 个单元。 - 在
Model → Boundary → Create → SPC中选中 z=0 的节点,约束 1~3 自由度。 - 在
Model → Initial → Velocity中给 z=10 的节点施加 z 向初速度,例如 1000 mm/s。 - 在
Model → Material → Elastic中定义材料:密度 7.85e-9,E=2.1e5,ν=0.3,并赋给 Part。 - 在
Model → Control → Termination中设置 ENDTIM=0.001 s;在Database → Binary → D3PLOT中设置输出间隔 2e-5 s。 - 点击
Solve → Submit,选择求解器路径,生成block.k并运行。观察block.out中时间步是否稳定,若时间步过小可检查最小单元尺寸。 - 求解完成后,在 LS-PrePost 中打开
d3plot,用Fringe → von Mises查看应力云图,用History → Nodal提取顶面节点 z 向位移,判断波是否在 0.001 s 内到达底面并反射。
*END;单位制混用导致密度量级错误;*PART 中引用的 SECTION 和 MAT 编号不存在;输出间隔大于终止时间导致没有 d3plot。遇到报错先看 d3hsp 末尾的错误编号,再定位关键字。