I'm new to abaqus subroutines and Fortran in general and a bit confused right now. I'm trying to simulate the anelastic heat dissipation during cyclic loading. Because of that I need some way to define a heat flux which is dependent on strain, stress and possibly some damge Parameter. There are different user subroutines like HETVAL or DFLUX which seem to be appropriate for this problem, but in the Documentation it states that none of these can use stresses or strains as input variables.
SUBROUTINE HETVAL(CMNAME,TEMP,TIME,DTIME,STATEV,FLUX,
1 PREDEF,DPRED)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION TEMP(2),STATEV(*),PREDEF(*),TIME(2),FLUX(2),
1 DPRED(*)
user coding to define FLUX and update STATEV
RETURN
END
SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,
1 JLTYP,TEMP,PRESS,SNAME)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION FLUX(2), TIME(2), COORDS(3),
CHARACTER*80 SNAME
user coding to define FLUX(1) and FLUX(2)
RETURN
END
As you see neither Hetvall nor DFLUX support Stresses 'S' or Strains 'LE' (logarithmic strain) as input variables.
I already googled extensively but could't find anyone withe the same problem. So i just wanted to ask if someone else managed to teach the HETVAL or DFLUX Subroutine to read solution variables like stresses or strains? Is that even possible at all? My Problem actually shouldn't be that hard the biggest problem is to tell abaqus what to do.
Thank you!:)
It looks like you can access 'S' or 'LE' through state variables which are part of the HETVAL subroutine. You can access and modify the state variables in the USDFLD subroutine, which is called before HETVAL. In your USDFLD subroutine you call the GETVRM utility routine to get 'S' or 'LE' and can then set the corresponding state variable to that value.