marecare02
Mechanical
- Mar 19, 2010
- 6
Hi! I am modeling phase transformation with Abaqud during steel quenching. I have question about USDFLD. In my USDFLD I have manage to apply several fields to my model. I want to apply heating and cooling rate as USDFLD.
When I call GETVRM I calculate temperature difference as dT=FIELD-STATEV and store dT as field for each step, but i don't know if the DTIME is time increment in this step or should I use DTIME as STATEV, so previous step.
Part of my code where I calculate the cooling rate is:
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
C
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
C
TEMP=ARRAY(1)
FIELD(1)=ARRAY(1) !temp as field variable
C
CALL GETVRM('SDV',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
C
DTEMP=FIELD(1)-STATEV(1) !dT
FIELD(2)=DTIME !dt
C
FIELD(3)=DTEMP/FIELD(2)
C
STATEV(1)=FIELD(1)
STATEV(2)=FIELD(2)
STATEV(3)=FIELD(3)
RETURN
END
Thanks for comment.
When I call GETVRM I calculate temperature difference as dT=FIELD-STATEV and store dT as field for each step, but i don't know if the DTIME is time increment in this step or should I use DTIME as STATEV, so previous step.
Part of my code where I calculate the cooling rate is:
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*)
C
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
C
TEMP=ARRAY(1)
FIELD(1)=ARRAY(1) !temp as field variable
C
CALL GETVRM('SDV',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
C
DTEMP=FIELD(1)-STATEV(1) !dT
FIELD(2)=DTIME !dt
C
FIELD(3)=DTEMP/FIELD(2)
C
STATEV(1)=FIELD(1)
STATEV(2)=FIELD(2)
STATEV(3)=FIELD(3)
RETURN
END
Thanks for comment.