Abaqus子程序:基础知识概述1

1 简介

用户子程序被提供来增加一些 Abaqus的功能,为分析提供强有力的和灵活的工具;编写成C、C++或者FORTRAN代码,并且在执行分析时必须包含在模型中,不能相互之间调用;可以在某些情况下调用Abaqus中也提供的工具程序。

2 模型中包含子程序

可以通过指定一个C、C++或者FORTRAN 源码或者包含子程序的预编译目标文件,在一个模型中包括一个或者多个用户子程序。有两种使用方法:

(1)在命令行中敲入下面的输入:

    abaqus job =工作名称 user =源文件

(2) Abaqus/CAE用法:

    Job 模块—— job editor——General——User subroutine fi

3 信息管理与交互

在Abaqus/Standard 中,有时候需要建立运行时间环境并管理与外部数据文件之间的交互作用,或者与用户子程序连接中使用的并行进程之间的交互作用。例如,可以用在分析过程中的外部计算得到的历史相关量,每个增量一次;或者可能为了后处理,需要将用户子程序中的COMMON 块变量所具有的在多个单元上积累得到的输出量,在一个收敛的增量末尾处写入到外部文件中。这样的操作可以使用用户子程序UEXTERNALDB来执行。此用户接口可以潜在地用来与其他程序交换数据,允许 Abaqus/Stand-ard 和其他程序之间的交换信息。

4 子程序编写流程

(1)需要 include的头文件

对于Fortran编写的子程序,每一个以FORTRAN编写的用户子程序必须包括一个下面的声明,作为参数列表后的第一个声明:

        Abaqus/Standard中 :

        include'aba_param.inc'

        Abaqus/Explicit:

        include'vaba_param.inc'

如果变量在主要用户子程序和后续子程序之间交换,则应当在所有子程序中指定上面的包括声明来保持精度。

对于C和C++编写的子程序,每一个C 和 C++用户子程序必须包括声明:

        #include < aba_for_c.h >

此文件包含FORTRAN-C接口互用的宏。

文件aba_param. inc、vaba_param.inc和 aba_for_c.h由 Abaqus安装程序在系统上安装,并且包含重要的安装参数。这些声明告诉Abaqus执行程序将用户子程序编译并且链接到Abaqus 余下的部分,来自动地包括aba_param. inc或者vaba_param. inc 文件。因为Abaqus将知道它们在哪里,所以不需要用户找到此文件并将它复制到任何特定的目录。

(2)命名约定

如果用户子程序调用其他子程序(非用户子程序)或使用 COMMON 块传递信息,则此类子程序或 COMMON 块应以字母 K 开头,因为该字母在 Abaqus 中绝不会用于任何子程序或 COMMON 块的名称开头。

用 C 或 C++ 编写的用户子程序将从 Fortran 中调用;因此,它们必须符合 Fortran 调用约定:C 或 C++ 子程序的名称必须包含在 FOR_NAME 宏中,并且参数必须通过引用传递和接收。;例如,

extern “C“ void   FOR_NAME(film,FILM) (double & arg1, ...) { ˙˙˙ }

(3)要定义或者更新的变量

用户子程序必须执行它们的既有的功能,而不覆盖Abaqus 的其他部分。用户应当仅仅重新定义如“定义得到的变量”节中确定的那些变量。重新定义“为信息传递进的变量”将具有不可预测的影响。

(4)编译和链接问题

如果在编译或链接子程序期间遇到问题,请确保 Abaqus 环境文件(该文件的默认位置是 Abaqus 安装的 site 子目录)包含系统自定义参数中指定的正确编译和链接命令。这些命令应由 Abaqus 站点管理员在安装过程中设置。参数的数量和类型必须与文档中指定的相对应。参数类型或数量的不匹配可能会导致平台相关的链接或运行时错误。

(5)内存分配注意事项

我们的用户子程序将与 Abaqus 共享内存资源。当需要使用大型数组或其他大型数据结构时,应该动态分配它们的内存,以便从堆而不是堆栈中分配内存。未能动态分配大型数组可能会导致堆栈溢出错误并退出 Abaqus 分析。有关使用本机 Fortran 可分配数组进行动态分配的示例,未来我研究明白了再讲,实际上大多数情况是不用考虑的。

(6)测试与调试

开发用户子程序时,在尝试将它们用于生产分析工作之前,最好在较小的示例中测试它们,其中用户子程序是模型中唯一复杂的方面。如果需要,可以使用 Fortran 单元 7(这里单元是文件的unit,fortran中每个文件对应一个唯一的unit号)将调试输出写入Abaqus/Standard 信息 (.msg) 文件,或者使用 Fortran 单元 6 将调试输出写入 Abaqus/Standard 数据 (.dat) 文件或 Abaqus/Explicit 日志 (.log) 文件;这些单元不应由你的子程序打开,因为它们已由 Abaqus 打开。Fortran 单元 15 到 18 或大于 100 的单元可用于读取或写入其他用户指定的信息。使用其他 Fortran 单元可能会干扰 Abaqus 文件操作;你必须打开这些 Fortran 单元;由于使用了临时目录,因此 OPEN 语句中必须使用文件的完整路径名。

​(7)终止分析

当从用户子程序中终止分析时,应使用实用例程 XIT (Abaqus/Standard) 或 XPLB_EXIT (Abaqus/Explicit) 而不是 stop 。这将确保与分析相关的所有文件都正确关闭(终止分析)。

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于学习 Abaqus 子程序,你可以按照以下步骤进行: 1. 熟悉 Abaqus 宏命令语言Abaqus Scripting Interface):子程序是通过宏命令编写的,因此了解宏命令语言对于学习子程序至关重要。你可以查阅 Abaqus 提供的宏命令语言文档,并阅读相关教程和示例代码。 2. 了解 Abaqus 子程序的工作原理:子程序是用于扩展 Abaqus 功能的用户自定义代码。它们可以用于自定义材料模型、边界条件、加载等。了解子程序的工作原理将帮助你理解如何编写和使用它们。 3. 学习子程序的编写和调试:编写子程序需要具备一定的编程知识和经验。你可以选择使用 Fortran 或 C/C++ 作为编程语言,并使用适当的开发环境(如 Visual Studio)来编写和调试你的代码。Abaqus 提供了一些示例子程序供参考。 4. 运行和验证子程序:在编写完成子程序后,你可以将其编译为动态链接库,并将其与 Abaqus 软件集成。通过定义材料参数、加载条件等,你可以在 Abaqus 中使用和验证你的子程序。 5. 深入学习和应用:一旦你掌握了基本的子程序编写技巧,你可以进一步学习和应用高级的子程序技术,如用户自定义本构模型、接触算法等。 需要注意的是,学习 Abaqus 子程序需要具备一定的数学、力学和编程基础。如果你刚开始学习 Abaqus,建议先掌握软件的基本功能和使用方法,然后再逐步学习和应用子程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬生亦东生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值