如果 Abaqus 是一个 高端计算器, , 一个 Abaqus 子程序 是一个 自定义公式 你对它进行编程。计算器会完成复杂的数学运算,但你需要提供解决特定问题的独特逻辑。.
这 Abaqus 用户子程序 允许您针对 Abaqus 主要功能无法实现的特定应用场景自定义程序。如果您无法使用 Abaqus 内置的材料、载荷、属性、单元等模型运行分析,则应编写子程序。.
在本文中,我们, CAE 助手, 假如 使用 Abaqus 编写用户子程序的路线图. 阅读本文,您将熟悉 Abaqus 子程序示例和最佳 Abaqus 子程序教程。阅读本文后,使用 Abaqus 编写用户子程序将变得更加容易。.
1. 编写 Abaqus 子程序的要求
Abaqus 用户子程序主要用以下语言编写: Fortran, 为了让软件能够执行这段代码,它必须能够与 C++ 环境和 Fortran 编译器无缝通信。在开始编写第一个材料模型或复杂载荷代码之前,您必须建立我们所说的…… “三方握手” 在您的软件组件之间。.
(模拟)
(链接器)
(编译器)
- MS Visual Studio 2022
- Intel® oneAPI 基础和 HPC 工具包 2022
- "在 PATH 中找不到 ifort.exe"
- "系统中未找到 Visual Studio"
- "链接过程中出现问题"
在 CMD 中运行这些命令并查找 经过:
abaqus 验证 -user_std
abaqus 验证 -user_exp
2. Abaqus 子程序究竟是什么?
一个 Abaqus 子程序 是一个用户编写的 Fortran 代码,允许您向仿真中添加自定义物理或数学模型。本质上,它充当了求解器和您独特的工程需求之间的桥梁。因此,当标准软件功能无法捕捉复杂的材料行为、边界条件或载荷场景时,您可以使用这些例程。.
3. 我应该使用哪个 Abaqus 子程序?
选择正确的 Abaqus 子程序 主要取决于您的“工程需求”以及您正在使用的具体求解器(标准求解器与显式求解器)。.
Abaqus 提供了大量的子程序,每个子程序都针对不同类型的分析具有特定的优势。然而,它们在编码复杂性和所需的数学专业知识水平方面也存在局限性。.
下表根据 Abaqus 子程序解决的问题类型,对最重要的子程序进行分类,以帮助您确定最适合您研究的工具。.
| 类别 | 标准/显式 | 主要用途及实际案例 | 了解更多 |
|---|---|---|---|
| 材料 | UMAT / VUMAT | 定义自定义机械本构行为。. 案例:三维编织复合材料或功能梯度材料强度预测。. | 免费博客和教程 |
| 加载中 | DLOAD / VDLOAD | 定义非均匀分布的机械载荷。. 案例:模拟沥青混凝土路面上的动态移动荷载。. | 免费博客和教程 |
| 字段变量 | 美元现金流/美元现金流 | 重新定义物质点处的场变量。. 案例:3D打印中粉末到固体的相变模拟。. | 完整教程 |
| 边界条件 | DISP / VDISP | 规定平移和旋转运动。. 案例:计算裂纹尾迹处的应力强度因子。. | 完整教程 |
| 热的 | DFLUX / VDFLUX | 施加非均匀分布的热通量或质量通量。. 案例:激光切割中的热应力预测。. | 免费博客和教程 |
| 热量产生 | 赫特瓦尔/维特瓦尔 | 定义内部热生成模型。. 案例:WAAM期间的相位变化。. | 完整教程 |
| 超弹性 | 超高 | 定义各向同性超弹性的应变能势。. 案例:温度敏感水凝胶的形变。. | 完整教程 |
| 元素 | UEL / VUEL | 创建用户自定义有限元。. 案例:脆性断裂的相场建模。. | 免费博客和教程 |
| 互动 | FRIC / VFRIC | 复杂摩擦接触建模。. 外壳:多层金属结构。. | 完整教程 |
| 粘塑性 | 爬行者 | 定义随时间变化的形变。. 案例:聚合物的粘塑性行为。. | 免费博客和教程 |
在这里,您需要决定哪个子程序最符合您的需求。虽然开发用户子程序并不需要完全理解 Abaqus 的结构,但如果开发人员至少对结构有所了解,则会很有帮助。编写像 UMAT 或 UEL 这样的高级子程序时,这种理解就显得尤为重要。.
这是从 Abaqus/Standard 分析开始到结束的基本数据和操作流程:
这是Abaqus/Explicit分析的基本流程图:
我们的软件中包含一些 Abaqus 子程序示例或 Abaqus 用户子程序手册。 子程序类别.
4. 如何编写 Abaqus 子程序?
写一个 Abaqus 子程序, 您必须创建一个扩展名为 .for 或 .f 的标准文本文件,并用遵循 Abaqus 文档中定义的特定接口结构的 Fortran 代码填充该文件。.
该文件充当您的自定义“配方”,Abaqus 求解器在仿真过程中执行该配方。.
现在让我们一步一步地来看看该怎么做:
首先,打开 Abaqus 文档后,向下滚动直到找到…… 用户子程序 图中高亮部分即为该部分。如图所示,子程序是根据求解器进行分类的。.
接下来,选择所需的子程序。如图所示,, 调度 已选择此子程序作为示例。图中所示的第一部分解释了该子程序是什么以及它的用途。请仔细阅读本节,以确保该子程序适合您的应用,并在使用它之前充分了解所需的信息。.
下图所示的下一部分是: 界面 子程序的代码。您可以直接将其复制粘贴到我们之前提到的文本文件中。.
下一步,在你的文本文件中,找到以下部分: “用户编码定义 U”, 您可以自行编写方程式和所需的代码。图中给出了一个示例。.
然后保存文件,你的代码就可以运行了。.
如果您点击它,默认情况下它会在以下位置打开: Microsoft Visual Studio.
4.1. 我需要成为程序员才能编写子程序吗?
您必须具备 Fortran 的基础知识,因为它是 Abaqus/Standard 和 Abaqus/Explicit 求解器的原生语言。虽然您无需成为计算机科学家,但您必须了解 Fortran 的基本语法——例如循环、条件语句和数组运算——才能与求解器进行交互。不过,您无需重复造轮子。.
为了避免重复讲解基础编程课程,我们专门编写了一份指南,涵盖了从列规则到内置函数的所有内容。.
掌握 Abaqus Fortran 语法
在编写代码之前,请先掌握子程序所需的特定语法和规则。从……开始学习所有相关知识。 列位置 和 数据类型 到 矩阵运算 请参阅我们的专门指南。.
掌握 Fortran 精要 →5. 如何在 Abaqus 中使用编写好的子程序?
编写完自己的 Abaqus 用户子程序后,需要告知 Abaqus 在哪里使用该子程序。这取决于子程序的类型。例如,DISP 是一种 BC 类型。因此,我们需要…… 加载 模块:
创建新作业时,您需要提供已编写子程序的地址。.
6. 如何在 Abaqus 中使用多个用户子程序?每个子程序应该放在单独的文件中,还是应该放在同一个 .for 文件中?具体应该怎么做?
在 Abaqus 中,有时需要在单个文件中编写多个子程序。这种方法具有诸多优势,包括更清晰的代码组织、更高效的编译以及更简化的代码管理。通过将多个子程序合并到一个文件中,工程师可以更好地组织代码并保持逻辑结构。这有助于理解不同子程序之间的关系和依赖性,从而在必要时更轻松地浏览和修改代码。.
此外,将包含多个子程序的单个文件编译成程序比编译多个单独的文件效率更高。这样可以减少编译和链接各个文件带来的开销,从而加快编译速度。.
此外,管理单个文件通常比处理多个文件更方便。它简化了版本控制流程,便于与合作者共享代码,并确保所有必要的子程序都随时可用。.
单个文件中包含多个子程序的一个例子是,Abaqus 用户希望实现自定义材料行为以及用户自定义单元。他们可能会编写一个子程序用于本构模型(例如 UMAT),另一个子程序用于用户自定义单元行为(例如 UEL)。通过将这些子程序合并到一个文件中,工程师可以保持其自定义材料和单元行为的统一表示,从而更轻松地管理和重用不同分析中的代码。.
我们可以拥有多个 Abaqus。 子程序 这两个子程序都在同一个文件中。Abaqus 会在分析过程中根据需要随时调用它们。.
例如,如果你正在写一个 UMAT 和 美国林业, 你的 Fortran 文件将具有以下结构:
请记住,给定的用户子程序(例如 UMAT 或者 美国林业)应该出现 仅一次 在指定的用户子程序源中。.
7. 我可以使用 Python 脚本自动执行 Abaqus 子程序吗?
是的,您可以使用 Python 来自动创建模型和提交作业,同时您的 Fortran 子程序来处理复杂的物理问题。.
这种“混合工作流程”能为您带来巨大的竞争优势。在这种架构中,Python 充当管理者的角色,自动执行诸如创建几何体、构建装配体和设置边界条件等重复性任务。同时,您的 Abaqus 子程序 (用 Fortran 编写)充当专家角色。它负责处理集成点处的高级材料定律或自定义物理行为。.
实际工作流程案例
- 裂纹扩展: Python 控制器可以管理顺序作业重启,并根据 Fortran 例程中的数据自动更新边界条件。.
- 微观力学: 你可以使用 Python 来自动放置复合材料模型中的数百根纤维,同时…… VUMAT 例行程序负责处理伤害机制。.
- 参数化材料研究: Python 可以自动调整输入文件中的材料常数,然后由……进行处理。 UMAT 或者 硬 子程序。.
您可以直接通过 Abaqus/CAE 界面运行脚本,也可以通过系统命令行运行脚本以加快处理速度。.
逃离 Abaqus/CAE 对于初学者来说,这是最简单的方法,因为可以在图形界面中立即看到模型更新。但是,对于大型模型或批量处理,图形界面通常运行缓慢。因此,高级用户更喜欢使用其他方法。 系统命令行(cmd). 通过使用命令 abaqus cae noGUI=script_name.py,您可以更快地运行模拟,而不会在视觉反馈上浪费资源。.
从零开始掌握 Abaqus 脚本编写
别再浪费时间手动点击了。学习如何自动化操作。 模型创建, , 跑步 参数研究, 并执行 超快速后期处理 使用我们的完整教程。.
阅读我们的免费博客及更多内容 →什么是Abaqus子程序?
Abaqus 用户子程序允许对程序进行自定义,以适应 Abaqus 主程序功能无法实现的特定应用。如果您无法使用 Abaqus 内置的材料、载荷、属性、单元等模型进行分析,则应编写用户子程序。.
ABAQUS 中的 UMAT 子程序是什么?
UMAT 子程序用于 Abaqus/Standard 中。如果您需要对 Abaqus 未提供的用户自定义非线性应力-应变关系进行建模,请查找 UMAT 用户子程序。UMAT 允许您为您的问题定义自定义材料模型。.
在 Abaqus 中编写子程序需要哪些先决条件?
Abaqus 用户子程序大多用 Fortran 编写。当向 Abaqus 提交包含用户子程序的仿真模型时,系统应自动使用正确的编译和链接命令。如果您的 Fortran 编译器版本与指定版本不符,则可能会出现兼容性问题。因此,确保子程序配置的组件兼容至关重要。您可以参考 Intel 提供的 Abaqus 兼容版本完整指南。 本文将介绍 Fortran 和 Visual Studio: 兼容 Fortran 和 Visual Studio 的 Abaqus
Abaqus软件中有哪些类型的子程序?
Abaqus 中使用了多种子程序。每个子程序都适用于仿真过程的特定部分。例如,用户子程序 UMAT 允许向程序中添加本构模型。更高级的子程序是 UEL,它允许创建用户自定义单元。此外,Abaqus 中还应用了其他各种子程序。一些较为简单的 Abaqus 用户子程序示例包括 DLOAD、DISP、UVARM、URDFIL 等。您可以阅读以下文章来熟悉最重要和最典型的子程序: 10 个实用的 ABAQUS 子程序(第一部分), 10 个实用的 Abaqus 子程序(第二部分).
如何通过查阅 Abaqus 文档学习如何创建子程序?
要了解某个子程序,您需要在 Abaqus 文档中的《Abaqus 用户子程序参考指南》中找到该子程序的名称。每个子程序指南包含七个部分。前四个部分用于描述子程序在 Abaqus 中的用法和功能、局限性等。后三个部分提供了该子程序使用的代码结构。通常,通过参数列表传递给用户子程序的变量分为三类:待定义变量、可定义变量和用于提供信息的变量。.
























6 回复
这篇文章太棒了!
请继续创作此类文章!
我喜欢这篇精彩的帖子。
太棒了!观点非常中肯!感谢你写了这篇文章,而且网站的其他内容也很棒。.
哇!谢谢!我一直想在我的网站上写一些类似的文章。我可以把你的文章部分内容转载到我的博客上吗?拉斐莉塔·埃托雷·艾尔莎
你提出的观点有很多很好。我搜索了一下相关内容,发现大多数人都会同意你的博客观点。——埃尔斯佩思·基特·霍比
这篇文章是我读过的关于子程序最全面、最详尽的文章之一。感谢您撰写这篇文章。
如果可以的话,您能否推荐一些关于编写子程序的培训课程?
感谢您的帮助