3. LS-DYNA关键字文件结构
LS-DYNA 的输入文件通常称为 K 文件(Keyword File),它是一个纯文本文件,求解器按“关键字块”逐段读取。理解 K 文件结构,本质上就是理解 LS-DYNA 如何把几何、网格、属性、材料、边界和求解控制组织成一套可被程序解析的数据体系。K 文件不是简单的命令堆叠,而是有明确层级和引用关系的结构化数据:节点定义空间位置,单元引用节点形成网格,PART 把单元、SECTION 和 MATERIAL 绑定在一起,控制卡片则决定求解器如何运行。
K 文件的基本组成
一个典型的 K 文件由若干关键字块组成,每个块以 *KEYWORD 开头,后跟若干数据行,直到下一个关键字出现为止。常见的关键字块包括:
*KEYWORD:控制卡片,如*CONTROL_TERMINATION、*CONTROL_TIMESTEP、*DATABASE_BINARY_D3PLOT。*NODE:定义节点坐标。*ELEMENT_SHELL、*ELEMENT_SOLID、*ELEMENT_BEAM:定义单元及其节点连接。*PART:定义部件,引用 SECTION 和 MATERIAL。*SECTION_SHELL、*SECTION_SOLID:定义单元截面属性。*MAT_*:定义材料本构,如*MAT_PLASTIC_KINEMATIC、*MAT_JOHNSON_COOK。*EOS_*:定义状态方程,常与材料卡片配合使用。*BOUNDARY_*、*LOAD_*、*INITIAL_*:边界、载荷和初始条件。
关键字块之间通过 ID 建立引用关系。例如,*ELEMENT_SHELL 中的节点 ID 必须能在 *NODE 中找到;*PART 中的 SECTION ID 和 MAT ID 必须分别对应已定义的 SECTION 和 MATERIAL。这种“定义—引用”机制是 K 文件组织的核心。
关键原则:K 文件中所有被引用的 ID 必须唯一且已定义。节点、单元、PART、SECTION、MAT 各自有独立的 ID 空间,但同一类对象内部不能重复。
节点与单元定义
节点是网格的最小几何单位,用 *NODE 定义。每行格式通常为:节点 ID、x 坐标、y 坐标、z 坐标。例如:
*NODE
101 0.000000 0.000000 0.000000
102 10.000000 0.000000 0.000000
103 10.000000 10.000000 0.000000
104 0.000000 10.000000 0.000000
单元通过节点 ID 连接形成网格。以壳单元为例,*ELEMENT_SHELL 每行包含单元 ID、PART ID、节点 1 至节点 4。例如:
*ELEMENT_SHELL
1 1 101 102 103 104
这里单元 1 属于 PART 1,由节点 101、102、103、104 构成一个四边形壳单元。实体单元 *ELEMENT_SOLID 则通常需要 8 个节点。单元定义必须保证节点顺序符合右手法则,否则法向和厚度方向会出错,直接影响接触和应力输出。
PART 与 SECTION
PART 是 LS-DYNA 中非常关键的“装配单元”。它把单元集合、截面属性和材料属性绑定在一起。一个 PART 对应一组单元,并引用一个 SECTION 和一个 MATERIAL。典型 *PART 卡片如下:
*PART
1 1 1 0 0 0
shell_part
其中第一行各字段依次为:PART ID、SECTION ID、MAT ID、EOS ID、Hourglass ID、初始速度 ID。第二行是 PART 名称。SECTION 定义单元的几何属性,例如壳单元的厚度、积分点数量;实体单元则定义单元算法和积分方式。以 *SECTION_SHELL 为例:
*SECTION_SHELL
1 2 1.000000 5 0.0
0.000000 0.000000 0.000000 0.000000
这里 SECTION ID 为 1,壳厚度为 1.0 mm,沿厚度方向 5 个积分点。厚度和积分点数量会直接影响弯曲刚度和计算成本,是碰撞分析中需要重点确认的参数。
材料与状态方程
材料卡片定义本构关系,状态方程定义压力—体积—能量关系。对于金属碰撞分析,常用 *MAT_PLASTIC_KINEMATIC 或 *MAT_JOHNSON_COOK。以 Johnson-Cook 模型为例,材料卡片通常包含密度、弹性模量、泊松比、屈服强度、硬化参数和失效应变等。状态方程 *EOS_GRUNEISEN 则描述冲击波下的压力响应,常用于高应变率、大变形问题。
材料与状态方程通过 PART 中的 MAT ID 和 EOS ID 关联。如果材料卡片中已经包含状态方程参数,则 EOS ID 可以留空;如果使用独立状态方程,则必须在 PART 中正确引用。材料参数的单位必须与模型单位制一致,例如 mm、ms、kg、GPa 或 m、s、kg、Pa,混用单位是常见错误来源。
控制卡片的组织方式
控制卡片决定求解器行为,通常放在 K 文件前部或单独文件中。常见控制卡片包括:
*CONTROL_TERMINATION:设置终止时间,例如 0.05 s。*CONTROL_TIMESTEP:设置时间步长缩放因子和最小时间步。*CONTROL_ENERGY:控制能量耗散和沙漏能统计。*DATABASE_BINARY_D3PLOT:设置结果输出间隔。*DATABASE_ASCII_*:输出节点、单元、接触等 ASCII 数据。
控制卡片通常按“求解控制—输出控制—接触控制—初始条件”的顺序组织,便于检查和维护。对于大型碰撞模型,建议把控制卡片集中放在文件开头,材料、PART、SECTION 放在中间,节点和单元放在后面,这样既符合 LS-DYNA 的读取习惯,也方便人工排查引用错误。
K 文件组织建议与常见错误
在实际建模中,建议按以下顺序组织 K 文件:控制卡片 → 材料与状态方程 → SECTION → PART → 节点 → 单元 → 边界与载荷。这样做的原因是 LS-DYNA 在读取时并不要求严格顺序,但按“先定义后引用”的顺序排列,可以显著降低人工排查难度。常见错误包括:PART 引用了不存在的 SECTION ID、单元引用了未定义的节点 ID、材料单位与模型单位不一致、壳单元厚度方向定义错误、状态方程与材料模型不匹配等。
排障提示:如果求解器报 “undefined node” 或 “undefined part”,优先检查对应 ID 是否在 K 文件中真正定义,以及是否存在重复 ID 覆盖。对于大型模型,建议用文本编辑器的“查找”功能逐个核对引用关系。
掌握 K 文件结构后,读者应能独立阅读一个 LS-DYNA 输入文件,判断其节点、单元、PART、SECTION、材料和状态方程是否完整,控制卡片是否合理。这是后续进行碰撞冲击建模、调试和结果分析的基础。