37
38
39
41
42
43
44#include "implicit_f.inc"
45#include "comlock.inc"
46
47
48
49#include "mvsiz_p.inc"
50
51
52
53#include "com04_c.inc"
54#include "units_c.inc"
55
56
57
58 INTEGER KSURF ,KSI(4,*) ,
59 . NOINT ,NDEB, NSC, IACTIV(4,*), KSC(*), ITAB(*)
60
62 . x(3,*) ,bufsf(*) ,
63 . nold(3,*) ,xtk(4,*) ,ytk(4,*) ,ztk(4,*) ,
64 . ntx(4,*) ,nty(4,*) ,ntz(4,*) ,
65 . penet(4,*),depth(4,*),
66 . xi(4,*) ,yi(4,*) ,zi(4,*) ,
67 . nxi(4,*) ,nyi(4,*) ,nzi(4,*) ,
68 . xp1(3,mvsiz), xp2(3,mvsiz), xp3(3,mvsiz), xp4(3,mvsiz),
69 . gx(3,mvsiz), ansmx, hold(3,*)
70 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
71
72
73
74 INTEGER ADRBUF, I, IL, NLS, IDG,
75 . IN1, IN2, IN3, IN4,
76 . INSIDE1,INSIDE2
78 . a, b, c, an, bn, cn, rot(9), dgr, expn,
79 . xg, yg, zg,
80 . ntn,
81 . n1, n2, n3, n, n11, n12, n13, n21, n22, n23, nr1, nr2,
82 . xkn1, ykn1, zkn1, sgnxkn, sgnykn, sgnzkn, xkn, ykn, zkn, eh,
83 . lambda1, lambda2, alp, bet,
84 . xh , yh , zh , mu, xh1, yh1, zh1, mu1, xh2, yh2, zh2, mu2,
85 . dx1, dy1, dz1, dx2, dy2, dz2, dx3, dy3, dz3,
86 . side1, side2, oldnx, oldny, oldnz, out, ps, nr,
87 . lambda, em, ep
89 . x1(mvsiz), y1(mvsiz), z1(mvsiz),
90 . x2(mvsiz), y2(mvsiz), z2(mvsiz),
91 . x3(mvsiz), y3(mvsiz), z3(mvsiz),
92 . x12(mvsiz), y12(mvsiz), z12(mvsiz),
93 . x13(mvsiz), y13(mvsiz), z13(mvsiz),
94 . x23(mvsiz), y23(mvsiz), z23(mvsiz),
95 . xm(mvsiz) , ym(mvsiz) , zm(mvsiz) ,
96 . xtk2(mvsiz), ytk2(mvsiz) , ztk2(mvsiz) ,
97 . d(mvsiz)
98
99 adrbuf=igrsurf(ksurf)%IAD_BUFR
100 a =bufsf(adrbuf+1)
101 b =bufsf(adrbuf+2)
102 c =bufsf(adrbuf+3)
103 dgr =bufsf(adrbuf+36)
104 idg =nint(dgr)
105 dgr =idg
107 expn=dgr/(dgr-1.)
108 an=a**dgr
109 bn=b**dgr
110 cn=c**dgr
114 DO i=1,9
115 rot(i)=bufsf(adrbuf+7+i-1)
116 END DO
117
118
119
120 DO 75 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
121 il =ksc(nls)
122 i =nls-ndeb
123 in1=ksi(1,il)
124 in2=ksi(2,il)
125 in3=ksi(3,il)
126 in4=ksi(4,il)
127
128 xg=x(1,in1)-bufsf(adrbuf+4)
129 yg=x(2,in1)-bufsf(adrbuf+5)
130 zg=x(3,in1)-bufsf(adrbuf+6)
131 xp1(1,i)=rot(1)*xg+rot(2)*yg+rot(3)*zg
132 xp1(2,i)=rot(4)*xg+rot(5)*yg+rot(6)*zg
133 xp1(3,i)=rot(7)*xg+rot(8)*yg+rot(9)*zg
134 xg=x(1,in2)-bufsf(adrbuf+4)
135 yg=x(2,in2)-bufsf(adrbuf+5)
136 zg=x(3,in2)-bufsf(adrbuf+6)
137 xp2(1,i)=rot(1)*xg+rot(2)*yg+rot(3)*zg
138 xp2(2,i)=rot(4)*xg+rot(5)*yg+rot(6)*zg
139 xp2(3,i)=rot(7)*xg+rot(8)*yg+rot(9)*zg
140 xg=x(1,in3)-bufsf(adrbuf+4)
141 yg=x(2,in3)-bufsf(adrbuf+5)
142 zg=x(3,in3)-bufsf(adrbuf+6)
143 xp3(1,i)=rot(1)*xg+rot(2)*yg+rot(3)*zg
144 xp3(2,i)=rot(4)*xg+rot(5)*yg+rot(6)*zg
145 xp3(3,i)=rot(7)*xg+rot(8)*yg+rot(9)*zg
146 xg=x(1,in4)-bufsf(adrbuf+4)
147 yg=x(2,in4)-bufsf(adrbuf+5)
148 zg=x(3,in4)-bufsf(adrbuf+6)
149 xp4(1,i)=rot(1)*xg+rot(2)*yg+rot(3)*zg
150 xp4(2,i)=rot(4)*xg+rot(5)*yg+rot(6)*zg
151 xp4(3,i)=rot(7)*xg+rot(8)*yg+rot(9)*zg
152 gx(1,i)=fourth*(xp1(1,i)+xp2(1,i)+xp3(1,i)+xp4(1,i))
153 gx(2,i)=fourth*(xp1(2,i)+xp2(2,i)+xp3(2,i)+xp4(2,i))
154 gx(3,i)=fourth*(xp1(3,i)+xp2(3,i)+xp3(3,i)+xp4(3,i))
155 75 CONTINUE
156
157
158
159 DO 100 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
160 il =ksc(nls)
161 i =nls-ndeb
162
163 x1(i)=gx(1,i)
164 y1(i)=gx(2,i)
165 z1(i)=gx(3,i)
166 x2(i)=xp1(1,i)
167 y2(i)=xp1(2,i)
168 z2(i)=xp1(3,i)
169 x3(i)=xp2(1,i)
170 y3(i)=xp2(2,i)
171 z3(i)=xp2(3,i)
172 x12(i)=x2(i)-x1(i)
173 y12(i)=y2(i)-y1(i)
174 z12(i)=z2(i)-z1(i)
175 x13(i)=x3(i)-x1(i)
176 y13(i)=y3(i)-y1(i)
177 z13(i)=z3(i)-z1(i)
178 n1=y12(i)*z13(i)-z12(i)*y13(i)
179 n2=z12(i)*x13(i)-x12(i)*z13(i)
180 n3=x12(i)*y13(i)-y12(i)*x13(i)
181 ntn=one/
max(em20,sqrt(n1*n1+n2*n2+n3*n3))
182 ntx(1,i)=ntn*n1
183 nty(1,i)=ntn*n2
184 ntz(1,i)=ntn*n3
185 d(i) =-ntx(1,i)*x1(i)-nty(1,i)*y1(i)-ntz(1,i)*z1(i)
186
187 x23(i)=x3(i)-x2(i)
188 y23(i)=y3(i)-y2(i)
189 z23(i)=z3(i)-z2(i)
190 100 CONTINUE
191
192
193
194 DO 125 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
195 il =ksc(nls)
196 i =nls-ndeb
197 eh =(abs(ntx(1,i)/(dgr*an))**expn)*an
198 . +(abs(nty(1,i)/(dgr*bn))**expn)*bn
199 . +(abs(ntz(1,i)/(dgr*cn))**expn)*cn
200
201
202 lambda1=(
max(em20,eh))**(-one/expn)
203 xh1=abs(lambda1*ntx(1,i)/(dgr*an))**(one/(dgr-one))
204 IF (ntx(1,i)<zero) xh1=-xh1
205 yh1=abs(lambda1*nty(1,i)/(dgr*bn))**(one/(dgr-one))
206 IF (nty(1,i)<zero) yh1=-yh1
207 zh1=abs(lambda1*ntz(1,i)/(dgr*cn))**(one/(dgr-one))
208 IF (ntz(1,i)<zero) zh1=-zh1
209 mu1 =-ntx(1,i)*xh1-nty(1,i)*yh1-ntz(1,i)*zh1-d(i)
210
211 xh2 =-xh1
212 yh2 =-yh1
213 zh2 =-zh1
214
215 mu2=-mu1-two*d(i)
216 xtk(1,i) =xh1+mu1*ntx(1,i)
217 ytk(1,i) =yh1+mu1*nty(1,i)
218 ztk(1,i) =zh1+mu1*ntz(1,i)
219 xtk2(i) =xh2+mu2*ntx(1,i)
220 ytk2(i) =yh2+mu2*nty(1,i)
221 ztk2(i) =zh2+mu2*ntz(1,i)
222 125 CONTINUE
223
224
225
226 DO 150 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
227 il =ksc(nls)
228 i =nls-ndeb
229
230 dx1=xtk(1,i)-x1(i)
231 dy1=ytk(1,i)-y1(i)
232 dz1=ztk(1,i)-z1(i)
233 dx2=xtk(1,i)-x2(i)
234 dy2=ytk(1,i)-y2(i)
235 dz2=ztk(1,i)-z2(i)
236 out = (dy1*dz2-dy2*dz1)*ntx(1,i)
237 . +(dz1*dx2-dz2*dx1)*nty(1,i)
238 . +(dx1*dy2-dy1*dx2)*ntz(1,i)
239 IF (out<0.) THEN
240
241 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
242 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
246 alp=one-bet
247 xtk(1,i)=alp*x1(i)+bet*x2(i)
248 ytk(1,i)=alp*y1(i)+bet*y2(i)
249 ztk(1,i)=alp*z1(i)+bet*z2(i)
250 ENDIF
251 dx3=xtk(1,i)-x3(i)
252 dy3=ytk(1,i)-y3(i)
253 dz3=ztk(1,i)-z3(i)
254 out = (dy2*dz3-dy3*dz2)*ntx(1,i)
255 . +(dz2*dx3-dz3*dx2)*nty(1,i)
256 . +(dx2*dy3-dy2*dx3)*ntz(1,i)
257 IF (out<zero) THEN
258
259 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
260 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
264 alp=one-bet
265 xtk(1,i)=alp*x2(i)+bet*x3(i)
266 ytk(1,i)=alp*y2(i)+bet*y3(i)
267 ztk(1,i)=alp*z2(i)+bet*z3(i)
268 ENDIF
269 out = (dy3*dz1-dy1*dz3)*ntx(1,i)
270 . +(dz3*dx1-dz1*dx3)*nty(1,i)
271 . +(dx3*dy1-dy3*dx1)*ntz(1,i)
272 IF (out<zero) THEN
273
274 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
275 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
279 alp=one-bet
280 xtk(1,i)=alp*x3(i)+bet*x1(i)
281 ytk(1,i)=alp*y3(i)+bet*y1(i)
282 ztk(1,i)=alp*z3(i)+bet*z1(i)
283 ENDIF
284
285 dx1=xtk2(i)-x1(i)
286 dy1=ytk2(i)-y1(i)
287 dz1=ztk2(i)-z1(i)
288 dx2=xtk2(i)-x2(i)
289 dy2=ytk2(i)-y2(i)
290 dz2=ztk2(i)-z2(i)
291 out = (dy1*dz2-dy2*dz1)*ntx(1,i)
292 . +(dz1*dx2-dz2*dx1)*nty(1,i)
293 . +(dx1*dy2-dy1*dx2)*ntz(1,i)
294 IF (out<zero) THEN
295
296 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
297 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
301 alp=one-bet
302 xtk2(i)=alp*x1(i)+bet*x2(i)
303 ytk2(i)=alp*y1(i)+bet*y2(i)
304 ztk2(i)=alp*z1(i)+bet*z2(i)
305 ENDIF
306 dx3=xtk2(i)-x3(i)
307 dy3=ytk2(i)-y3(i)
308 dz3=ztk2(i)-z3(i)
309 out = (dy2*dz3-dy3*dz2)*ntx(1,i)
310 . +(dz2*dx3-dz3*dx2)*nty(1,i)
311 . +(dx2*dy3-dy2*dx3)*ntz(1,i)
312 IF (out<zero) THEN
313
314 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
315 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
319 alp=1.-bet
320 xtk2(i)=alp*x2(i)+bet*x3(i)
321 ytk2(i)=alp*y2(i)+bet*y3(i)
322 ztk2(i)=alp*z2(i)+bet*z3(i)
323 ENDIF
324 out = (dy3*dz1-dy1*dz3)*ntx(1,i)
325 . +(dz3*dx1-dz1*dx3)*nty(1,i)
326 . +(dx3*dy1-dy3*dx1)*ntz(1,i)
327 IF (out<zero) THEN
328
329 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
330 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
334 alp=1.-bet
335 xtk2(i)=alp*x3(i)+bet*x1(i)
336 ytk2(i)=alp*y3(i)+bet*y1(i)
337 ztk2(i)=alp*z3(i)+bet*z1(i)
338 ENDIF
339
340 150 CONTINUE
341
342
343
344 DO 175 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
345 il =ksc(nls)
346 i =nls-ndeb
347 IF (iactiv(1,il)==-1) GOTO 175
348
349 xh =xtk(1,i)
350 yh =ytk(1,i)
351 zh =ztk(1,i)
352 xkn1 =xh**(idg-1)
353 sgnxkn=-one
354 IF (xkn1*xh>=zero) sgnxkn=one
355 ykn1 =yh**(idg-1)
356 sgnykn=-one
357 IF (ykn1*yh>=zero) sgnykn=one
358 zkn1 =zh**(idg-1)
359 sgnzkn=-one
360 IF (zkn1*zh>=zero) sgnzkn=one
361 n11 =sgnxkn*xkn1*an
362 n12 =sgnykn*ykn1*bn
363 n13 =sgnzkn*zkn1*cn
364 nr1 =n11*n11+n12*n12+n13*n13
365 nr1 =sqrt(nr1)
366 em =n11*xtk(1,i)+n12*ytk(1,i)+n13*ztk(1,i)
367 IF (em<=one) THEN
368 lambda1=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
369 . /
max(exp((dgr-one)*log(em20)/dgr),nr1)
370 inside1=1
371 ELSE
372 inside1=0
373 ENDIF
374
375 xh =xtk2(i)
376 yh =ytk2(i)
377 zh =ztk2(i)
378 xkn1 =xh**(idg-1)
379 sgnxkn=-one
380 IF (xkn1*xh>=zero) sgnxkn=one
381 ykn1 =yh**(idg-1)
382 sgnykn=-one
383 IF (ykn1*yh>=zero) sgnykn=one
384 zkn1 =zh**(idg-1)
385 sgnzkn=-one
386 IF (zkn1*zh>=zero) sgnzkn=one
387 n21 =sgnxkn*xkn1*an
388 n22 =sgnykn*ykn1*bn
389 n23 =sgnzkn*zkn1*cn
390 nr2 =n21*n21+n22*n22+n23*n23
391 nr2 =sqrt(nr2)
392 em =n21*xtk2(i)+n22*ytk2(i)+n23*ztk2(i)
393 IF (em<=one) THEN
394 lambda2=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
395 . /
max(exp((dgr-one)*log(em20)/dgr),nr2)
396 inside2=1
397 ELSE
398 inside2=0
399 ENDIF
400
401 IF (inside1==0.AND.inside2==0) THEN
402 iactiv(1,il)=0
403 ELSE
404
405 IF (iactiv(1,il)==0) THEN
406 IF (inside1/=0.AND.inside2/=0) THEN
407 IF (abs(lambda1)>=abs(lambda2)) THEN
408 xm(i)=xtk(1,i)-lambda1*n11/
max(em20,nr1)
409 ym(i)=ytk(1,i)-lambda1*n12/
max(em20,nr1)
410 zm(i)=ztk(1,i)-lambda1*n13/
max(em20,nr1)
411 ELSE
412 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
413 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
414 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
415 xtk(1,i)=xtk2(i)
416 ytk(1,i)=ytk2(i)
417 ztk(1,i)=ztk2(i)
418 ENDIF
419 ELSEIF(inside1/=0) THEN
420 xm(i)=xtk(1,i)-lambda1*n11/
max(em20,nr1)
421 ym(i)=ytk(1,i)-lambda1*n12/
max(em20,nr1)
422 zm(i)=ztk(1,i)-lambda1*n13/
max(em20,nr1)
423 ELSEIF(inside2/=0) THEN
424 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
425 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
426 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
427 xtk(1,i)=xtk2(i)
428 ytk(1,i)=ytk2(i)
429 ztk(1,i)=ztk2(i)
430 ENDIF
431
432 ELSE
433 xh=hold(1,4*(il-1)+1)
434 yh=hold(2,4*(il-1)+1)
435 zh=hold(3,4*(il-1)+1)
436 n1=nold(1,4*(il-1)+1)
437 n2=nold(2,4*(il-1)+1)
438 n3=nold(3,4*(il-1)+1)
439 lambda1=(xh-xtk(1,i))*n1
440 . +(yh-ytk(1,i))*n2
441 . +(zh-ztk(1,i))*n3
442 lambda2=(xh-xtk2(i))*n1
443 . +(yh-ytk2(i))*n2
444 . +(zh-ztk2(i))*n3
445 IF (inside1/=0.AND.inside2/=0) THEN
446 IF (abs(lambda1)>=abs(lambda2)) THEN
447 xm(i)=xtk(1,i)+lambda1*n1
448 ym(i)=ytk(1,i)+lambda1*n2
449 zm(i)=ztk(1,i)+lambda1*n3
450 ELSE
451 xm(i)=xtk2(i)+lambda2*n1
452 ym(i)=ytk2(i)+lambda2*n2
453 zm(i)=ztk2(i)+lambda2*n3
454 xtk(1,i)=xtk2(i)
455 ytk(1,i)=ytk2(i)
456 ztk(1,i)=ztk2(i)
457 ENDIF
458 ELSEIF(inside1/=0) THEN
459 xm(i)=xtk(1,i)+lambda1*n1
460 ym(i)=ytk(1,i)+lambda1*n2
461 zm(i)=ztk(1,i)+lambda1*n3
462 ELSEIF(inside2/=0) THEN
463 xm(i)=xtk2(i)+lambda2*n1
464 ym(i)=ytk2(i)+lambda2*n2
465 zm(i)=ztk2(i)+lambda2*n3
466 xtk(1,i)=xtk2(i)
467 ytk(1,i)=ytk2(i)
468 ztk(1,i)=ztk2(i)
469 ENDIF
470
471 xkn1 =xm(i)**(idg-1)
472 sgnxkn=-one
473 IF (xkn1*xm(i)>=zero) sgnxkn=one
474 ykn1 =ym(i)**(idg-1)
475 sgnykn=-one
476 IF (ykn1*ym(i)>=zero) sgnykn=one
477 zkn1 =zm(i)**(idg-1)
478 sgnzkn=-one
479 IF (zkn1*zm(i)>=zero) sgnzkn=one
480 n1 =sgnxkn*xkn1*an
481 n2 =sgnykn*ykn1*bn
482 n3 =sgnzkn*zkn1*cn
483 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
484 xm(i)=xm(i)/
max(em20,em**(one/dgr))
485 ym(i)=ym(i)/
max(em20,em**(one/dgr))
486 zm(i)=zm(i)/
max(em20,em**(one/dgr))
487 xkn1 =xm(i)**(idg-1)
488 sgnxkn=-one
489 IF (xkn1*xm(i)>=zero) sgnxkn=one
490 ykn1 =ym(i)**(idg-1)
491 sgnykn=-one
492 IF (ykn1*ym(i)>=zero) sgnykn=one
493 zkn1 =zm(i)**(idg-1)
494 sgnzkn=-one
495 IF (zkn1*zm(i)>=zero) sgnzkn=one
496 n1 =sgnxkn*xkn1*an
497 n2 =sgnykn*ykn1*bn
498 n3 =sgnzkn*zkn1*cn
499 nr =n1*n1+n2*n2+n3*n3
500 nr =one/
max(em20,sqrt(nr))
501 n1 =n1*nr
502 n2 =n2*nr
503 n3 =n3*nr
504 lambda1=(xm(i)-xtk(1,i))*n1
505 . +(ym(i)-ytk(1,i))*n2
506 . +(zm(i)-ztk(1,i))*n3
507 xm(i)=xtk(1,i)+lambda1*n1
508 ym(i)=ytk(1,i)+lambda1*n2
509 zm(i)=ztk(1,i)+lambda1*n3
510 ENDIF
511 iactiv(1,il)=iactiv(1,il)+1
512 ENDIF
513 175 CONTINUE
514
515#include "vectorize.inc"
516 DO 200 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
517 il =ksc(nls)
518 i =nls-ndeb
519
520 IF (iactiv(1,il)<=0) GOTO 200
521
522
523 xkn1 =xm(i)**(idg-1)
524 sgnxkn=-one
525 IF (xkn1*xm(i)>=zero) sgnxkn=one
526 ykn1 =ym(i)**(idg-1)
527 sgnykn=-one
528 IF (ykn1*ym(i)>=zero) sgnykn=one
529 zkn1 =zm(i)**(idg-1)
530 sgnzkn=-one
531 IF (zkn1*zm(i)>=zero) sgnzkn=one
532 n1 =sgnxkn*xkn1*an
533 n2 =sgnykn*ykn1*bn
534 n3 =sgnzkn*zkn1*cn
535 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
536
537 xm(i)=xm(i)/
max(em20,em**(one/dgr))
538 ym(i)=ym(i)/
max(em20,em**(one/dgr))
539 zm(i)=zm(i)/
max(em20,em**(one/dgr))
540
541 xkn1 =xm(i)**(idg-1)
542 sgnxkn=-one
543 IF (xkn1*xm(i)>=zero) sgnxkn=one
544 ykn1 =ym(i)**(idg-1)
545 sgnykn=-one
546 IF (ykn1*ym(i)>=zero) sgnykn=one
547 zkn1 =zm(i)**(idg-1)
548 sgnzkn=-one
549 IF (zkn1*zm(i)>=zero) sgnzkn=one
550 n1 =sgnxkn*xkn1*an
551 n2 =sgnykn*ykn1*bn
552 n3 =sgnzkn*zkn1*cn
553 nr =n1*n1+n2*n2+n3*n3
554 nr =one/
max(em20,sqrt(nr))
555 nxi(1,i)=n1*nr
556 nyi(1,i)=n2*nr
557 nzi(1,i)=n3*nr
558 xi(1,i)=xm(i)
559 yi(1,i)=ym(i)
560 zi(1,i)=zm(i)
561 depth(1,i)=xm(i)*nxi(1,i)+ym(i)*nyi(1,i)+zm(i)*nzi(1,i)
562
563 penet(1,i)=(xtk(1,i)-xm(i))*nxi(1,i)
564 . +(ytk(1,i)-ym(i))*nyi(1,i)
565 . +(ztk(1,i)-zm(i))*nzi(1,i)
566 penet(1,i)=-penet(1,i)
567 penet(1,i)=
max(zero,penet(1,i))
568 IF (depth(1,i)-penet(1,i)<em10*depth(1,i)) THEN
569 penet(1,i)=zero
570 iactiv(1,il)=-2
571 ENDIF
572 ansmx=
max(ansmx,penet(1,i))
573 200 CONTINUE
574
575
576
577 DO 210 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
578 il =ksc(nls)
579 i =nls-ndeb
580
581 IF (iactiv(1,il)==-2) THEN
582 in1=itab(ksi(1,il))
583 in2=itab(ksi(2,il))
584 in3=itab(ksi(3,il))
585 in4=itab(ksi(4,il))
586#include "lockon.inc"
587 WRITE(istdo,'(A,I8)')' WARNING INTERFACE ',noint
588 WRITE(istdo,'(A,A,A,/,2I8,A,4I8,A)')' 3NODES FACET',
589 . ' FROM 4NODES ELEMENT/SEGMENT,',
590 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
591 . in1,in2,'ISOCENTER(',in1,in2,in3,in4,')'
592 WRITE(iout ,'(A,I8)')' WARNING INTERFACE ',noint
593 WRITE(iout,'(A,A,A,/,2I8,A,4I8,A)') ' 3NODES FACET',
594 . ' FROM 4NODES ELEMENT/SEGMENT,',
595 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
596 . in1,in2,'ISOCENTER(',in1,in2,in3,in4,')'
597#include "lockoff.inc"
598 iactiv(1,il)=-1
599 ENDIF
600 210 CONTINUE
601
602
603
604 DO 225 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
605 il =ksc(nls)
606 i =nls-ndeb
607
608 x1(i)=gx(1,i)
609 y1(i)=gx(2,i)
610 z1(i)=gx(3,i)
611 x2(i)=xp2(1,i)
612 y2(i)=xp2(2,i)
613 z2(i)=xp2(3,i)
614 x3(i)=xp3(1,i)
615 y3(i)=xp3(2,i)
616 z3(i)=xp3(3,i)
617 x12(i)=x2(i)-x1(i)
618 y12(i)=y2(i)-y1(i)
619 z12(i)=z2(i)-z1(i)
620 x13(i)=x3(i)-x1(i)
621 y13(i)=y3(i)-y1(i)
622 z13(i)=z3(i)-z1(i)
623 n1=y12(i)*z13(i)-z12(i)*y13(i)
624 n2=z12(i)*x13(i)-x12(i)*z13(i)
625 n3=x12(i)*y13(i)-y12(i)*x13(i)
626 ntn=one/
max(em20,sqrt(n1*n1+n2*n2+n3*n3))
627 ntx(2,i)=ntn*n1
628 nty(2,i)=ntn*n2
629 ntz(2,i)=ntn*n3
630 d(i) =-ntx(2,i)*x1(i)-nty(2,i)*y1(i)-ntz(2,i)*z1(i)
631
632 x23(i)=x3(i)-x2(i)
633 y23(i)=y3(i)-y2(i)
634 z23(i)=z3(i)-z2(i)
635 225 CONTINUE
636
637
638
639 DO 250 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
640 il =ksc(nls)
641 i =nls-ndeb
642
643 eh =(abs(ntx(2,i)/(dgr*an))**expn)*an
644 . +(abs(nty(2,i)/(dgr*bn))**expn)*bn
645 . +(abs(ntz(2,i)/(dgr*cn))**expn)*cn
646
647
648 lambda1=(
max(em20,eh))**(-one/expn)
649 xh1 =abs(lambda1*ntx(2,i)/(dgr*an))**(one/(dgr-one))
650 IF (ntx(2,i)<zero) xh1=-xh1
651 yh1 =abs(lambda1*nty(2,i)/(dgr*bn))**(one/(dgr-one))
652 IF (nty(2,i)<zero) yh1=-yh1
653 zh1 =abs(lambda1*ntz(2,i)/(dgr*cn))**(one/(dgr-one))
654 IF (ntz(2,i)<zero) zh1=-zh1
655 mu1 =-ntx(2,i)*xh1-nty(2,i)*yh1-ntz(2,i)*zh1-d(i)
656
657 xh2 =-xh1
658 yh2 =-yh1
659 zh2 =-zh1
660
661 mu2=-mu1-two*d(i)
662 xtk(2,i) =xh1+mu1*ntx(2,i)
663 ytk(2,i) =yh1+mu1*nty(2,i)
664 ztk(2,i) =zh1+mu1*ntz(2,i)
665 xtk2(i) =xh2+mu2*ntx(2,i)
666 ytk2(i) =yh2+mu2*nty(2,i)
667 ztk2(i) =zh2+mu2*ntz(2,i)
668
669 250 CONTINUE
670
671
672
673 DO 275 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
674 il =ksc(nls)
675 i =nls-ndeb
676
677 dx1=xtk(2,i)-x1(i)
678 dy1=ytk(2,i)-y1(i)
679 dz1=ztk(2,i)-z1(i)
680 dx2=xtk(2,i)-x2(i)
681 dy2=ytk(2,i)-y2(i)
682 dz2=ztk(2,i)-z2(i)
683 out = (dy1*dz2-dy2*dz1)*ntx(2,i)
684 . +(dz1*dx2-dz2*dx1)*nty(2,i)
685 . +(dx1*dy2-dy1*dx2)*ntz(2,i)
686 IF (out<zero) THEN
687
688 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
689 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
693 alp=1.-bet
694 xtk(2,i)=alp*x1(i)+bet*x2(i)
695 ytk(2,i)=alp*y1(i)+bet*y2(i)
696 ztk(2,i)=alp*z1(i)+bet*z2(i)
697 ENDIF
698 dx3=xtk(2,i)-x3(i)
699 dy3=ytk(2,i)-y3(i)
700 dz3=ztk(2,i)-z3(i)
701 out = (dy2*dz3-dy3*dz2)*ntx(2,i)
702 . +(dz2*dx3-dz3*dx2)*nty(2,i)
703 . +(dx2*dy3-dy2*dx3)*ntz(2,i)
704 IF (out<zero) THEN
705
706 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
707 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
711 alp=one-bet
712 xtk(2,i)=alp*x2(i)+bet*x3(i)
713 ytk(2,i)=alp*y2(i)+bet*y3(i)
714 ztk(2,i)=alp*z2(i)+bet*z3(i)
715 ENDIF
716 out = (dy3*dz1-dy1*dz3)*ntx(2,i)
717 . +(dz3*dx1-dz1*dx3)*nty(2,i)
718 . +(dx3*dy1-dy3*dx1)*ntz(2,i)
719 IF (out<zero) THEN
720
721 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
722 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
726 alp=1.-bet
727 xtk(2,i)=alp*x3(i)+bet*x1(i)
728 ytk(2,i)=alp*y3(i)+bet*y1(i)
729 ztk(2,i)=alp*z3(i)+bet*z1(i)
730 ENDIF
731
732 dx1=xtk2(i)-x1(i)
733 dy1=ytk2(i)-y1(i)
734 dz1=ztk2(i)-z1(i)
735 dx2=xtk2(i)-x2(i)
736 dy2=ytk2(i)-y2(i)
737 dz2=ztk2(i)-z2(i)
738 out = (dy1*dz2-dy2*dz1)*ntx(2,i)
739 . +(dz1*dx2-dz2*dx1)*nty(2,i)
740 . +(dx1*dy2-dy1*dx2)*ntz(2,i)
741 IF (out<zero) THEN
742
743 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
744 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
748 alp=1.-bet
749 xtk2(i)=alp*x1(i)+bet*x2(i)
750 ytk2(i)=alp*y1(i)+bet*y2(i)
751 ztk2(i)=alp*z1(i)+bet*z2(i)
752 ENDIF
753 dx3=xtk2(i)-x3(i)
754 dy3=ytk2(i)-y3(i)
755 dz3=ztk2(i)-z3(i)
756 out = (dy2*dz3-dy3*dz2)*ntx(2,i)
757 . +(dz2*dx3-dz3*dx2)*nty(2,i)
758 . +(dx2*dy3-dy2*dx3)*ntz(2,i)
759 IF (out<zero) THEN
760
761 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
762 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
766 alp=one-bet
767 xtk2(i)=alp*x2(i)+bet*x3(i)
768 ytk2(i)=alp*y2(i)+bet*y3(i)
769 ztk2(i)=alp*z2(i)+bet*z3(i)
770 ENDIF
771 out = (dy3*dz1-dy1*dz3)*ntx(2,i)
772 . +(dz3*dx1-dz1*dx3)*nty(2,i)
773 . +(dx3*dy1-dy3*dx1)*ntz(2,i)
774 IF (out<zero) THEN
775
776 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
777 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
781 alp=one-bet
782 xtk2(i)=alp*x3(i)+bet*x1(i)
783 ytk2(i)=alp*y3(i)+bet*y1(i)
784 ztk2(i)=alp*z3(i)+bet*z1(i)
785 ENDIF
786
787 275 CONTINUE
788
789
790
791 DO 300 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
792 il =ksc(nls)
793 i =nls-ndeb
794 IF (iactiv(2,il)==-1) GOTO 300
795
796 xh =xtk(2,i)
797 yh =ytk(2,i)
798 zh =ztk(2,i)
799 xkn1 =xh**(idg-1)
800 sgnxkn=-one
801 IF (xkn1*xh>=zero) sgnxkn=one
802 ykn1 =yh**(idg-1)
803 sgnykn=-1.
804 IF (ykn1*yh>=0.) sgnykn=1.
805 zkn1 =zh**(idg-1)
806 sgnzkn=-one
807 IF (zkn1*zh>=zero) sgnzkn=one
808 n11 =sgnxkn*xkn1*an
809 n12 =sgnykn*ykn1*bn
810 n13 =sgnzkn*zkn1*cn
811 nr1 =n11*n11+n12*n12+n13*n13
812 nr1 =sqrt(nr1)
813 em =n11*xtk(2,i)+n12*ytk(2,i)+n13*ztk(2,i)
814 IF (em<=one) THEN
815 lambda1=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
816 . /
max(exp((dgr-one)*log(em20)/dgr),nr1)
817 inside1=1
818 ELSE
819 inside1=0
820 ENDIF
821
822 xh =xtk2(i)
823 yh =ytk2(i)
824 zh =ztk2(i)
825 xkn1 =xh**(idg-1)
826 sgnxkn=-one
827 IF (xkn1*xh>=zero) sgnxkn=one
828 ykn1 =yh**(idg-1)
829 sgnykn=-one
830 IF (ykn1*yh>=zero) sgnykn=one
831 zkn1 =zh**(idg-1)
832 sgnzkn=-one
833 IF (zkn1*zh>=zero) sgnzkn=one
834 n21 =sgnxkn*xkn1*an
835 n22 =sgnykn*ykn1*bn
836 n23 =sgnzkn*zkn1*cn
837 nr2 =n21*n21+n22*n22+n23*n23
838 nr2 =sqrt(nr2)
839 em =n21*xtk2(i)+n22*ytk2(i)+n23*ztk2(i)
840 IF (em<=one) THEN
841 lambda2=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
842 . /
max(exp((dgr-one)*log(em20)/dgr),nr2)
843 inside2=1
844 ELSE
845 inside2=0
846 ENDIF
847
848 IF (inside1==0.AND.inside2==0) THEN
849 iactiv(2,il)=0
850 ELSE
851
852 IF (iactiv(2,il)==0) THEN
853 IF (inside1/=0.AND.inside2/=0) THEN
854 IF (abs(lambda1)>=abs(lambda2)) THEN
855 xm(i)=xtk(2,i)-lambda1*n11/
max(em20,nr1)
856 ym(i)=ytk(2,i)-lambda1*n12/
max(em20,nr1)
857 zm(i)=ztk(2,i)-lambda1*n13/
max(em20,nr1)
858 ELSE
859 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
860 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
861 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
862 xtk(2,i)=xtk2(i)
863 ytk(2,i)=ytk2(i)
864 ztk(2,i)=ztk2(i)
865 ENDIF
866 ELSEIF(inside1/=0) THEN
867 xm(i)=xtk(2,i)-lambda1*n11/
max(em20,nr1)
868 ym(i)=ytk(2,i)-lambda1*n12/
max(em20,nr1)
869 zm(i)=ztk(2,i)-lambda1*n13/
max(em20,nr1)
870 ELSEIF(inside2/=0) THEN
871 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
872 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
873 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
874 xtk(2,i)=xtk2(i)
875 ytk(2,i)=ytk2(i)
876 ztk(2,i)=ztk2(i)
877 ENDIF
878
879 ELSE
880 xh=hold(1,4*(il-1)+2)
881 yh=hold(2,4*(il-1)+2)
882 zh=hold(3,4*(il-1)+2)
883 n1=nold(1,4*(il-1)+2)
884 n2=nold(2,4*(il-1)+2)
885 n3=nold(3,4*(il-1)+2)
886 lambda1=(xh-xtk(2,i))*n1
887 . +(yh-ytk(2,i))*n2
888 . +(zh-ztk(2,i))*n3
889 lambda2=(xh-xtk2(i))*n1
890 . +(yh-ytk2(i))*n2
891 . +(zh-ztk2(i))*n3
892 IF (inside1/=0.AND.inside2/=0) THEN
893 IF (abs(lambda1)>=abs(lambda2)) THEN
894 xm(i)=xtk(2,i)+lambda1*n1
895 ym(i)=ytk(2,i)+lambda1*n2
896 zm(i)=ztk(2,i)+lambda1*n3
897 ELSE
898 xm(i)=xtk2(i)+lambda2*n1
899 ym(i)=ytk2(i)+lambda2*n2
900 zm(i)=ztk2(i)+lambda2*n3
901 xtk(2,i)=xtk2(i)
902 ytk(2,i)=ytk2(i)
903 ztk(2,i)=ztk2(i)
904 ENDIF
905 ELSEIF(inside1/=0) THEN
906 xm(i)=xtk(2,i)+lambda1*n1
907 ym(i)=ytk(2,i)+lambda1*n2
908 zm(i)=ztk(2,i)+lambda1*n3
909 ELSEIF(inside2/=0) THEN
910 xm(i)=xtk2(i)+lambda2*n1
911 ym(i)=ytk2(i)+lambda2*n2
912 zm(i)=ztk2(i)+lambda2*n3
913 xtk(2,i)=xtk2(i)
914 ytk(2,i)=ytk2(i)
915 ztk(2,i)=ztk2(i)
916 ENDIF
917
918 xkn1 =xm(i)**(idg-1)
919 sgnxkn=-one
920 IF (xkn1*xm(i)>=zero) sgnxkn=one
921 sgnykn=-one
922 IF (ykn1*ym(i)>=zero) sgnykn=one
923 zkn1 =zm(i)**(idg-1)
924 sgnzkn=-one
925 IF (zkn1*zm(i)>=zero) sgnzkn=one
926 n1 =sgnxkn*xkn1*an
927 n2 =sgnykn*ykn1*bn
928 n3 =sgnzkn*zkn1*cn
929 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
930 xm(i)=xm(i)/
max(em20,em**(one/dgr))
931 ym(i)=ym(i)/
max(em20,em**(one/dgr))
932 zm(i)=zm(i)/
max(em20,em**(one/dgr))
933 xkn1 =xm(i)**(idg-1)
934 sgnxkn=-one
935 IF (xkn1*xm(i)>=zero) sgnxkn=one
936 ykn1 =ym(i)**(idg-1)
937 sgnykn=-one
938 IF (ykn1*ym(i)>=zero) sgnykn=one
939 zkn1 =zm(i)**(idg-1)
940 sgnzkn=-one
941 IF (zkn1*zm(i)>=zero) sgnzkn=one
942 n1 =sgnxkn*xkn1*an
943 n2 =sgnykn*ykn1*bn
944 n3 =sgnzkn*zkn1*cn
945 nr =n1*n1+n2*n2+n3*n3
946 nr =one/
max(em20,sqrt(nr))
947 n1 =n1*nr
948 n2 =n2*nr
949 n3 =n3*nr
950 lambda1=(xm(i)-xtk(2,i))*n1
951 . +(ym(i)-ytk(2,i))*n2
952 . +(zm(i)-ztk(2,i))*n3
953 xm(i)=xtk(2,i)+lambda1*n1
954 ym(i)=ytk(2,i)+lambda1*n2
955 zm(i)=ztk(2,i)+lambda1*n3
956 ENDIF
957 iactiv(2,il)=iactiv(2,il)+1
958 ENDIF
959 300 CONTINUE
960
961#include "vectorize.inc"
962 DO 325 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
963 il =ksc(nls)
964 i =nls-ndeb
965
966 IF (iactiv(2,il)<=0) GOTO 325
967
968
969 xkn1 =xm(i)**(idg-1)
970 sgnxkn=-one
971 IF (xkn1*xm(i)>=zero) sgnxkn=one
972 ykn1 =ym(i)**(idg-1)
973 sgnykn=-one
974 IF (ykn1*ym(i)>=zero) sgnykn=one
975 zkn1 =zm(i)**(idg-1)
976 sgnzkn=-one
977 IF (zkn1*zm(i)>=zero) sgnzkn=one
978 n1 =sgnxkn*xkn1*an
979 n2 =sgnykn*ykn1*bn
980 n3 =sgnzkn*zkn1*cn
981 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
982
983 xm(i)=xm(i)/
max(em20,em**(one/dgr))
984 ym(i)=ym(i)/
max(em20,em**(one/dgr))
985 zm(i)=zm(i)/
max(em20,em**(one/dgr))
986
987
988 xkn1 =xm(i)**(idg-1)
989 sgnxkn=-one
990 IF (xkn1*xm(i)>=zero) sgnxkn=one
991 ykn1 =ym(i)**(idg-1)
992 sgnykn=-one
993 IF (ykn1*ym(i)>=zero) sgnykn=one
994 zkn1 =zm(i)**(idg-1)
995 sgnzkn=-one
996 IF (zkn1*zm(i)>=zero) sgnzkn=one
997 n1 =sgnxkn*xkn1*an
998 n2 =sgnykn*ykn1*bn
999 n3 =sgnzkn*zkn1*cn
1000 nr =n1*n1+n2*n2+n3*n3
1001 nr =one/
max(em20,sqrt(nr))
1002 nxi(2,i)=n1*nr
1003 nyi(2,i)=n2*nr
1004 nzi(2,i)=n3*nr
1005 xi(2,i)=xm(i)
1006 yi(2,i)=ym(i)
1007 zi(2,i)=zm(i)
1008 depth(2,i)=xm(i)*nxi(2,i)+ym(i)*nyi(2,i)+zm(i)*nzi(2,i)
1009
1010 penet(2,i)=(xtk(2,i)-xm(i))*nxi(2,i)
1011 . +(ytk(2,i)-ym(i))*nyi(2,i)
1012 . +(ztk(2,i)-zm(i))*nzi(2,i)
1013 penet(2,i)=-penet(2,i)
1014 penet(2,i)=
max(zero,penet(2,i))
1015 IF (depth(2,i)-penet(2,i)<em10*depth(2,i)) THEN
1016 penet(2,i)=zero
1017 iactiv(2,il)=-2
1018 ENDIF
1019 ansmx=
max(ansmx,penet(2,i))
1020 325 CONTINUE
1021
1022
1023
1024 DO 335 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1025 il =ksc(nls)
1026 i =nls-ndeb
1027
1028 IF (iactiv(2,il)==-2) THEN
1029 in1=itab(ksi(1,il))
1030 in2=itab(ksi(2,il))
1031 in3=itab(ksi(3,il))
1032 in4=itab(ksi(4,il))
1033#include "lockon.inc"
1034 WRITE(istdo,'(A,I8)')' WARNING INTERFACE ',noint
1035 WRITE(istdo,'(A,A,A,/,2I8,A,4I8,A)')' 3NODES FACET',
1036 . ' FROM 4NODES ELEMENT/SEGMENT,',
1037 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1038 . in2,in3,'ISOCENTER(',in1,in2,in3,in4,')'
1039 WRITE(iout ,'(A,I8)')' WARNING INTERFACE ',noint
1040 WRITE(iout,'(A,A,A,/,2I8,A,4I8,A)') ' 3NODES FACET',
1041 . ' FROM 4NODES ELEMENT/SEGMENT,',
1042 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1043 . in2,in3,'ISOCENTER(',in1,in2,in3,in4,')'
1044#include "lockoff.inc"
1045 iactiv(2,il)=-1
1046 ENDIF
1047 335 CONTINUE
1048
1049
1050
1051 DO 350 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1052 il =ksc(nls)
1053 i =nls-ndeb
1054
1055 x1(i)=gx(1,i)
1056 y1(i)=gx(2,i)
1057 z1(i)=gx(3,i)
1058 x2(i)=xp3(1,i)
1059 y2(i)=xp3(2,i)
1060 z2(i)=xp3(3,i)
1061 x3(i)=xp4(1,i)
1062 y3(i)=xp4(2,i)
1063 z3(i)=xp4(3,i)
1064 x12(i)=x2(i)-x1(i)
1065 y12(i)=y2(i)-y1(i)
1066 z12(i)=z2(i)-z1(i)
1067 x13(i)=x3(i)-x1(i)
1068 y13(i)=y3(i)-y1(i)
1069 z13(i)=z3(i)-z1(i)
1070 n1=y12(i)*z13(i)-z12(i)*y13
1071 n2=z12(i)*x13(i)-x12(i)*z13(i)
1072 n3=x12(i)*y13(i)-y12(i)*x13(i)
1073 ntn=one/
max(em20,sqrt(n1*n1+n2*n2+n3*n3))
1074 ntx(3,i)=ntn*n1
1075 nty(3,i)=ntn*n2
1076 ntz(3,i)=ntn*n3
1077 d(i) =-ntx(3,i)*x1(i)-nty(3,i)*y1(i)-ntz(3,i)*z1(i)
1078
1079 x23(i)=x3(i)-x2(i)
1080 y23(i)=y3(i)-y2(i)
1081 z23(i)=z3(i)-z2(i)
1082 350 CONTINUE
1083
1084
1085
1086 DO 375 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1087 il =ksc(nls)
1088 i =nls-ndeb
1089
1090 eh =(abs(ntx(3,i)/(dgr*an))**expn)*an
1091 . +(abs(nty(3,i)/(dgr*bn))**expn)*bn
1092 . +(abs(ntz(3,i)/(dgr*cn))**expn)*cn
1093
1094
1095 lambda1=(
max(em20,eh))**(-one/expn)
1096 xh1 =abs(lambda1*ntx(3,i)/(dgr*an))**(one/(dgr-one))
1097 IF (ntx(3,i)<zero) xh1=-xh1
1098 yh1 =abs(lambda1*nty(3,i)/(dgr*bn))**(one/(dgr-one))
1099 IF (nty(3,i)<zero) yh1=-yh1
1100 zh1 =abs(lambda1*ntz(3,i)/(dgr*cn))**(one/(dgr-one))
1101 IF (ntz(3,i)<zero) zh1=-zh1
1102 mu1 =-ntx(3,i)*xh1-nty(3,i)*yh1-ntz(3,i)*zh1-d(i)
1103
1104 xh2 =-xh1
1105 yh2 =-yh1
1106 zh2 =-zh1
1107
1108 mu2=-mu1-two*d(i)
1109 xtk(3,i) =xh1+mu1*ntx(3,i)
1110 ytk(3,i) =yh1+mu1*nty(3,i)
1111 ztk(3,i) =zh1+mu1*ntz(3,i)
1112 xtk2(i)=xh2+mu2*ntx(3,i)
1113 ytk2(i)=yh2+mu2*nty(3,i)
1114 ztk2(i)=zh2+mu2*ntz(3,i)
1115
1116 375 CONTINUE
1117
1118
1119
1120 DO 400 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1121 il =ksc(nls)
1122 i =nls-ndeb
1123
1124 dx1=xtk(3,i)-x1(i)
1125 dy1=ytk(3,i)-y1(i)
1126 dz1=ztk(3,i)-z1(i)
1127 dx2=xtk(3,i)-x2(i)
1128 dy2=ytk(3,i)-y2(i)
1129 dz2=ztk(3,i)-z2(i)
1130 out = (dy1*dz2-dy2*dz1)*ntx(3,i)
1131 . +(dz1*dx2-dz2*dx1)*nty(3,i)
1132 . +(dx1*dy2-dy1*dx2)*ntz(3,i)
1133 IF (out<zero) THEN
1134
1135 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
1136 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
1140 alp=1.-bet
1141 xtk(3,i)=alp*x1(i)+bet*x2(i)
1142 ytk(3,i)=alp*y1(i)+bet*y2(i)
1143 ztk(3,i)=alp*z1(i)+bet*z2(i)
1144 ENDIF
1145 dx3=xtk(3,i)-x3(i)
1146 dy3=ytk(3,i)-y3(i)
1147 dz3=ztk(3,i)-z3(i)
1148 out = (dy2*dz3-dy3*dz2)*ntx(3,i)
1149 . +(dz2*dx3-dz3*dx2)*nty(3,i)
1150 . +(dx2*dy3-dy2*dx3)*ntz(3,i)
1151 IF (out<zero) THEN
1152
1153 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
1154 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
1158 alp=1.-bet
1159 xtk(3,i)=alp*x2(i)+bet*x3(i)
1160 ytk(3,i)=alp*y2(i)+bet*y3(i)
1161 ztk(3,i)=alp*z2(i)+bet*z3(i)
1162 ENDIF
1163 out = (dy3*dz1-dy1*dz3)*ntx(3,i)
1164 . +(dz3*dx1-dz1*dx3)*nty(3,i)
1165 . +(dx3*dy1-dy3*dx1)*ntz(3,i)
1166 IF (out<0.) THEN
1167
1168 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
1169 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
1173 alp=1.-bet
1174 xtk(3,i)=alp*x3(i)+bet*x1(i)
1175 ytk(3,i)=alp*y3(i)+bet*y1
1176 ztk(3,i)=alp*z3(i)+bet*z1(i)
1177 ENDIF
1178
1179 dx1=xtk2(i)-x1(i)
1180 dy1=ytk2(i)-y1(i)
1181 dz1=ztk2(i)-z1(i)
1182 dx2=xtk2(i)-x2(i)
1183 dy2=ytk2(i)-y2(i)
1184 dz2=ztk2(i)-z2(i)
1185 out = (dy1*dz2-dy2*dz1)*ntx(3,i)
1186 . +(dz1*dx2-dz2*dx1)*nty(3,i)
1187 . +(dx1*dy2-dy1*dx2)*ntz(3,i)
1188 IF (out<zero) THEN
1189
1190 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
1191 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
1195 alp=1.-bet
1196 xtk2(i)=alp*x1(i)+bet*x2(i)
1197 ytk2(i)=alp*y1(i)+bet*y2(i)
1198 ztk2(i)=alp*z1(i)+bet*z2(i)
1199 ENDIF
1200 dx3=xtk2(i)-x3(i)
1201 dy3=ytk2(i)-y3(i)
1202 dz3=ztk2(i)-z3(i)
1203 out = (dy2*dz3-dy3*dz2)*ntx(3,i)
1204 . +(dz2*dx3-dz3*dx2)*nty(3,i)
1205 . +(dx2*dy3-dy2*dx3)*ntz(3,i)
1206 IF (out<zero) THEN
1207
1208 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
1209 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
1213 alp=one-bet
1214 xtk2(i)=alp*x2(i)+bet*x3(i)
1215 ytk2(i)=alp*y2(i)+bet*y3(i)
1216 ztk2(i)=alp*z2(i)+bet*z3(i)
1217 ENDIF
1218 out = (dy3*dz1-dy1*dz3)*ntx(3,i)
1219 . +(dz3*dx1-dz1*dx3)*nty(3,i)
1220 . +(dx3*dy1-dy3*dx1)*ntz(3,i)
1221 IF (out<zero) THEN
1222
1223 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
1224 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
1228 alp=one-bet
1229 xtk2(i)=alp*x3(i)+bet*x1(i)
1230 ytk2(i)=alp*y3(i)+bet*y1(i)
1231 ztk2(i)=alp*z3(i)+bet*z1(i)
1232 ENDIF
1233
1234 400 CONTINUE
1235
1236
1237
1238 DO 425 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1239 il =ksc(nls)
1240 i =nls-ndeb
1241 IF (iactiv(3,il)==-1) GOTO 425
1242
1243 xh =xtk(3,i)
1244 yh =ytk(3,i)
1245 zh =ztk(3,i)
1246 xkn1 =xh**(idg-1)
1247 sgnxkn=-one
1248 IF (xkn1*xh>=zero) sgnxkn=one
1249 ykn1 =yh**(idg-1)
1250 sgnykn=-one
1251 IF (ykn1*yh>=zero) sgnykn=one
1252 zkn1 =zh**(idg-1)
1253 sgnzkn=-one
1254 IF (zkn1*zh>=zero) sgnzkn=one
1255 n11 =sgnxkn*xkn1*an
1256 n12 =sgnykn*ykn1*bn
1257 n13 =sgnzkn*zkn1*cn
1258 nr1 =n11*n11+n12*n12+n13*n13
1259 nr1 =sqrt(nr1)
1260 em =n11*xtk(3,i)+n12*ytk(3,i)+n13*ztk(3,i)
1261 IF (em<=one) THEN
1262 lambda1=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
1263 . /
max(exp((dgr-one)*log(em20)/dgr),nr1)
1264 inside1=1
1265 ELSE
1266 inside1=0
1267 ENDIF
1268
1269 xh =xtk2(i)
1270 yh =ytk2(i)
1271 zh =ztk2(i)
1272 xkn1 =xh**(idg-1)
1273 sgnxkn=-one
1274 IF (xkn1*xh>=zero) sgnxkn=one
1275 ykn1 =yh**(idg-1)
1276 sgnykn=-one
1277 IF (ykn1*yh>=zero) sgnykn=one
1278 zkn1 =zh**(idg-1)
1279 sgnzkn=-one
1280 IF (zkn1*zh>=zero) sgnzkn=one
1281 n21 =sgnxkn*xkn1*an
1282 n22 =sgnykn*ykn1*bn
1283 n23 =sgnzkn*zkn1*cn
1284 nr2 =n21*n21+n22*n22+n23*n23
1285 nr2 =sqrt(nr2)
1286 em =n21*xtk2(i)+n22*ytk2(i)+n23*ztk2(i)
1287 IF (em<=one) THEN
1288 lambda2=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
1289 . /
max(exp((dgr-one)*log(em20)/dgr),nr2)
1290 inside2=1
1291 ELSE
1292 inside2=0
1293 ENDIF
1294
1295 IF (inside1==0.AND.inside2==0) THEN
1296 iactiv(3,il)=0
1297 ELSE
1298
1299 IF (iactiv(3,il)==0) THEN
1300 IF (inside1/=0.AND.inside2/=0) THEN
1301 IF (abs(lambda1)>=abs(lambda2)) THEN
1302 xm(i)=xtk(3,i)-lambda1*n11/
max(em20,nr1)
1303 ym(i)=ytk(3,i)-lambda1*n12/
max(em20,nr1)
1304 zm(i)=ztk(3,i)-lambda1*n13/
max(em20,nr1)
1305 ELSE
1306 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
1307 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
1308 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
1309 xtk(3,i)=xtk2(i)
1310 ytk(3,i)=ytk2(i)
1311 ztk(3,i)=ztk2(i)
1312 ENDIF
1313 ELSEIF(inside1/=0) THEN
1314 xm(i)=xtk(3,i)-lambda1*n11/
max(em20,nr1)
1315 ym(i)=ytk(3,i)-lambda1*n12/
max(em20,nr1)
1316 zm(i)=ztk(3,i)-lambda1*n13/
max(em20,nr1)
1317 ELSEIF(inside2/=0) THEN
1318 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
1319 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
1320 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
1321 xtk(3,i)=xtk2(i)
1322 ytk(3,i)=ytk2(i)
1323 ztk(3,i)=ztk2(i)
1324 ENDIF
1325
1326 ELSE
1327 xh=hold(1,4*(il-1)+3)
1328 yh=hold(2,4*(il-1)+3)
1329 zh=hold(3,4*(il-1)+3)
1330 n1=nold(1,4*(il-1)+3)
1331 n2=nold(2,4*(il-1)+3)
1332 n3=nold(3,4*(il-1)+3)
1333 lambda1=(xh-xtk(3,i))*n1
1334 . +(yh-ytk(3,i))*n2
1335 . +(zh-ztk(3,i))*n3
1336 lambda2=(xh-xtk2(i))*n1
1337 . +(yh-ytk2(i))*n2
1338 . +(zh-ztk2(i))*n3
1339 IF (inside1/=0.AND.inside2/=0) THEN
1340 IF (abs(lambda1)>=abs(lambda2)) THEN
1341 xm(i)=xtk(3,i)+lambda1*n1
1342 ym(i)=ytk(3,i)+lambda1*n2
1343 zm(i)=ztk(3,i)+lambda1*n3
1344 ELSE
1345 xm(i)=xtk2(i)+lambda2*n1
1346 ym(i)=ytk2(i)+lambda2*n2
1347 zm(i)=ztk2(i)+lambda2*n3
1348 xtk(3,i)=xtk2(i)
1349 ytk(3,i)=ytk2(i)
1350 ztk(3,i)=ztk2(i)
1351 ENDIF
1352 ELSEIF(inside1/=0) THEN
1353 xm(i)=xtk(3,i)+lambda1*n1
1354 ym(i)=ytk(3,i)+lambda1*n2
1355 zm(i)=ztk(3,i)+lambda1*n3
1356 ELSEIF(inside2/=0) THEN
1357 xm(i)=xtk2(i)+lambda2*n1
1358 ym(i)=ytk2(i)+lambda2*n2
1359 zm(i)=ztk2(i)+lambda2*n3
1360 xtk(3,i)=xtk2(i)
1361 ytk(3,i)=ytk2(i)
1362 ztk(3,i)=ztk2(i)
1363 ENDIF
1364
1365 xkn1 =xm(i)**(idg-1)
1366 sgnxkn=-one
1367 IF (xkn1*xm(i)>=zero) sgnxkn=one
1368 ykn1 =ym(i)**(idg-1)
1369 sgnykn=-one
1370 IF (ykn1*ym(i)>=zero) sgnykn=one
1371 zkn1 =zm(i)**(idg-1)
1372 sgnzkn=-one
1373 IF (zkn1*zm(i)>=zero) sgnzkn=one
1374 n1 =sgnxkn*xkn1*an
1375 n2 =sgnykn*ykn1*bn
1376 n3 =sgnzkn*zkn1*cn
1377 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
1378 xm(i)=xm(i)/
max(em20,em**(one/dgr))
1379 ym(i)=ym(i)/
max(em20,em**(one/dgr))
1380 zm(i)=zm(i)/
max(em20,em**(one/dgr))
1381 xkn1 =xm(i)**(idg-1)
1382 sgnxkn=-one
1383 IF (xkn1*xm(i)>=zero) sgnxkn=one
1384 ykn1 =ym(i)**(idg-1)
1385 sgnykn=-one
1386 IF (ykn1*ym(i)>=zero) sgnykn=one
1387 zkn1 =zm(i)**(idg-1)
1388 sgnzkn=-one
1389 IF (zkn1*zm(i)>=zero) sgnzkn=one
1390 n1 =sgnxkn*xkn1*an
1391 n2 =sgnykn*ykn1*bn
1392 n3 =sgnzkn*zkn1*cn
1393 nr =n1*n1+n2*n2+n3*n3
1394 nr =one/
max(em20,sqrt(nr))
1395 n1 =n1*nr
1396 n2 =n2*nr
1397 n3 =n3*nr
1398 lambda1=(xm(i)-xtk(3,i))*n1
1399 . +(ym(i)-ytk(3,i))*n2
1400 . +(zm(i)-ztk(3,i))*n3
1401 xm(i)=xtk(3,i)+lambda1*n1
1402 ym(i)=ytk(3,i)+lambda1*n2
1403 zm(i)=ztk(3,i)+lambda1*n3
1404 ENDIF
1405 iactiv(3,il)=iactiv(3,il)+1
1406 ENDIF
1407 425 CONTINUE
1408
1409#include "vectorize.inc"
1410 DO 450 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1411 il =ksc(nls)
1412 i =nls-ndeb
1413
1414 IF (iactiv(3,il)<=0) GOTO 450
1415
1416
1417 xkn1 =xm(i)**(idg-1)
1418 sgnxkn=-one
1419 IF (xkn1*xm(i)>=zero) sgnxkn=one
1420 ykn1 =ym(i)**(idg-1)
1421 sgnykn=-one
1422 IF (ykn1*ym(i)>=zero) sgnykn=one
1423 zkn1 =zm(i)**(idg-1)
1424 sgnzkn=-one
1425 IF (zkn1*zm(i)>=zero) sgnzkn=one
1426 n1 =sgnxkn*xkn1*an
1427 n2 =sgnykn*ykn1*bn
1428 n3 =sgnzkn*zkn1*cn
1429 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
1430
1431 xm(i)=xm(i)/
max(em20,em**(one/dgr))
1432 ym(i)=ym(i)/
max(em20,em**(one/dgr))
1433 zm(i)=zm(i)/
max(em20,em**(one/dgr))
1434
1435
1436 xkn1 =xm(i)**(idg-1)
1437 sgnxkn=-one
1438 IF (xkn1*xm(i)>=zero) sgnxkn=one
1439 ykn1 =ym(i)**(idg-1)
1440 sgnykn=-one
1441 IF (ykn1*ym(i)>=zero) sgnykn=one
1442 zkn1 =zm(i)**(idg-1)
1443 sgnzkn=-one
1444 IF (zkn1*zm(i)>=zero) sgnzkn=one
1445 n1 =sgnxkn*xkn1*an
1446 n2 =sgnykn*ykn1*bn
1447 n3 =sgnzkn*zkn1*cn
1448 nr =n1*n1+n2*n2+n3*n3
1449 nr =one/
max(em20,sqrt(nr))
1450 nxi(3,i)=n1*nr
1451 nyi(3,i)=n2*nr
1452 nzi(3,i)=n3*nr
1453 xi(3,i)=xm(i)
1454 yi(3,i)=ym(i)
1455 zi(3,i)=zm(i)
1456 depth(3,i)=xm(i)*nxi(3,i)+ym(i)*nyi(3,i)+zm(i)*nzi(3,i)
1457
1458 penet(3,i)=(xtk(3,i)-xm(i))*nxi(3,i)
1459 . +(ytk(3,i)-ym(i))*nyi(3,i)
1460 . +(ztk(3,i)-zm(i))*nzi(3,i)
1461 penet(3,i)=-penet(3,i)
1462 penet(3,i)=
max(zero,penet(3,i))
1463 IF (depth(3,i)-penet(3,i)<em10*depth(3,i)) THEN
1464 penet(3,i)=zero
1465 iactiv(3,il)=-2
1466 ENDIF
1467 ansmx=
max(ansmx,penet(3,i))
1468 450 CONTINUE
1469
1470
1471
1472 DO 460 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1473 il =ksc(nls)
1474 i =nls-ndeb
1475
1476 IF (iactiv(3,il)==-2) THEN
1477 in1=itab(ksi(1,il))
1478 in2=itab(ksi(2,il))
1479 in3=itab(ksi(3,il))
1480 in4=itab(ksi(4,il))
1481#include "lockon.inc"
1482 WRITE(istdo,'(A,I8)')' WARNING INTERFACE ',noint
1483 WRITE(istdo,'(A,A,A,/,2I8,A,4I8,A)')' 3NODES FACET',
1484 . ' FROM 4NODES ELEMENT/SEGMENT,',
1485 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1486 . in3,in4,'ISOCENTER(',in1,in2,in3,in4,')'
1487 WRITE(iout ,'(A,I8)')' WARNING INTERFACE ',noint
1488 WRITE(iout,'(A,A,A,/,2I8,A,4I8,A)') ' 3NODES FACET',
1489 . ' FROM 4NODES ELEMENT/SEGMENT,',
1490 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1491 . in3,in4,'ISOCENTER(',in1,in2,in3,in4,')'
1492#include "lockoff.inc"
1493 iactiv(3,il)=-1
1494 ENDIF
1495 460 CONTINUE
1496
1497
1498
1499 DO 475 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1500 il =ksc(nls)
1501 i =nls-ndeb
1502
1503 x1(i)=gx(1,i)
1504 y1(i)=gx(2,i)
1505 z1(i)=gx(3,i)
1506 x2(i)=xp4(1,i)
1507 y2(i)=xp4(2,i)
1508 z2(i)=xp4(3,i)
1509 x3(i)=xp1(1,i)
1510 y3(i)=xp1(2,i)
1511 z3(i)=xp1(3,i)
1512 x12(i)=x2(i)-x1(i)
1513 y12(i)=y2(i)-y1(i)
1514 z12(i)=z2(i)-z1(i)
1515 x13(i)=x3(i)-x1(i)
1516 y13(i)=y3(i)-y1(i)
1517 z13(i)=z3(i)-z1(i)
1518 n1=y12(i)*z13(i)-z12(i)*y13(i)
1519 n2=z12(i)*x13(i)-x12(i)*z13(i)
1520 n3=x12(i)*y13(i)-y12(i)*x13(i)
1521 ntn=one/
max(em20,sqrt(n1*n1+n2*n2+n3*n3))
1522 ntx(4,i)=ntn*n1
1523 nty(4,i)=ntn*n2
1524 ntz(4,i)=ntn*n3
1525 d(i) =-ntx(4,i)*x1(i)-nty(4,i)*y1(i)-ntz(4,i)*z1(i)
1526
1527 x23(i)=x3(i)-x2(i)
1528 y23(i)=y3(i)-y2(i)
1529 z23(i)=z3(i)-z2(i)
1530 475 CONTINUE
1531
1532
1533
1534 DO 500 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1535 il =ksc(nls)
1536 i =nls-ndeb
1537
1538 eh =(abs(ntx(4,i)/(dgr*an))**expn)*an
1539 . +(abs(nty(4,i)/(dgr*bn))**expn)*bn
1540 . +(abs(ntz(4,i)/(dgr*cn))**expn)*cn
1541
1542
1543 lambda1=(
max(em20,eh))**(-one/expn)
1544 xh1 =abs(lambda1*ntx(4,i)/(dgr*an))**(one/(dgr-one))
1545 IF (ntx(4,i)<zero) xh1=-xh1
1546 yh1 =abs(lambda1*nty(4,i)/(dgr*bn))**(one/(dgr-one))
1547 IF (nty(4,i)<zero) yh1=-yh1
1548 zh1 =abs(lambda1*ntz(4,i)/(dgr*cn))**(one/(dgr-one))
1549 IF (ntz(4,i)<zero) zh1=-zh1
1550 mu1 =-ntx(4,i)*xh1-nty(4,i)*yh1-ntz(4,i)*zh1-d(i)
1551
1552 xh2 =-xh1
1553 yh2 =-yh1
1554 zh2 =-zh1
1555
1556 mu2=-mu1-two*d(i)
1557 xtk(4,i) =xh1+mu1*ntx(4,i)
1558 ytk(4,i) =yh1+mu1*nty(4,i)
1559 ztk(4,i) =zh1+mu1*ntz(4,i)
1560 xtk2(i)=xh2+mu2*ntx(4,i)
1561 ytk2(i)=yh2+mu2*nty(4,i)
1562 ztk2(i)=zh2+mu2*ntz(4,i)
1563
1564 500 CONTINUE
1565
1566
1567
1568 DO 525 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1569 il =ksc(nls)
1570 i =nls-ndeb
1571
1572 dx1=xtk(4,i)-x1(i)
1573 dy1=ytk(4,i)-y1(i)
1574 dz1=ztk(4,i)-z1(i)
1575 dx2=xtk(4,i)-x2(i)
1576 dy2=ytk(4,i)-y2(i)
1577 dz2=ztk(4,i)-z2(i)
1578 out = (dy1*dz2-dy2*dz1)*ntx(4,i)
1579 . +(dz1*dx2-dz2*dx1)*nty(4,i)
1580 . +(dx1*dy2-dy1*dx2)*ntz(4,i)
1581 IF (out<zero) THEN
1582
1583 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
1584 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
1588 alp=1.-bet
1589 xtk(4,i)=alp*x1(i)+bet*x2(i)
1590 ytk(4,i)=alp*y1(i)+bet*y2(i)
1591 ztk(4,i)=alp*z1(i)+bet*z2(i)
1592 ENDIF
1593 dx3=xtk(4,i)-x3(i)
1594 dy3=ytk(4,i)-y3(i)
1595 dz3=ztk(4,i)-z3(i)
1596 out = (dy2*dz3-dy3*dz2)*ntx(4,i)
1597 . +(dz2*dx3-dz3*dx2)*nty(4,i)
1598 . +(dx2*dy3-dy2*dx3)*ntz(4,i)
1599 IF (out<0.) THEN
1600
1601 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
1602 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
1606 alp=1.-bet
1607 xtk(4,i)=alp*x2(i)+bet*x3(i)
1608 ytk(4,i)=alp*y2(i)+bet*y3(i)
1609 ztk(4,i)=alp*z2(i)+bet*z3(i)
1610 ENDIF
1611 out = (dy3*dz1-dy1*dz3)*ntx(4,i)
1612 . +(dz3*dx1-dz1*dx3)*nty(4,i)
1613 . +(dx3*dy1-dy3*dx1)*ntz(4,i)
1614 IF (out<0.) THEN
1615
1616 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
1617 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
1621 alp=1.-bet
1622 xtk(4,i)=alp*x3(i)+bet*x1(i)
1623 ytk(4,i)=alp*y3(i)+bet*y1(i)
1624 ztk(4,i)=alp*z3(i)+bet*z1(i)
1625 ENDIF
1626
1627 dx1=xtk2(i)-x1(i)
1628 dy1=ytk2(i)-y1(i)
1629 dz1=ztk2(i)-z1(i)
1630 dx2=xtk2(i)-x2(i)
1631 dy2=ytk2(i)-y2(i)
1632 dz2=ztk2(i)-z2(i)
1633 out = (dy1*dz2-dy2*dz1)*ntx(4,i)
1634 . +(dz1*dx2-dz2*dx1)*nty(4,i)
1635 . +(dx1*dy2-dy1*dx2)*ntz(4,i)
1636 IF (out<zero) THEN
1637
1638 ps =dx1*x12(i)+dy1*y12(i)+dz1*z12(i)
1639 nr =x12(i)*x12(i)+y12(i)*y12(i)+z12(i)*z12(i)
1643 alp=1.-bet
1644 xtk2(i)=alp*x1(i)+bet*x2(i)
1645 ytk2(i)=alp*y1(i)+bet*y2(i)
1646 ztk2(i)=alp*z1(i)+bet*z2(i)
1647 ENDIF
1648 dx3=xtk2(i)-x3(i)
1649 dy3=ytk2(i)-y3(i)
1650 dz3=ztk2(i)-z3(i)
1651 out = (dy2*dz3-dy3*dz2)*ntx(4,i)
1652 . +(dz2*dx3-dz3*dx2)*nty(4,i)
1653 . +(dx2*dy3-dy2*dx3)*ntz(4,i)
1654 IF (out<zero) THEN
1655
1656 ps =dx2*x23(i)+dy2*y23(i)+dz2*z23(i)
1657 nr =x23(i)*x23(i)+y23(i)*y23(i)+z23(i)*z23(i)
1661 alp=one-bet
1662 xtk2(i)=alp*x2(i)+bet*x3(i)
1663 ytk2(i)=alp*y2(i)+bet*y3(i)
1664 ztk2(i)=alp*z2(i)+bet*z3(i)
1665 ENDIF
1666 out = (dy3*dz1-dy1*dz3)*ntx(4,i)
1667 . +(dz3*dx1-dz1*dx3)*nty(4,i)
1668 . +(dx3*dy1-dy3*dx1)*ntz(4,i)
1669 IF (out<zero) THEN
1670
1671 ps =-dx3*x13(i)-dy3*y13(i)-dz3*z13(i)
1672 nr =x13(i)*x13(i)+y13(i)*y13(i)+z13(i)*z13(i)
1676 alp=one-bet
1677 xtk2(i)=alp*x3(i)+bet*x1(i)
1678 ytk2(i)=alp*y3(i)+bet*y1(i)
1679 ztk2(i)=alp*z3(i)+bet*z1(i)
1680 ENDIF
1681
1682 525 CONTINUE
1683
1684
1685
1686 DO 550 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1687 il =ksc(nls)
1688 i =nls-ndeb
1689 IF (iactiv(4,il)==-1) GOTO 550
1690
1691 xh =xtk(4,i)
1692 yh =ytk(4,i)
1693 zh =ztk(4,i)
1694 xkn1 =xh**(idg-1)
1695 sgnxkn=-one
1696 IF (xkn1*xh>=zero) sgnxkn=one
1697 ykn1 =yh**(idg-1)
1698 sgnykn=-one
1699 IF (ykn1*yh>=zero) sgnykn=one
1700
1701 sgnzkn=-one
1702 IF (zkn1*zh>=zero) sgnzkn=one
1703 n11 =sgnxkn*xkn1*an
1704 n12 =sgnykn*ykn1*bn
1705 n13 =sgnzkn*zkn1*cn
1706 nr1 =n11*n11+n12*n12+n13*n13
1707 nr1 =sqrt(nr1)
1708 em =n11*xtk(4,i)+n12*ytk(4,i)+n13*ztk(4,i)
1709 IF (em<=one) THEN
1710 lambda1=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
1711 . /
max(exp((dgr-one)*log(em20)/dgr),nr1)
1712 inside1=1
1713 ELSE
1714 inside1=0
1715 ENDIF
1716
1717 xh =xtk2(i)
1718 yh =ytk2(i)
1719 zh =ztk2(i)
1720 xkn1 =xh**(idg-1)
1721 sgnxkn=-one
1722 IF (xkn1*xh>=zero) sgnxkn=one
1723 ykn1 =yh**(idg-1)
1724 sgnykn=-one
1725 IF (ykn1*yh>=one) sgnykn=one
1726 zkn1 =zh**(idg-1)
1727 sgnzkn=-one
1728 IF (zkn1*zh>=zero) sgnzkn=one
1729 n21 =sgnxkn*xkn1*an
1730 n22 =sgnykn*ykn1*bn
1731 n23 =sgnzkn*zkn1*cn
1732 nr2 =n21*n21+n22*n22+n23*n23
1733 nr2 =sqrt(nr2)
1734 em =n21*xtk2(i)+n22*ytk2(i)+n23*ztk2(i)
1735 IF (em<=one) THEN
1736 lambda2=(em-exp((dgr-one)*log(
max(em,em20))/dgr))
1737 . /
max(exp((dgr-one)*log(em20)/dgr),nr2)
1738 inside2=1
1739 ELSE
1740 inside2=0
1741 ENDIF
1742
1743 IF (inside1==0.AND.inside2==0) THEN
1744 iactiv(4,il)=0
1745 ELSE
1746
1747 IF (iactiv(4,il)==0) THEN
1748 IF (inside1/=0.AND.inside2/=0) THEN
1749 IF (abs(lambda1)>=abs(lambda2)) THEN
1750 xm(i)=xtk(4,i)-lambda1*n11/
max(em20,nr1)
1751 ym(i)=ytk(4,i)-lambda1*n12/
max(em20
1752 zm(i)=ztk(4,i)-lambda1*n13/
max(em20,nr1)
1753 ELSE
1754 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
1755 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
1756 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
1757 xtk(4,i)=xtk2(i)
1758 ytk(4,i)=ytk2(i)
1759 ztk(4,i)=ztk2(i)
1760 ENDIF
1761 ELSEIF(inside1/=0) THEN
1762 xm(i)=xtk(4,i)-lambda1*n11/
max(em20,nr1)
1763 ym(i)=ytk(4,i)-lambda1*n12/
max(em20,nr1)
1764 zm(i)=ztk(4,i)-lambda1*n13/
max
1765 ELSEIF(inside2/=0) THEN
1766 xm(i)=xtk2(i)-lambda2*n21/
max(em20,nr2)
1767 ym(i)=ytk2(i)-lambda2*n22/
max(em20,nr2)
1768 zm(i)=ztk2(i)-lambda2*n23/
max(em20,nr2)
1769 xtk(4,i)=xtk2(i)
1770 ytk(4,i)=ytk2(i)
1771 ztk(4,i)=ztk2(i)
1772 ENDIF
1773
1774 ELSE
1775 xh=hold(1,4*(il-1)+4)
1776 yh=hold(2,4*(il-1)+4)
1777 zh=hold(3,4*(il-1)+4)
1778 n1=nold(1,4*(il-1)+4)
1779 n2=nold(2,4*(il-1)+4)
1780 n3=nold(3,4*(il-1)+4)
1781 lambda1=(xh-xtk(4,i))*n1
1782 . +(yh-ytk(4,i))*n2
1783 . +(zh-ztk(4,i))*n3
1784 lambda2=(xh-xtk2(i))*n1
1785 . +(yh-ytk2(i))*n2
1786 . +(zh-ztk2(i))*n3
1787 IF (inside1/=0.AND.inside2/=0) THEN
1788 IF (abs(lambda1)>=abs(lambda2)) THEN
1789 xm(i)=xtk(4,i)+lambda1*n1
1790 ym(i)=ytk(4,i)+lambda1*n2
1791 zm(i)=ztk(4,i)+lambda1*n3
1792 ELSE
1793 xm(i)=xtk2(i)+lambda2*n1
1794 ym(i)=ytk2(i)+lambda2*n2
1795 zm(i)=ztk2(i)+lambda2*n3
1796 xtk(4,i)=xtk2(i)
1797 ytk(4,i)=ytk2(i)
1798 ztk(4,i)=ztk2(i)
1799 ENDIF
1800 ELSEIF(inside1/=0) THEN
1801 xm(i)=xtk(4,i)+lambda1*n1
1802 ym(i)=ytk(4,i)+lambda1*n2
1803 zm(i)=ztk(4,i)+lambda1*n3
1804 ELSEIF(inside2/=0) THEN
1805 xm(i)=xtk2(i)+lambda2*n1
1806 ym(i)=ytk2(i)+lambda2*n2
1807 zm(i)=ztk2(i)+lambda2*n3
1808 xtk(4,i)=xtk2(i)
1809 ytk(4,i)=ytk2(i)
1810 ztk(4,i)=ztk2(i)
1811 ENDIF
1812
1813 xkn1 =xm(i)**(idg-1)
1814 sgnxkn=-one
1815 IF (xkn1*xm(i)>=zero) sgnxkn=one
1816 ykn1 =ym(i)**(idg-1)
1817 sgnykn=-one
1818 IF (ykn1*ym(i)>=zero) sgnykn=one
1819 zkn1 =zm(i)**(idg-1)
1820 sgnzkn=-one
1821 IF (zkn1*zm(i)>=zero) sgnzkn=one
1822 n1 =sgnxkn*xkn1*an
1823 n2 =sgnykn*ykn1*bn
1824 n3 =sgnzkn*zkn1*cn
1825 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
1826 xm(i)=xm(i)/
max(em20,em**(one/dgr))
1827 ym(i)=ym(i)/
max(em20,em**(one/dgr))
1828 zm(i)=zm(i)/
max(em20,em**(one/dgr))
1829 xkn1 =xm(i)**(idg-1)
1830 sgnxkn=-one
1831 IF (xkn1*xm(i)>=zero) sgnxkn=one
1832 ykn1 =ym(i)**(idg-1)
1833 sgnykn=-one
1834 IF (ykn1*ym(i)>=zero) sgnykn=one
1835 zkn1 =zm(i)**(idg-1)
1836 sgnzkn=-one
1837 IF (zkn1*zm(i)>=zero) sgnzkn=one
1838 n1 =sgnxkn*xkn1*an
1839 n2 =sgnykn*ykn1*bn
1840 n3 =sgnzkn*zkn1*cn
1841 nr =n1*n1+n2*n2+n3*n3
1842 nr =1./
max(em20,sqrt(nr))
1843 n1 =n1*nr
1844 n2 =n2*nr
1845 n3 =n3*nr
1846 lambda1=(xm(i)-xtk(4,i))*n1
1847 . +(ym(i)-ytk(4,i))*n2
1848 . +(zm(i)-ztk(4,i))*n3
1849 xm(i)=xtk(4,i)+lambda1*n1
1850 ym(i)=ytk(4,i)+lambda1*n2
1851 zm(i)=ztk(4,i)+lambda1*n3
1852 ENDIF
1853 iactiv(4,il)=iactiv(4,il)+1
1854 ENDIF
1855 550 CONTINUE
1856
1857#include "vectorize.inc"
1858 DO 575 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1859 il =ksc(nls)
1860 i =nls-ndeb
1861
1862 IF (iactiv(4,il)<=0) GOTO 575
1863
1864
1865 xkn1 =xm(i)**(idg-1)
1866 sgnxkn=-one
1867 IF (xkn1*xm(i)>=zero) sgnxkn=one
1868 ykn1 =ym(i)**(idg-1)
1869 sgnykn=-one
1870 IF (ykn1*ym(i)>=zero) sgnykn=one
1871 zkn1 =zm(i)**(idg-1)
1872 sgnzkn=-one
1873 IF (zkn1*zm(i)>=zero) sgnzkn=one
1874 n1 =sgnxkn*xkn1*an
1875 n2 =sgnykn*ykn1*bn
1876 n3 =sgnzkn*zkn1*cn
1877 em=n1*xm(i)+n2*ym(i)+n3*zm(i)
1878
1879 xm(i)=xm(i)/
max(em20,em**(one/dgr))
1880 ym(i)=ym(i)/
max(em20,em**(one/dgr))
1881 zm(i)=zm(i)/
max(em20,em**(one/dgr))
1882
1883
1884 xkn1 =xm(i)**(idg-1)
1885 sgnxkn=-one
1886 IF (xkn1*xm(i)>=zero) sgnxkn=one
1887 ykn1 =ym(i)**(idg-1)
1888 sgnykn=-one
1889 IF (ykn1*ym(i)>=zero) sgnykn=one
1890 zkn1 =zm(i)**(idg-1)
1891 sgnzkn=-one
1892 IF (zkn1*zm(i)>=zero) sgnzkn=one
1893 n1 =sgnxkn*xkn1*an
1894 n2 =sgnykn*ykn1*bn
1895 n3 =sgnzkn*zkn1*cn
1896 nr =n1*n1+n2*n2+n3*n3
1897 nr =one/
max(em20,sqrt(nr))
1898 nxi(4,i)=n1*nr
1899 nyi(4,i)=n2*nr
1900 nzi(4,i)=n3*nr
1901 xi(4,i)=xm(i)
1902 yi(4,i)=ym(i)
1903 zi(4,i)=zm(i)
1904 depth(4,i)=xm(i)*nxi(4,i)+ym(i)*nyi(4,i)+zm(i)*nzi(4,i)
1905
1906 penet(4,i)=(xtk(4,i)-xm(i))*nxi(4,i)
1907 . +(ytk(4,i)-ym(i))*nyi(4,i)
1908 . +(ztk(4,i)-zm(i))*nzi(4,i)
1909 penet(4,i)=-penet(4,i)
1910 penet(4,i)=
max(zero,penet(4,i))
1911 IF (depth(4,i)-penet(4,i)<em10*depth(4,i)) THEN
1912 penet(4,i)=zero
1913 iactiv(4,il)=-2
1914 ENDIF
1915 ansmx=
max(ansmx,penet(4,i))
1916 575 CONTINUE
1917
1918
1919
1920 DO 585 nls=ndeb+1,
min(ndeb+mvsiz,nsc)
1921 il =ksc(nls)
1922 i =nls-ndeb
1923
1924 IF (iactiv(4,il)==-2) THEN
1925 in1=itab(ksi(1,il))
1926 in2=itab(ksi(2,il))
1927 in3=itab(ksi(3,il))
1928 in4=itab(ksi(4,il))
1929#include "lockon.inc"
1930 WRITE(istdo,'(A,I8)')' WARNING INTERFACE ',noint
1931 WRITE(istdo,'(A,A,A,/,2I8,A,4I8,A)')' 3NODES FACET',
1932 . ' FROM 4NODES ELEMENT/SEGMENT,',
1933 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1934 . in4,in1,'ISOCENTER(',in1,in2,in3,in4,')'
1935 WRITE(iout ,'(A,I8)')' WARNING INTERFACE ',noint
1936 WRITE(iout,'(A,A,A,/,2I8,A,4I8,A)') ' 3NODES FACET',
1937 . ' FROM 4NODES ELEMENT/SEGMENT,',
1938 . ' DE-ACTIVATED FROM INTERFACE; FACET VERTICES:',
1939 . in4,in1,'ISOCENTER(',in1,in2,in3,in4,')'
1940#include "lockoff.inc"
1941 iactiv(4,il)=-1
1942 ENDIF
1943 585 CONTINUE
1944
1945 RETURN