主要介绍一下在编写Abaqus子程序中用到的基本FORTRAN语法。
首先,.for的FORTRAN77固定格式,不区分大小写,每行前6位为预留位置,正常语句从第7为开始编写。Subroutine保留字表示函数声明的开头,括号内为函数传递参数,每行第5位代码代表这一行和上一行的连续关系如下代码所示。
SUBROUTINE UMAT(STRESS, STATEV, DDSDDE, SSE,SPD, SCD, RPL,
1 DDSDDT, DRPLDE, DRPLDT, STRAN,DSTRAN, TIME, DTIME, TEMP, DTEMP,
2 PREDEF, DPRED, CMNAME, NDI, NSHR,NTENS, NSTATV, PROPS, NPROPS,
3 COORDS, DROT, PNEWDT, CELENT,DFGRD0, DFGRD1, NOEL, NPT, LAYER,
4 KSPT, KSTEP, KINC)
注释行为第一位以字幕c头的一整行。
C LOCAL ARRAYS
C ----------------------------------------------------------------
C EELAS- ELASTIC STRAINS
DIMENSION保留字用于声明分配给数组的空间。
DIMENSION STRESS(NTENS), STATEV(NSTATV),DDSDDE(NTENS, NTENS),
1 DDSDDT(NTENS), DRPLDE(NTENS),STRAN(NTENS), DSTRAN(NTENS),
2 PREDEF(1), DPRED(1), PROPS(NPROPS),COORDS(3), DROT(3, 3),
3 DFGRD0(3, 3), DFGRD1(3, 3),TIME(2)
Write和read保留字用于对文件或设备的读写。
write(*,*)'--------------------UMAT start--------------------'
write(*,*)'TIME-----',TIME(1)
write(*,*)'DTIME-----',DTIME
条件判断语句形式如下:
IF X .GT. 0 THEN
Y = -1
ELSE IF X .EQ. 0 THEN
Y = 0
ELSE
Y = 1
END IF
循环语句形式如下:
DO K1=1,NTENS
DO K2=1,NTENS
DDSDDE(K2,K1)=0.D0
DELDSE(K2,K1)=0.D0
END DO
END DO
基本运算符为:加+,减-,乘*,初/,乘方**
其他数学运算函数为:指数运算exp(), 开平方根sqrt(), 对数运算log()
关系运算符:等于.eq.,不等于.ne.,大于.gt.,大于等于.ge.,小于.lt.,小于等于.le.
发表评论