Hi,
I am studying the sample of VUSDFLD of ABAQUS user subroutine reference manual.
I tried to output variables like props and stateNew while debugging using "ABAQUS job=sample user=vusdfld.for interactive" in ABAQUS command.
But the output is weird. For example, "props" which indicates modulus in the sample, constantly equals zero.
Thanks!
DavidZ
Output:
Code:................. nprops= 173011416 stateNew= 3.9973736E-02 props= 0.0000000E+00 nprops= 173112296 stateNew= 3.9980490E-02 props= 0.0000000E+00 nprops= 173011416 stateNew= 3.9987233E-02 props= 0.0000000E+00 ...............
altered sample subroutine:
Code:subroutine vusdfld( c Read only - * nblock, nstatev, nfieldv, nprops, ndir, nshr, * jElem, kIntPt, kLayer, kSecPt, * stepTime, totalTime, dt, cmname, * coordMp, direct, T, charLength, props, * stateOld, c Write only - * stateNew, field ) c include 'vaba_param.inc' c dimension jElem(nblock), coordMp(nblock,*), * direct(nblock,3,3), T(nblock,3,3), * charLength(nblock), props(nprops), * stateOld(nblock,nstatev), * stateNew(nblock,nstatev), * field(nblock,nfieldv) character*80 cmname c c Local arrays from vgetvrm are dimensioned to c maximum block size (maxblk) c parameter( nrData=6 ) character*3 cData(maxblk*nrData) dimension rData(maxblk*nrData), jData(maxblk*nrData) c READ(*,*), rData c jStatus = 1 call vgetvrm( 'LE', rData, jData, cData, jStatus ) c if( jStatus .ne. 0 ) then call xplb_abqerr(-2,'Utility routine VGETVRM '// * 'failed to get variable.',0,zero,' ') call xplb_exit end if c call setField( nblock, nstatev, nfieldv, nrData, * rData, stateOld, stateNew, field) c return end subroutine setField( nblock, nstatev, nfieldv, nrData, * strain, stateOld, stateNew, field ) c include 'vaba_param.inc' c dimension stateOld(nblock,nstatev), * stateNew(nblock,nstatev), * field(nblock,nfieldv), strain(nblock,nrData) c Read(*,*), stateOld c do k = 1, nblock c c Absolute value of current strain: eps = abs( strain(k,1) ) c c Maximum value of strain up to this point in time: epsmax = stateOld(k,1) c c Use the maximum strain as a field variable field(k,1) = max( eps, epsmax ) c c Store the maximum strain as a solution dependent state stateNew(k,1) = field(k,1) print *,'nprops=', nprops print *,'stateNew=', stateNew(k,1) print *,'props=', props end do c return end
INP
Code:*HEADING Damaged elasticity model with user subroutine vusdfld *ELEMENT, TYPE=T2D2, ELSET=ONE 1, 1, 2 *NODE, NSET=NALL 1, 0., 0. 2, 10., 0. *SOLID SECTION, ELSET=ONE, MATERIAL=ELASTIC 1. *MATERIAL, NAME=ELASTIC *ELASTIC, DEPENDENCIES=1 ** Table of modulus values decreasing as a function ** of field variable 1. 2000., 0.3, 0., 0.00 1500., 0.3, 0., 0.01 1200., 0.3, 0., 0.02 1000., 0.3, 0., 0.04 *DENSITY 1.0e-6 *USER DEFINED FIELD *DEPVAR 1 1,EPSMAX,"Maximum strain value" *BOUNDARY 1, 1, 2 2, 2 *AMPLITUDE, NAME=LOAD1 0.0, 0.0, 1.0, 1.0 *AMPLITUDE, NAME=LOAD2 0.0, 0.0, 2.0, 1.0 *AMPLITUDE, NAME=UNLOAD 0.0, 1.0, 1.0, 0.0 *STEP, NLGEOM=NO *DYNAMIC, EXPLICIT , 1.0 *CLOAD, AMPLITUDE=LOAD1 2, 1, 20. *OUTPUT, FIELD, VARIABLE=PRESELECT *OUTPUT, HISTORY, VARIABLE=PRESELECT *ELEMENT OUTPUT, ELSET=ONE S, E, SDV *NODE OUTPUT, NSET=NALL RF, CF, U *END STEP *STEP, NLGEOM=NO *DYNAMIC, EXPLICIT , 1.0 *CLOAD, AMPLITUDE=UNLOAD 2, 1, 20. *END STEP *STEP, NLGEOM=NO *DYNAMIC, EXPLICIT , 2.0 *CLOAD, AMPLITUDE=LOAD2 2, 1, 40. *END STEP



Reply With Quote

Bookmarks