31 SUBROUTINE thres(IPARG,ITHBUF,ELBUF_TAB,WA,IGEO,
32 . IXR,NTHGRP2,ITHGRP,X)
37 use element_mod ,
only : nixr
41#include "implicit_f.inc"
52 INTEGER,
INTENT(in) :: NTHGRP2
53 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
54 INTEGER IPARG(NPARG,*),ITHBUF(*),IXR(NIXR,*),
59 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
67 INTEGER :: II,I,N,IH,NG,ITY,MTE,K,IP,L
68 INTEGER :: IJK,NEL,NFT,IPROP,IGTYP,JJ(6)
69 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,NODE1,NODE2,NODE3
71 my_real v1,v2,v3,e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z
72 TYPE(g_bufel_) ,
POINTER :: GBUF
99 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
102 IF (ih >= iad+nn) cycle
111 igtyp = igeo(11,iprop)
116 jj(k) = (k-1)*nel + 1
131 ii = ((ih-1) - iad)*nvar
132 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
136 IF (ih > iad+nn)
GOTO 666
145 wwa(8)=gbuf%TOTDEPL(i)
158 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
159 . (x(2,node2)-x(2,node1))**2 +
160 . (x(3,node2)-x(3,node1))**2)
161 DO l=iadv,iadv+nvar-1
170 ELSEIF (igtyp == 26)
THEN
181 ii = ((ih-1) - iad)*nvar
182 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
186 IF (ih > iad+nn)
GOTO 666
195 wwa(8)=gbuf%TOTDEPL(i)
208 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
209 . (x(2,node2)-x(2,node1))**2 +
210 . (x(3,node2)-x(3,node1))**2)
212 IF (gbuf%G_RUPTCRIT > 0)
THEN
213 wwa(66) = gbuf%RUPTCRIT(i)
217 DO l=iadv,iadv+nvar-1
226 ELSEIF (igtyp == 27)
THEN
237 ii = ((ih-1) - iad)*nvar
238 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
242 IF (ih > iad+nn)
GOTO 666
251 wwa(8)=gbuf%TOTDEPL(i)
264 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
265 . (x(2,node2)-x(2,node1))**2 +
266 . (x(3,node2)-x(3,node1))**2)
268 IF (gbuf%G_RUPTCRIT > 0)
THEN
269 wwa(66) = gbuf%RUPTCRIT(i)
273 DO l=iadv,iadv+nvar-1
282 ELSEIF( igtyp == 12)
THEN
293 ii = ((ih-1) - iad)*nvar
294 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
298 IF (ih > iad+nn)
GOTO 666
307 wwa(8)=gbuf%TOTDEPL(i)
314 wwa(15)=gbuf%FOR(i) + gbuf%DFS(i)
315 wwa(16)=gbuf%FOR(i) - gbuf%DFS(i)
320 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
321 . (x(2,node2)-x(2,node1))**2 +
322 . (x(3,node2)-x(3,node1))**2)
323 . + sqrt((x(1,node3)-x(1,node2))**2 +
324 . (x(2,node3)-x(2,node2))**2
325 . (x(3,node3)-x(3,node2))**2)
326 DO l=iadv,iadv+nvar-1
335 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25
336 . .OR. igtyp == 23 )
THEN
348 ii = ((ih-1) - iad)*nvar
349 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
353 IF (ih > iad+nn)
GOTO 666
356 wwa(2)=gbuf%FOR(jj(1)+i-1)
357 wwa(3)=gbuf%FOR(jj(2)+i-1)
358 wwa(4)=gbuf%FOR(jj(3)+i-1)
359 wwa(5)=gbuf%MOM(jj(1)+i-1)
360 wwa(6)=gbuf%MOM(jj(2)+i-1)
361 wwa(7)=gbuf%MOM(jj(3)+i-1)
362 wwa(8)=gbuf%TOTDEPL(jj(1)+i-1)
363 wwa(9)=gbuf%TOTDEPL(jj(2)+i-1)
364 wwa(10)=gbuf%TOTDEPL(jj(3)+i-1)
365 wwa(11)=gbuf%TOTROT(jj(1)+i-1)
366 wwa(12)=gbuf%TOTROT(jj(2)+i-1)
367 wwa(13)=gbuf%TOTROT(jj(3)+i-1)
375 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
376 . (x(2,node2)-x(2,node1))**2 +
377 . (x(3,node2)-x(3,node1))**2)
379 IF (gbuf%G_RUPTCRIT > 0)
THEN
380 wwa(66) = gbuf%RUPTCRIT(i)
384 DO l=iadv,iadv+nvar-1
393 ELSEIF (igtyp >= 29)
THEN
394 IF (igtyp <= 31 .OR. igtyp == 35 .OR. igtyp == 36. or.
407 ii = ((ih-1) - iad)*nvar
408 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih<iad+nn)
412 IF (ih > iad+nn)
GOTO 666
415 wwa(2)=gbuf%FOR(jj(1)+i-1)
416 wwa(3)=gbuf%FOR(jj(2)+i-1)
417 wwa(4)=gbuf%FOR(jj(3)+i-1)
418 wwa(5)=gbuf%MOM(jj(1)+i-1)
419 wwa(6)=gbuf%MOM(jj(2)+i-1)
420 wwa(7)=gbuf%MOM(jj(3)+i-1)
421 wwa(8) =gbuf%V_REPCVT(jj(1)+i-1)
422 wwa(9) =gbuf%V_REPCVT(jj(2)+i-1)
423 wwa(10)=gbuf%V_REPCVT(jj(3)+i-1)
424 wwa(11)=gbuf%VR_REPCVT(jj
425 wwa(12)=gbuf%VR_REPCVT(jj(2)+i-1)
426 wwa(13)=gbuf%VR_REPCVT(jj(3)+i-1)
432 e1x = gbuf%SKEW(6*(i-1) + 1)
433 e1y = gbuf%SKEW(6*(i-1) + 2)
434 e1z = gbuf%SKEW(6*(i-1) + 3)
435 e2x = gbuf%SKEW(6*(i-1) + 4)
436 e2y = gbuf%SKEW(6*(i-1) + 5)
437 e2z = gbuf%SKEW(6*(i-1) + 6)
439 e3y = e1z*e2x - e1x*e2z
440 e3z = e1x*e2y - e1y*e2x
442 v1 = gbuf%FOR(jj(1)+i-1)
443 v2 = gbuf%FOR(jj(2)+i-1)
444 v3 = gbuf%FOR(jj(3)+i-1)
452 wwa(20)= v1*e1x+v2*e1y+v3*e1z
453 wwa(21)= v1*e2x+v2*e2y+v3*e2z
454 wwa(22)= v1*e3x+v2*e3y
459 v1 = gbuf%MOM(jj(1)+i-1)
460 v2 = gbuf%MOM(jj(4)+i-1)
461 v3 = gbuf%MOM(jj(5)+i-1)
466 wwa(39)= v2 + two*gbuf%MOM(jj(2)+i-1)
467 wwa(40)= v3 + two*gbuf%MOM(jj(3)+i-1)
469 wwa(29)= v1*e1x+v2*e1y+v3*e1z
470 wwa(30)= v1*e2x+v2*e2y+v3*e2z
471 wwa(31)= v1*e3x+v2*e3y+v3*e3z
472 wwa(32)= wwa(38)*e1x+wwa(39)*e1y+wwa(40)*e1z
473 wwa(33)= wwa(38)*e2x+wwa(39)*e2y+wwa(40)*e2z
474 wwa(34)= wwa(38)*e3x+wwa(39)*e3y+wwa(40)*e3z
476 v1 = -gbuf%V_REPCVT(jj(1)+i-1)
491 v1 = -gbuf%VR_REPCVT(jj
492 v2 = gbuf%V_REPCVT(jj(2)+i-1)
493 v3 = gbuf%V_REPCVT(jj(3)+i-1)
498 wwa(53)= v1*e1x+v2*e1y+v3*e1z
499 wwa(54)= v1*e2x+v2*e2y+v3*e2z
500 wwa(55)= v1*e3x+v2*e3y+v3*e3z
502 v2 = gbuf%VR_REPCVT(jj(2)+i-1)
503 v3 = gbuf%VR_REPCVT(jj(3)+i-1)
508 wwa(56)=-v1*e1x+v2*e1y+v3*e1z
509 wwa(57)=-v1*e2x+v2*e2y+v3*e2z
510 wwa(58)=-v1*e3x+v2*e3y+v3*e3z
512 wwa(65)= sqrt((x(1,node2)-x(1,node1))*
513 . (x(2,node2)-x(2,node1))**2 +
514 . (x(3,node2)-x(3,node1))**2)
516 DO l=iadv,iadv+nvar-1
525 ELSEIF (igtyp == 32)
THEN
537 ii = ((ih-1) - iad)*nvar
538 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
542 IF (ih > iad+nn)
GOTO 666
545 wwa(2)=gbuf%FOR(jj(1)+i-1)
546 wwa(3)=gbuf%FOR(jj(2)+i-1)
547 wwa(4)=gbuf%FOR(jj(3)+i-1)
548 wwa(5)=gbuf%MOM(jj(1)+i-1)
549 wwa(6)=gbuf%MOM(jj(2)+i-1)
550 wwa(7)=gbuf%MOM(jj(3)+i-1)
551 wwa(8)=gbuf%V_REPCVT(jj(1)+i-1)
552 wwa(9)=gbuf%V_REPCVT(jj(2)+i-1)
553 wwa(10)=gbuf%V_REPCVT(jj(3)+i-1)
554 wwa(11)=gbuf%VR_REPCVT(jj(1)+i-1)
555 wwa(12)=gbuf%VR_REPCVT(jj(2)+i-1)
556 wwa(13)=gbuf%VR_REPCVT(jj(3)+i-1)
564 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
565 . (x(2,node2)-x(2,node1))**2 +
566 . (x(3,node2)-x(3,node1))**2)
567 DO l=iadv,iadv+nvar-1
576 ELSEIF (igtyp == 33 .OR. igtyp == 45)
THEN
588 ii = ((ih-1) - iad)*nvar
589 DO WHILE (ithbuf(ih+nn) /= ispmd .AND.
593 IF (ih > iad+nn)
GOTO 666
596 wwa(2)=gbuf%FOR(jj(1)+i-1)
597 wwa(3)=gbuf%FOR(jj(2)+i-1)
598 wwa(4)=gbuf%FOR(jj(3)+i-1)
599 wwa(5)=gbuf%MOM(jj(1)+i-1)
600 wwa(6)=gbuf%MOM(jj(2)+i-1)
601 wwa(7)=gbuf%MOM(jj(3)+i-1)
602 wwa(8)=gbuf%TOTDEPL(jj(1)+i-1)
603 wwa(9)=gbuf%TOTDEPL(jj(2)+i-1)
604 wwa(10)=gbuf%TOTDEPL(jj(3)+i-1)
605 wwa(11)=gbuf%TOTROT(jj(1)+i-1)
606 wwa(12)=gbuf%TOTROT(jj(2)+i-1)
607 wwa(13)=gbuf%TOTROT(jj(3)+i-1)
615 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
616 . (x(2,node2)-x(2,node1))**2 +
617 . (x(3,node2)-x(3,node1))**2)
618 DO l=iadv,iadv+nvar-1