声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2148|回复: 0

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

[复制链接]
发表于 2016-4-5 10:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

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

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

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

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

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

  3.   3 props, density, strainInc, relSpinInc,

  4.   4 tempOld, stretchOld, defgradOld, fieldOld,

  5.   3 stressOld, stateOld, enerInternOld, enerInelasOld,

  6.   6 tempNew, stretchNew, defgradNew, fieldNew,

  7.   C Write only -

  8.   5 stressNew, stateNew, enerInternNew, enerInelasNew )

  9.   C

  10.   include 'vaba_param.inc'

  11.   dimension props(nprops), density(nblock),

  12.   1 coordMp(nblock,*),

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

  14.   3 relSpinInc(*), tempOld(*),

  15.   4 stretchOld(*), defgradOld(*),

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

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

  18.   7 enerInelasOld(nblock), tempNew(*),

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

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

  21.   1 enerInternNew(nblock), enerInelasNew(nblock),

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

  23.   C

  24.   character*80 cmname

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

  26.   call VUMAT_mat1(

  27.   C Read only -

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

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

  30.   3 props, density, strainInc, relSpinInc,

  31.   4 tempOld, stretchOld, defgradOld, fieldOld,

  32.   3 stressOld, stateOld, enerInternOld, enerInelasOld,

  33.   6 tempNew, stretchNew, defgradNew, fieldNew,

  34.   C Write only -

  35.   5 stressNew, stateNew, enerInternNew, enerInelasNew )

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

  37.   call VUMAT_mat2(

  38.   C Read only -

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

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

  41.   3 props, density, strainInc, relSpinInc,

  42.   4 tempOld, stretchOld, defgradOld, fieldOld,

  43.   3 stressOld, stateOld, enerInternOld, enerInelasOld,

  44.   6 tempNew, stretchNew, defgradNew, fieldNew,

  45.   C Write only -

  46.   5 stressNew, stateNew, enerInternNew, enerInelasNew )

  47.   end if

  48.   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  49.   RETURN

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

  ERROR:BAD MATERIAL DEFINITION。


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

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 23:04 , Processed in 0.057862 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表