I am trying to write a subroutine using VUSDFLD. Before I do, I try to test how can I output results as SDV using VUSDFLD subroutine with a single-element model. However, my logarithmic strain (LE) field output is different from SDV LE from VUSDFLD using the vgetvrm. I am sharing the code below to ask what am I doing wrong or am I missing something. I am using 3D stress and reduced integration elements.

subroutine vusdfld(

c Read only variables -

1 nblock, nstatev, nfieldv, nprops, ndir, nshr,

2 jElem, kIntPt, kLayer, kSecPt,

3 stepTime, totalTime, dt, cmname,

4 coordMp, direct, T, charLength, props,

5 stateOld,

c Write only variables -

6 stateNew, field )

c

include 'vaba_param.inc'

c

dimension jElem(nblock), coordMp(nblock,*),

1 direct(nblock,3,3), T(nblock,3,3),

2 charLength(nblock), props(nprops),

3 stateOld(nblock,nstatev),

4 stateNew(nblock,nstatev),

5 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)

call vgetvrm( 'LE', rData, jData, cData, jStatus )

c

do k = 1, nblock

St11 = rData(k)

St22 = rData(nblock+k)

St33 = rData(2*nblock+k)

St12 = rData(3*nblock+k)

St23 = rData(4*nblock+k)

St13 = rData(5*nblock+k)

stateNew(k,1) = St11

stateNew(k,2) = St22

stateNew(k,3) = St33

stateNew(k,4) = St12

stateNew(k,5) = St23

stateNew(k,6) = St13

end do

return

end

]]>c Read only variables -

1 nblock, nstatev, nfieldv, nprops, ndir, nshr,

2 jElem, kIntPt, kLayer, kSecPt,

3 stepTime, totalTime, dt, cmname,

4 coordMp, direct, T, charLength, props,

5 stateOld,

c Write only variables -

6 stateNew, field )

c

include 'vaba_param.inc'

c

dimension jElem(nblock), coordMp(nblock,*),

1 direct(nblock,3,3), T(nblock,3,3),

2 charLength(nblock), props(nprops),

3 stateOld(nblock,nstatev),

4 stateNew(nblock,nstatev),

5 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)

call vgetvrm( 'LE', rData, jData, cData, jStatus )

c

do k = 1, nblock

St11 = rData(k)

St22 = rData(nblock+k)

St33 = rData(2*nblock+k)

St12 = rData(3*nblock+k)

St23 = rData(4*nblock+k)

St13 = rData(5*nblock+k)

stateNew(k,1) = St11

stateNew(k,2) = St22

stateNew(k,3) = St33

stateNew(k,4) = St12

stateNew(k,5) = St23

stateNew(k,6) = St13

end do

return

end