首页
学习
活动
专区
圈层
工具
发布

【美陆军研究实验室|Comput Mater Sci】PyVUMAT让Python机器学习材料模型高效接入有限元

      PART 1    

        文章信息      

      题目    

    PyVUMAT: A package to develop and deploy machine learning material models in finite element analysis simulations  

      作者    

    Joshua C. Crone  

      单位    

    美国陆军作战能力发展司令部陆军研究实验室物理建模与仿真部门  

      期刊    

    Computational Materials Science,2025 / Article 114377  

      DOI    

    10.1016/j.commatsci.2025.114377  

      PART 2    

        一句话概括      

    本文提出开源框架 PyVUMAT,通过在 VUMAT 中嵌入 Python 解释器,使基于 PyTorch 等生态开发的机器学习材料模型能够直接部署到主流显式有限元仿真中。  

它的真正价值不只是“能跑 Python”,而是让批量推理、OpenMP 与 GPU 加速进入材料子程序,从而把大型 ML 本构模型的实际计算代价压到接近传统 Fortran 模型。

      PART 3    

        研究背景与科学问题      

    机器学习本构模型近年发展很快,但工程落地一直卡在“训练在 Python、部署在商业有限元软件”之间的断层。研究者通常先在 PyTorch/JAX 中建模,再被迫用 Fortran/C++ 重写一遍,开发慢、易出错,也难以快速迭代网络结构、超参数与训练数据。  

    另一方面,有限元代码又离不开成熟的接触、动力学、失效和材料库功能。纯 Python 有限元框架虽灵活,但难替代 Abaqus、ALE3D 这类生产级工具。因此核心矛盾不是“ML 能不能拟合材料”,而是“ML 材料模型怎样高效接入现有 FEA 生态”。  

    本文聚焦这个更基础也更现实的问题:直接在 VUMAT 中运行 Python 材料模型是否可行?其额外开销有多大?在批处理、线程并行和 GPU 加速下,Python 方案是否能反超传统编译型实现,尤其是复杂的历史相关 ML 模型。  

关键挑战

Python 解释执行通常被认为不适合高频材料点更新

商业/政府 FEA 软件对用户材料接口和数据布局要求严格

历史相关 ML 模型参数多、推理重,重写为 Fortran 成本极高

小规模单元测试常低估批推理和硬件加速的真实收益

本文要解决的核心问题是:如何以最小开发代价,把 Python/ML 材料模型稳定、高效地部署到生产级显式有限元仿真中。

      PART 4    

        技术原理与创新点      

    PyVUMAT 采用“Python embedding”思路:不是让 FEA 与独立 Python 进程通信,而是在 C/C++ VUMAT 子程序内部直接初始化 Python 解释器。这样,有限元传入的标量与数组可在共享内存空间中转为 Python/NumPy 对象,避免进程间通信带来的巨大开销。  

    框架结构分三层:底层是兼容 VUMAT 接口的 C/C++ 包装;中间是 Driver 类,负责调度;上层是用户定义的 Python 本构函数。研究者只需改写 Python 侧模型,即可调用 NumPy、SciPy、PyTorch、TensorFlow、JAX/FLAX 等现成生态,训练与部署代码几乎复用。  

    作者用三类模型验证:传统 Johnson–Cook、带历史变量的 RNO,以及可扩展参数规模的 SVK-NN。重点不在某一材料规律本身,而在证明:当模型天然适合批量矩阵运算时,Python 方案可借助向量化、batch inference 和 GPU 获得远超“逐点循环”的效率。  

方法分解

1.

在 C/C++ VUMAT 中嵌入 Python 解释器,并保持与标准 VUMAT API 兼容

2.

通过 Driver 将 FEA 传入的多积分点数据批量送入 Python 材料模型

3.

在 NumPy/PyTorch 中执行向量化更新或神经网络批推理

4.

返回应力、状态变量和能量项,写回 FEA 求解器

5.

结合 OpenMP、MPI 与 GPU 比较不同模型和规模下的性能

创新清单

提出面向 VUMAT 的通用 Python 嵌入框架,而非外部 Python 进程通信

训练代码与部署代码高度复用,显著降低 ML 本构模型工程化门槛

系统量化批大小、线程数、模型规模、精度格式对成本的影响

证明大型 ML 材料模型在 GPU 上可接近传统 Fortran 材料模型的成本

text

FEA -> VUMAT(C/C++) -> embedded Python -> Driver   -> user model (NumPy / PyTorch)   -> batch stress/state update   -> return to VUMAT -> FEA

相比“把 Python 模型重写成 Fortran”,PyVUMAT 的本质差异是把高性能计算能力交给成熟 ML 框架,而不是手工重造一遍推理引擎。

      PART 5    

        实验验证与性能      

    实验分三部分:一是单进程压缩算例,测试批大小、线程与单元数对每积分点评估时间的影响;二是大规模 MPI 并行压入八面体晶格,考察多进程与多 GPU 扩展性;三是用 RNO 替代二维晶格离散模型,比较精度与降本效果。平台覆盖 Abaqus 与 ALE3D,两套代码都支持 VUMAT。  

    评价指标统一采用“每个积分点每次材料评估的墙钟时间”。作者特别强调:单元数增大到约 1000 之前,单位积分点成本会显著下降,因此只用单单元或小模型测 ML 本构成本,很容易得出误导结论。  

评测维度

1.

计算效率

RNO Python 单线程 vs RNO Fortran:最优批量下约快4×

RNO Python + OpenMP vs 单线程:再提速约7×

RNO Python + GPU vs RNO Fortran:约快40×

2.

模型规模效应

SVK-NN 参数量从5,481到11,612,781,GPU 时间仅增约1.3×

大模型 TF32 vs 64 位:成本约降1.5–2×

3.

大规模并行

大型 SVK-NN 在 CPU/MPI 下扩展到2048进程,评估成本降至<1 μs/MP

GPU 下每进程独占 GPU 时,并行效率接近理想

4.

代理模型精度

RNO 连续体替代二维晶格:穿透功误差在D/L=0.05时仍<6%

计算成本:连续体约8 min / 1进程,离散晶格约8 h / 48进程

关键结果表

最关键的结论是:对复杂 ML 本构模型而言,Python 不是性能瓶颈;真正决定成本的是能否进行批量推理与 GPU 加速。

      PART 6    

        学术贡献      

提供了一个开源、可迁移、面向生产级 FEA 的 Python 材料模型部署框架

用系统实验澄清了“Python 材料模型一定慢”的常见误解

证明模型复杂度上升时,GPU 可显著压平 ML 本构的额外代价

给出评测方法学启示:材料模型性能必须在大规模 FEA 场景下评估

该工作把 ML 本构研究从“离线拟合演示”推进到“可在真实求解器中部署与比较”的工程范式。

      PART 7    

        局限性与未来方向      

    本文主要覆盖显式积分的 VUMAT 场景,对 UMAT 这类隐式接口尚未完整验证;而隐式求解往往逐积分点调用,Python 嵌入的收益可能小于显式批处理。其次,GPU 并行下多 MPI 进程会竞争同一 GPU,尤其在大模型上更明显,说明资源调度仍是实际部署瓶颈。  

    在精度方面,RNO 连续体替代虽能很好预测穿透功,但对局部压实带的空间分布仍有偏差,可能与致密化硬化低估、非局部屈曲效应未显式建模有关。降精度推理如 TF32 也只在部分模型上验证有效,尚不能直接推广到所有历史相关材料模型。  

待解决问题

面向 UMAT/隐式积分的 Python 嵌入与一致切线实现

低精度推理(如 TF32)在部分模型上可用,但泛化边界仍需扩展

多 MPI 进程与多 GPU 资源竞争的自动调度优化

用非局部或 Cosserat/微极理论提升晶格连续体替代精度

最重要的下一步方向,是把这种“Python 开发 + 高性能部署”能力从显式 VUMAT 扩展到更广泛的隐式与多物理场本构场景。

      PART 8    

        总结      

    PyVUMAT 的意义在于把 Python/ML 生态与成熟有限元软件真正接通:研究者不必再在训练后手工重写材料模型,就能在 Abaqus、ALE3D 等环境中测试复杂本构。实验表明,只要充分利用批量推理、线程与 GPU,加速后的 Python ML 材料模型不仅开发更快,运行也可能优于传统 Fortran 实现。对未来复杂、微结构感知、历史相关本构模型而言,这是一条非常现实的工程路径。  

机器学习材料模型要走向工程应用,关键不是“能不能拟合”,而是“能不能无痛接入求解器并高效运行”——PyVUMAT 给出了可行答案。

      PART 9    

        图文赏析      

Figure 1

用于生成 RNO 模型训练数据的二维构筑晶格结构的代表性单胞(RUC)。粗蓝线表示晶格拓扑。细黑线是在压实过程中为诱导致密化而添加的约束盒。

Figure 2

大规模并行有限元分析模拟的几何结构,由一个圆柱形压头压入八面体晶格组成。在 𝑦= 0 和 𝑥= 0 平面上施加四分之一对称。

Figure 3

用于测试 RNO 替代模型的二维压入模拟的有限元分析网格。(a) 使用梁单元对构筑晶格结构的离散表示。(b) 使用 RNO 作为机器学习本构模型对晶格结构的连续体表示。

Figure 4

来自 Abaqus 模拟的性能结果,用于确定批大小对材料模型计算成本的影响。

Figure 5

使用 Abaqus (a) 和 ALE3D (b) 有限元分析代码,通过带有 PyVUMAT 的 PyTorch 实现的各种机器学习材料模型的多线程效率。

Figure 6

对于使用 Abaqus (a) 和 ALE3D (b) 的 JC 材料模型各种实现方式,模拟规模(即有限元单元数量)对评估成本的影响。

Figure 7

对于使用 Abaqus (a) 和 ALE3D (b) 的 RNO 机器学习材料模型各种实现方式,模拟规模(即有限元单元数量)对评估成本的影响。

Figure 8

模拟规模(即有限元单元数量)对 SVK-NN 机器学习材料模型评估成本的影响。“Small”和“Large”标签指可训练参数数量的相对多少。“64”、“32”和“TF32”标签分别指双精度、单精度和 TensorFloat32 数学模式。

Figure 9

第 4.3 节中 ALE3D 模拟得到的三个基准机器学习材料模型的最小评估时间:SVK-NN-Small64 (𝑀= 5481)、RNO (𝑀= 248,211) 和 SVK-NN-Large32 (𝑀= 11,612,781)。

Figure 10

SVK-NN 模型的并行可扩展性。GPU 模拟使用能够将机器学习参数和 MP 数据装入内存的最少 GPU 数量。

Figure 11

增加用于执行推理的 GPU 数量时 SVK-NN 模型的并行可扩展性。有限元分析代码在 𝑃 个 CPU 进程上运行。粗黑线对应于每个有限元分析进程拥有一个专用 GPU 的配置。

Figure 12

(a) 使用解析 SVK 模型(式 (3))得到的最终变形构型的 von Mises 应力(单位为 10−4 MPa)。(b–d) 使用各种 SVK-NN 机器学习替代模型得到的最终变形构型的 von Mises 应力绝对误差(单位为 10−4 MPa)。误差相对于解析 SVK 模型计算。

Figure 13

大规模有限元分析模拟的力—位移(FD)曲线。解析 SVK 模型(式 (3))与各种 SVK 模型机器学习替代模型之间的比较。

Figure 14

(a) 比较构筑晶格离散表示与使用训练后的 RNO 作为替代本构模型的连续体表示的力—位移曲线。(b) 将圆柱形压头压入到 4 cm 深度所做的总功。对所有 𝐷∕𝐿 值使用了单个 RNO 模型。

Figure 15

压入深度为 4 cm 时二维压入模拟的最终位移场。梁长细比 (𝐷∕𝐿) 为 0.035。左侧是构筑晶格离散表示的裁剪部分。右侧是使用训练后的 RNO 作为替代本构模型的连续体表示的裁剪部分。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ON6ucd41f5VS-fkpRHfMRBQg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券