34 SUBROUTINE i7therm(JLT ,IPARG ,PM ,IXS ,IFORM ,X ,
35 1 XI ,YI ,ZI , X1 ,Y1 ,Z1 ,
36 1 X2 ,Y2 ,Z2 ,X3 ,Y3 ,Z3 ,
37 2 X4 ,Y4 ,Z4 ,IX1 ,IX2 ,IX3 ,
38 3 IX4 ,RSTIF ,TEMPI ,IELES ,
39 4 PHI ,TINT ,AREAS ,IELECI ,FRAD ,DRAD ,
40 5 GAPV ,FNI ,IFUNCTK,XTHE ,NPC ,TF ,
41 6 CONDINT,PHI1,PHI2 ,PHI3 ,PHI4 ,FHEATS,
42 7 FHEATM,EFRICT,TEMP ,H1 ,H2 ,H3 ,
44 use element_mod ,
only : nixs
48#include "implicit_f.inc"
61 INTEGER JLT, IXS(NIXS,*),IPARG(NPARG,*),IELES(*),
62 . IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(MVSIZ),
63 . IELECI(MVSIZ),NPC(*),
65 my_real,
intent(in) :: theaccfact
67 . PM(NPROPM,*),TEMP(*),TEMPI(MVSIZ),XI(MVSIZ),YI(MVSIZ),
68 . ZI(MVSIZ),X1(MVSIZ),(MVSIZ),Z1(MVSIZ),X2(),Y2(MVSIZ),
69 . Z2(MVSIZ),X3(MVSIZ),Y3(MVSIZ),Z3(MVSIZ),X4(MVSIZ),Y4(MVSIZ),
70 . z4(mvsiz),rstif,phi(mvsiz),areas(mvsiz),gapv(mvsiz),
71 . penrad(mvsiz),fni(mvsiz),tf(*),condint(mvsiz),efrict(mvsiz),
72 . phi1(mvsiz),phi2(mvsiz),phi3(mvsiz),phi4(mvsiz),h1(mvsiz),
73 . h2(mvsiz),h3(mvsiz),h4(mvsiz),
74 . x(3,*),tint,frad,drad,dydx,xthe,fheatm,fheats
81 . SX1 , SY1 , SZ1 , SX2 , SY2 , SZ2,
83 . TSTIFT,DIST, NORM,COND,P,RSTIFF,
103 sx1=(y1(i)-y3(i))*(z2(i)-z4(i)) - (z1(i)-z3(i))*(y2(i)-y4(i))
104 sy1=(z1(i)-z3(i))*(x2(i)-x4(i)) - (x1(i)-x3(i))*(z2(i)-z4(i))
105 sz1=(x1(i)-x3(i))*(y2(i)-y4(i)) - (y1(i)-y3(i))*(x2(i)-x4(i))
107 norm = sqrt(sx1**2 + sy1**2 + sz1**2)
111 IF(ix3(i)/=ix4(i))
THEN
112 sx2 = fourth*(x1(i) + x2(i) + x3(i) + x4(i)) - xi(i)
113 sy2 = fourth*(y1(i) + y2(i) + y3(i) + y4(i)) - yi(i)
114 sz2 = fourth*(z1(i) + z2(i) + z3(i) + z4(i)) - zi(i)
116 sx2 = third*(x1(i) + x2(i) + x3(i)) - xi(i)
117 sy2 = third*(y1(i) + y2(i) + y3(i)) - yi(i)
118 sz2 = third*(z1(i) + z2(i) + z3(i)) - zi(i)
125 dist = (sx2*sx1+sy2*sy1+sz2*sz1) /
max(em15,norm)
133 IF(areas(i) == zero )
THEN
140 IF(penrad(i) <= drad.AND.penrad(i)>= gapv(i))
THEN
144 phi(i) = frad * areac * (tint*tint+ts*ts)
145 . * (tint + ts) * (tint - ts) * dt1 * theaccfact
152 cond=pm(75,mat)+pm(76,mat)*ts
153 tstifm =
max(dist,zero
159 tstift = tstifm + rstif
160 condint(i) = areac * theaccfact / tstift
161 phi(i) = areac * (tint - ts) * dt1 * theaccfact / tstift
171 IF(fheats/=zero) phi(i) = phi(i) + fheats * efrict(i)
177 tm = h1(i)*temp(ix1(i)) + h2(i)*temp(ix2(i))
178 . + h3(i)*temp(ix3(i)) + h4(i)*temp(ix4(i))
181 IF(penrad(i) <= drad.AND.penrad(i)>= gapv(i))
THEN
185 phi(i) = frad * areac * (tm*tm+ts*ts)
186 . * (tm + ts) * (tm - ts) * dt1 * theaccfact
191 phi(i) = areac * (tm - ts) * dt1 * theaccfact / rstif
192 condint(i) = areac * theaccfact / rstif
194 phi1(i) = -phi(i) *h1(i)
195 phi2(i) = -phi(i) *h2(i)
196 phi3(i) = -phi(i) *h3(i)
197 phi4(i) = -phi(i) *h4(i)
201 phi(i) = phi(i) + fheats * efrict(i)
203 phim = fheatm * efrict(i)
204 phi1(i) = phi1(i) + phim*h1(i)
206 phi3(i) = phi3(i) + phim*h3(i)
207 phi4(i) = phi4(i) + phim*h4(i)
222 sx1=(y1(i)-y3(i))*(z2(i)-z4(i)) - (z1(i)-z3(i))*(y2(i)-y4(i))
223 sy1=(z1(i)-z3(i))*(x2(i)-x4(i)) - (x1(i)-x3(i))*(z2(i)-z4(i))
224 sz1=(x1(i)-x3(i))*(y2(i)-y4(i)) - (y1(i)-y3(i))*(x2(i)-x4(i))
226 norm = sqrt(sx1**2 + sy1**2 + sz1**2)
230 IF(ix3(i)/=ix4(i))
THEN
231 sx2 = fourth*(x1(i) + x2(i) + x3(i) + x4(i)) - xi(i)
232 sy2 = fourth*(y1(i) + y2(i) + y3(i) + y4(i)) - yi(i)
233 sz2 = fourth*(z1(i) + z2(i) + z3(i) + z4(i)) - zi(i)
235 sx2 = third*(x1(i) + x2(i) + x3(i)) - xi(i)
236 sy2 = third*(y1(i) + y2(i) + y3(i)) - yi(i)
237 sz2 = third*(z1(i) + z2(i) + z3(i)) - zi(i)
244 dist = (sx2*sx1+sy2*sy1+sz2*sz1) /
max(em15,norm)
252 IF(areas(i) == zero )
THEN
259 IF(penrad(i) <= drad.AND.penrad(i)>= gapv(i))
THEN
263 phi(i) = frad * areac * (tint*tint+ts*ts)
264 . * (tint + ts) * (tint - ts) * dt1 * theaccfact
274 p = xthe * abs(fni(i)) / areac
275 rstiff = rstif /
max(em30,finter(ifunctk,p,npc,tf,dydx))
277 cond=pm(75,mat)+pm(76,mat)*ts
278 tstifm =
max(dist,zero) / cond
284 tstift = tstifm + rstiff
285 condint(i) = areac * theaccfact / tstift
287 phi(i) = areac * (tint - ts) * dt1 * theaccfact / tstift
298 tm = h1(i)*temp(ix1(i)) + h2(i)*temp(ix2(i))
299 . + h3(i)*temp(ix3(i)) + h4(i)*temp(ix4(i))
302 IF(penrad(i) <= drad.AND.penrad(i)>= gapv(i))
THEN
306 phi(i) = frad * areac * (tm*tm+ts*ts)
307 . * (tm + ts) * (tm- ts) * dt1 * theaccfact
312 p = xthe * abs(fni(i)) / areac
313 rstiff = rstif /
max(em30,finter(ifunctk,p,npc,tf,dydx))
315 phi(i) = areac * (tm - ts) * dt1 * theaccfact / rstiff
316 condint(i) = areac * theaccfact / rstiff
321 phi(i) = phi(i) + fheats * efrict(i)
323 phim = fheatm * efrict(i)
324 phi1(i) = phi1(i) + phim*h1(i)
325 phi2(i) = phi2(i) + phim*h2(i)
326 phi3(i) = phi3(i) + phim*h3(i)
327 phi4(i) = phi4(i) + phim*h4(i)
subroutine i7therm(jlt, iparg, pm, ixs, iform, x, xi, yi, zi, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, ix1, ix2, ix3, ix4, rstif, tempi, ieles, phi, tint, areas, ieleci, frad, drad, gapv, fni, ifunctk, xthe, npc, tf, condint, phi1, phi2, phi3, phi4, fheats, fheatm, efrict, temp, h1, h2, h3, h4, theaccfact)