4. 大型模型前处理与网格分区策略
千万级单元模型进入 LS-DYNA 并行求解之前,前处理阶段的工作质量几乎决定了后续 MPP 求解能否顺利扩展。很多工程师把注意力放在求解器参数上,却忽略了这样一个事实:并行效率的上限,往往在前处理阶段就已经被网格分区质量、部件组织方式和接触定义方式锁定了。本节围绕 HyperMesh、ANSA、LS-PrePost 三个主流前处理平台,讨论千万级单元模型的清理、分组、接触定义与初始穿透检查,以及它们如何直接影响并行求解的负载均衡与稳定性。
一、千万级模型的前处理瓶颈在哪里
当单元规模从百万级跨入千万级,前处理工具面临的第一个问题是内存与交互响应。HyperMesh 在读取约 1200 万单元的整车碰撞模型时,若不做几何清理和重复单元合并,单个会话内存占用可能超过 40 GB;ANSA 的实时渲染对显卡显存更敏感;LS-PrePost 虽然读取快,但大规模编辑能力弱,更适合作为检查与后处理工具。因此合理的分工是:HyperMesh/ANSA 负责建模与分区,LS-PrePost 负责求解前的穿透检查与结果复核。
第二个瓶颈是拓扑一致性。千万级模型中常见的自由边、重复节点、T 型连接、单元法向翻转,在串行求解时可能只是局部警告,但在 MPP 分区后会被放大为跨分区的接触穿透或负体积。前处理阶段必须完成:重复节点合并(tolerance 通常取 0.01~0.05 mm,视最小单元尺寸而定)、自由边检查、单元质量指标筛选(Jacobian、翘曲角、长宽比)、法向统一。
二、部件分组与分区策略的对应关系
并行求解的核心是区域分解:LS-DYNA MPP 默认采用递归坐标二分(RCB)或图分区(如 METIS),把整个模型切成与 MPI 进程数相等的子域。分区质量取决于两个因素:单元在空间上的聚集程度,以及部件之间的连接关系。前处理阶段的部件分组,实际上是在为分区算法提供“语义约束”。
实践中的做法是:按材料、厚度、连接方式把模型组织成 Component,再通过 *SET_PART 或 *SET_PART_LIST 把需要保持在同一分区的部件绑定。例如焊点、螺栓连接的两个板件,如果被分到不同进程,接触搜索会跨进程通信,显著增加通信开销。对于整车模型,通常把白车身、动力总成、悬架、轮胎分别成组,并让 RCB 分区在部件边界处尽量对齐。
*SET_PART 约束后,同一模型在 64 进程下的通信占比可回落到 20% 左右。具体数值随模型拓扑和硬件差异较大,应以实际测试为准。三、接触定义对并行求解的影响
接触是并行求解中最容易出问题的环节。LS-DYNA 中常用的 *CONTACT_AUTOMATIC_SINGLE_SURFACE、*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE、*CONTACT_AUTOMATIC_GENERAL 在 MPP 下的行为差异明显:单面接触搜索范围大、鲁棒性好,但跨分区搜索频繁;面面接触通信量小,但对初始穿透和法向一致性更敏感。
千万级模型建议:
- 优先使用
*CONTACT_AUTOMATIC_SINGLE_SURFACE配合SOFT=2,减少因单元质量差导致的穿透; - 对已知的固定接触对(如轮胎-地面、假人-座椅)使用面面接触,并显式指定
SSID与MSID; - 通过
*CONTACT_CONTROL中的PENCHK与THKOPT控制初始穿透检查深度; - 避免在千万级模型中使用
*CONTACT_AUTOMATIC_GENERAL,其搜索开销随分区数增长明显。
四、初始穿透检查与并行启动判断
初始穿透是并行求解最常见的“启动即失败”原因。LS-PrePost 的 Initial Penetration 检查可以输出穿透深度分布,工程上通常要求最大初始穿透不超过最小单元尺寸的 10%~20%。若超过,需要在求解前通过 *CONTACT_INTERIOR 或调整从面偏置消除。
下面这张图展示了从千万级模型前处理到并行求解启动的完整数据流,重点标出了部件分组、接触定义与穿透检查三个关键控制点,以及它们对分区负载均衡和通信开销的影响路径。
五、可执行的前处理检查清单
把上述要点整理成一份可直接在项目中使用的检查表,建议在提交求解前逐项确认:
| 检查项 | 工具 | 判断标准 | 不通过的处理 |
|---|---|---|---|
| 重复节点合并 | HyperMesh / ANSA | tolerance 0.01~0.05 mm,无重复节点 | 重新合并并检查自由边 |
| 单元质量 | HyperMesh / ANSA | Jacobian > 0.6,翘曲角 < 15° | 局部重划或标记为可接受 |
| 部件分组 | HyperMesh / ANSA | 连接件在同一 *SET_PART | 补充 SET_PART 绑定 |
| 接触类型 | 文本编辑 / LS-PrePost | 主接触为 SINGLE_SURFACE + SOFT=2 | 替换 GENERAL 接触 |
| 初始穿透 | LS-PrePost | 最大穿透 ≤ 最小单元尺寸的 10%~20% | 调整从面偏置或 *CONTACT_INTERIOR |
| 分区负载 | LS-DYNA MPP | 各进程单元数偏差 < 10% | 调整 SET_PART 或分区算法 |
六、从检查结果判断并行求解是否就绪
完成上述检查后,可以用一个短时试算(例如 1~5 ms 物理时间)来验证并行配置。观察 d3hsp 中的分区信息、glstat 中的能量曲线和 rcforc 中的接触力。若出现以下信号,说明前处理阶段仍有遗留问题:
- 能量比异常:沙漏能或内能突增,通常指向单元质量或接触穿透;
- 接触力振荡:跨分区接触搜索不稳定,需检查 SET_PART 约束;
- 某进程 CPU 时间显著偏高:分区负载不均,需重新调整部件分组;
- 启动即报负体积:初始穿透未消除,返回 LS-PrePost 重新检查。
千万级模型的并行求解不是“把模型丢给求解器”那么简单。前处理阶段的每一次清理、每一个分组、每一条接触定义,都会在分区和通信层面被放大。把部件分组当作分区约束来设计,把接触定义当作通信预算来管理,把初始穿透检查当作启动门槛来执行,才能让 MPP 求解在数十甚至上百进程下保持稳定与高效。