» 博客 » 博客 » Abaqus UEL 和 VUEL 子例程:简介、变量、Abaqus UEL 示例

Abaqus UEL 和 VUEL 子例程:简介、变量、Abaqus UEL 示例

In this article you will read

目录

Main Article

Last updated on:

你有没有想过拥有 Abaqus中的自定义元素Abaqus 提供了许多内置元素,但有时它们不足以满足特定模拟的需求。如果您需要模拟复杂材料、独特几何形状或高级物理行为,默认选项可能无法满足要求。这时就需要用到 Abaqus 了。 Abaqus UEL(用户元素)子程序 变得有用。.

The UEL and VUEL subroutines allow users to define custom elements by programming their stiffness matrix, mass matrix, and internal forces. This flexibility makes them valuable for researchers and engineers working on innovative simulations that Abaqus elements cannot handle. It is commonly used in cases like micromechanical modeling, coupled-field problems, and experimental finite elements.

在本篇博客中,我们将介绍 UEL 和 VUEL 子程序,解释它们的工作原理和适用场景。我们还将 UEL 与 UELMAT 进行比较,UELMAT 是另一个包含自定义材料模型的子程序。此外,我们将详细介绍 UEL 和 VUEL 的关键变量,并提供一个在桁架仿真中实现 UEL 的分步示例。阅读完本文后,您将清楚地了解如何在 Abaqus 中使用 UEL。.

 

所以 UEL 和 VUEL 子程序是为高级用户准备的,而且很难学,对吧?但我们已经为你准备好了!无论你是刚刚入门、深入研究高级自定义元素,还是专门学习 VUEL,, 这些教程将带你从入门到精通。. 。 我们的 UEL 入门教程 简单来说,它奠定了基础。 高级 UEL 指南 通过复杂的实现方式进一步提升你的技能,以及 VUEL 特别教程 是您了解 VUEL 所有信息的首选平台。告别困惑——只需访问 清晰、循序渐进的指导. 准备好将您的 Abaqus 技能提升到更高水平了吗?

What is the UEL Subroutine?

联合欧洲联盟 (用户元素)子程序 Abaqus/标准 UEL允许高级用户定义超出Abaqus预定义单元功能的自定义单元行为。借助UEL,用户可以通过编程单元的刚度矩阵、质量矩阵、残余力向量和能量贡献来指定单元在分析过程中的行为。.

Why should we use the UEL subroutine?

当内置的 Abaqus 单元不适用于特定分析时,UEL 允许用户根据自身需求定制单元公式。它能够模拟非标准本构模型等高级行为。此外,UEL 在学术或工业研究中尤为有用,尤其是在需要对新材料或独特的物理现象进行定制建模时。.

Examples of UEL subroutine applications

  • 特殊梁和壳单元: Abaqus 中的标准梁壳单元基于经典梁壳理论。如果分析需要更高阶的梁理论或自定义的复合壳公式,则需要使用非标准梁壳单元 (UEL)。.
  • 自定义几何形状如果问题需要具有特殊几何形状的元素,例如不规则形状的元素,UEL 允许您定义节点以及它们如何交互。.
  • 耦合场问题:开发用于处理诸如热机械耦合或机电耦合等场景的元件,这些场景无法使用 Abaqus 中现有的元件进行处理。
  • 实验元素:引入用于研究目的的元素,例如一种新的有限元方法,UEL 允许实现新的想法。.
  • 微观机械模型:模拟微观层面的材料行为,例如金属中的晶粒,其中材料的行为取决于微观结构。.
  • 生物工程与软组织建模软生物组织表现出粘弹性、各向异性和非线性力学行为,而标准元件可能无法完全描述这些特性。UEL 允许对肌肉、皮肤或器官组织进行自定义建模,从而提高生物医学模拟的真实性。.
  • 功能梯度材料(FGM)元件功能梯度材料(FGM)的材料属性在其体积(或长度或表面)范围内逐渐变化,这难以用标准单元进行建模。UEL 子程序可以定义刚度、热膨胀系数和导热系数连续变化的单元,从而实现精确的模拟。.

If you want to learn how to start writing your own Abaqus subroutines from the basics — including structure, interface, and best practices — check out our complete guide on beginning Abaqus 子程序 发展。.

Abaqus UEL tutorial: guide to writing UEL subroutine step by step

要在 Abaqus 中编写和实现 UEL 子程序,您必须首先熟悉其接口、变量以及如何在软件和 UEL 子程序之间连接和传输数据。在本 Abaqus UEL 教程中,我们将首先介绍 UEL 接口,然后介绍 UEL 变量。.

UEL subroutine interface

此过程的第一步是了解 UEL 子程序接口。Abaqus 为每个子程序定义了特定的格式和若干变量,就像 UEL 一样。用户必须遵循此格式才能使用子程序。以下是 UEL 子程序接口。.

UEL 子程序新手?请从我们的 新手友好指南 并学习 基础知识逐步讲解本教程的引言是关于“我们什么时候需要它?UEL 子程序是如何工作的?” 什么是 UEL 子程序接口?, , ETC。”

ABAQUS 中的 UEL 子程序简介

UEL 代表用户自定义单元 (User-defined Elements)。当您的有限元分析需要使用 Abaqus 单元库中不存在的单元类型时,您必须编写 UEL 子程序。或者,当您想要定义各种单元形状函数时,UEL 也是最佳选择。该子程序是 Abaqus 中最复杂的子程序之一,专为高级用户设计。通过本教程包,您可以成为高级用户,并学习如何编写如此复杂的子程序。本教程包包含两个工作坊:编写用于具有非线性截面行为的平面梁单元的 UEL 子程序,以及编写用于具有特定边界条件和载荷的梁单元的 UEL 子程序。. 观看演示

UEL 子程序接口 | Abaqus UEL

图 1:UEL 子程序接口

该子程序在用户自定义单元类型的分析的每个增量阶段都会被调用。如图 1 所示,UEL 子程序由三部分组成。第一部分引入子程序中使用的变量。第二部分指定变量的维度。在第三部分中,Abaqus 为 UEL 子程序提供各种输入变量,用户负责定义“待定义”变量,例如 RHS 和 AMATRX 变量。.

What are UEL subroutine variables?

与其他子程序一样,UEL 子程序也有其自身由 Abaqus 指定的变量。其中一些变量是“待定”待定义“变量必须由用户定义和计算,它们被称为输出,其计算至关重要。然而,其余变量并非必不可少,它们只能在计算”待定义“变量的过程中使用,以帮助用户。这些变量是“已传递信息”下表介绍了 UEL 子程序变量,并对其进行了描述,还指定了它们的类型。.

多变的

类型 描述
右侧 待定

单元的残余力向量,代表对全局方程组有贡献的内力。它必须计算正确,因为 Abaqus 会将其组装到力平衡方程中。简单来说,该数组包含单元的力或通量(这些力用于确定刚度矩阵的方程中)。.

AMATRX 待定

刚度矩阵(雅可比矩阵)或惯性矩阵等特征矩阵决定了单元抵抗变形的能力。AMATRX 必须完全定义;否则,Abaqus 会假定刚度矩阵是对称的。.

斯瓦拉 待定

存储材料历史(例如塑性应变、损伤变量等)的与求解相关的状态变量。这些变量由用户定义,用于Abaqus未预先定义变量的意外应用场景,并且必须在每次增量迭代中更新。.

活力

待定(如果需要能量跟踪)

与单元相关的能量贡献。如果需要能量跟踪,则必须更新此参数。ENERGY 数组包含 8 个分量:(1)动能,(2)弹性应变能,(3)蠕变耗散,(4)塑性耗散,(5)粘性耗散,(6)人工应变能,(7)静电能,(8)外部载荷所做的增量功。如果未定义,Abaqus 假定能量贡献为零。.

PNEWDT

可以更新(如果需要时间步进控制)

建议的新时间增量与当前使用的时间增量的比率。此变量仅在启用自动时间增量模式时可用。此变量允许您为自动时间增量算法提供输入,从而改进算法。.

NDOFEL

已传递信息

该变量指定元素的自由度数。.

道具

已传递信息

单元的实值属性(例如,材料常数,如杨氏模量、厚度)。这些值在输入文件中通过 UEL PROPERTY 定义。.

JPROPS 已传递信息

分配给元素的整数属性的数量。.

坐标 已传递信息

分析开始时单元的节点坐标。这些坐标在整个模拟过程中保持不变,并用于计算应变-位移关系。.

U 已传递信息

场变量,例如结构分析中单元节点处的位移,从分析开始就不断累积。用于计算应变。.

DU、V、A

已传递信息

当前增量的增量场变量(例如位移)、节点一阶导数(速度)和节点二阶导数(加速度)。.

上表介绍了 UEL 子程序中最重要的一些变量,但解释较为简略。此外,表中并未解释其他一些变量。因此,您可以参考以下说明: ABAQUS 中 UEL 子程序的介绍 软件包用于全面熟悉所有变量并学习与此子程序相关的详细信息。.

What is the VUEL Subroutine?

伏尔泰 (显式用户元素)子例程用于 Abaqus/Explicit 用于定义自定义有限元。它是 UEL 子程序的显式动态版本,该子程序用于 Abaqus/Standard。在 Abaqus/Explicit 中,质量和力是主要的控制因素,这与 Abaqus/Standard 不同,后者的平衡方程基于刚度矩阵。由于显式方法不使用全局刚度矩阵,, 与 UEL 不同,VUEL 不需要刚度矩阵计算 (AMATRX)。.

3.1. VUEL子程序接口

VUEL 子程序也有自己的接口。该接口与 UEL 子程序的接口不同,原因在于这些子程序中使用的求解器类型不同。以下是 VUEL 子程序的接口:

对 VUEL 感兴趣吗?这篇实战教程将让您轻松编写 VUEL 子程序!本教程的引言部分将探讨“何时需要 VUEL?VUEL 子程序是如何工作的?” VUEL子程序接口是什么?, , ETC。”  2个教育研讨会.

VUEL abaqus

VUEL 是显式求解器的 UEL 子程序。UEL 用于标准求解器,而 VUEL 用于显式求解器。当然,这两个子程序之间还有其他一些区别,例如输入、变量等。本教程包用于编写 ABAQUS 中最复杂的子程序 VUEL,该子程序适用于自定义问题。刚度矩阵和节点力是该子程序的输出,它们可以基于多个变量进行定义。本教程包包含两个研讨会:第一个研讨会分为三个部分,用于建模桁架单元;第二个研讨会讲解如何在同一个模型中使用 VUEL 和 VUMAT 子程序。.

VUEL 子程序接口

图 2:VUEL 子程序接口

如您所见,与其他子程序一样,此子程序由三部分组成。第一部分用于定义子程序的变量,第二部分用于指定变量的维度,但在第三部分中,用户必须在 DO 循环内定义必要的变量。.

VUEL Subroutine Variables

与其他子程序一样,准确了解 VUEL 变量对于正确使用此子程序至关重要。由于 VUEL 子程序的应用与 UEL 非常接近,这两个子程序的许多变量完全相同。然而,由于子程序之间存在一些细微差别,特别是求解器,因此也存在一些不同的变量。下表列出了 VUEL 子程序特有的、UEL 中不存在的变量。请注意,VUEL 并不包含 UEL 的所有变量。这两个子程序共享一些变量,但各自也拥有独特的变量集。.

多变的

类型 描述
群众 待定

单元的质量矩阵。与需要刚度矩阵(AMATRX)的单元单元(UEL)不同,显式分析依赖于质量。您必须定义此矩阵才能正确考虑惯性效应。.

时间表 待定

每个单元的最大稳定时间增量。如果定义不正确,仿真可能会崩溃。.

质量缩放因子

待定(如果使用质量缩放)

质量缩放因子,用于增加单元的质量,从而人为地增大稳定时间步长。虽然此因子是可选的,但对于加速时间步长过小而导致的模拟非常有用。.

NBLOCK

已传递信息

此子程序调用中正在处理的元素数量。由于 Abaqus/Explicit 以批处理方式处理元素,因此这有助于提高效率。.

DTIMECUR

已传递信息

显式分析中的当前时间增量。此值会在每个增量周期更新。它主要用于参考,用户不得修改。.

日期时间前

已传递信息

这是上次计算以来的时间增量。它有助于跟踪分析过程中时间步长的变化情况。.

另一方面,这两个子程序中的一些变量名称不同,但用法却非常相似。例如,我们可以提到变量 AMATRX 和 AMASS。变量 AMATRX 通常用于 UEL 子程序中计算刚度矩阵,而变量 AMASS 在 VUEL 子程序中则是质量矩阵。这两个变量虽然名称不同,但在子程序的求解过程中却扮演着相同的角色。.

与 UEL 子程序类似,VUEL 子程序也是一个复杂的子程序。此外,还有一些未列入表 2 的变量,在子程序编写过程中正确使用这些变量可能具有挑战性。然而, ABAQUS 中 VUEL 子程序的介绍 该软件包可以指导和帮助您正确编写 VUEL 子程序。.

Abaqus UEL Example

如前所述,UEL 子程序可用于需要定义新元素的各种场景。为了更深入地了解 UEL 子程序,让我们一起来看一个非常简单的示例。此外,本教程中还提供了一个更高级的示例:“UEL 高级水平

UEL 高级水平

用户单元 (UEL) 子程序(用户自定义单元)是 Abaqus 为用户提供的最高级别子程序。该子程序允许用户编写有限元模拟的基本构建模块。当用户想要实现 Abaqus 中没有的单元类型时,该子程序的功能尤为强大。利用该子程序,用户可以定义不同类型的形函数,引入 Abaqus 中没有的单元技术,或者模拟其他方法无法实现的多物理场行为。本 Abaqus 用户单元教程包将首先简要介绍用户单元子程序,然后讲解编写小应变力学分析子程序的理论和算法。首先,我们将重点介绍第一个示例中需要编程的 UEL 单元刚度矩阵和单元残差向量。我们还将介绍形函数和数值积分。接下来,我们将讨论 UEL 的输入和输出。第一个示例详细介绍了使用三角形、四边形、四面体和六面体单元,并采用缩减积分和全积分方案进行二维平面应变和三维模拟的通用子程序的开发过程。第二个示例演示了在 Abaqus/CAE 中构建与 UEL 兼容的模型的过程。它还演示了如何使用 UEL 应用复杂的边界条件,以及如何对包含标准单元和用户自定义单元的结构进行 Abaqus 分析。最终,用户可以使用此程序作为模板编写自己的 UEL 子程序。.

使用 Abaqus 中的 UEL 子程序对桁架进行仿真:

虽然使用 Abaqus 中提供的默认单元可以很好地模拟 2D 或 3D 桁架,但选择此示例的原因是其教学的简单性以及使用 Abaqus 中的 UEL 子程序模拟桁架。.

如下图所示,本例中将模拟一个由两个连杆组成的桁架。该桁架将承受来自连杆连接处的 100 帕斯卡集中载荷。图中还可以看到桁架的固定支座。.

桁架模拟示意图

图 3:桁架仿真示意图

由于 Abaqus 不允许用户通过图形用户界面 (GUI) 直接访问 UEL 子程序,因此必须使用 .inp 文件来实现。要修改此文件以访问 UEL 子程序,必须按照 Abaqus 提供的说明进行操作。这些说明可在 Abaqus 文档中找到。.

下图展示了桁架示例的 .inp 文件所做的更改。这些更改包括属性、元素名称等。.

.inp 文件中的用户元素更改 | Abaqus UEL 示例

图 4:.inp 文件中的用户元素更改

  • 类型第一个更改是 TYPE。此参数等于用于在 ELEMENT 选项中标识此元素的元素类型键。此类型键的格式必须为 Un,其中 n 是小于 10000 的正整数。简而言之,TYPE 用于标识元素。.
  • 节点应设置为等于同类型单元的节点数。为简化起见,每个桁架连接都被视为一个单元,因此每个单元有两个节点。.
  • 特性:应该等于用户子程序 UEL 中定义此类元素所需的实数(浮点数)属性值的数量(PROPS 的数量)。.
  • 变量它等于元素中必须存储的与解相关的状态变量的数量。.
  • 坐标:表示尺寸。如图所示,数字 1、2 和 3 列出了单元第一个节点的有效自由度。这意味着该节点可以沿 X、Y 和 Z 方向移动。.
  • 联合欧洲联盟 特性: 用户还应将材料属性添加到 .inp 文件中。如图所示,弹性模量为 200 GPa,每个单元的横截面积为 5 cm²。2.

示例的下一步是编写子程序,但在此之前,有必要考察用于描述单元行为的理论。因为本例中仅考虑单元的位移,所以为了定义单元的行为,我们只考虑其长度的变化。为此,我们可以将单元长度的变化视为弹簧,因此单元的行为遵循以下关系。该方程以局部坐标系表示。.

abaqus uel

其中 k 为刚度,u 为位移,f 为合力。对称问题的刚度矩阵定义如下:

abaqus uel

其中 E 为弹性模量,A 为横截面积,L 为单元长度。但是,需要注意的是,UEL 子程序要求用户在全局坐标系中进行计算。因此,我们将方程改写如下:

abaqus uel

在全球系统中,K 值由以下公式计算:

abaqus uel

哪个 R 矩阵等于:

abaqus uel

现在我们可以编写 UEL 子程序了。编写 UEL 子程序的主要目标是定义变量 AMATRX 和 RHS。下图展示了子程序中计算这两个变量的过程。.

桁架示例的 UEL 子程序

图 5:桁架示例的 UEL 子程序

在该子程序中,首先使用 COORDS 变量提取单元起始点和终止点的坐标(即第一个节点和第二个节点的坐标)。然后,利用这些数据计算单元的长度 (L)。.

下一步,利用前面描述的关系式计算局部系统中的k矩阵和R矩阵。然后,通过这两个变量的矩阵乘法,计算平衡系统的左侧,即AMATRX矩阵。.

最后,需要计算平衡系统右侧的变量(即内力和外力的合力)。该变量可以通过将 K 矩阵乘以全局系统中的位移矩阵 (U) 来计算。需要注意的是,该矩阵的维数等于节点的自由度数乘以节点数。.

现在运行此子程序,即可查看所得结果。下图显示了施加力后桁架的位移。.

使用 UEL 子程序进行桁架仿真的结果

图 6:使用 UEL 子程序模拟桁架的结果

 结论

本文介绍了Abaqus中的UEL(用户单元)和VUEL子程序,它们允许用户定义超出内置选项的自定义单元。这些子程序对于模拟复杂的材料行为、独特的几何形状和高级物理相互作用非常有用。理解UEL至关重要,因为标准的Abaqus单元可能并不总是能满足特定模拟的需求,因此自定义单元定义对于研究和工程应用来说必不可少。.

我们首先解释了 UEL 的概念及其必要性,重点阐述了它在定义单元行为中的作用。然后,我们比较了 UEL 和 UELMAT,指出 UEL 仅定义单元,而 UELMAT 还包含自定义材料模型。接下来,我们介绍了 UEL 子程序变量,解释了关键的输入和输出,例如刚度矩阵 (AMATRX) 和残余力向量 (RHS)。我们还介绍了 UEL 的显式对应物 VUEL,并展示了它处理质量而非刚度的方式有何不同。最后,我们通过实现桁架仿真,提供了一个循序渐进的 UEL 示例,详细说明了如何定义变量和编写子程序。总之,本文解释了 Abaqus 中 UEL 的目的、结构和应用,为编写自定义单元奠定了清晰的基础。.

Related 文章

Author

培训组

Your 评论

发表回复

UEL 代表用户自定义单元 (User-defined Elements)。当您的有限元分析需要使用 Abaqus 单元库中不存在的单元类型时,您必须编写 UEL 子程序。或者,当您想要定义各种单元形状函数时,UEL 也是最佳选择。该子程序是 Abaqus 中最复杂的子程序之一,专为高级用户设计。通过本教程包,您可以成为高级用户,并学习如何编写如此复杂的子程序。本教程包包含两个工作坊:编写用于具有非线性截面行为的平面梁单元的 UEL 子程序,以及编写用于具有特定边界条件和载荷的梁单元的 UEL 子程序。. 观看演示
用户单元 (UEL) 子程序(用户自定义单元)是 Abaqus 为用户提供的最高级别子程序。该子程序允许用户编写有限元模拟的基本构建模块。当用户想要实现 Abaqus 中没有的单元类型时,该子程序的功能尤为强大。利用该子程序,用户可以定义不同类型的形函数,引入 Abaqus 中没有的单元技术,或者模拟其他方法无法实现的多物理场行为。本 Abaqus 用户单元教程包将首先简要介绍用户单元子程序,然后讲解编写小应变力学分析子程序的理论和算法。首先,我们将重点介绍第一个示例中需要编程的 UEL 单元刚度矩阵和单元残差向量。我们还将介绍形函数和数值积分。接下来,我们将讨论 UEL 的输入和输出。第一个示例详细介绍了使用三角形、四边形、四面体和六面体单元,并采用缩减积分和全积分方案进行二维平面应变和三维模拟的通用子程序的开发过程。第二个示例演示了在 Abaqus/CAE 中构建与 UEL 兼容的模型的过程。它还演示了如何使用 UEL 应用复杂的边界条件,以及如何对包含标准单元和用户自定义单元的结构进行 Abaqus 分析。最终,用户可以使用此程序作为模板编写自己的 UEL 子程序。.
VUEL 是显式求解器的 UEL 子程序。UEL 用于标准求解器,而 VUEL 用于显式求解器。当然,这两个子程序之间还有其他一些区别,例如输入、变量等。本教程包用于编写 ABAQUS 中最复杂的子程序 VUEL,该子程序适用于自定义问题。刚度矩阵和节点力是该子程序的输出,它们可以基于多个变量进行定义。本教程包包含两个研讨会:第一个研讨会分为三个部分,用于建模桁架单元;第二个研讨会讲解如何在同一个模型中使用 VUEL 和 VUMAT 子程序。.