30 SUBROUTINE thres(IPARG,ITHBUF,ELBUF_TAB,WA,IGEO,
31 . IXR,NTHGRP2,ITHGRP,X)
39#include "implicit_f.inc"
50 INTEGER,
INTENT(in) :: NTHGRP2
51 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
52 INTEGER IPARG(NPARG,*),ITHBUF(*),IXR(NIXR,*),
57 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
65 INTEGER :: II,I,N,IH,NG,ITY,MTE,K,IP,L
66 INTEGER :: IJK,NEL,NFT,IPROP,IGTYP,JJ(6)
67 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,NODE1,NODE2,NODE3
69 my_real v1,v2,v3,e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z
70 TYPE() ,
POINTER :: GBUF
97 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
100 IF (ih >= iad+nn) cycle
104 gbuf => elbuf_tab(ng)%GBUF
109 igtyp = igeo(11,iprop)
114 jj(k) = (k-1)*nel + 1
129 ii = ((ih-1) - iad)*nvar
130 DO WHILE (ithbuf(ih+nn) /= ispmd
134 IF (ih > iad+nn)
GOTO 666
143 wwa(8)=gbuf%TOTDEPL(i)
156 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
157 . (x(2,node2)-x(2,node1))**2 +
159 DO l=iadv,iadv+nvar-1
168 ELSEIF (igtyp == 26)
THEN
180 DO WHILE (ithbuf(ih+nn) /= ispmd
184 IF (ih > iad+nn)
GOTO 666
193 wwa(8)=gbuf%TOTDEPL(i)
206 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
207 . (x(2,node2)-x(2,node1))**2 +
208 . (x(3,node2)-x(3,node1))**2)
210 IF (gbuf%G_RUPTCRIT > 0)
THEN
211 wwa(66) = gbuf%RUPTCRIT(i)
215 DO l=iadv,iadv+nvar-1
224 ELSEIF (igtyp == 27)
THEN
235 ii = ((ih-1) - iad)*nvar
236 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
240 IF (ih > iad+nn)
GOTO 666
249 wwa(8)=gbuf%TOTDEPL(i)
262 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
263 . (x(2,node2)-x(2,node1))**2 +
264 . (x(3,node2)-x(3,node1))**2)
266 IF (gbuf%G_RUPTCRIT > 0)
THEN
267 wwa(66) = gbuf%RUPTCRIT(i)
271 DO l=iadv,iadv+nvar-1
280 ELSEIF( igtyp == 12)
THEN
291 ii = ((ih-1) - iad)*nvar
292 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
296 IF (ih > iad+nn)
GOTO 666
305 wwa(8)=gbuf%TOTDEPL(i)
312 wwa(15)=gbuf%FOR(i) + gbuf%DFS(i)
313 wwa(16)=gbuf%FOR(i) - gbuf%DFS(i)
318 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
319 . (x(2,node2)-x(2,node1))**2 +
320 . (x(3,node2)-x(3,node1))**2)
321 . + sqrt((x(1,node3)-x(1,node2))**2 +
322 . (x(2,node3)-x(2,node2))**2 +
323 . (x(3,node3)-x(3,node2))**2)
324 DO l=iadv,iadv+nvar-1
333 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25
334 . .OR. igtyp == 23 )
THEN
346 ii = ((ih-1) - iad)*nvar
347 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
351 IF (ih > iad+nn)
GOTO 666
354 wwa(2)=gbuf%FOR(jj(1)+i-1)
355 wwa(3)=gbuf%FOR(jj(2)+i-1)
356 wwa(4)=gbuf%FOR(jj(3)+i-1)
357 wwa(5)=gbuf%MOM(jj(1)+i-1)
358 wwa(6)=gbuf%MOM(jj(2)+i-1)
359 wwa(7)=gbuf%MOM(jj(3)+i-1)
360 wwa(8)=gbuf%TOTDEPL(jj(1)+i-1)
361 wwa(9)=gbuf%TOTDEPL(jj(2)+i-1)
362 wwa(10)=gbuf%TOTDEPL(jj(3)+i-1)
363 wwa(11)=gbuf%TOTROT(jj(1)+i-1)
364 wwa(12)=gbuf%TOTROT(jj(2)+i-1)
365 wwa(13)=gbuf%TOTROT(jj(3)+i-1)
373 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
374 . (x(2,node2)-x(2,node1))**2 +
375 . (x(3,node2)-x(3,node1))**2)
377 IF (gbuf%G_RUPTCRIT > 0)
THEN
378 wwa(66) = gbuf%RUPTCRIT(i)
382 DO l=iadv,iadv+nvar-1
391 ELSEIF (igtyp >= 29)
THEN
392 IF (igtyp <= 31 .OR. igtyp == 35 .OR. igtyp == 36. or.
405 ii = ((ih-1) - iad)*nvar
406 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih<iad+nn)
410 IF (ih > iad+nn)
GOTO 666
413 wwa(2)=gbuf%FOR(jj(1)+i-1)
414 wwa(3)=gbuf%FOR(jj(2)+i-1)
415 wwa(4)=gbuf%FOR(jj(3)+i-1)
416 wwa(5)=gbuf%MOM(jj(1)+i-1)
417 wwa(6)=gbuf%MOM(jj(2)+i-1)
418 wwa(7)=gbuf%MOM(jj(3)+i-1)
419 wwa(8) =gbuf%V_REPCVT(jj(1)+i-1)
420 wwa(9) =gbuf%V_REPCVT(jj(2)+i-1)
421 wwa(10)=gbuf%V_REPCVT(jj(3)+i-1)
422 wwa(11)=gbuf%VR_REPCVT(jj(1)+i-1)
423 wwa(12)=gbuf%VR_REPCVT(jj(2)+i-1)
424 wwa(13)=gbuf%VR_REPCVT(jj(3)+i-1)
430 e1x = gbuf%SKEW(6*(i-1) + 1)
431 e1y = gbuf%SKEW(6*(i-1) + 2)
432 e1z = gbuf%SKEW(6*(i-1) + 3)
433 e2x = gbuf%SKEW(6*(i-1) + 4)
434 e2y = gbuf%SKEW(6*(i-1) + 5)
435 e2z = gbuf%SKEW(6*(i-1) + 6)
436 e3x = e1y*e2z - e1z*e2y
437 e3y = e1z*e2x - e1x*e2z
438 e3z = e1x*e2y - e1y*e2x
440 v1 = gbuf%FOR(jj(1)+i-1)
441 v2 = gbuf%FOR(jj(2)+i-1)
442 v3 = gbuf%FOR(jj(3)+i-1)
450 wwa(20)= v1*e1x+v2*e1y+v3*e1z
451 wwa(21)= v1*e2x+v2*e2y+v3*e2z
452 wwa(22)= v1*e3x+v2*e3y+v3*e3z
457 v1 = gbuf%MOM(jj(1)+i-1)
458 v2 = gbuf%MOM(jj(4)+i-1)
459 v3 = gbuf%MOM(jj(5)+i-1)
464 wwa(39)= v2 + two*gbuf%MOM(jj(2)+i-1)
465 wwa(40)= v3 + two*gbuf%MOM(jj(3)+i-1)
467 wwa(29)= v1*e1x+v2*e1y+v3*e1z
468 wwa(30)= v1*e2x+v2*e2y+v3*e2z
469 wwa(31)= v1*e3x+v2*e3y+v3*e3z
470 wwa(32)= wwa(38)*e1x+wwa(39)*e1y+wwa(40)*e1z
471 wwa(33)= wwa(38)*e2x+wwa(39)*e2y+wwa(40)*e2z
472 wwa(34)= wwa(38)*e3x+wwa(39)*e3y+wwa(40)*e3z
474 v1 = -gbuf%V_REPCVT(jj(1)+i-1)
489 v1 = -gbuf%VR_REPCVT(jj(1)+i-1)
491 v3 = gbuf%V_REPCVT(jj(3)+i-1)
496 wwa(53)= v1*e1x+v2*e1y+v3*e1z
497 wwa(54)= v1*e2x+v2*e2y+v3*e2z
498 wwa(55)= v1*e3x+v2*e3y+v3*e3z
500 v2 = gbuf%VR_REPCVT(jj(2)+i-1)
501 v3 = gbuf%VR_REPCVT(jj(3)+i-1)
506 wwa(56)=-v1*e1x+v2*e1y+v3*e1z
507 wwa(57)=-v1*e2x+v2*e2y+v3*e2z
508 wwa(58)=-v1*e3x+v2*e3y+v3*e3z
510 wwa(65)= sqrt((x(1,node2
511 . (x(2,node2)-x(2,node1))**2 +
512 . (x(3,node2)-x(3,node1))**2)
514 DO l=iadv,iadv+nvar-1
523 ELSEIF (igtyp == 32)
THEN
535 ii = ((ih-1) - iad)*nvar
536 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
540 IF (ih > iad+nn)
GOTO 666
543 wwa(2)=gbuf%FOR(jj(1)+i-1)
544 wwa(3)=gbuf%FOR(jj(2)+i-1)
545 wwa(4)=gbuf%FOR(jj(3)+i-1)
546 wwa(5)=gbuf%MOM(jj(1)+i-1)
547 wwa(6)=gbuf%MOM(jj(2)+i-1)
548 wwa(7)=gbuf%MOM(jj(3)+i-1)
549 wwa(8)=gbuf%V_REPCVT(jj(1)+i-1)
550 wwa(9)=gbuf%V_REPCVT(jj(2)+i-1)
551 wwa(10)=gbuf%V_REPCVT(jj(3)+i-1)
552 wwa(11)=gbuf%VR_REPCVT(jj(1)+i-1)
553 wwa(12)=gbuf%VR_REPCVT(jj(2)+i-1)
554 wwa(13)=gbuf%VR_REPCVT(jj(3)+i-1)
562 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
563 . (x(2,node2)-x(2,node1))**2 +
564 . (x(3,node2)-x(3,node1))**2)
565 DO l=iadv,iadv+nvar-1
574 ELSEIF (igtyp == 33 .OR. igtyp == 45)
THEN
586 ii = ((ih-1) - iad)*nvar
587 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
591 IF (ih > iad+nn)
GOTO 666
594 wwa(2)=gbuf%FOR(jj(1)+i-1)
595 wwa(3)=gbuf%FOR(jj(2)+i-1)
596 wwa(4)=gbuf%FOR(jj(3)+i-1)
597 wwa(5)=gbuf%MOM(jj(1)+i-1)
598 wwa(6)=gbuf%MOM(jj(2)+i-1)
599 wwa(7)=gbuf%MOM(jj(3)+i-1)
600 wwa(8)=gbuf%TOTDEPL(jj(1)+i-1)
601 wwa(9)=gbuf%TOTDEPL(jj(2)+i-1)
602 wwa(10)=gbuf%TOTDEPL(jj(3)+i-1)
603 wwa(11)=gbuf%TOTROT(jj(1)+i-1)
604 wwa(12)=gbuf%TOTROT(jj(2)+i-1)
605 wwa(13)=gbuf%TOTROT(jj(3)+i-1)
613 wwa(65)= sqrt((x(1,node2)-x(1,node1))**2 +
614 . (x(2,node2)-x(2,node1))**2 +
615 . (x(3,node2)-x(3,node1))**2)