» 博客 » 博客 » All About UMAT & VUMAT in Abaqus [Free PDF + Examples]

All About UMAT & VUMAT in Abaqus [Free PDF + Examples]

In this article you will read

目录

Main Article

Last updated on:

What Are UMAT and VUMAT in Abaqus? Abaqus UMAT (User Material) and Abaqus VUMAT are Fortran-based subroutines used to define custom constitutive material models in Abaqus/Standard and Abaqus/Explicit, respectively. They allow engineers and researchers to program advanced mechanical behaviors—such as complex elasticity, plasticity, and composite damage—when built-in Abaqus material libraries are insufficient.

CAE 助手 guide provides a definitive roadmap for developing, implementing, and executing these subroutines. By exploring input/output architectures, step-by-step coding for elastic and orthotropic models, and a direct UMAT vs. VUMAT comparison, readers will gain the practical expertise needed to write accurate custom algorithms. Access the provided free PDF guides and Fortran code templates to accelerate advanced material modeling projects.

UMAT / VUMAT 视频演练

 

UMAT / VUMAT 音频播客

子程序类型 求解器界面 主要产出变量 关键输入变量 雅可比矩阵要求 应用用例 向量化支持 状态变量(SDV)容量
UMAT Abaqus/Standard(隐式) 压力、DDSDDE、STATEV、SSE、SPD、SCD STRAN、DSTRAN、PROPS、TIME、DTIME、TEMP、DFGRD0、DFGRD1 必需(一致的切线刚度) 静态、塑性、蠕变、粘弹性 未向量化 *DEPVAR (NSTATV)
VUMAT Abaqus/Explicit STRESSNEW、STATENEW、ENERINTERNNEW、ENERINELASNEW 应变、属性、密度、DEFGRADOLD、应力OLD 无需 冲击、碰撞、大变形 NBLOCK 向量化 *DEPVAR(NSTATEV)

 

What Are UMAT and VUMAT in Abaqus?

Abaqus 内置了许多材料,但在实际项目中,这些材料往往不够用。这就是为什么工程师们会使用其他软件。 用户子程序. 。 和 Abaqus UMATAbaqus VUMAT, 您可以使用 Fortran 编写自己的材料模型,并将其直接链接到求解器。简单来说,您就是在告诉 Abaqus 您的材料在变形时如何响应。.

你可以这样理解:Abaqus 每次执行一步操作时,都会调用你的子程序并询问:, “更新后的应力是多少?材料应该如何响应?”UMAT, 这种情况发生在隐式求解器(Abaqus/Standard)内部。 VUMAT, 它发生在显式求解器(Abaqus/Explicit)内部。.

  • UMAT:可与 Abaqus/Standard 配合使用,最适合静态或慢速加载问题。它还提供材料雅可比矩阵(切线刚度),从而加快收敛速度。.

  • VUMAT:可与 Abaqus/Explicit 配合使用,非常适合模拟碰撞、冲击或大变形等动态事件。它可以一次性更新多个点的应力。.

UMAT 在 Abaqus 标准中的作用

图 1:UMAT 子程序工作流程

典型学习路径

如果你是从零开始,通常的路径很简单:

  1. 从一个 基本弹性模型 (这样你就可以了解结构并测试你的设置)。.

  2. 逐步增加复杂性——塑性、硬化或粘弹性行为。.

  3. 一旦你熟练掌握了这些技巧,就可以扩展你的代码,使其包含损坏、故障或速率相关的效果。.

  4. 最后,当你的问题涉及动力学或大变形时,可以尝试将你的 UMAT 逻辑移植到 VUMAT 中。.

本博客将指导您完成第一步:编写和测试一个最小的弹性 UMAT 模型,然后展示如何将相同的思路扩展到 VUMAT 模型。读完本博客,您不仅会掌握理论知识,还会了解构建更高级模型所需的工作流程。.

What included in this 自由的 可下载文件?

培训视频

Python脚本

Inp File

Fortran 子程序

PDF

Free Example

Verification of Results

Matlab Code

Software Code

Modeling File

Presentation Slide

 

How to Prepare for Writing Abaqus Subroutines

在你开始编写代码之前 Abaqus UMAT 或者 Abaqus VUMAT, 首先,你需要掌握一些基础知识。别担心——你不需要成为 Fortran 专家或全职理论家。但扎实的基础会让你的工作轻松许多。.

1) Know Your Material Model Theory:

最重要的一步是彻底理解材料模型背后的理论。例如,如果您要实现弹性力学,就应该了解应力-应变定律以及刚度的定义。如果您要实现塑性力学,就应该了解屈服函数、流动法则和硬化定律。否则,您将无法判断错误是源于理论还是代码。.

2) Core Finite Element Concepts:

Since UMAT and VUMAT work at the integration point level, you need to be familiar with:

  • 应力和应变增量

  • State variables (history variables carried between increments)

  • Jacobian/tangent stiffness (DDSDDE Matrix) (important in UMAT for convergence)

3) Tools You’ll Need:

最后,你需要一个合适的编码环境:

  • 一个工作中的 Fortran编译器 (Intel oneAPI 如今很常见):阅读这篇免费博客,了解如何使用 Fortran Abaqus Fortran “编写子程序的”必备知识”

  • Abaqus 已安装并已链接到编译器:请阅读此博客了解如何链接 Abaqus 和 Fortran。 Abaqus Fortran 链接

  • 文本编辑器或用于编码的集成开发环境(像 Notepad++ 或 Visual Studio Code 这样的简单编辑器就可以)。

掌握了这些基础知识,你就可以顺利地开始编写你的第一个 UMAT 或 VUMAT 代码,而不会遇到不必要的障碍。.

Abaqus UMAT

DDSDDE Matrix & Newton-Raphson Method | Why They Matter?

In Abaqus/Standard, the solution is obtained using an iterative scheme known as the Newton-Raphson method. At each increment, Abaqus tries to satisfy equilibrium by updating displacements and stresses. The DDSDDE matrix plays a key role in this process. It represents the sensitivity of stress to strain changes. In simple terms, it tells the solver:

If strain changes slightly, how will stress respond?

A correct DDSDDE leads to:

  • Faster convergence
  • Fewer iterations
  • More stable simulations

On the other hand, an inaccurate DDSDDE can cause:

  • Slow convergence
  • Divergence errors
  • Excessive increment cutbacks

For nonlinear materials (plasticity, damage), DDSDDE must be consistent with the integration algorithm, not just an approximation.

[/vc_column_text][/vc_column][/vc_row]

当你写一个 Abaqus UMAT, 本质上,你是在填写一份合同:Abaqus 将某些变量传递给你的代码,你用这些变量计算材料响应,然后将结果返回给 Abaqus。理解这种数据交换是熟练使用用户子程序的第一步。.

在每个增量步,Abaqus 都会将当前的应变、时间、材料常数和状态变量发送给 UMAT。你的任务是:

  1. 利用这些信息计算新的 压力切线刚度.

  2. 如果材料具有记忆性(塑性、损伤等),则更新历史变量。.

  3. 将这些结果发送回 Abaqus,以便继续进行分析。.

Quick Cheat Sheet (Big Picture First)

在深入探讨之前,让我们快速概览一下编写程序时会遇到的各种变量。 Abaqus UMAT。.

官方文件将UMAT参数分为三类:

  • 待定义的变量: 您必须计算并返回的内容(例如,STRESS、DDSDDE)。.

  • 传入的信息变量: Abaqus 为您提供的可用功能(例如 STRAN、DSTRAN、PROPS)。.

  • 可更新的变量: 您可以随时间演变的混合变量(例如,STATEV、能量变量)。.

但我们已经为您简化了操作:

提示: 刚开始编写代码时,请将此表放在手边。它可以帮助您快速确定 Abaqus 提供的结果以及您需要返回的结果。.

Consistent Jacobian and Convergence

您的 UMAT 必须返回准确的结果 雅可比矩阵(DDSDDE) 为了确保快速收敛,该矩阵表示应力变化与应变变化的关系。“一致”的雅可比矩阵使 Abaqus/Standard 求解器能够实现 二次收敛,因此,仿真速度会快得多。如果对该矩阵进行近似处理,可能会导致收敛速度下降,甚至求解器失效。.

尽管 UMAT 适用于隐式求解器, Abaqus VUMAT 是……的对应物 显式求解器. 这意味着它是为碰撞模拟、高速冲击或波传播和惯性占主导地位的形成过程等高度动态问题量身定制的。.

而不是更新 一次只整合一个点 与 UMAT 类似,VUMAT 处理 批次中多个集成点. 这提高了显式动态的效率,但也意味着你需要稍微改变一下代码的结构。.

思路保持不变:Abaqus 提供应变、状态变量和材料常数;你的代码返回应力、更新后的状态和能量。但由于显式动力学不需要切线刚度,因此不存在 DDSDDE。.

图 2 展示了 Abaqus 和 VUMAT 如何通过共享和更新重要的材料变量来协同工作。以下是该过程的简要概述:Abaqus 提供描述材料当前状态的旧变量,例如应力、温度以及任何状态相关变量。这些变量将作为 VUMAT 计算的起点。.  

VUMAT 使用自定义方程,根据这些输入计算应力、温度和其他状态变量的新值。VUMAT 处理完这些信息后,会将更新后的变量发送回 Abaqus 进行进一步分析,以确保仿真顺利进行。.

VUMAT 的工作原理

图 2:VUMAT 的工作原理

Quick Cheat Sheet for VUMAT (Big Picture First)

Abaqus/Explicit 调用 VUMAT 时 旧州 (压力老, 旧状态, (例如能量等) 运动学更新 (strainInc, relSpinInc, defgradOld/New, 拉伸旧/新),以及步骤信息。.
你的工作:计算 压力新, 新州, ,并且(可选) enerInternNewenerInelasNew, , 为了 每个 该点是块中的物质点。然后 Abaqus 继续进行时间推进。.

以下是VUMAT处理功能的概览:

提示: 刚开始编写代码时,请将此表放在手边。它可以帮助您快速确定 Abaqus 提供的结果以及您需要返回的结果。.

✅ The Most Crucial Output: The DDSDDE Matrix

Among all UMAT outputs, DDSDDE is the most critical one for implicit analysis.
While stress (STRESS) defines the current material state, DDSDDE controls how efficiently Abaqus can reach that state. Think of it this way:

STRESS → tells Abaqus “where you are”

DDSDDE → tells Abaqus “how to get there faster”

A poorly defined DDSDDE may still produce correct results, but:

  • Simulation time increases significantly
  • Convergence becomes unreliable

For advanced models (plasticity, viscoelasticity), deriving DDSDDE analytically is strongly recommended.

Numerical Stability and Integration Methods

编写UMAT不仅仅是定义应力-应变定律。您必须将本构速率方程转换为增量形式。大多数专家更喜欢使用 后向欧拉(隐式) UMAT的积分方法。该方法是无条件稳定的。然而,它通常需要像牛顿-拉夫逊法一样的局部迭代。相比之下, 前向欧拉(显式) 该方法较为简单,但存在稳定性限制。如果应变增量超过此限制,则结果将失效。.

How to Write Your First UMAT Subroutine in Fortran

When learning Abaqus UMAT for the first time, it helps to practice with well-structured benchmark problems. here, we present two examples which you can start writing your first UMAT subroutine with and the step-by-step tutorial of both examples are available to you 在 免费UMAT教程PDF 文件.

here we just see the problem descripotion and the subroutines of the examples:

例1:弹性梁在施加位移作用下的运动

  • 几何形状:50×50×400 的实心梁,采用 C3D8 单元建模。.

  • 边界条件:一端固定,另一端沿纵向施加位移。.

  • 材料:各向同性线性弹性(E, ν).

  • 目的:验证 UMAT 弹性实现是否与 Abaqus 内置的 UMAT 弹性实现相匹配 松紧带 材料。.

  • 子程序:标准各向同性弹性 UMAT,其中应力更新和刚度矩阵是显式编码的。.

弹性梁在施加位移下的性能

Fortran Fortran — UMAT:受施加位移的弹性梁
   子程序 UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC) C 包括 'ABA_PARAM.INC' C 字符*80 CMNAME 尺寸应力(NTENS),STATEV(NSTATV), 1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS), 2 STRAN(NTENS),DSTRAN(NTENS),时间(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3), 4 JSTEP(4) REAL*8 EMOD,ENU,EBULK3,EG2,EG,EG3,ELAM,ONE,TWO,THREE ONE=1.0 TWO=2.0 THREE=3.0 C ---------------------------------------------------------------- C 各向同性弹性的 UMAT C 不能用于平面应力 C ---------------------------------------------------------------- C PROPS(1) - E C PROPS(2) - NU C ---------------------------------------------------------------- C IF (NDI.NE.3) THEN WRITE (7, *) '此 UMAT 只能用于具有三个直接应力分量的单元 1' CALL XIT ENDIF C C 弹性属性 EMOD=PROPS(1) ENU=PROPS(2) EBULK3=EMOD/(ONE-TWO*ENU) EG2=EMOD/(ONE+ENU) EG=EG2/TWO EG3=THREE*EG ELAM=(EBULK3-EG2)/THREE print*,'ELAM',ELAM CC 弹性刚度 C DO K1=1,NDI DO K2=1,NDI DDSDDE(K2,K1)=ELAM END DO DDSDDE(K1,K1)=EG2+ELAM END DO DO K1=NDI+1, NTENS DDSDDE(K1,K1)=EG END DO C C 计算应力 C DO K1=1, NTENS DO K2=1, NTENS STRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1) END DO END DO C RETURN 结尾

Want to learn how to implement these cases? Get free access to these tutorials and 11 specialized workshops in our Free UMAT & VUMAT course.

例 2:正交各向异性层合板的蔡-希尔准则(平面应力)

  • 几何形状:代表复合材料层片的二维平面应力单元。.

  • 材料:具有三个独立常数的正交各向异性弹性体。.

  • 附加功能:使用 UMAT 中的 Tsai-Hill 准则评估故障。.

  • 目的:展示 UMAT 如何处理比 Abaqus 内置库更高级的材料行为。.

  • 子程序:正交各向异性应力-应变定律,并附加失效检查,用 Fortran 编写。.

正交各向异性层合板的蔡-希尔准则(平面应力)

Fortran Fortran — UMAT:采用 Tsai-Hill 准则的正交各向异性层合板(平面应力)
      子程序 UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC) C 包括 'ABA_PARAM.INC' C 字符*80 CMNAME 尺寸应力(NTENS),STATEV(NSTATV), 1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS), 2 STRAN(NTENS),DSTRAN(NTENS),时间(2),PREDEF(1),DPRED(1), 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3), 4 JSTEP(4) REAL*8 E1,E2,V12,V21,G12,D11,D22,D66,CFULL(3,3),Y,X,Z,R,F11,F22, 1F12,F66,F1,F2,F6,XT,XC,YT,YC,SU12 C======================================================================================= C 给出 PROPS C===================================================================================== E1=PROPS(1) E2=PROPS(2) V12=PROPS(3) G12=PROPS(4) XT=PROPS(5) XC=PROPS(6) YT=PROPS(7) YC=PROPS(8) SU12=PROPS(9) PRINT*,' E2', E2 V21=(E2/E1)*V12 R=1.0/(1.0-(V12*V21)) D11=E1*R D22=E2*R D66=G12 D12=E2*V12*R C===================================================================================== C 填充退化刚度矩阵 C======================================================================================== DO K1=1,3 DO K2=1,3 DDSDDE(K2,K1)=0.0 END DO END DO DDSDDE(1,1)=D11 DDSDDE(1,2)=D12 DDSDDE(2,2)=D22 DDSDDE(1,3)=0.0 DDSDDE(2,3)=0.0 DDSDDE(3,3)=D66 DDSDDE(2,1)=D12 DDSDDE(3,1)=0.0 DDSDDE(3,2)=0.0 C====================================================================================== C 计算应力C========================================================================================= DO I=1,3 Z=0.0 DO J=1,3 Z=Z+DDSDDE(I,J)*DSTRAN(J) END DO STRESS(I)=STRESS(I)+Z END DO C======================================================================================= C TSAI-HILL 准则C====================================================================================== 如果 (STRESS(1).GE. 0.0) 则 X=XT 否则 X=XC 结束 如果 (STRESS(2).GE. 0.0) 则 Y=YT 否则 Y=YC 结束 如果 F11=1.0/(X**2.0) F1=0.0 F12=-1.0/(2.0*(X**2.0)) F22=1.0/(Y**2.0) F2=0.0 F66=1.0/(SU12**2.0) F6=0.0 C 失效面F=F11*(STRESS(1))**2+F22*((STRESS(2))**2)+F66*((STRESS(3))**2 1)+2.0*F12*STRESS(1)*STRESS(2)+F1*STRESS(1)+F2*STRESS(2)+F6* 2STRESS(3) STATEV(1)=SQRT(F) RETURN END

Using Abaqus Utility Routines

不要从头开始编写所有代码。Abaqus 提供了内置功能。 实用程序 为了简化复杂任务,例如,使用 罗蒂格 在进行大应变分析时,可以旋转张量状态变量。此外,您还可以使用 SINV 计算应力不变量或 冲刺 对于主要方向而言,这些工具可以减少编码错误并保持技术深度。.

在 Abaqus 中实现和编译

成功开发 UMAT 后,必须将其代码集成到 Abaqus 中才能正确编译运行的 Abaqus 分析。定义 Abaqus 作业时,您可以添加已开发的 UMAT。提交作业后,Abaqus 将自动把 UMAT 编译成可执行文件,然后即可使用该文件运行有限元分析 (FEA) 仿真。.

通常情况下,在 Abaqus/CAE 中定义 FEM 模型后,还需要在 Abaqus/CAE 中执行 4 个步骤才能将 UMAT 纳入分析中:

1. Define a User Material

在 Abaqus 中,您可以指定使用 UMAT 作为材料模型。如果没有特别说明,您也可以使用 Abaqus 的其他材料模型。例如,您可以使用 Abaqus 自带的弹性模型,但开发一个 UMAT 来模拟特定的塑性模型。.

财产 模块,在定义材料时,来自 一般的 选项卡选择 用户资料. 你只需要做这些就够了。.

在Abaqus CAE中定义用户材料

图 3:在 Abaqus CAE 中定义用户材料

2. Define inputs (Mechanical Constants) for UMAT in Abaqus

当您选择 用户资料 作为问题的材料模型,您可以根据需要添加任意数量的常数。 数据 部分。在下方输入 机械常数 您需要将想要传递给 UMAT 的值写入 UMAT 文件中。输入数据后,您可以按 Enter 键添加新行。之后,这些值将可以通过 UMAT 访问。 道具 数组(PROPS(1), PROPS(2),…)。.

3. Define the No. of state variables

许多力学本构模型可能需要存储 取决于解决方案 状态 变量(SDV) 例如,塑性应变、背应力、饱和值等,可以采用速率本构形式,也可以采用积分形式理论的历史数据。您应该在相关的材料定义中为这些变量分配存储空间。状态变量的数量没有限制。.
各点所需的此类变量的数量是在材料定义中输入的。在 Abaqus/CAE 中,定义材料时,在“属性”模块中,从 一般的 选项卡选择 德普瓦尔。. 然后选择所需的数量 与解相关的状态变量的数量。.

在 Abaqus/CAE 中定义 Depvar | 在 Abaqus 中定义 UMAT 图 4:在 Abaqus/CAE 中定义 Depvar UMAT 在 Abaqus 中

状态变量可以输出到输出数据库(.odb) 使用输出标识符的文件 SDV. 您可以稍后在作业完成后要求 Abaqus 将它们可视化。 步骤模块, 在定义分析类型之后,从 现场输出经理, 您可以编辑 F-输出-1 由 Abaqus 自动生成:

请求现场输出的 SDV

图 5:请求现场输出中的 SDV

记住这一点 SDVAbaqus/CAE 与……完全相同 STATEVAbaqus 子程序接口. 这只是 Abaqus 开发人员命名上的差异。.

4. Give the Path of UMAT to Abaqus

与其他子程序一样,创建 Abaqus 作业时,您需要向 Abaqus 提供 UMAT 的路径。Abaqus 随后可以读取该子程序并更新每次迭代的 DDSDDE 矩阵。您可以通过指定包含这些子程序的 Fortran 源文件的名称,在模型中包含一个或多个 UMAT。.

示例:各向同性线性弹性材料(实现)

我们将在第 6 节中讨论(审查 UMAT 结果首先,我们从一个非常简单的模型开始,例如基于位移的单单元拉伸模型。在 Abaqus/CAE 中构建有限元模型后(就像其他不使用 UMAT 的模型一样),我们应该(在这个简单的 UMAT 中,我们不需要任何状态变量):

1. 在属性模块中定义用户材质

2. 定义两个力学常数作为弹性模型 UMAT 的输入:E 和 Nu。

3. 在定义作业时,请将我们编写的 UMAT 的路径提供给 Abaqus。.

5. Testing and debugging UMAT Abaqus subroutine

请记住,在 Abaqus 中编写 UMAT 与用 Fortran 编写代码完全相同。因此,当您完成代码编写后,真正的挑战才刚刚开始!首次运行后,您可能会遇到编译错误,例如编译器会提示 DDSDDE 矩阵结构或 DDSDDE 矩阵的嵌套循环等问题。请耐心等待;即使对于经验丰富的 UMAT 开发人员来说,这种情况也十分正常。.

编译过程中出现问题 作业监视器错误

图 6:编译期间出现问题 作业监视器错误

当您遇到错误且不确定原因时,您可以采用最简单的方式检查以下值: 将变量值写入的命令 .msg 文件。我们将在后续文章中讨论编写 UMAT Abaqus(以及任何子程序)时非常方便的最重要的 Fortran 命令。.

Common UMAT Errors and How to Fix Them

When working with UMAT in Abaqus, many errors are not general solver issues, but are directly related to how the material model is implemented. Below are some real and frequently observed UMAT-specific problems:

Error / Issue Typical Symptom Root Cause Practical Solution
Non-Convergence (Too many attempts) Analysis stops or requires many increments Inconsistent DDSDDE matrix with stress update Derive DDSDDE analytically and ensure consistency with return mapping
Stress Not Updating Correctly Constant or unrealistic stress response Misuse of STRAN instead of DSTRAN Use DSTRAN for incremental updates and validate with uniaxial test
STATEV Not Updating No plasticity or damage evolution State variables not stored correctly Update STATEV at the end of UMAT and check indexing
Instability in Plastic Models Oscillating stress or divergence Incorrect integration algorithm Use implicit schemes (e.g., Backward Euler) and enforce consistency condition
Incorrect Stiffness Response Model too stiff or too soft Wrong DDSDDE or incorrect material parameters Verify PROPS values and compare with analytical solution
Works in Simple Test but Fails in Real Model Passes single element test but fails in complex model Missing multiaxial behavior or coupling effects Test under multiaxial loading and validate full tensor behavior

Advanced Subroutine Modeling

准备好超越线性弹性了吗?太好了。这里有一条清晰的路径,可以扩展你的…… Abaqus UMATAbaqus VUMAT 回归现实世界的行为——而不迷失方向。.

逐步添加逼真的物理效果:

塑性(小应变→有限应变)

  • 从一个简单的 J2/von Mises 模型开始。构建一个 试验压力, 检查产量,执行返回映射,并更新塑性应变+硬化。.

  • 对于 UMAT,始终提供一致的切线(DDSDDE对于 VUMAT,请重点关注稳定更新。 DTIME.

  • 之后,利用变形梯度和目标应力更新,扩展到有限应变塑性。.

损坏和故障

  • Introduce a damage variable and degrade stiffness: $$\sigma = (1 – D)\sigma_{eff}$$

  • 使用 字符长度 Abaqus VUMAT 中的变量用于正则化软化。.

  • 添加失败时元素的删除条件。.

粘弹性/速率依赖性

  • 实现带有内部变量的麦克斯韦级数或普罗尼级数。.

  • 在 UMAT 中,添加算法切线;在 VUMAT 中,仔细积分速率形式。.

超弹性

  • 从应变能函数导出应力并处理有限应变。.

  • VUMAT 中通常更容易一些,因为它直接给出了形变梯度。.

Handling large strains and strong nonlinearities

  • 使用正确的运动学坐标系(DFGRD0/DFGRD1 在 UMAT 中,, DEFGRAD 在 VUMAT 中)。.

  • 旋转应力并增加旋转增量以避免漂移。.

  • 在UMAT中,牛顿收敛性取决于切线的一致性;使用 PNEWDT 建议削减开支。.

  • 在VUMAT中,稳定性取决于 DTIME; 减小增量尺寸以提高精度。.

经验法则: 使用 UMAT 适用于需要快速收敛的准静态问题。使用 VUMAT 对于冲击、碰撞和渐进性失效,稳定性比收敛速度更重要。.

Reliable development workflow

  • 对单个元素运行单元测试。.

  • 执行加载/卸载路径检查。.

  • 对软化模型进行网格细化研究。.

  • 追踪能量平衡(弹性、塑性、损伤)。.

  • 务必与理论或 Abaqus 内置材料进行比较。.

Where to read next

如果您想深入了解,以下是最有用的资源:

  • NASA白皮书:岩芯破碎建模 → 针对显式模拟中渐进式复合材料损伤的高级 VUMAT。.

  • 牛津创新VUMAT项目页面 →学术资源和开放的VUMAT开发。.

  • Technia Abaqus 页面 → Abaqus Unified FEA 概述以及用户子程序如何融入其中。.

  • 教科书:

    • 计算非弹性 (Simo & Hughes)—塑性和切线的算法。.

    • 连续体和结构的非线性有限元 (Belytschko 等人)— 大应变方法。.

为了 工业级 VUMAT, 请阅读美国宇航局的白皮书。.
为了 学术研究, 牛津创新中心的网页是一个可靠的参考资料。.

Abaqus UMAT vs VUMAT: Which User Subroutine Should You Choose?

如果你一直关注到这里,你应该知道这两点。 Abaqus UMATAbaqus VUMAT 它允许您定义自定义材料。但是您应该使用哪一种呢?答案取决于您问题的物理特性以及您计划运行的求解器。.

  • UMAT(用户材料) → 与……合作 Abaqus/标准 (隐式求解器)。.

  • VUMAT(矢量化UMAT) → 与……合作 Abaqus/Explicit (显式求解器)。.

换句话说:

  • UMAT 的全部内容 牛顿迭代法 并且需要一个 一致切线矩阵 为了收敛。.

  • VUMAT 跳过切线,并在每个增量处显式更新应力。.

Side-by-side comparison

[woodmart_table alignment=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJjZW50ZXIifX19″ border_type=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJzb2xpZCJ9fX0=” woodmart_css_id=”68a5852209c6b” responsive_spacing=”eyJwYXJhbV90eXBlIjoid29vZG1hcnRfcmVzcG9uc2l2ZV9zcGFjaW5nIiwic2VsZWN0b3JfaWQiOiI2OGE1ODUyMjA5YzZiIiwic2hvcnRjb2RlIjoid29vZG1hcnRfdGFibGUiLCJkYXRhIjp7InRhYmxldCI6e30sIm1vYmlsZSI6e319fQ==” border_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjU1LDI1NSwyNTUpIn19fQ==” border_width=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidG9wIjoiMSIsInJpZ2h0IjoiMSIsImJvdHRvbSI6IjEiLCJsZWZ0IjoiMSIsInVuaXQiOiJweCJ9fX0=”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Feature%22%2C%22column_cell_type%22%3A%22heading%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22UMAT%20(Implicit)%22%2C%22column_cell_type%22%3A%22heading%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22VUMAT%20(Explicit)%22%2C%22column_cell_type%22%3A%22heading%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a5853c6ed65″ table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjU1LDI1NSwyNTUpIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjM3LDEyNSw0OSkifX19″][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Solver%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Abaqus%2FStandard%20(quasi-static%2C%20implicit%20dynamics)%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Abaqus%2FExplicit%20(dynamic%2C%20impact%2C%20crash)%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a585810baeb” table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjQ3LDIwMiwxNzIpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Stability%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Relies%20on%20Newton%20convergence%3B%20tangent%20matrix%20critical%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Conditionally%20stable%3B%20step%20size%20depends%20on%20wave%20speed%20%26%20element%20size%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a585c22e04b” table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjUxLDIyOCwyMTMpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Tangent%20stiffness%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Must%20provide%20DDSDDE%20(consistent%20tangent)%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Not%20required%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a58603adbf6″ table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjQ3LDIwMiwxNzIpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Typical%20applications%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Metal%20plasticity%2C%20creep%2C%20viscoelasticity%2C%20small%20strain%2C%20quasi-static%20loading%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Impact%2C%20crash%2C%20contact%2C%20progressive%20damage%2C%20composites%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a58630d666e” table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjUxLDIyOCwyMTMpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Handling%20failure%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Works%2C%20but%20can%20struggle%20with%20localization%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Commonly%20used%3B%20element%20deletion%20supported%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a58657bbe49″ table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjQ3LDIwMiwxNzIpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Control%20knobs%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22PNEWDT%20for%20time%20step%20cutbacks%2C%20tangent%20accuracy%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Reduce%20DTIME%2C%20smooth%20material%20updates%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a58690c47f3″ table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjUxLDIyOCwyMTMpIn19fQ==”][woodmart_table_row table_column=”%5B%7B%22column_content%22%3A%22Debugging%20effort%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Higher%20(due%20to%20tangents%20%26%20convergence)%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%2C%7B%22column_content%22%3A%22Lower%20(no%20tangent%2C%20but%20careful%20with%20stability)%22%2C%22column_cell_type%22%3A%22default%22%2C%22column_cell_span%22%3A%221%22%2C%22column_cell_row%22%3A%221%22%7D%5D” woodmart_css_id=”68a586bc67064″ table_row_font_size=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJ0YWJsZXQiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9LCJtb2JpbGUiOnsidW5pdCI6InB4IiwidmFsdWUiOiIxOCJ9fX0=” table_row_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMCwwLDApIn19fQ==” table_row_bg_color=”eyJkZXZpY2VzIjp7ImRlc2t0b3AiOnsidmFsdWUiOiJyZ2IoMjQ3LDIwMiwxNzIpIn19fQ==”][/woodmart_table]

When to choose UMAT

使用 UMAT 什么时候:

  • 你的问题是什么? 准静态 或低速动力学。.

  • 你需要 快速收敛 使用隐式求解器。.

  • 材料需要 一致切线算子 (例如,具有硬化的弹塑性)。.

  • 需要较大的步幅,稳定性则不太重要。.

例如:

  • 金属在缓慢成形下的塑性。.

  • 稳态过程中的蠕变和粘弹性。.

  • 标准中的热力耦合模拟。.

When to choose VUMAT

使用 VUMAT 什么时候:

  • 你的问题是什么? 高度非线性 接触、损坏或冲击。.

  • 你想模拟 断裂、渐进性失效或碰撞安全性.

  • 你不想处理切线和牛顿收敛。.

  • 时间步长稳定性是可以控制的(显式通常需要很多增量)。.

例如:

How to decide

快速决策图表:

  • 如果你想在准静态问题上获得精确度 → 选择 UMAT。.

  • 如果你想在高度非线性动力学问题中获得鲁棒性 → 选择 VUMAT。.

因此,许多初学者先从 UMAT 开始学习结构,然后再转向 VUMAT 进行实际的碰撞或故障建模。.

VUMAT Vectorization with NBLOCK

为了最大限度地发挥 VUMAT 的性能,您必须编写 向量化代码. Abaqus/Explicit 将材料点处理成大块,通常由变量定义。 NBLOCK,因此,你应该避免在循环中使用分支或 IF 语句。分支会阻止编译器对例程进行向量化,这会显著降低分析速度。此外,始终使用 旧状态和新状态建筑 正确操作以确保增量数据完整性。.

结论

我们已经走了很远。现在你知道了:

  • 什么 Abaqus UMATAbaqus VUMAT 它们是什么,以及为什么它们很重要。.

  • 它们有何不同,以及何时选择其中一种而不是另一种。.

  • 输入、输出和数据流的基本组成部分。.

  • 如何编写和运行您的 第一弹性UMAT 步步。.

  • 接下来该去哪里? 塑性、损伤、粘弹性或复合材料.

如果你沿着这条路走下去,你将从一个编写简单弹性定律的初学者,成长为一个能够实现复合材料的塑性、损伤甚至渐进失效的高级用户。.

您的未来发展路线图:

  1. 首先采用弹性 UMAT(就像我们在这里所做的那样)。.

  2. 加入内部变量并测试简单的可塑性。.

  3. 转向更大应变和非线性模型。.

  4. 探索 VUMAT 在显式碰撞和冲击问题中的应用。.

最后说明

学习 UMAT 和 VUMAT 不仅仅是学习编程——它还关乎…… 建立对定制材料建模的信心. 测试、比较和验证得越多,成长速度就越快。.

Abaqus UMAT & VUMAT FAQs

UMAT子程序有什么用途?

UMAT 代表用户材料。当 ABAQUS 材料库中现有的材料模型都无法准确地表示待建模材料的行为时,我们会使用用户材料。在应力计算步骤中,我们使用 UMAT 来获得应力张量。在此过程中,Abaqus 还需要定义(一致的)雅可比矩阵,以便继续执行其增量计算方案。.

准备 UMAT 子程序需要采取哪些步骤?

通常,要编写新开发的UMAT程序,首先需要掌握材料本构模型的所有方面。然后,熟悉UMAT的Abaqus参数(输入/输出)。接下来,在Abaqus中开发并实现UMAT的FORTRAN代码。最后,对UMAT子程序进行测试和调试,以获得准确的UMAT结果。.

UMAT子程序中有哪些类型的参数?

UMAT 的所有参数分为 4 个不同的组:

Abaqus 提供的参数包括 STRESS、STRANA、DSTRANA、TIME 和 DTIME。.

UMAT 计算和更新的参数,例如 STRESS 和 DDSDDE 矩阵。.

参数通过 Abaqus 模型定义输入并发送到 UMAT。这些参数由 PROPS 指示。.

解相关状态变量:需要存储的参数。这些参数由 PROPS STATEV 指示。.

如何在 Abaqus/CAE 中使用 UMAT 子程序?

在 Abaqus/CAE 中正常定义 FEM 模型后,您需要在“属性”模块中定义用户材料。然后,在“机械常量”下输入您希望传递给 UMAT 的值,以定义输入。这些值随后将可通过 UMAT 访问。 道具 数组(PROPS(1), PROPS(2),…)。之后,如果力学本构模型需要存储与解相关的状态变量,则在 SDV 的数量中选择所需的数量。最后,将 UMAT 的路径提供给 Abaqus。.

我们如何验证UMAT的考试结果?

始终先使用小型模型验证 UMAT,以研究所开发材料模型的质量。您可以运行几个示例来验证在 Abaqus 中编译的 UMAT,并将结果与解析结果、实验结果或半解析(预测)结果进行比较。.

您知道可以在 Comsol Multiphysics 中使用 UMAT 吗?是不是很有趣?您可以在我们的博客中免费了解所有相关信息:

UMAT4COMSOL:连接 Abaqus UMAT 和 COMSOL Multiphysics

Related 文章

Author

CAE助理组撰稿人

Your 评论

7 回复

  1. 精彩的文章!我们会在网站上链接这篇非常棒的文章。请继续保持优秀的写作水平。——坎娅·韦特·隆戈

  2. 你说的很有道理。我在网上查了一下,发现大多数人都会同意你的观点。.

  3. 你好!我之前好像来过这个博客,但浏览了一些文章后发现这是我第一次来。总之,我很高兴发现了它,我会把它加入书签,以后常来看看!

  4. 只想说你的文章真是太棒了。你的文章条理清晰,令人叹服。
    简直太棒了,我觉得你在这方面肯定是个专家。.
    好的,如果您允许,请允许我抓住您的
    请关注我们的动态,以便及时了解即将发布的帖子。感谢大家一百万次的关注,请继续支持我们!
    一份很有意义的工作。.