深蓝梦境 发表于 2016-9-18 10:22

ABAQUS二次开发之FORTRAN子程序二次开发-FORTRAN基本语法

  主要介绍一下在编写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.


转自:http://mp.weixin.qq.com/s?__biz=MjM5OTU1Mjc5Mw==&mid=2650731809&idx=2&sn=f5eac57f08de6d65b29177b49825b8a0&scene=1&srcid=091892S4LC9GYSLm4f1SMDyZ#rd

页: [1]
查看完整版本: ABAQUS二次开发之FORTRAN子程序二次开发-FORTRAN基本语法