aqus/CAE6.13-3二三十二三二六四3322004322005 0 320 64060320 640703208032009320 320 64010320 6401132012320*Element, type=C3D8R 1, 5, 6, 8, 7, 1, 2, 4, 3 2, 9, 10, 12, 11, 5, 6, 8, 7 *Nset, nset=_PickedSet2, internal, generate 1, 12, 1 *Elset, elset=_PickedSet2, internal 1, 2 ** Section: Section-1 *Solid Section, elset=_PickedSet2, material=Material-1 , *End Part ** ** ** ASSEMBLY ** *Assembly, name=Assembly ** *Instance, name=Part-1-1, part=Part-1 *End Instance ** *Nset, nset=_PickedSet19, internal, instance=Part-1-1, generate 1, 12, 1 *Elset, elset=_PickedSet19, internal, instance=Part-1-1 1, 2 *Nset, nset=_PickedSet20, internal, instance=Part-1-1, generate 1, 12, 1 *Elset, elset=_PickedSet20, internal, instance=Part-1-1 1, 2 *Nset, nset=_PickedSet21, internal, instance=Part-1-1 1, 2, 3, 4, 9, 10, 11, 12 *Elset, elset=_PickedSet21, internal, instance=Part-1-1 1, 2 *Nset, nset=_PickedSet23, internal, instance=Part-1-1, generate 1, 4, 1 *Elset, elset=_PickedSet23, internal, instance=Part-1-1 1, *Nset, nset=_PickedSet24, internal, instance=Part-1-1, generate 9, 12, 1 *Elset, elset=_PickedSet24, internal, instance=Part-1-1 2, *End Assembly *Amplitude, name=Amp-1 0., 0., 1., 1.** Matials/Rationation*Boundary_PickedSet20,2,2BC-1类型:移位/旋转*BC-4类型:移位/旋转*BEO=NEW_PickedSet19,3,3**NC-2类型:移位/旋转*BEO=NEW_PickedSet231,1,320名:BC-5类型:置换/旋转*BEDSET24,1,1****OUTPUT请求**C subroutine vumat ( C Read only - 1 jblock, 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, C Write only - 7 stressNew, stateNew, enerInternNew, enerInelasNew ) c include 'vaba_param.inc' c dimension jblock(*), props(nprops),density(*), coordMp(*), 1 charLength(*), strainInc(*), 2 relSpinInc(*), tempOld(*), 3 stretchOld(*), 4 defgradOld(*), 5 fieldOld(*), stressOld(*), 6 stateOld(*), enerInternOld(*), 7 enerInelasOld(*), tempNew(*), 8 stretchNew(*), 9 defgradNew(*), 1 fieldNew(*), 2 stressNew(*), stateNew(*), 3 enerInternNew(*), enerInelasNew(*) C character*80 cmname parameter ( 1 i_umt_nblock = 1, 2 i_umt_npt = 2, 3 i_umt_layer = 3, 4 i_umt_kspt = 4, 5 i_umt_noel = 5 ) call vumatXtrArg ( jblock(i_umt_nblock), 1 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, 8 jblock(i_umt_noel), jblock(i_umt_npt), 9 jblock(i_umt_layer), jblock(i_umt_kspt)) return end c ---------------------------------------------------------------------------------- subroutine vumatXtrArg ( c read only - 1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, 2 stepTime, totalTime, timeinc, 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 read only extra arguments - 6 nElement, nMatPoint, nLayer, nSecPoint) c include 'vaba_param.inc' c c all arrays dimensioned by (*) are not used in this algorithm dimension props(nprops), density(nblock), 1 strainInc(nblock,ndir+nshr), 2 relSpinInc(nblock,nshr), defgradOld(nblock,9), 4 stressOld(nblock,ndir+nshr), 5 stateOld(nblock,nstatev), enerInternOld(nblock), 6 enerInelasOld(nblock), 7 stretchNew(nblock,ndir+nshr), defgradNew(nblock,9), 8 stressNew(nblock,ndir+nshr) dimension enerInelasNew(nblock),stateNew(nblock,nstatev), 1 enerInternNew(nblock) dimension nElement(nblock),nMatPoint(nblock),nLayer(nblock), 1 nSecPoint(nblock) character*80 cmname parameter( zero=0.d0,one=1.d0,two=2.d0,three=3.d0, 1 third=1.d0/3.d0, half=.5d0, two_thirds=2.d0/3.d0, 2 three_halfs=1.5d0 ) c make computations for every material point c ----------------------------------------------------------------------- do 1000 nblck = 1,nblock C Nelem=nElement(nblck) !here we go C C Number of different material properties: C nnn = int(props(1)) C Read material properties: nproa = mod(nelem-1,nnn)+2 E = props(nproa) nprob = nproa + nnn xnu = props(nprob) C Write material properties to a file if( steptime.eq.zero ) then open(15, 1 file='/home/kfryd/VUMAT/GHOST/Output.txt', 2 position='append') write(15,*) "nblock: ", nblock write(15,*) "Element: ", Nelem write(15,*) "E - property number: ",npro1 write(15,*) "E = ",E write(15,*) "ni - property number: ",npro2 write(15,*) "ni = ", xnu close(15) endif C C elastic constants C twomu = E/(one+xnu) sixmu = three*twomu alamda = twomu*(E-twomu)/(sixmu-two*E) C C Update stresses C trace = straininc(i,1)+straininc(i,2)+straininc(i,3) stressnew(i,1) = stressold(i,1) + alamda*trace 1 + twomu*straininc(i,1) stressnew(i,2) = stressold(i,2) + alamda*trace 1 + twomu*straininc(i,2) stressnew(i,3) = stressold(i,3) + alamda*trace 1 + twomu*straininc(i,3) stressnew(i,4) = stressold(i,4) + twomu*straininc(i,4) stressnew(i,5) = stressold(i,5) + twomu*straininc(i,5) stressnew(i,6) = stressold(i,6) + twomu*straininc(i,6) C 1000 continue C return end