ABAQUS 用户子程序详解
ABAQUS 提供了强大而又灵活的用户子程序接口(USER SUBROUTINE)和应用程序接口(UTILITY ROUTINE),用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其他应用软件进行数据交换等等。这些用户子程序接口使用户解决一些问题时有很大的灵活性,同时大大的扩充了 ABAQUS 的功能。
一、ABAQUS 用户子程序概述
ABAQUS 的用户子程序是根据 ABAQUS 提供的相应接口,按照 FORTRAN 语法用户自己编写的代码。在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以 .FOR 为扩展名的文件中。运行带有用户子程序的算例时有两种方法,一是在 CAE 中运行,在 EDIT JOB 菜单的 GENERAL 子菜单的 USER SUBROUTINE FILE 对话框中选择用户子程序所在的文件即可;另外是在 ABAQUS COMMAND 用运行,语法如下:ABAQUS JOB=[JOB] USER?[.FOR]?C
二、ABAQUS 用户子程序编写注意事项
在编写用户子程序时,用户需要注意以下几点:
1. 用户子程序不能嵌套。即任何用户子程序都不能调用任何其他用户子程序,但可以调用用户自己编写的 FORTRAN 子程序和 ABAQUS 应用程序。
2. 当用户在用户子程序中利用 OPEN 打开外部文件时,要注意以下两点:一是设备号的选择是有限制的,只能取 15-18 和大于 100 的设备号,其余的都已被 ABAQUS 占用。二是用户需提供外部文件的绝对路径而不是相对路径。
三、ABAQUS 用户子程序和应用程序
ABAQUS 应用程序必须由用户子程序调用。当用到某个用户子程序时,用户所关心的主要有两方面:一是 ABAQUS 提供的用户子程序的接口参数。有些参数是 ABAQUS 传到用户子程序中的,例如 SUBROUTINE DLOAD 中的 KSTEP、KINC、COORDS;有些是需要用户自己定义的,例如 F。二是 ABAQUS 何时调用该用户子程序,对于不同的用户子程序 ABAQUS 调用的时间是不同的。
四、常用用户子程序和应用程序详解
1. SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,JLTYP,SNAME)
参数:
* F 为用户定义的是每个积分点所作用的荷载的大小;
* KSTEP,KINC 为 ABAQUS 传到用户子程序当前的 STEP 和 INCREMENT 值;
* TIME(1),TIME(2) 为当前 STEP TIME 和 INCREMENT TIME 的值;
* NOEL,NPT 为积分点所在单元的编号和积分点的编号;
* COORDS 为当前积分点的坐标;
* 除 F 外,所有参数的值都是 ABAQUS 传到用户子程序中的。
功能:
* 荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。
* 用户可以从其他程序的结果文件中进行相关操作来定义积分点 F 的大小。
2. SUBROUTINE UEXTERNALDB(I,NSTEP,Noel,NPT,KINC,KSTEP,TIME)
参数:
* I 为用户定义的数据接口的索引值;
* NSTEP 为当前的 STEP 号;
* Noel,NPT 为积分点所在单元的编号和积分点的编号;
* KINC,KSTEP 为 ABAQUS 传到用户子程序当前的 STEP 和 INCREMENT 值;
* TIME(1),TIME(2) 为当前 STEP TIME 和 INCREMENT TIME 的值。
功能:
* 用户可以通过该用户子程序来读取或写入外部文件中的数据。
3. SUBROUTINE URDFIL(I,NSTEP,Noel,NPT,KINC,KSTEP,TIME)
参数:
* I 为用户定义的数据接口的索引值;
* NSTEP 为当前的 STEP 号;
* Noel,NPT 为积分点所在单元的编号和积分点的编号;
* KINC,KSTEP 为 ABAQUS 传到用户子程序当前的 STEP 和 INCREMENT 值;
* TIME(1),TIME(2) 为当前 STEP TIME 和 INCREMENT TIME 的值。
功能:
* 用户可以通过该用户子程序来读取或写入外部文件中的数据。
五、ABAQUS 结果文件(.FIL)存储格式
ABAQUS 结果文件(.FIL)是 ABAQUS 保存计算结果的文件,它包含了计算结果的所有信息,包括节点、单元、荷载、边界条件、材料特性等等。用户可以通过读取结果文件来获取计算结果,从而进行后续的数据分析和处理。