Abaqus关于用户子程序(simwe)
时间:2025-07-14
时间:2025-07-14
关于Abaqus用户子程序难得的资源
序,但可以调用用户自己编写的FORTRAN子程序和ABAQUS应用程序。当用户编
写FORTRAN子程序时,建议子程序名以K开头,以免和ABAQUS内部程序冲突。
2.当用户在用户子程序中利用OPEN打开外部文件时,要注意以下两点:一
是设备号的选择是有限制的,只能取15-18和大于100的设备号,其余的都已
被ABAQUS占用。二是用户需提供外部文件的绝对路径而不是相对路径。
3.ABAQUS 应用程序必须由用户子程序调用。
当用到某个用户子程序时,用户所关心的主要有两方面:一是ABAQUS提供
的用户子程序的接口参数。有些参数是ABAQUS传到用户子程序中的,例如
SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是需要用户自己定义的,例
如F。二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用
的时间是不同的。有些是在每个STEP的开始,有的是STEP结尾,有的是在每个
INCREMENT的开始等等。当ABAQUS调用用户子程序是,都会把当前的STEP和
INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可
编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就
会有更深的了解。
下面就选出几个常用的用户子程序和应用程序进行详细解释:
一.SUBROUTINE
DLOAD(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. 荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。
文本框: Home
2. 用户可以从其他程序的结果文件中进行相关操作来定义积分点F的大小。
例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP
变化而变化的。
SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
1 JLTYP,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION TIME(2),COORDS(3)
CHARACTER*80 SNAME
PARAMETER (PLOAD=100.E4)
C
IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小
P=PLOAD
ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小
P=COORDS(1)*PLOAD !施加在积分点的荷载P是坐标的函数
ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小
P=COORDS(1)**2*
PLOAD
ELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小
P=COORDS(1)**3*PLOAD
ELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小
P=COORDS(1)**4*PLOA
关于Abaqus用户子程序难得的资源
D
END IF
RETURN
END
二. UBROUTINE UEXTERNALDB(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
C
LXFNAME=0
LXINDIR=0
XFNAME =' '
XINDIR =' '
CALL GETENVVAR('FNAME',XFNAME,LXFNAME) !读取input文件名
CALL GETENVVAR ('OUTDIR',XINDIR,LXINDIR) !读取input文件所在的路径
IF(LOP.EQ.0) THEN
FNAMEX=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
c
C COMPOSE A FILENAME DIRECTORY/JOBNAME.EXTEN
CHARACTER*(*) FUNCTION DMKNAME(FNAME,DNAME,EXTEN)
C
CHARACTER*(*) FNAME,DNAME,EXTEN
C FNAME I JOBNAME
C DNAME I DIRECTORY
C EXTEN I EXTENSION
C DMKNAME O DIRECTORY/JOBNAME.EXTEN
LTOT = LEN(FNAME)
LF = 0
DO K1 = LTOT,2,-1
文本框: Home
…… 此处隐藏:4039字,全部文档内容请下载后查看。喜欢就下载吧 ……