OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
kirkaldykinetics.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine kirkaldykinetics (nel0, time, tempel, tempmin, ae1, ae3, bs, ms, fcfer, fcper, fcbai, fgrain, frac1, frac2, frac3, frac4, frac5, x2, x3, x4, x5, qr2, qr3, qr4, kper, kbain, alpha, xeq2, xeq4, xgama, totfrac, timestep, nicool, index, theaccfact)

Function/Subroutine Documentation

◆ kirkaldykinetics()

subroutine kirkaldykinetics ( integer nel0,
time,
tempel,
tempmin,
ae1,
ae3,
bs,
ms,
fcfer,
fcper,
fcbai,
fgrain,
frac1,
frac2,
frac3,
frac4,
frac5,
x2,
x3,
x4,
x5,
qr2,
qr3,
qr4,
kper,
kbain,
alpha,
xeq2,
xeq4,
xgama,
totfrac,
timestep,
integer nicool,
integer, dimension(nicool) index,
intent(in) theaccfact )

Definition at line 30 of file kirkaldykinetics.F.

34
35#include "implicit_f.inc"
36C-----------------------------------------------
37C I N P U T A r g u m e n t s
38C-----------------------------------------------
39 INTEGER NEL0,NICOOL,INDEX(NICOOL)
40 my_real ,intent(in) :: theaccfact
42 . tempel(nel0),tempmin(nel0),timestep
44 . time,alpha,tref,ae1,ae3,bs,ms,gsize,nu,fcfer,fcper,fcbai,
45 . fgrain,qr2,qr3,qr4,kper,kbain,xeq2,xeq4,yx
46C-----------------------------------------------
48 . frac1(nel0),frac2(nel0),frac3(nel0),frac4(nel0),frac5(nel0)
50 . x2(nel0),x3(nel0),x4(nel0),x5(nel0),totfrac(nel0),xgama(nel0)
52 . ftemp,ux,vx,udot,vdot,f,const,fdot,x2old(nel0),
53 . x3old(nel0),x4old(nel0),gx,gdot,dti
54 INTEGER I,K,J
55
56 ! SUM OF FRAC1+FRAC2+FRAC3+FRAC4+FRAC5=1--------
57 dti= one/max(timestep*theaccfact,em10)
58 DO j=1,nicool ! NEL0
59
60 i=index(j)
61 ! CHECK TEMPERATURE FOR CORRESPONDING PHASE CHANGE
62 IF(totfrac(i)<one.AND.tempel(i)<tempmin(i))THEN
63 IF (tempel(i)<ae3)THEN
64 IF(tempel(i)>ae1)THEN
65 IF(x2(i)<0.999)THEN
66 ! FERRITE FORMATION X2
67 !X2OLD(I)= FRAC2(I)/XEQ2
68 x2old(i)=x2(i)
69 IF(x2(i)==zero)x2(i)=em10
70 ftemp=exp(-qr2/tempel(i))*abs(tempel(i)-ae3)**3
71 const=ftemp*fgrain*fcfer
72 DO k=1,3
73 yx= (one-x2(i))/max(em10,x2(i))
74 ux=x2(i)**(two_third*(one-x2(i)))
75 vx=(one-x2(i))**(two_third*x2(i))
76 f =(x2(i)-x2old(i))*dti-const*ux*vx
77 fdot=dti-const*two_third*ux*vx*(yx-one/yx+log(yx))
78 x2(i)=max(em20,x2(i)-f/fdot)
79 ENDDO
80 frac2(i)=x2(i)*xeq2
81 frac1(i)=one-frac2(i)-frac3(i)-frac4(i)-frac5(i)
82 ENDIF
83c---------------------------------
84 ELSEIF(tempel(i)>bs)THEN
85 IF(x3(i)<0.999)THEN
86 ! PEARLITE X3
87 x3old(i)= x3(i) !FRAC3(I)/(ONE-XEQ2) !!
88 IF(x3(i)==zero)x3(i)=em10
89 ftemp=6.17*exp(-qr3/tempel(i))*abs(tempel(i)-ae1)**3
90 const=ftemp*fgrain*fcper !!! adjusted
91 DO k=1,3
92 yx= (one-x3(i))/max(em10,x3(i))
93 ux=x3(i)**(two_third*(one-x3(i)))
94 vx=(one-x3(i))**(two_third*x3(i))
95 f =(x3(i)-x3old(i))*dti-const*ux*vx
96 fdot=dti-const*two_third*ux*vx*(yx-one/yx+log(yx))
97 x3(i)=max(em20,x3(i)-f/fdot)
98 ENDDO
99 frac3(i)=x3(i)*(one-xeq2)
100 frac1(i)=one-frac2(i)-frac3(i)-frac4(i)-frac5(i)
101 ENDIF
102c---------------------------------
103 ELSEIF(tempel(i)>ms)THEN
104 IF(x4(i)<0.999)THEN
105 ! BAINITE FORMATION
106 x4old(i) = x4(i) !FRAC4(I) = X4(I)
107 IF(x4(i) == zero) x4(i) = x3(i) !FRAC3(I)/(ONE-XEQ2)
108 ! INITIALISE AU TAUX DE PERLITE
109 ftemp=exp(-qr4/tempel(i)) *(tempel(i)-bs)**2
110 const=ftemp*fgrain*fcbai
111 DO k=1,4
112 yx= (one-x4(i))/max(em10,x4(i))
113 ux=x4(i)**(two_third*(one-x4(i)))
114 vx=(one-x4(i))**(two_third*x4(i))
115 gx=exp(kbain*x4(i)*x4(i))
116 IF (gx<zero)gx=one
117 f =(x4(i)-x4old(i))*dti-const*ux*vx/gx
118 udot=two_third*ux*((one-x4(i))/max(em10,x4(i))-
119 . log(max(em10,x4(i))))
120 vdot=two_third*vx*(log(one-x4(i))-x4(i)/(one-x4(i)))
121 gdot=two*kbain*x4(i)*gx
122 fdot=dti-const*((udot*vx+vdot*ux)*gx-ux*vx*gdot)/gx/gx
123 x4(i)=max(em20,x4(i)-f/fdot)
124 ENDDO
125 frac4(i)=x4(i)
126 frac1(i)=one-frac2(i)-frac3(i)-frac4(i)-frac5(i)
127 ENDIF
128
129 ELSE
130 ! MARTENSITE FORMATION X5
131 IF (frac5(i)==zero)xgama(i)= frac1(i)
132 frac5(i)=xgama(i)*(one-exp(-alpha*(ms-tempel(i))))
133 frac1(i)=one-frac2(i)-frac3(i)-frac4(i)-frac5(i)
134 ENDIF
135 ENDIF
136 ENDIF
137 ENDDO
138
139 RETURN
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
#define max(a, b)
Definition macros.h:21