文档详情

浅谈ABAQUS用户子程序

鑫**
实名认证
店铺
DOCX
35.59KB
约12页
文档ID:256745959
浅谈ABAQUS用户子程序_第1页
1/12

浅谈ABAQUS用户子程序 李青 清华大学工程力学系摘要 本文首先概要介绍了ABAQUS的用户子程序和应用程序,然后从参数,功能两方面具体论述了DLOAD, UEXTERNALDB, URDFIL三个用户子程序和GETENVVAR,POSFIL,DBFILE三个应用程序,并具体介绍了ABAQUS的结果文件〔.FIL〕存储格式关键字 ABAQUS,用户子程序,应用程序,结果文件一、前言:ABAQUS为用户供应了强大而又敏捷的用户子程序接口〔USERSUBROUTINE〕和应用程序接口(UTILITY ROUTINE)ABAQUS 6.2.5一共有42个用户子程序接口,13个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进展数据交换等等这些用户子程序接口运用户解决一些问题时有很大的敏捷性,同时大大的扩大了ABAQUS的功能例如:假如荷载条件是时间的函数,这在ABAQUS/CAE 和INPUT 文件中是难以实现的,但在用户子程序DLOAD中就很简单实现二.在ABAQUS中运用用户子程序ABAQUS的用户子程序是依据ABAQUS供应的相应接口,遵照FORTRAN语法用户自己编写的代码。

在一个算例中,用户可以用到多个用户子程序,但必需把它们放在一个以.FOR为扩展名的文件中运行带有用户子程序的算例时有两种方法,一是在CAE中运行,在EDIT JOB菜单的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在ABABQUS COMMAND用运行,语法如下:Home序,但可以调用用户自己编写的FORTRAN子程序和ABAQUS应用程序当用户编写FORTRAN子程序时,建议子程序名以K开头,以免和ABAQUS内部程序冲突2.当用户在用户子程序中利用OPEN翻开外部文件时,要留意以下两点:一是设备号的选择是有限制的,只能取15-18和大于101的设备号,其余的都已被ABAQUS占用二是用户需供应外部文件的肯定路径而不是相对路径 3.ABAQUS 应用程序必需由用户子程序调用当用到某个用户子程序时,用户所关怀的主要有两方面:一是ABAQUS供应的用户子程序的接口参数有些参数是ABAQUS传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是须要用户自己定义的,例如F二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用的时间是不同的。

有些是在每个STEP的起先,有的是STEP结尾,有的是在每个INCREMENT的起先等等当ABAQUS调用用户子程序是,都会把当前的STEP和INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就会有更深的了解下面就选出几个常用的用户子程序和应用程序进展具体说明: 一.SUBROUTINEDLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, JLTYP,SNAME) 参数:1. F为用户定义的是每个积分点所作用的荷载的大小;2. KSTEP,KINC为ABAQUS传到用户子程序当前的STEP和INCREMENT值; 3. TIME(1),TIME(2)为当前STEP TIME和INCREMENT TIME的值; 4. NOEL,NPT为积分点所在单元的编号和积分点的编号; 5. COORDS为当前积分点的坐标;6. 除F外,全部参数的值都是ABAQUS传到用户子程序中的 功能:1. 荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。

Home2. 用户可以从其他程序的结果文件中进展相关操作来定义积分点F的大小 例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP改变而改变的SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME) CINCLUDE 'ABA_PARAM.INC' CDIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAMEPARAMETER (PLOAD=101.E4) CIF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小 P=PLOADELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小P=COORDS(1)*PLOAD !施加在积分点的荷载P是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小 P=COORDS(1)**2*PLOADELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小 P=COORDS(1)**3*PLOADELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小 P=COORDS(1)**4*PLOAD END IF RETURN END二. UBROUTINEUEXTERNALDB(LOP,LRESTART,TIME,DTIME,KSTEP,KINC) 参数:用户可以利用LOP开关来限制自己的代码程序何时被ABAQUS调用。

LOP=0〔3〕表示在计算的起先〔完毕〕ABAQUS调用此用户子程序;LOP=1 (2) 表示在每个INCREMENT的起先〔完毕〕ABAQUS调用此用户子程序;LOP了=4 表示在每个RESTART的起先ABAQUS调用此用户子程序这为用户子程序供应了很 大的敏捷性 功能:1. 可以用来和其它用户子程序及其它软件进展数据通讯 2. 可以用来在适当的时间翻开,关闭外部文件3. 用户可以把自己编写的ABAQUS扩大功能的程序代码通过此用户子程序嵌Home入到ABAQUS中例2.新建一个与JOB名一样但扩展名(.ALE)不同的文件,此用户子程序用到了GETENVVAR应用程序来获得ABAQUS的环境变量,用DMKNAME子程序来合成所需的文件名SUBROUTINE UEXTERNALDB(LOP,LRSTART,TIME,DTIME,KSTEP,KINC) INCLUDE 'ABA_PARAM.INC'CHARACTER XINDIR*255,XFNAME*80 CHARACTER DMKNAME*255,FNAMEX*80 CLXFNAME=0 LXINDIR=0 XFNAME =' ' XINDIR =' 'CALL GETENVVAR('FNAME',XFNAME,LXFNAME) !读取input文件名CALL GETENVVAR ('OUTDIR',XINDIR,LXINDIR) !读取input文件所在的路径 IF(LOP.EQ.0) THENFNAMEX=DMKNAME(XFNAME(1:LXFNAME),XINDIR(1:LXINDIR), '.ALE') !生成所要新建文件的文件名OPEN(UNIT=17,FILE=FNAMEX,STATUS='UNKNOWN',FORM='FORMATTED') !翻开文件WRITE(17,*)'Opening new user external file...' WRITE(17,*)'Writing dummy data to this file...' END IF RETURN END cC COMPOSE A FILENAME DIRECTORY/JOBNAME.EXTENCHARACTER*(*) FUNCTION DMKNAME(FNAME,DNAME,EXTEN) CCHARACTER*(*) FNAME,DNAME,EXTEN C FNAME I JOBNAME C DNAME I DIRECTORY C EXTEN I EXTENSIONC DMKNAME O DIRECTORY/JOBNAME.EXTEN LTOT = LEN(FNAME) LF = 0DO K1 = LTOT,2,-1 HomeIF (LF.EQ.0.AND.FNAME(K1:K1).NE.' ') LF = K1 END DOLTOT = LEN(DNAME) LD = 0DO K1 = LTOT,2,-1IF (LD.EQ.0.AND.DNAME(K1:K1).NE.' ') LD = K1 END DOLTOT = LEN(EXTEN) LE = 0DO K1 = LTOT,2,-1IF (LE.EQ.0.AND.EXTEN(K1:K1).NE.' ') LE = K1 END DOIF ((LF + LD + LE) .LE. LEN(DMKNAME)) THEN DMKNAME = DNAME(1:LD)//FNAME(1:LF) LTOT = LD + LF IF ( LE.GT.0) THENDMKNAME = DMKNAME(1:LTOT)//EXTEN(1:LE) END IF END IF CRETURN END三.SUBROUTINE URDFIL (LSTOP,LOVRWRT,KSTEP,KINC,DTIME,TIME) 参数:1. LSTOP是确定ABAQUS分析是否接着的开关。

假如LSTOP=1,分析中止;否那么,分析接着2. LOVRWRT是确定能否把上个INCREMENT的结果文件覆盖的开关LOVRWRT=1,覆盖,这样可大大削减结果文件的大小;否那么,不覆盖 3. LSTEP和LOVRWRT参数是留给用户自己定义的,KSTEP,KINC,DTIME,TIME是ABAQUS传给用户子程序的参数 功能:1. 读结果文件〔.FIL〕中的数据2. 利用LSTOP开关,用户可中止ABAQUS计算URDFIL要用到以下两个ABAQUS应用程序:POSFIL和DBFILE CALL POSFIL (NSTEP,NINC,ARRAY,JRCD)Home参数:1. NSTEP和NINC的值都是由调用它的URDFIL用户子程序接口中的参数KSTEP和KINC传递下来2. ARRAY是用来存放RECORD 2000的值3. JRCD为返回值假如在结果文件中找到相应的STEP和INCREMENT,返回值 为0;否那么为1 功能:假如用户想要对某个STEP中的某个INCREMENT的结果数据进展操作,POSFIL可定位用户想要进展操作的STEP和INCREMENT数据在结果文件中的位置。

CALL DBFILE (LOP,ARRAY,JRCD) 参数:1.LOP是用户自己定义的参数LOP设为0表示接着读下一条记录;LOP设为2表示文件已读到结尾后,又从头起先读起2.ARRAY是用来存放从结果文件中读到的那条记录的数组要用户留意的是ARRAY数组的大小要能存放一条记录3. JRCD是返回值,假如读到文件结尾,返回值为非0的整数 功能:读取结果文件中的一条记录假如想要娴熟运用SUBROUTINE URDFIL,那么用户必需对结果文件〔.FIL〕的格式有所了解要让ABAQUS输出结果文件,用户必需在INPUT文件或KEYWORD中参加*EL FILE或着*EL NODE有些数据是ABAQUS自动写道结果文件中的,如ABAQUS的版本号,节点编号和节点坐标;有些是用户用*EL FILE或着*EL NO。

下载提示
相似文档
正为您匹配相似的精品文档