41 2 WA,WAP0 ,IPARTS, IPART_STATE,
42 3 STAT_INDXS,X,IGLOB,IPART,SIZP0)
49 use element_mod ,
only : nixs
53#include "implicit_f.inc"
63#include "vect01_c.inc"
69 INTEGER IXS(NIXS,*),IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
70 . iparts(*), ipart_state(*), stat_indxs(*),ipart(lipart1,*)
72 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET ::
73 double precision WA(*),WAP0(*)
77 INTEGER I,N,J,K,JJ,LEN,ISOLNOD,TSHELL,
78 . NLAY,NPTR,NPTS,NPTT,NPTG,NG,NEL,MLW,
79 .
id, iprt0, iprt, ipt, ie,il,ir,is,it,pid,ioff,
81 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA
82 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA_P0
85 CHARACTER*100 DELIMIT,LINE
87 ./
'#---1----|----2----|----3----|----4----|----5----|----6----|'/
89 ./
'----7----|----8----|----9----|----10---|'/
91 TYPE(l_bufel_) ,
POINTER :: LBUF
92 TYPE(G_BUFEL_) ,
POINTER :: GBUF
94 CALL my_alloc(ptwa,stat_numels)
95 ALLOCATE(ptwa_p0(0:
max(1,stat_numels_g)))
98 IF (stat_numels==0)
GOTO 200
106 2 mlw ,nel ,nft ,iad ,ity ,
107 3 npt ,jale ,ismstr ,jeul ,jtur ,
108 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
109 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
110 6 irep ,iint ,igtyp ,israt ,isrot ,
111 7 icsen ,isorth ,isorthg ,ifailure,jsms )
114 iprt = iparts(lft+nft)
116 isolnod = iparg(28,ng)
118 IF (igtyp == 20 .OR. igtyp == 21 .OR. igtyp == 22) tshell = 1
119 IF (jcvt == 1 .AND. isorth /=0 ) jcvt=2
121 gbuf => elbuf_tab(ng)%GBUF
122 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
123 nlay = elbuf_tab(ng)%NLAY
124 nptr = elbuf_tab(ng)%NPTR
125 npts = elbuf_tab(ng)%NPTS
126 nptt = elbuf_tab(ng)%NPTT
127 npt = nptr * npts * nptt * nlay
134 IF (isolnod == 16)
THEN
139 IF(ipart_state(iprt)==0)cycle
140 wa(jj+ 1)= gbuf%VOL(i)
142 wa(jj+ 3)= ixs(nixs,n)
150 wa(jj+11) = gbuf%OFF(i)
155 gama(1)=gbuf%GAMA(kk(1)+i)
156 gama(2)=gbuf%GAMA(kk(2)+i)
157 gama(3)=gbuf%GAMA(kk(3)+i)
158 gama(4)=gbuf%GAMA(kk(4)+i)
159 gama(5)=gbuf%GAMA(kk(5)+i)
160 gama(6)=gbuf%GAMA(kk(6)+i)
175 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
176 watmp(1) = lbuf%SIG(kk(1)+i)
177 watmp(2) = lbuf%SIG(kk(2)+i)
178 watmp(3) = lbuf%SIG(kk(3)+i)
179 watmp(4) = lbuf%SIG(kk(4)+i)
180 watmp(5) = lbuf%SIG(kk(5)+i)
181 watmp(6) = lbuf%SIG(kk(6)+i)
182 IF (iglob == 1)
CALL srota6(
183 1 x, ixs(1,n),jcvt, watmp,
184 2 gama, jhbe, igtyp, isorth)
185 wa(jj + 1) = watmp(1)
186 wa(jj + 2) = watmp(2)
187 wa(jj + 3) = watmp(3)
188 wa(jj + 4) = watmp(4)
189 wa(jj + 5) = watmp(5)
190 wa(jj + 6) = watmp(6)
191 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
194 wa(jj + 7) = lbuf%PLA(i)
196 wa(jj+8)= lbuf%EINT(i)
197 wa(jj+9)= lbuf%RHO(i)
207 ELSEIF (isolnod == 20)
THEN
212 IF(ipart_state(iprt)==0)cycle
213 wa(jj+ 1)= gbuf%VOL(i)
215 wa(jj+ 3)= ixs(nixs,n)
223 wa(jj+11) = gbuf%OFF(i)
228 gama(1)=gbuf%GAMA(kk(1)+i)
229 gama(2)=gbuf%GAMA(kk(2)+i)
230 gama(3)=gbuf%GAMA(kk(3)+i)
231 gama(4)=gbuf%GAMA(kk(4)+i)
232 gama(5)=gbuf%GAMA(kk(5)+i)
233 gama(6)=gbuf%GAMA(kk(6)+i)
248 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
249 watmp(1) = lbuf%SIG(kk(1)+i)
250 watmp(2) = lbuf%SIG(kk(2)+i)
251 watmp(3) = lbuf%SIG(kk(3)+i)
252 watmp(4) = lbuf%SIG(kk(4)+i)
253 watmp(5) = lbuf%SIG(kk(5)+i)
254 watmp(6) = lbuf%SIG(kk(6)+i)
255 IF (iglob == 1)
CALL srota6(
256 1 x, ixs(1,n),jcvt, watmp,
257 2 gama, jhbe, igtyp, isorth)
259 wa(jj + 2) = watmp(2)
260 wa(jj + 3) = watmp(3)
261 wa(jj + 4) = watmp(4)
262 wa(jj + 5) = watmp(5)
263 wa(jj + 6) = watmp(6)
264 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
267 wa(jj + 7) = lbuf%PLA(i)
269 wa(jj+8)= lbuf%EINT(i)
270 wa(jj+9)= lbuf%RHO(i)
280 ELSEIF (tshell == 1)
THEN
285 IF(ipart_state(iprt)==0)cycle
286 wa(jj+ 1)= gbuf%VOL(i)
288 wa(jj+ 3)= ixs(nixs,n)
296 wa(jj+11) = gbuf%OFF(i)
301 gama(1)=gbuf%GAMA(kk(1)+i)
302 gama(2)=gbuf%GAMA(kk(2)+i)
303 gama(3)=gbuf%GAMA(kk(3)+i)
304 gama(4)=gbuf%GAMA(kk(4)+i)
305 gama(5)=gbuf%GAMA(kk(5)+i)
306 gama(6)=gbuf%GAMA(kk(6)+i)
321 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
322 watmp(1) = lbuf%SIG(kk(1)+i)
323 watmp(2) = lbuf%SIG(kk(2)+i)
324 watmp(3) = lbuf%SIG(kk(3)+i)
325 watmp(4) = lbuf%SIG(kk(4)+i)
326 watmp(5) = lbuf%SIG(kk(5)+i)
327 watmp(6) = lbuf%SIG(kk(6)+i)
328 IF (iglob == 1)
CALL srota6(
329 1 x, ixs(1,n),jcvt, watmp,
330 2 gama, jhbe, igtyp, isorth)
331 wa(jj + 1) = watmp(1)
332 wa(jj + 2) = watmp(2)
333 wa(jj + 3) = watmp(3)
334 wa(jj + 4) = watmp(4)
335 wa(jj + 5) = watmp(5)
336 wa(jj + 6) = watmp(6)
337 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
340 wa(jj + 7) = lbuf%PLA(i)
342 wa(jj+8)= lbuf%EINT(i)
343 wa(jj+9)= lbuf%RHO(i)
354 ELSEIF (jhbe == 12 .OR. jhbe == 14 .OR. jhbe == 17 .OR.
355 . isolnod == 4 .AND. isrot == 1 )
THEN
360 IF(ipart_state(iprt)==0)cycle
361 wa(jj+ 1)= gbuf%VOL(i)
363 wa(jj+ 3)= ixs(nixs,n)
371 wa(jj+11) = gbuf%OFF(i)
373 IF (jhbe==17.AND.iint==2) wa(jj+ 9)= 18
378 gama(1)=gbuf%GAMA(kk(1)+i)
379 gama(2)=gbuf%GAMA(kk(2)+i)
380 gama(3)=gbuf%GAMA(kk(3)+i)
381 gama(4)=gbuf%GAMA(kk(4)+i)
382 gama(5)=gbuf%GAMA(kk(5)+i)
383 gama(6)=gbuf%GAMA(kk(6)+i)
398 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
399 watmp(1) = lbuf%SIG(kk(1)+i)
400 watmp(2) = lbuf%SIG(kk(2)+i)
401 watmp(3) = lbuf%SIG(kk(3)+i)
402 watmp(4) = lbuf%SIG(kk(4)+i)
403 watmp(5) = lbuf%SIG(kk(5)+i)
404 watmp(6) = lbuf%SIG(kk(6)+i)
405 IF (iglob == 1)
CALL srota6(
406 1 x, ixs(1,n),jcvt, watmp,
407 2 gama, jhbe, igtyp, isorth)
408 wa(jj + 1) = watmp(1)
409 wa(jj + 2) = watmp(2)
410 wa(jj + 3) = watmp(3)
411 wa(jj + 4) = watmp(4)
412 wa(jj + 5) = watmp(5)
413 wa(jj + 6) = watmp(6)
414 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
417 wa(jj + 7) = lbuf%PLA(i)
419 wa(jj+8)= lbuf%EINT(i)
420 wa(jj+9)= lbuf%RHO(i)
431 ELSEIF (igtyp == 43)
THEN
436 IF (ipart_state(iprt)==0) cycle
437 wa(jj+ 1)= gbuf%VOL(i)
439 wa(jj+ 3)= ixs(nixs,n)
447 wa(jj+11) = gbuf%OFF(i)
458 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,1,1)
459 watmp(1) = lbuf%SIG(kk(1)+i)
460 watmp(2) = lbuf%SIG(kk(2)+i)
461 watmp(3) = lbuf%SIG(kk(3)+i)
462 watmp(4) = lbuf%SIG(kk(4)+i)
463 watmp(5) = lbuf%SIG(kk(5)+i)
464 watmp(6) = lbuf%SIG(kk(6)+i)
465 IF (iglob == 1)
CALL srota6(
466 1 x, ixs(1,n),jcvt, watmp,
467 2 gama, jhbe, igtyp, isorth)
468 wa(jj + 1) = watmp(1)
469 wa(jj + 2) = watmp(2)
470 wa(jj + 3) = watmp(3)
471 wa(jj + 4) = watmp(4)
472 wa(jj + 5) = watmp(5)
473 wa(jj + 6) = watmp(6)
474 wa(jj + 7) = lbuf%EINT(i)
475 wa(jj + 8) = lbuf%PLA(i)
476 IF (elbuf_tab(ng)%BUFLY(1)%L_PLA == 2)
THEN
477 wa(jj + 9) = lbuf%PLA(i+nel)
489 ELSEIF (isolnod == 8 .OR. npt == 1)
THEN
494 IF(ipart_state(iprt)==0)cycle
495 wa(jj+ 1)= gbuf%VOL(i)
497 wa(jj+ 3)= ixs(nixs,n)
505 wa(jj+11) = gbuf%OFF(i)
507 IF (jhbe==1.AND.iint==3) wa(jj+ 9)= 5
511 gama(1)=gbuf%GAMA(kk(1)+i)
512 gama(2)=gbuf%GAMA(kk(2)+i)
513 gama(3)=gbuf%GAMA(kk(3)+i)
514 gama(4)=gbuf%GAMA(kk(4)+i)
531 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
532 watmp(1) = lbuf%SIG(kk(1)+i)
533 watmp(2) = lbuf%SIG(kk(2)+i)
534 watmp(3) = lbuf%SIG(kk(3)+i)
535 watmp(4) = lbuf%SIG(kk(4)+i)
536 watmp(5) = lbuf%SIG(kk(5)+i)
537 watmp(6) = lbuf%SIG(kk(6)+i)
538 IF (iglob == 1)
CALL srota6(
539 1 x, ixs(1,n),jcvt, watmp,
540 2 gama, jhbe, igtyp, isorth)
541 wa(jj + 1) = watmp(1)
542 wa(jj + 2) = watmp(2)
543 wa(jj + 3) = watmp(3)
544 wa(jj + 4) = watmp(4)
545 wa(jj + 5) = watmp(5)
546 wa(jj + 6) = watmp(6)
547 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
550 wa(jj + 7) = lbuf%PLA(i)
552 wa(jj+8)= lbuf%EINT(i)
553 wa(jj+9)= lbuf%RHO(i)
570 IF(ipart_state(iprt)==0)cycle
571 wa(jj+ 1)= gbuf%VOL(i)
573 wa(jj+ 3)= ixs(nixs,n)
581 wa(jj+11) = gbuf%OFF(i)
586 gama(1)=gbuf%GAMA(kk(1)+i)
587 gama(2)=gbuf%GAMA(kk(2)+i)
588 gama(3)=gbuf%GAMA(kk(3)+i)
589 gama(4)=gbuf%GAMA(kk(4)+i)
590 gama(5)=gbuf%GAMA(kk(5)+i)
591 gama(6)=gbuf%GAMA(kk(6)+i)
606 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
607 watmp(1) = lbuf%SIG(kk(1)+i)
608 watmp(2) = lbuf%SIG(kk(2)+i)
609 watmp(3) = lbuf%SIG(kk(3)+i)
610 watmp(4) = lbuf%SIG(kk(4)+i)
611 watmp(5) = lbuf%SIG(kk(5)+i)
612 watmp(6) = lbuf%SIG(kk(6)+i)
613 IF (iglob == 1)
CALL srota6(
614 1 x, ixs(1,n),jcvt, watmp,
615 2 gama, jhbe, igtyp, isorth)
616 wa(jj + 1) = watmp(1)
617 wa(jj + 2) = watmp(2)
619 wa(jj + 4) = watmp(4)
620 wa(jj + 5) = watmp(5)
621 wa(jj + 6) = watmp(6)
622 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
625 wa(jj + 7) = lbuf%PLA(i)
627 wa(jj+8)= lbuf%EINT(i)
628 wa(jj+9)= lbuf%RHO(i)
663 IF (ispmd == 0 .AND. len > 0)
THEN
672 iprt = nint(wap0(j + 2))
673 id = nint(wap0(j + 3))
674 nlay = nint(wap0(j + 4))
675 nptr = nint(wap0(j + 5))
676 npts = nint(wap0(j + 6))
677 nptt = nint(wap0(j + 7))
678 isolnod = nint(wap0(j + 8))
679 jhbe = nint(wap0(j + 9))
680 igtyp = nint(wap0(j +10))
681 ioff = nint(wap0(j + 11))
682 isrot = nint(wap0(j + 12))
683 npt = nlay * nptr * npts * nptt
687 IF (iprt /= iprt0)
THEN
688 IF (izipstrs == 0)
THEN
689 WRITE(iugeo,
'(A)') delimit
691 WRITE(iugeo,
'(A)')
'/INIBRI/STRS_FGLO'
693 WRITE(iugeo,
'(A)')
'/INIBRI/STRS_F'
696 .
'#------------------------ REPEAT ------------------------'
698 .
'# BRICKID NPT ISOLNOD JJHBE'
700 .
'# IF (NPT /= 0) REPEAT K=1,NPT : REPEAT I=1,NPG :'
701 IF ((isolnod == 8 .AND.
702 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
703 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5)
THEN
704 WRITE(iugeo,
'(A)')
'# EINT, RHO'
706 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
709 WRITE(iugeo,
'(A)')
'# EPSP'
710 ELSEIF (igtyp==43 )
THEN
711 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
713 WRITE(iugeo,
'(A)')
'# EINT, EPSP'
716 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
719 WRITE(iugeo,
'(A)')
'# EPSP,EINT, RHO'
723 .
'#---------------------- END REPEAT ---------------------'
724 WRITE(iugeo,
'(A)') delimit
728 WRITE(line,
'(A)') delimit
731 WRITE(line,
'(A)')
'/INIBRI/STRS_FGLO'
734 WRITE(line,
'(A)')
'/INIBRI/STRS_F'
738 .
'#------------------------ REPEAT -----------------------'
741 .
'# BRICKID NPT ISOLNOD JJHBE'
744 .
'# IF(NPT /= 0) REPEAT K=1,NPT : REPEAT I=1,NPG :'
746 IF ((isolnod == 8 .AND.
747 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
748 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5)
THEN
749 WRITE(line,
'(A)')
'# EINT, RHO'
752 WRITE(line,
'(A)')
'# SX, SY, SZ'
754 WRITE(line,
'(A)')'
# SXY, SYZ, SZX'
757 WRITE(line,
'(A)')
'# S1, S2, S3'
759 WRITE(line,
'(A)')
'# S12, S23, S31'
762 WRITE(line,
'(A)')
'# EPSP'
765 ELSEIF (igtyp==43 )
THEN
767 WRITE(line,
'(A)')
'# SX, SY, SZ'
769 WRITE(line,
'(A)')
'# SXY, SYZ, SZX'
772 WRITE(line,
'(A)')
'# S1, S2, S3'
774 WRITE(line,
'(A)')
'# S12, S23, S31'
777 WRITE(line,
'(A)')
'# EINT, EPSP'
782 WRITE(line,
'(A)')
'# SX, SY, SZ'
784 WRITE(line,
'(A)')
'# SXY, SYZ, SZX'
787 WRITE(line,
'(A)')
'# S1, S2, S3'
789 WRITE(line,
'(A)')
'# S12, S23, S31'
792 WRITE(line,
'(A)')
'# EPSP,EINT, RHO'
797 .
'#---------------------- END REPEAT ----------------------'
799 WRITE(line,
'(A)') delimit
805 IF (isolnod == 16)
THEN
806 IF (izipstrs == 0)
THEN
807 WRITE(iugeo,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
809 WRITE(line,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
812 ELSEIF (tshell == 1)
THEN
813 IF (izipstrs == 0)
THEN
814 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
816 WRITE(line,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
821 IF (izipstrs == 0)
THEN
822 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
824 WRITE(line,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
830 IF ((isolnod == 8 .AND.
831 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
832 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0)
833 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jhbe==5)
THEN
835 IF (izipstrs == 0)
THEN
836 WRITE(iugeo,
'(1P2E20.13)')(wap0(j + k),k=8,9)
837 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,6)
838 WRITE(iugeo,
'(1P1E20.13)') wap0(j + 7)
849 IF (izipstrs == 0)
THEN
850 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
851 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=4,6)
852 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=7,9)