40 2 WA,WAP0 ,IPARTS, IPART_STATE,
41 3 STAT_INDXS,X,IGLOB,IPART,SIZP0)
51#include "implicit_f.inc"
61#include "vect01_c.inc"
66 INTEGER SIZLOC,SIZP0,IGLOB
67 INTEGER IXS(NIXS,*),IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
68 . iparts(*), ipart_state(*), stat_indxs(*),ipart(lipart1,*)
70 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
71 double precision WA(*),WAP0(*)
75 INTEGER I,N,J,K,JJ,LEN,ISOLNOD,IUS,MT,TSHELL,
76 . NLAY,NPTR,NPTS,NPTT,NPTG,NGF,NGL,NN,NG,,MLW,
77 .
id, iprt0, iprt, npg, ipg, ipt, ie,ip,il,ir,is,it,pid,ioff,
79 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA
80 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PTWA_P0
85 ./
'#---1----|----2----|----3----|----4----|----5----|----6----|'/
87 ./
'----7----|----8----|----9----|----10---|'/
89 TYPE(l_bufel_) ,
POINTER
90TYPE(G_BUFEL_) ,
POINTER :: GBUF
92 CALL my_alloc(ptwa,stat_numels)
93 ALLOCATE(ptwa_p0(0:
max(1,stat_numels_g)))
96 IF (stat_numels==0)
GOTO 200
104 2 mlw ,nel ,nft ,iad ,ity ,
105 3 npt ,jale ,ismstr ,jeul
106 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
107 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
108 6 irep ,iint ,igtyp ,israt ,isrot ,
109 7 icsen ,isorth ,isorthg ,ifailure,jsms )
112 iprt = iparts(lft+nft)
114 isolnod = iparg(28,ng)
116 IF (igtyp == 20 .OR. igtyp == 21 .OR. igtyp == 22) tshell = 1
117 IF (jcvt == 1 .AND. isorth /=0 ) jcvt=2
119 gbuf => elbuf_tab(ng)%GBUF
120 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
121 nlay = elbuf_tab(ng)%NLAY
122 nptr = elbuf_tab(ng)%NPTR
123 npts = elbuf_tab(ng)%NPTS
124 nptt = elbuf_tab(ng)%NPTT
125 npt = nptr * npts * nptt * nlay
132 IF (isolnod == 16)
THEN
137 IF(ipart_state(iprt)==0)cycle
138 wa(jj+ 1)= gbuf%VOL(i)
140 wa(jj+ 3)= ixs(nixs,n)
148 wa(jj+11) = gbuf%OFF(i)
153 gama(1)=gbuf%GAMA(kk(1)+i)
154 gama(2)=gbuf%GAMA(kk(2)+i)
155 gama(3)=gbuf%GAMA(kk(3)+i)
156 gama(4)=gbuf%GAMA(kk(4)+i)
157 gama(5)=gbuf%GAMA(kk(5)+i)
158 gama(6)=gbuf%GAMA(kk(6)+i)
173 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
174 watmp(1) = lbuf%SIG(kk(1)+i)
175 watmp(2) = lbuf%SIG(kk(2)+i)
176 watmp(3) = lbuf%SIG(kk(3)+i)
177 watmp(4) = lbuf%SIG(kk(4)+i)
178 watmp(5) = lbuf%SIG(kk(5)+i)
179 watmp(6) = lbuf%SIG(kk(6)+i)
180 IF (iglob == 1)
CALL srota6(
181 1 x, ixs(1,n),jcvt, watmp,
182 2 gama, jhbe, igtyp, isorth)
183 wa(jj + 1) = watmp(1)
184 wa(jj + 2) = watmp(2)
185 wa(jj + 3) = watmp(3)
186 wa(jj + 4) = watmp(4)
187 wa(jj + 5) = watmp(5)
188 wa(jj + 6) = watmp(6)
189 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
192 wa(jj + 7) = lbuf%PLA(i)
194 wa(jj+8)= lbuf%EINT(i)
195 wa(jj+9)= lbuf%RHO(i)
210 IF(ipart_state(iprt)==0)cycle
211 wa(jj+ 1)= gbuf%VOL(i)
213 wa(jj+ 3)= ixs(nixs,n)
221 wa(jj+11) = gbuf%OFF(i)
226 gama(1)=gbuf%GAMA(kk(1)+i)
227 gama(2)=gbuf%GAMA(kk(2)+i)
228 gama(3)=gbuf%GAMA(kk(3)+i)
229 gama(4)=gbuf%GAMA(kk(4)+i)
230 gama(5)=gbuf%GAMA(kk(5)+i)
231 gama(6)=gbuf%GAMA(kk(6)+i)
246 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
247 watmp(1) = lbuf%SIG(kk(1)+i)
248 watmp(2) = lbuf%SIG(kk(2)+i)
249 watmp(3) = lbuf%SIG(kk(3)+i)
250 watmp(4) = lbuf%SIG(kk(4)+i)
251 watmp(5) = lbuf%SIG(kk(5)+i)
252 watmp(6) = lbuf%SIG(kk(6)+i)
253 IF (iglob == 1)
CALL srota6(
254 1 x, ixs(1,n),jcvt, watmp,
255 2 gama, jhbe, igtyp, isorth)
256 wa(jj + 1) = watmp(1)
257 wa(jj + 2) = watmp(2)
258 wa(jj + 3) = watmp(3)
259 wa(jj + 4) = watmp(4)
260 wa(jj + 5) = watmp(5)
261 wa(jj + 6) = watmp(6)
262 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
265 wa(jj + 7) = lbuf%PLA(i)
267 wa(jj+8)= lbuf%EINT(i)
268 wa(jj+9)= lbuf%RHO(i)
278 ELSEIF (tshell == 1)
THEN
283 IF(ipart_state(iprt)==0)cycle
284 wa(jj+ 1)= gbuf%VOL(i)
286 wa(jj+ 3)= ixs(nixs,n)
294 wa(jj+11) = gbuf%OFF(i)
299 gama(1)=gbuf%GAMA(kk(1)+i)
300 gama(2)=gbuf%GAMA(kk(2)+i)
301 gama(3)=gbuf%GAMA(kk(3)+i)
302 gama(4)=gbuf%GAMA(kk(4)+i)
303 gama(5)=gbuf%GAMA(kk(5)+i)
304 gama(6)=gbuf%GAMA(kk(6)+i)
319 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
320 watmp(1) = lbuf%SIG(kk(1)+i)
321 watmp(2) = lbuf%SIG(kk(2)+i)
322 watmp(3) = lbuf%SIG(kk(3)+i)
323 watmp(4) = lbuf%SIG(kk(4)+i)
324 watmp(5) = lbuf%SIG(kk(5)+i)
325 watmp(6) = lbuf%SIG(kk(6)+i)
326 IF (iglob == 1)
CALL srota6(
327 1 x, ixs(1,n),jcvt, watmp,
328 2 gama, jhbe, igtyp, isorth)
329 wa(jj + 1) = watmp(1)
330 wa(jj + 2) = watmp(2)
331 wa(jj + 3) = watmp(3)
332 wa(jj + 4) = watmp(4)
333 wa(jj + 5) = watmp(5)
334 wa(jj + 6) = watmp(6)
335 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
338 wa(jj + 7) = lbuf%PLA(i)
340 wa(jj+8)= lbuf%EINT(i)
341 wa(jj+9)= lbuf%RHO(i)
352 ELSEIF (jhbe == 12 .OR. jhbe == 14 .OR. jhbe == 17 .OR.
353 . isolnod == 4 .AND. isrot == 1 )
THEN
358 IF(ipart_state(iprt)==0)cycle
359 wa(jj+ 1)= gbuf%VOL(i)
361 wa(jj+ 3)= ixs(nixs,n)
369 wa(jj+11) = gbuf%OFF(i)
371 IF (jhbe==17.AND.iint==2) wa(jj+ 9)= 18
376 gama(1)=gbuf%GAMA(kk(1)+i)
377 gama(2)=gbuf%GAMA(kk(2)+i)
378 gama(3)=gbuf%GAMA(kk(3)+i)
379 gama(4)=gbuf%GAMA(kk(4)+i)
380 gama(5)=gbuf%GAMA(kk(5)+i)
381 gama(6)=gbuf%GAMA(kk(6)+i)
396 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
397 watmp(1) = lbuf%SIG(kk(1)+i)
398 watmp(2) = lbuf%SIG(kk(2)+i)
399 watmp(3) = lbuf%SIG(kk(3)+i)
400 watmp(4) = lbuf%SIG(kk(4)+i)
401 watmp(5) = lbuf%SIG(kk(5)+i)
402 watmp(6) = lbuf%SIG(kk(6)+i)
403 IF (iglob == 1)
CALL srota6(
404 1 x, ixs(1,n),jcvt, watmp,
405 2 gama, jhbe, igtyp, isorth)
406 wa(jj + 1) = watmp(1)
407 wa(jj + 2) = watmp(2)
408 wa(jj + 3) = watmp(3)
411 wa(jj + 6) = watmp(6)
412 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
415 wa(jj + 7) = lbuf%PLA(i)
417 wa(jj+8)= lbuf%EINT(i)
418 wa(jj+9)= lbuf%RHO(i)
429 ELSEIF (igtyp == 43)
THEN
434 IF (ipart_state(iprt)==0) cycle
435 wa(jj+ 1)= gbuf%VOL(i)
437 wa(jj+ 3)= ixs(nixs,n)
445 wa(jj+11) = gbuf%OFF(i)
456 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,1,1)
457 watmp(1) = lbuf%SIG(kk(1)+i)
458 watmp(2) = lbuf%SIG(kk(2)+i)
459 watmp(3) = lbuf%SIG(kk(3)+i)
460 watmp(4) = lbuf%SIG(kk(4)+i)
461 watmp(5) = lbuf%SIG(kk(5)+i)
462 watmp(6) = lbuf%SIG(kk(6)+i)
463 IF (iglob == 1)
CALL srota6(
464 1 x, ixs(1,n),jcvt, watmp,
465 2 gama, jhbe, igtyp, isorth)
466 wa(jj + 1) = watmp(1)
467 wa(jj + 2) = watmp(2)
468 wa(jj + 3) = watmp(3)
469 wa(jj + 4) = watmp(4)
470 wa(jj + 5) = watmp(5)
471 wa(jj + 6) = watmp(6)
472 wa(jj + 7) = lbuf%EINT(i)
473 wa(jj + 8) = lbuf%PLA(i)
474 IF (elbuf_tab(ng)%BUFLY(1)%L_PLA == 2)
THEN
475 wa(jj + 9) = lbuf%PLA(i+nel)
487 ELSEIF (isolnod == 8 .OR. npt == 1)
THEN
492 IF(ipart_state(iprt)==0)cycle
493 wa(jj+ 1)= gbuf%VOL(i)
495 wa(jj+ 3)= ixs(nixs,n)
503 wa(jj+11) = gbuf%OFF(i)
505 IF (jhbe==1.AND.iint==3) wa(jj+ 9)= 5
509 gama(1)=gbuf%GAMA(kk(1)+i)
510 gama(2)=gbuf%GAMA(kk(2)+i)
511 gama(3)=gbuf%GAMA(kk(3)+i)
513 gama(5)=gbuf%GAMA(kk(5)+i)
514 gama(6)=gbuf%GAMA(kk(6)+i)
529 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
530 watmp(1) = lbuf%SIG(kk(1)+i)
531 watmp(2) = lbuf%SIG(kk(2)+i)
532 watmp(3) = lbuf%SIG(kk(3)+i)
533 watmp(4) = lbuf%SIG(kk(4)+i)
534 watmp(5) = lbuf%SIG(kk(5)+i)
535 watmp(6) = lbuf%SIG(kk(6)+i)
536 IF (iglob == 1)
CALL srota6(
537 1 x, ixs(1,n),jcvt, watmp,
538 2 gama, jhbe, igtyp, isorth)
540 wa(jj + 2) = watmp(2)
541 wa(jj + 3) = watmp(3)
542 wa(jj + 4) = watmp(4)
548 wa(jj + 7) = lbuf%PLA(i)
550 wa(jj+8)= lbuf%EINT(i)
551 wa(jj+9)= lbuf%RHO(i)
568 IF(ipart_state(iprt)==0)cycle
569 wa(jj+ 1)= gbuf%VOL(i)
571 wa(jj+ 3)= ixs(nixs,n)
579 wa(jj+11) = gbuf%OFF(i)
584 gama(1)=gbuf%GAMA(kk(1)+i)
585 gama(2)=gbuf%GAMA(kk(2)+i)
586 gama(3)=gbuf%GAMA(kk(3)+i)
587 gama(4)=gbuf%GAMA(kk(4)+i)
588 gama(5)=gbuf%GAMA(kk(5)+i)
589 gama(6)=gbuf%GAMA(kk(6)+i)
604 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
605 watmp(1) = lbuf%SIG(kk(1)+i)
606 watmp(2) = lbuf%SIG(kk(2)+i)
607 watmp(3) = lbuf%SIG(kk(3)+i)
608 watmp(4) = lbuf%SIG(kk(4)+i)
609 watmp(5) = lbuf%SIG(kk(5)+i)
610 watmp(6) = lbuf%SIG(kk(6)+i)
611 IF (iglob == 1)
CALL srota6(
612 1 x, ixs(1,n),jcvt, watmp,
613 2 gama, jhbe, igtyp, isorth)
614 wa(jj + 1) = watmp(1)
615 wa(jj + 2) = watmp(2)
616 wa(jj + 3) = watmp(3)
617 wa(jj + 4) = watmp(4)
618 wa(jj + 5) = watmp(5)
619 wa(jj + 6) = watmp(6)
620 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0)
THEN
623 wa(jj + 7) = lbuf%PLA(i)
625 wa(jj+8)= lbuf%EINT(i)
626 wa(jj+9)= lbuf%RHO(i)
661 IF (ispmd == 0 .AND. len > 0)
THEN
670 iprt = nint(wap0(j + 2))
671 id = nint(wap0(j + 3))
672 nlay = nint(wap0(j + 4))
673 nptr = nint(wap0(j + 5))
675 nptt = nint(wap0(j + 7))
676 isolnod = nint(wap0(j + 8))
677 jhbe = nint(wap0(j + 9))
678 igtyp = nint(wap0(j +10))
679 ioff = nint(wap0(j + 11))
680 isrot = nint(wap0(j + 12))
681 npt = nlay * nptr * npts * nptt
685 IF (iprt /= iprt0)
THEN
686 IF (izipstrs == 0)
THEN
687 WRITE(iugeo,
'(A)') delimit
689 WRITE(iugeo,
'(A)')
'/INIBRI/STRS_FGLO'
691 WRITE(iugeo,
'(A)')
'/INIBRI/STRS_F'
694 .
'#------------------------ REPEAT ------------------------'
696 .
'# BRICKID NPT ISOLNOD JJHBE'
698 .
'# IF (NPT /= 0) REPEAT K=1,NPT : REPEAT I=1,NPG :'
699 IF ((isolnod == 8 .AND.
700 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
701 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5)
THEN
702 WRITE(iugeo,
'(A)')
'# EINT, RHO'
704 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
707 WRITE(iugeo,
'(A)')
'# EPSP'
708 ELSEIF (igtyp==43 )
THEN
709 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
711 WRITE(iugeo,
'(A)')
'# EINT, EPSP'
714 WRITE(iugeo,
'(A/A)')
'# S1, S2, S3',
717 WRITE(iugeo,
'(A)')
'# EPSP,EINT, RHO'
721 .
'#---------------------- END REPEAT ---------------------'
722 WRITE(iugeo,
'(A)') delimit
726 WRITE(line,
'(A)') delimit
729 WRITE(line,
'(A)')
'/INIBRI/STRS_FGLO'
732 WRITE(line,
'(A)')
'/INIBRI/STRS_F'
736 .
'#------------------------ REPEAT -----------------------'
739 .
'# BRICKID NPT ISOLNOD JJHBE'
742 .
'# IF(NPT /= 0) REPEAT K=1,NPT : REPEAT I=1,NPG :'
744 IF ((isolnod == 8 .AND.
745 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
746 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5)
THEN
747 WRITE(line,
'(A)')
'# EINT, RHO'
750 WRITE(line,
'(A)')
'# SX, SY, SZ'
752 WRITE(line,
'(A)')
'# SXY, SYZ, SZX'
755 WRITE(line,
'(A)')
'# S1, S2, S3'
757 WRITE(line,
'(A)')
'# S12, S23, S31'
760 WRITE(line,
'(A)')
'# EPSP'
763 ELSEIF (igtyp==43 )
THEN
765 WRITE(line,
'(A)')
'# SX, SY, SZ'
767 WRITE(line,
'(A)')
'# SXY, SYZ, SZX'
770 WRITE(line
'(A)')
'# S1, S2, S3'
772 WRITE(line,
'(A)''# S12, S23, S31'
775 WRITE(line,
'(A)')
'# EINT, EPSP'
780 WRITE(line
'(A)')
'# SX, SY, SZ'
782 WRITE(line,
'(A)')
'# SXY, SYZ, SZX'
785 WRITE(line,
'(A)')
'# S1, S2, S3'
787 WRITE(line,
'(A)')
'# S12, S23, S31'
790 WRITE(line,
'(A)')
'# EPSP,EINT, RHO'
795 .
'#---------------------- END REPEAT ----------------------'
797 WRITE(line,
'(A)') delimit
803 IF (isolnod == 16)
THEN
804 IF (izipstrs == 0)
THEN
805 WRITE(iugeo,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
807 WRITE(line,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
810 ELSEIF (tshell == 1)
THEN
811 IF (izipstrs == 0)
THEN
812 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
814 WRITE(line,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
819 IF (izipstrs == 0)
THEN
820 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
822 WRITE(line,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
828 IF ((isolnod == 8 .AND.
829 . (jhbe==1.OR.jhbe==2.OR.jhbe==12.OR.jhbe==24.OR.jhbe==17 .OR. jhbe == 18)
830 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0)
831 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jhbe==5)
THEN
833 IF (izipstrs == 0)
THEN
834 WRITE(iugeo,
'(1P2E20.13)')(wap0(j + k),k=8,9)
835 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,6)
836 WRITE(iugeo,
'(1P1E20.13)') wap0(j + 7)
847 IF (izipstrs == 0)
THEN
848 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=1,3)
849 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=4,6)
850 WRITE(iugeo,
'(1P3E20.13)')(wap0(j + k),k=7,9)