Abaqus Post Processing
Abaqus Post Processing
(OP)
Hello! Any help would be much appreciated.
I am modelling a weld model, and I have done a sequentially coupled thermal-mechanical analysis. The heat flux was specified using a subroutine and the mechanical analysis used the prescribed temperature field.
I am now looking at a new stage in my analysis:
Using the temperature-time data from the first thermal analysis odb, I would like to use post processing (I think I'll have to use C++) to identify grain size as a function of temperature, and then proceed to identifying yield stress as a function of grain size (I have the relationships). The issue is, I would like to do this for the whole model and eventually be able to display the variation in yield stress throughout the cross-section of the model in the visualizer.
Currently I have just chosen points of interest, and used excel to calculate the grain size and the subsequent yield stress at that point.
Any guidance on the approach I'll have to take and example scripts if I have to use C++ etc would be much appreciated! Kind of got lost reading through the abaqus manual.
I am modelling a weld model, and I have done a sequentially coupled thermal-mechanical analysis. The heat flux was specified using a subroutine and the mechanical analysis used the prescribed temperature field.
I am now looking at a new stage in my analysis:
Using the temperature-time data from the first thermal analysis odb, I would like to use post processing (I think I'll have to use C++) to identify grain size as a function of temperature, and then proceed to identifying yield stress as a function of grain size (I have the relationships). The issue is, I would like to do this for the whole model and eventually be able to display the variation in yield stress throughout the cross-section of the model in the visualizer.
Currently I have just chosen points of interest, and used excel to calculate the grain size and the subsequent yield stress at that point.
Any guidance on the approach I'll have to take and example scripts if I have to use C++ etc would be much appreciated! Kind of got lost reading through the abaqus manual.





RE: Abaqus Post Processing
In the Scriting Users Manual are examples how to read data from the .odb and how to add new data to the .odb.
RE: Abaqus Post Processing
The issue is that I need this throughout the whole analysis, not just at the end of the final step. Is it also possible to state an initial value in Abaqus without using a subroutine?
Does anyone know how I may do this and give an example subroutine?
Thanks in advance!
RE: Abaqus Post Processing
*********************************************************
Are you new to this forum? If so, please read these FAQs:
http://www.eng-tips.com/faqs.cfm?fid=376
http://www.eng-tips.com/faqs.cfm?fid=1083
RE: Abaqus Post Processing
After much dedication, I have the following subroutine attached. I have prescribed the initial grain size and tried varying this for temperature in each increment.
I receive the error: system error code 1073741819
Any advice? I think there must be an error with my subroutine but it could be the input file.
SUBROUTINE UFIELD(FIELD,KFIELD,NSECPT,KSTEP,KINC,TIME,NODE,
1 COORDS,TEMP,DTEMP,NFIELD)
INCLUDE 'ABA_PARAM.INC'
DIMENSION FIELD(NSECPT,NFIELD), TIME(2), COORDS(3),
1 TEMP(NSECPT), DTEMP(NSECPT)
if(KINC==1) then
FIELD(1,1)=30
endif
RETURN
END
C----------------------------------------------------
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,
3 LACCFLA)
INCLUDE 'ABA_PARAM.INC'
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
real*8 TEMP,Q,n,K,R
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),
1 COORD(*)
C Defining values
Q= 170000.0
n=1.84
K=0.0301
R=8.3
C Calculate grain size
if(KINC==1) then
STATEV(1)=FIELD(1)
endif
CALL GETVRM('TEMP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
1 MATLAYO,LACCFLA)
TEMP = ARRAY(1)
write(*,*) 'KINC=',KINC
C write(*,*) 'ARRAY=',ARRAY
C write(*,*) 'TEMP=',TEMP
IF(TEMP.GE.200.0) THEN
IF(TEMP.LE.400.0) THEN
STATEV(1)=STATEV(1)+(((K*DTIME)*exp(-(Q/(R*TEMP))))**(1/n))
ENDIF
ENDIF
FIELD(1)=STATEV(1)
RETURN
END
RE: Abaqus Post Processing