leejack 发表于 2016-4-5 10:21

[ABAQUS应用] 一个inp文件中调用多个mat的方法

  在ABAUQS帮助文档UMAT或VUMAT中提到可以同时调用不同材料模型:

  IF (CMNAME(1:4) .EQ. 'MAT1') THEN

  CALL UMAT_MAT1(argument_list) .or. CALL VUMAT_MAT1(argument_list)

  ELSE IF(CMNAME(1:4) .EQ. 'MAT2') THEN

  CALL UMAT_MAT2(argument_list) .or. CALL VUMAT_MAT2(argument_list)

  END IF
  这里以VUMAT为例,
  subroutine vumat(
  C Read only -
  1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

  2 stepTime, totalTime, dt, cmname, coordMp, charLength,

  3 props, density, strainInc, relSpinInc,

  4 tempOld, stretchOld, defgradOld, fieldOld,

  3 stressOld, stateOld, enerInternOld, enerInelasOld,

  6 tempNew, stretchNew, defgradNew, fieldNew,

  C Write only -

  5 stressNew, stateNew, enerInternNew, enerInelasNew )

  C

  include 'vaba_param.inc'

  dimension props(nprops), density(nblock),

  1 coordMp(nblock,*),

  2 charLength(*), strainInc(nblock,ndir+nshr),

  3 relSpinInc(*), tempOld(*),

  4 stretchOld(*), defgradOld(*),

  5 fieldOld(*), stressOld(nblock,ndir+nshr),

  6 stateOld(nblock,nstatev), enerInternOld(nblock),

  7 enerInelasOld(nblock), tempNew(*),

  8 stretchNew(*), defgradNew(*), fieldNew(*),

  9 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev),

  1 enerInternNew(nblock), enerInelasNew(nblock),

  2 ustran(2),ustress(2),udstran(2),uddsdde(2,2)

  C

  character*80 cmname

  if (cmname(1:4) .eq. 'MAT1') then

  call VUMAT_mat1(

  C Read only -

  1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

  2 stepTime, totalTime, dt, cmname, coordMp, charLength,

  3 props, density, strainInc, relSpinInc,

  4 tempOld, stretchOld, defgradOld, fieldOld,

  3 stressOld, stateOld, enerInternOld, enerInelasOld,

  6 tempNew, stretchNew, defgradNew, fieldNew,

  C Write only -

  5 stressNew, stateNew, enerInternNew, enerInelasNew )

  else if (cmname(1:4) .eq. 'MAT2') then

  call VUMAT_mat2(

  C Read only -

  1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

  2 stepTime, totalTime, dt, cmname, coordMp, charLength,

  3 props, density, strainInc, relSpinInc,

  4 tempOld, stretchOld, defgradOld, fieldOld,

  3 stressOld, stateOld, enerInternOld, enerInelasOld,

  6 tempNew, stretchNew, defgradNew, fieldNew,

  C Write only -

  5 stressNew, stateNew, enerInternNew, enerInelasNew )

  end if

  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  RETURN

  END
  其他就是将MAT1和MAT2复制在这后面就可以了。
  注意: “if (cmname(1:4) .eq. 'MAT1') then”中MAT1必须是大写的,如果是小写,将在子程序运行中出现:

  ERROR:BAD MATERIAL DEFINITION。


转自:http://blog.sina.com.cn/s/blog_642b4b710100ibdd.html

页: [1]
查看完整版本: [ABAQUS应用] 一个inp文件中调用多个mat的方法