» 博客 » 博客 » Abaqus DLOAD 和 VDLOAD 子程序分步指南

Abaqus DLOAD 和 VDLOAD 子程序分步指南

In this article you will read

目录

Main Article

Last updated on:

在有限元分析中,精确定义分布载荷对于获得可靠的结果至关重要,Abaqus 提供了 DLOAD 和 VDLOAD 子程序来实现这一目标。这些子程序允许用户定义自定义的、空间和时间变化的分布载荷,从而比预定义的载荷类型更加灵活。这对于模拟复杂工况(例如风力、波浪力或浮力)尤为有用,因为这些载荷会随位置、时间或环境条件等因素而变化。.

该子程序能够定义集中载荷和分布载荷,并可根据单元编号和积分点等参数调整载荷大小。这使其成为处理空间变化压力、流体流动或热效应等无法用标准载荷类型捕捉的场景的理想选择。.

DLOAD 和 VDLOAD 子程序功能强大,但需要谨慎实现以避免错误。用户必须确保负载定义与模型的具体参数相符,以保持仿真精度。在本博客中,我们将探讨这些子程序的关键特性、实际应用和实现技巧。我们将介绍其使用方法、讨论其要求,并提供分步指南,帮助用户有效地将此工具集成到仿真中,从而提高结果的精度和可靠性。.        

你想学习吗? DLOAD 和 VDLOAD 子程序 通过循序渐进的教程视频进行学习 5个实际例子?5 个例子!!当然,你会得到 子程序文件 以及每个示例的其他文件。 点击下方.

Abaqus DLOAD 和 VDLOAD 子程序

本培训包旨在帮助 Abaqus 用户编写复杂的 DLoad 和 VDLoad 子程序。通过这些研讨会,您可以熟悉 DLoad 和 VLoad 子程序编写的基本方法及其应用。作为一名工程师,您可以通过学习本培训包来完成包含复杂载荷的基本项目。.

Understanding the Basics of DLOAD & VDLOAD Subroutines

Abaqus 中的 DLOAD 和 VDLOAD 子程序允许用户在仿真过程中定义复杂的、用户指定的载荷条件。与 Abaqus 中的标准载荷选项不同,DLOAD 提供了基于空间、时间或其他参数自定义载荷分布的灵活性。.

要正确使用该子程序,必须理解其主要概念。.

DLOAD 和 VDLOAD 子程序具有不同的用户界面。此外,每个子程序都有一些变量,本节将对此进行解释。为了便于理解,我们提供了一些示例。以下是每个子程序的工作原理:

User Subroutine Interface

分别展示了用户 DLOAD 和 VDLOAD 子程序接口的 Fortran 代码。.

笔记:
子程序 DLOAD(F,KSTEP,KINC,时间,NOEL,NPT,层,KSPT,1 坐标,JLTYP,SNAME)
C
包括 ''ABA_PARAM.INC''
C
方面 时间(2),坐标(3)
特点*80 SNAME

用户编码 定义 F

返回结束
 								
笔记:
子程序 vdload(
C语言只读(不可修改)变量 -
     1 nBlock、ndim、stepTime、totalTime、2 amplitude、curCoords、velocity、dirCos、jltyp、sname、,
C 只写(可修改)变量 -
     1 值)
C
      包括 ''vaba_param.inc''
C
      方面 curCoords(nBlock,ndim), 速度(nBlock,ndim), 1 dirCos(nBlock,ndim,ndim), 值(nBlock)
      特点*80 sname
C

       100 公里 = 1,nBlock
        用户编码  定义值

  100 继续

      返回结束

DLOAD Variables

本节解释DLOAD子程序中使用的变量定义。变量分为两种类型:待定义的变量和作为参考信息传入的变量。.

在继续之前,您可能想了解何时需要使用 Abaqus 的 DLOAD 和 VDLOAD 子程序。我们已经在教程的引言中完整地回答了这个问题:“什么时候需要使用子程序?

 待定义的变量

  • F

分布载荷的大小,是时间、位移等的函数。.

1.2.2. 传递的信息变量

1. KSTEP

KSTEP 参数表示仿真过程中当前的分析步骤编号。它是一个整数值,指示仿真过程中正在处理的分析步骤。.

2. KINC

KINC 参数提供增量数。它是一个整数值,表示仿真期间的增量计数。.

3. 时间(1)

TIME (1) 参数显示当前步长时间或当前负载比例系数的值。它是一个实数。.

4. 时间(2)

从分析开始至今的总时间的当前值。.

让我们进一步了解步长、增量和步进时间:

步骤指的是您为解决问题而定义的分析程序。它可以包含一个或多个步骤。例如,考虑图 1 所示的成型过程,该过程包含三个不同的步骤。.

水槽制造示例

图1: 成型过程的三个步骤

想象一下,这是成型过程的时间线,其中包含三个步骤,如图 2 所示。.

dload

图2: 时间线和步骤示意图

每个步骤都可以分解成更小的部分,这些部分称为增量。在图 3 中,第一步被分为 6 个增量。每个步骤中的增量数量可以是可变的,可以由我们手动指定,也可以自动指定。.

dload

图 3: 步长增量

如图 4 所示,每两个增量之间的距离就是增量大小。.

dload

图 4: 增量大小

5. 诺埃尔

NOEL 参数代表单元编号。具体来说,NOEL 是一个整数,用于唯一标识模型中的一个单元。它可用于对有限元模型中的特定单元施加载荷或其他边界条件。.

6. NPT

NPT 参数提供单元内部或单元表面上的载荷积分点编号,具体取决于载荷类型。.

7. 层

LAYER 参数用于指定层数(用于分层固体中的体力)。.

8. KSPT

KSPT 参数是一个整数,表示当前图层内的截面点编号。.

9. 坐标

COORDS 参数指的是一个数组,该数组表示载荷积分点的坐标。如果在计算过程中考虑了几何非线性,则该数组反映当前坐标;否则,它包含该点的原始坐标。对于允许非轴对称变形的轴对称单元,COORDS(3) 指定积分点的角度位置(以度为单位)。.

10. JLTYP

确定调用 DLOAD 函数的载荷类型。载荷类型可分为体积力、面载荷或单元面载荷。当多个不均匀分布的载荷同时作用于同一单元时,此信息非常有用。载荷类型定义概述如下表所示:

 

你可以学习最重要的内容 DLOAD 和 VDLOAD 子程序的变量 在本视频教程的介绍部分。只需点击下方套餐即可领取。.

Abaqus DLOAD 和 VDLOAD 子程序

本培训包旨在帮助 Abaqus 用户编写复杂的 DLoad 和 VDLoad 子程序。通过这些研讨会,您可以熟悉 DLoad 和 VLoad 子程序编写的基本方法及其应用。作为一名工程师,您可以通过学习本培训包来完成包含复杂载荷的基本项目。.

dload

11. 姓氏

SNAME 参数是用于定义基于表面的载荷(JLTYP=0)的表面名称。对于体力或基于单元的表面载荷,表面名称留空。.

VDLOAD Variables

本节解释了 VDLOAD 子程序中使用的变量的定义。变量分为两类:待定义的变量和作为参考信息传入的变量。.

待定义的变量

  • 值(nBlock)

分布载荷的大小。单位为 FL。-2 对于表面载荷和 FL-3 针对体力。.

传递的信息变量

1. nBlock

nBlock 参数指定在此 VDLOAD 调用中要处理的点数。.

2. 恩迪姆

ndim 参数提供坐标方向的数量:二维模型为 2,三维模型为 3。.

3. 步长

stepTime 参数表示自步骤开始以来经过的时间。它与 DLOAD 子程序中的 TIME (1) 参数类似。.

4. 总时间

totalTime 参数表示总时间的值,就像 DLOAD 子例程中的 TIME (2) 一样。.

5. 振幅

此负载的当前振幅值(如果未指定振幅,则设置为 1)。如果需要振幅值,则必须在用户子程序中将负载乘以其当前值。.

6. curCoords(nBlock,ndim)

curCoords(nBlock, ndim) 参数提供要执行载荷计算的每个点的当前坐标。.

参数详情:

  • curCoords(nBlock, ndim):
    • nBlock:要处理的点数。.
    • ndim:坐标方向的数量(2D 问题为 2,3D 问题为 3)。.

7. 速度(nBlock,ndim)

速度(nBlock,ndim)参数表示子程序中正在处理的单元面所关联的节点的速度。该参数提供节点在全局坐标系中的速度。.

参数结构:

  • 速度(nBlock,ndim):
    • nBlock:要处理的点数。.
    • ndim:坐标方向的数量(2D 问题为 2,3D 问题为 3)。.

8. dirCos(nBlock、ndim、ndim)

dirCos 参数是一个方向余弦矩阵。它描述了每个受载荷作用的单元面(表面)的局部坐标系相对于全局坐标系的方向。以下是每个分量的含义:

参数结构:

  • dirCos(nBlock,ndim,ndim):
    • nBlock:要处理的点数。.
    • ndim:坐标方向的数量,对于二维问题通常为 2,对于三维问题通常为 3。.

dirCos 数组对于指定分布载荷(例如压力或牵引力)如何与局部表面法线或切线方向对齐至关重要。这种方向性是必要的,因为 Abaqus 沿局部方向施加载荷,而 dirCos 矩阵有助于将这些局部方向映射到全局坐标系。.

9. Jltyp

用于指定分布载荷类型的键。载荷类型可分为体积力、面载荷或单元面载荷。下表概述了载荷类型的定义:

dload

10. 姓氏

基于表面的载荷定义(JLTYP=0)的表面名称。对于体力或基于单元的载荷,表面名称为空。.

DLOAD & VDLOAD Differences

  • 求解器类型 这是DLOAD和VDLOAD子程序最重要的区别。DLOAD子程序位于Abaqus/Standard求解器中,而VDLOAD子程序位于Abaqus/Explicit求解器中。.
  • 变量 DLOAD 和 VDLOAD 子程序有所不同,我们已经讨论过了。.

你不想知道如何才能做到吗? 如何将 DLOAD 转换为 VDLOAD,反之亦然?

DLOAD & VDLOAD-Specific Requirements

使用 DLOAD 和 VDLOAD 子程序需要满足一些系统和软件方面的先决条件:

  • Abaqus 版本兼容性: 请确认您的子程序与您的 Abaqus 版本一致。.
  • Fortran编译器: 受支持的编译器对于编写和链接子程序至关重要。.

要有效地在 Abaqus 中使用 DLOAD 和 VDLOAD 子程序,通常需要具备 Fortran 的基础到中级知识。具体来说,您应该熟悉以下内容:

  • 理解 Fortran 语法意味着知道如何编写和组织 Fortran 代码。.
  • 编写和修改子程序。.
  • 处理输入/输出意味着知道如何从文件中读取数据和写入数据,或者如何与 Abaqus 的输入和输出进行通信。.

不过,您无需成为 Fortran 专家即可在 Abaqus 中使用子程序,但您应该能够阅读和理解现有示例,根据需要进行修改,并调试基本问题。如果您是 Fortran 新手,请先学习一些基础知识,例如循环、数组、条件语句和函数调用,这些都是 Abaqus 子程序中常用的语法。您可以从以下文章开始学习:

Abaqus Fortran “编写子程序的”必备知识”

Implementing the Abaqus DLOAD & VDLOAD Subroutines (Step by Step Guide)

使用 Abaqus 的 DLOAD 和 VDLOAD 子程序需要多个步骤。在 Abaqus 中使用 DLOAD 和 VDLOAD 子程序是一个系统化的过程,从设置输入文件到运行和调试仿真。以下是详细指南:

第一步: 设置输入文件

首先,您需要设置 Abaqus 仿真。首先,定义几何体并指定材料和属性。之后,创建网格并应用边界条件。接下来,在载荷阶段,您应该根据图 5 所示的用户自定义方式确定载荷分布。.DLOAD 和 VDLOAD 子程序的负载分配

图 5: DLOAD 和 VDLOAD 子程序的负载分配

步骤二: 编写子程序

该过程的核心是 Fortran 子程序,载荷定义在该子程序中实现。在 DLOAD 和 VDLOAD 子程序中,您可以根据 Abaqus 提供的输入参数,编写恒定载荷、时变载荷或空间变化载荷。只需复制用户子程序界面并在其中输入所需的力公式即可。.

例子: 如果沿 x 方向施加正弦分布载荷,且该载荷作用于截面为 10 × 10 cm、长度为 100 cm 的梁上,例如以下方程:

dload

它将被写入如下所示的 DLOAD 子程序中。.

笔记:

子程序 DLOAD(F,KSTEP,KINC,时间,NOEL,NPT,层,KSPT,1 坐标,JLTYP,SNAME)
C
包括 ''ABA_PARAM.INC''
C
方面 时间(2),坐标(3)
特点*80 SNAME

!SIN 分布负载: 
F=((3.14159*COORDS(1))/1000)

返回
结尾

步骤 3: 编译和链接

子程序编写完成后,必须将其编译并链接到 Abaqus(如图 6 所示)。此步骤确保 Abaqus 能够在仿真过程中调用该子程序。请使用受支持的 Fortran 编译器(例如 Intel Fortran 或 GNU Fortran)将子程序编译成目标文件。.

如何在 ABAQUS 中插入子程序文件

图 6: 如何在 ABAQUS 中调用子程序文件

第四步: 运行和调试

编译和链接完成后,运行仿真并监控潜在问题。使用 Abaqus 运行仿真,确保作业引用了用户子程序。检查 Abaqus 日志文件中的错误或警告。通过验证载荷分布和收敛性等结果,确保子程序按预期运行。如果出现问题,请修改和改进子程序逻辑。调试可能涉及检查输入参数、改进载荷计算或调整子程序结构。在应用于复杂仿真之前,先使用较小的模型进行测试以验证功能。.

例子: 对于在步骤 2 中解释的承受正弦分布载荷的梁,运行仿真后得到以下结果:

模拟结果

图 7:模拟结果

我知道,这只是个非常简单的例子,对吧?依我看,它甚至算不上一个例子;那么,举个更复杂的例子怎么样,比如“采用先进功能流体压力载荷模拟液压成形

Abaqus DLOAD 和 VDLOAD 子程序

本培训包旨在帮助 Abaqus 用户编写复杂的 DLoad 和 VDLoad 子程序。通过这些研讨会,您可以熟悉 DLoad 和 VLoad 子程序编写的基本方法及其应用。作为一名工程师,您可以通过学习本培训包来完成包含复杂载荷的基本项目。.

Applications of the DLOAD & VDLOAD Subroutines

DLOAD 子程序广泛应用于各个工程领域。.

结构工程应用

  • 模拟桥梁上的分布荷载与固定梁相同(图 8)
  • 模拟高层建筑上的风压。.
  • 模拟具有时变特性的地震荷载。.

夹紧梁上的分布载荷

图 8: 夹紧梁上的分布载荷

航空航天与汽车工程

  • 分析流体流动模拟中飞机机翼上的压力载荷(图 9)。.
  • 模拟轮胎在不平整路面上的相互作用。.

飞机机翼上的压力载荷

图 9: 飞机机翼上的压力载荷[参考]

能源与环境利用

  • 对海上结构物进行波浪载荷建模(图 10)。.
  • 模拟受温度影响的地热系统中的压力变化。.

模拟海上风力涡轮机的波浪载荷

图 10: 模拟离岸波浪载荷 风力涡轮机参考]

结论

本文重点介绍了Abaqus中的DLOAD和VDLOAD子程序,它们允许用户定义超出Abaqus标准选项的复杂自定义载荷条件。这些子程序能够灵活地施加空间和时间变化的载荷,这对于精确模拟真实工程场景至关重要。.

文章首先解释了DLOAD和VDLOAD子程序接口,重点介绍了所需的不同参数,例如DLOAD所需的F、KSTEP、KINC、TIME、NOEL、NPT等参数,以及VDLOAD所需的value(nBlock)、stepTime、totalTime、velocity和dirCos等参数。文章强调了正确解释这些变量对于精确定义载荷大小和分布的重要性。.

接下来,文章描述了DLOAD和VDLOAD之间的区别,特别是它们在Abaqus/Standard和Abaqus/Explicit求解器中的各自应用,并概述了系统要求,例如与Abaqus版本和Fortran编译器的兼容性。随后,文章提供了实现这些子程序的详细步骤指南,从设置输入文件、用Fortran编写子程序、编译并将其链接到Abaqus,到最后运行和调试仿真。.

本文列举了几个实际例子,包括正弦分布载荷的应用以及对结构、航空航天和能源应用等各种工程场景的模拟,证明了其广泛的实用性。.

如果您想学习如何从零开始编写自己的 Abaqus 子程序,请查看我们的 入门完整指南 Abaqus 子程序 编程.

顺便说一下,你可以在[此处插入链接]找到更多关于子程序的信息。 Abaqus 文档.

这 CAE 助手 我们致力于满足您所有的 CAE 需求,您的反馈对我们实现这一目标至关重要。如果您有任何疑问或遇到任何问题,请随时通过我们的社交媒体账号(包括 WhatsApp)与我们联系。.

Related 文章

Author

马特·维德

马特·维德是一位成就卓著的机械工程师,拥有超过15年的辉煌职业生涯。凭借在该领域的专业知识,马特已成为工程教育领域的领军人物,并担任一家领先的培训网站公司的核心成员。他对有限元软件充满热情,毕生致力于精通其复杂功能,并帮助他人掌握同样的技能。通过精心设计的课程,他将自己丰富的知识和实践经验传授给有志成为工程师的学员,帮助他们掌握在职业生涯中取得成功所需的技能。.

Your 评论

发表回复

本培训包旨在帮助 Abaqus 用户编写复杂的 DLoad 和 VDLoad 子程序。通过这些研讨会,您可以熟悉 DLoad 和 VLoad 子程序编写的基本方法及其应用。作为一名工程师,您可以通过学习本培训包来完成包含复杂载荷的基本项目。.