Hallo zusammen,
ich versuche zur Zeit Vumat zu programmieren, aber das Stoffgesetze war schon als UMAT pragrammiert,ist es möglich, diesen UMAT als Subroutine bei Vumat aufzurufen? ich versuche wie folgend Programm:
subroutine vumat (
C Read only -
* nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
* stepTime, totalTime, dt, cmname, coordMp, charLength,
* props, density, strainInc, relSpinInc,
* tempOld, stretchOld, defgradOld, fieldOld,
* stressOld, stateOld, enerInternOld, enerInelasOld,
* tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
* stressNew, stateNew, enerInternNew, enerInelasNew )
C
include 'vaba_param.inc'
C
dimension coordMp(nblock,*), charLength(nblock), props(nprops),
1 density(nblock), strainInc(nblock,ndir+nshr),
2 relSpinInc(nblock,nshr), tempOld(nblock),
3 stretchOld(nblock,ndir+nshr),
4 defgradOld(nblock,ndir+nshr+nshr),
5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
6 stateOld(nblock,nstatev), enerInternOld(nblock),
7 enerInelasOld(nblock), tempNew(nblock),
8 stretchNew(nblock,ndir+nshr),
9 defgradNew(nblock,ndir+nshr+nshr),
1 fieldNew(nblock,nfieldv),
2 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev),
3 enerInternNew(nblock), enerInelasNew(nblock)
c
c
character*80 cmname
parameter ( zero = 0.d0, one = 1.d0, two = 2.d0,
* third = 1.d0 / 3.d0, half = 0.5d0, op5 = 1.5d0 )
c
c*******************************************************************************
the end of the interface of vumat
c*******************************************************************************
c*******************************************************************************
varialbe pass in information
*******************************************************************************
c
dimension stressold(ndir+nshr),statenew(nstatev),
1 ddsdde(ndir+nshr,ndir+nshr),
2 stran(ndir+nshr),dstran(ndir+nshr),time(2),predef(1),
3 dpred(1),coords(3),drot(3,3),
4 dfgrd0(3,3),dfgrd1(3,3)
c
c-----common-blocks-------------------------------------------------
c
c
************************************************************************
state variable update
************************************************************************
c
statenew=stateold
c
***********************************************************************
call umat
*********************************************************************
do i=1,nblock
call umat(stressold(i,1:ndir+nshr),statenew(i,1:nstatev),ddsdde,
1 sse,spd,scd, rpl,ddsddt,drplde,drpldt,
2 stran,dstran,time,dtime,temp,dtemp,predef,dpred,cmname,
3 ndi,nshr,ntens,nstatv,props,nprops,coords,drot,pnewdt,
4 celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)
c
***********************************************************************
stress update
***********************************************************************
c
stressnew(i,1:ndir+nshr)=stressold(i,1:ndir+nshr)+
& matmul(ddsdde,strainInc(i,1:ndir+nshr))
c
enddo
c
return
end
c
c
ich bitte jemond um das Programm korrigieren.
viel Gruß
------------------
abaqus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP