*Heading ** Job name: Tension Model name: SS ** Generated by: Abaqus/CAE 6.13-3 *Preprint, echo=NO, model=NO, history=NO, contact=NO ** ** PARTS ** *Part, name=Part-1 *Node 1, 320., 320., 640. 2, 320., -320., 640. 3, 320., 320., 0. 4, 320., -320., 0. 5, 0., 320., 640. 6, 0., -320., 640. 7, 0., 320., 0. 8, 0., -320., 0. 9, -320., 320., 640. 10, -320., -320., 640. 11, -320., 320., 0. 12, -320., -320., 0. *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. ** ** MATERIALS ** *Material, name=Material-1 *Density 7800., *User Material, constants=1 5., ** ** BOUNDARY CONDITIONS ** ** Name: BC-1 Type: Displacement/Rotation *Boundary _PickedSet19, 3, 3 ** Name: BC-2 Type: Displacement/Rotation *Boundary _PickedSet20, 2, 2 ** Name: BC-3 Type: Displacement/Rotation *Boundary _PickedSet21, 1, 1 ** ---------------------------------------------------------------- ** ** STEP: Step-1 ** *Step, name=Step-1, nlgeom=YES *Dynamic, Explicit , 1. *Bulk Viscosity 0.06, 1.2 ** ** BOUNDARY CONDITIONS ** ** Name: BC-1 Type: Displacement/Rotation *Boundary, op=NEW _PickedSet19, 3, 3 ** Name: BC-2 Type: Displacement/Rotation *Boundary, op=NEW _PickedSet20, 2, 2 ** Name: BC-3 Type: Displacement/Rotation *Boundary, op=NEW ** Name: BC-4 Type: Displacement/Rotation *Boundary, op=NEW, amplitude=Amp-1 _PickedSet23, 1, 1, 320. ** Name: BC-5 Type: Displacement/Rotation *Boundary, op=NEW _PickedSet24, 1, 1 ** ** OUTPUT REQUESTS ** *Restart, write, number interval=1, time marks=NO ** ** FIELD OUTPUT: F-Output-1 ** *Output, field, variable=PRESELECT ** ** HISTORY OUTPUT: H-Output-1 ** *Output, history, variable=PRESELECT *End Step C Ghost shell function for obtaining element number and varying material properties C throughout the model. 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