2 materials in 1 VUMAT

VUMAT can be implemented to a model which has more than one user custom materials, using cmname variable to identify the materials.

Here is the method. [ Following snippets are not in the right Fortran format.]

Assuming that the subroutine file is vumat.for, it’s content can be as following codes:

      subroutine vumat(
     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,
     5 stressOld, stateOld, enerInternOld, enerInelasOld,
     6 tempNew,stretchNew,defgradNew,fieldNew,
     7 stressNew, stateNew, enerInternNew, enerInelasNew)

      include 'vaba_param.inc'
      dimension props(nprops), density(nblock),
     1 coordMp(nblock,*),
     2 charLength(*), strainInc(nblock,ndir+nshr),
     3 relSpinInc(nblock,nshr), tempOld(nblock),
     4 stretchOld(nblock,ndir+nshr), defgradOld(nblock,ndir+nshr+nshr),
     5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
     6 stateOld(nblock,nstatev), enerInternOld(nblock),
     7 enerInelasOld(nblock), tempNew(*),
     8 stretchNew(nblock,ndir+nshr), defgradNew(nblock,ndir+nshr+nshr),
     9 fieldNew(nblock,nfieldv), stressNew(nblock,ndir+nshr), 
     1 stateNew(nblock,nstatev),
     2 enerInternNew(nblock), enerInelasNew(nblock)

      character*80 cmname

      do i = 1, nblock

c
c user customized codes
c

      end do 
 
      return
      end
cccc  VUMAT ends

Replacing

c
c user customized codes
c

with

       if (cmname(1:4) .eq. 'MAT1') then 
          call vumat_MAT1(
      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,
      5 stressOld, stateOld, enerInternOld, enerInelasOld,
      6 tempNew,stretchNew,defgradNew,fieldNew,
      7 stressNew, stateNew, enerInternNew, enerInelasNew)

       elseif (cmname(1:4) .eq. 'MAT2') then   
          call vumat_MAT2(
      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,
      5 stressOld, stateOld, enerInternOld, enerInelasOld,
      6 tempNew,stretchNew,defgradNew,fieldNew,
      7 stressNew, stateNew, enerInternNew, enerInelasNew)
       endif

will make it a 2 materials VUMAT, where vumat_MAT1 and vumat_MAT2 have the same structure as the first snippet here. And they can be wrote just after the last line of the first snippet in the same file.©

本文发表于水景一页。永久链接:<http://cnzhx.net/fe/2015/02/11/2-materials-in-1-vumat/>。转载请保留此信息及相应链接。

雁过留声,人过留名

电子邮件地址不会被公开。 必填项已用*标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南