马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在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
|