lucas_lemos
Student
- Feb 13, 2025
- 1
Hi, I am trying to write a VUSDFLD subrotine in Abaqus in which the material E changes with the absolute strain. I am using the Explicit solver as this is a dynamic problem.
The code that I have right now is as follows:
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)
REAL*8 ABS_STRAIN, E ! Variables
! 1. Get logarithmic strain from Abaqus using VGETVRM
CALL VGETVRM('LE', rData, jData, nData, k, 1)
! Reshape rData to STRAIN
DO k = 1, nblock
STRAIN_11=rdata(k)
STRAIN_22=rdata(nblock + k)
STRAIN_33=rdata(2*nblock + k)
STRAIN_12=rdata(3*nblock + k)
STRAIN_23=rdata(4*nblock + k)
STRAIN_13=rdata(5*nblock + k)
END DO
! 2. Calculate ABSStrain
ABS_STRAIN = SQRT(STRAIN_11*2 + STRAIN_222 + STRAIN_332 +STRAIN_122 + STRAIN_232 + STRAIN_13*2)
! 3. Calculate Young's Modulus
E = 2.0D0 * ABS_STRAIN
! 4. Store Young's Modulus in the first field variable
field(k, 1) = E
!5 Saves as a state dependent variable
stateNew(k,1) = field(k,1)
RETURN
END
However it doesn't work. It is my first time working with subrotines so I can't find the error (eventhought it might be obvious). Also I don't know exactly what to define in the material inside Abaqus.Can someone help me? Thanks for your time
The code that I have right now is as follows:
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)
REAL*8 ABS_STRAIN, E ! Variables
! 1. Get logarithmic strain from Abaqus using VGETVRM
CALL VGETVRM('LE', rData, jData, nData, k, 1)
! Reshape rData to STRAIN
DO k = 1, nblock
STRAIN_11=rdata(k)
STRAIN_22=rdata(nblock + k)
STRAIN_33=rdata(2*nblock + k)
STRAIN_12=rdata(3*nblock + k)
STRAIN_23=rdata(4*nblock + k)
STRAIN_13=rdata(5*nblock + k)
END DO
! 2. Calculate ABSStrain
ABS_STRAIN = SQRT(STRAIN_11*2 + STRAIN_222 + STRAIN_332 +STRAIN_122 + STRAIN_232 + STRAIN_13*2)
! 3. Calculate Young's Modulus
E = 2.0D0 * ABS_STRAIN
! 4. Store Young's Modulus in the first field variable
field(k, 1) = E
!5 Saves as a state dependent variable
stateNew(k,1) = field(k,1)
RETURN
END
However it doesn't work. It is my first time working with subrotines so I can't find the error (eventhought it might be obvious). Also I don't know exactly what to define in the material inside Abaqus.Can someone help me? Thanks for your time