42
43
44
46 USE elbufdef_mod
47 USE my_alloc_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "com01_c.inc"
56#include "param_c.inc"
57#include "units_c.inc"
58#include "scr14_c.inc"
59#include "task_c.inc"
60#include "scr16_c.inc"
61#include "vect01_c.inc"
62#include "scr17_c.inc"
63
64
65
66 INTEGER SIZLOC,,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(*)
72
73
74
75 INTEGER I,N,J,K,JJ,LEN,ISOLNOD,IUS,MT,TSHELL,
76 . NLAY,NPTR,NPTS,NPTT,NPTG,NGF,NGL,NN,NG,NEL,MLW,
77 . ID, IPRT0, IPRT, NPG, IPG, IPT, IE,IP,IL,IR,IS,IT,PID,,
78 . KK(6),KHBE
79 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA
80 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA_P0
82 . gama(6),watmp(6)
83 CHARACTER*100 DELIMIT,LINE
84 DATA delimit(1:60)
85 ./'#---1----|----2----|----3----|----4----|----5----|----6----|'/
86 DATA delimit(61:100)
87 ./'----7----|----8----|----9----|----10---|'/
88
89 TYPE(L_BUFEL_) ,POINTER :: LBUF
90 TYPE(G_BUFEL_) ,POINTER :: GBUF
91
92 CALL my_alloc(ptwa,stat_numels)
93 ALLOCATE(ptwa_p0(0:
max(1,stat_numels_g)))
94
95 jj = 0
96 IF (stat_numels==0) GOTO 200
97
98 ie=0
99 DO ng=1,ngroup
100 ity =iparg(5,ng)
101
102 IF (ity == 1) THEN
104 2 mlw ,nel ,nft ,iad ,ity ,
105 3 npt ,jale ,ismstr ,jeul ,jtur ,
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 )
110 lft = 1
111 llt = nel
112 iprt = iparts(lft+nft)
113 pid = ipart(2,iprt)
114 isolnod = iparg(28,ng)
115 tshell = 0
116 IF (igtyp == 20 .OR. igtyp == 21 .OR. igtyp == 22) tshell = 1
117 IF (jcvt == 1 .AND. isorth /=0 ) jcvt=2
118
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
126
127 DO i=1,6
128 kk(i) = nel*(i-1)
129 ENDDO
130
131
132 IF (isolnod == 16) THEN
133
134 DO i=lft,llt
135 n = i + nft
136 iprt=iparts(n)
137 IF(ipart_state(iprt)==0)cycle
138 wa(jj+ 1)= gbuf%VOL(i)
139 wa(jj+ 2)= iprt
140 wa(jj+ 3)= ixs(nixs,n)
141 wa(jj+ 4)= nlay
142 wa(jj+ 5)= nptr
143 wa(jj+ 6)= npts
144 wa(jj+ 7)= nptt
145 wa(jj+ 8)= isolnod
146 wa(jj+ 9)= jhbe
147 wa(jj+10)= igtyp
148 wa(jj+11) = gbuf%OFF(i)
149 wa(jj+12) = isrot
150 jj = jj + 12
151 IF (iglob == 1)THEN
152 IF (jcvt==2 ) THEN
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)
159 ELSE
160 gama(1)=one
161 gama(2)=zero
162 gama(3)=zero
163 gama(4)=zero
164 gama(5)=one
165 gama(6)=zero
166 END IF
167 ENDIF
168
169 is = 1
170 DO it=1,nptt
171 DO ir=1,nptr
172 DO il=1,nlay
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
190 wa(jj + 7) = zero
191 ELSE
192 wa(jj + 7) = lbuf%PLA(i)
193 ENDIF
194 wa(jj+8)= lbuf%EINT(i)
195 wa(jj+9)= lbuf%RHO(i)
196 jj = jj + 9
197 ENDDO
198 ENDDO
199 ENDDO
200
201 ie=ie+1
202 ptwa(ie)=jj
203 ENDDO
204
205 ELSEIF (isolnod == 20) THEN
206
207 DO i=lft,llt
208 n = i + nft
209 iprt=iparts(n)
210 IF(ipart_state(iprt)==0)cycle
211 wa(jj+ 1)= gbuf%VOL(i)
212 wa(jj+ 2)= iprt
213 wa(jj+ 3)= ixs(nixs,n)
214 wa(jj+ 4)= nlay
215 wa(jj+ 5)= nptr
216 wa(jj+ 6)= npts
217 wa(jj+ 7)= nptt
218 wa(jj+ 8)= isolnod
219 wa(jj+ 9)= jhbe
220 wa(jj+10)= igtyp
221 wa(jj+11) = gbuf%OFF(i)
222 wa(jj+12) = isrot
223 jj = jj + 12
224 IF (iglob == 1)THEN
225 IF (jcvt==2 ) THEN
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)
232 ELSE
233 gama(1)=one
234 gama(2)=zero
235 gama(3)=zero
236 gama(4)=zero
237 gama(5)=one
238 gama(6)=zero
239 END IF
240 ENDIF
241
242 il = 1
243 DO it=1,nptt
244 DO is=1,npts
245 DO ir=1,nptr
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
263 wa(jj + 7) = zero
264 ELSE
265 wa(jj + 7) = lbuf%PLA(i)
266 ENDIF
267 wa(jj+8)= lbuf%EINT(i)
268 wa(jj+9)= lbuf%RHO(i)
269 jj = jj + 9
270 ENDDO
271 ENDDO
272 ENDDO
273
274 ie=ie+1
275 ptwa(ie)=jj
276 ENDDO
277
278 ELSEIF (tshell == 1) THEN
279
280 DO i=lft,llt
281 n = i + nft
282 iprt=iparts(n)
283 IF(ipart_state(iprt)==0)cycle
284 wa(jj+ 1)= gbuf%VOL(i)
285 wa(jj+ 2)= iprt
286 wa(jj+ 3)= ixs(nixs,n)
287 wa(jj+ 4)= nlay
288 wa(jj+ 5)= nptr
289 wa(jj+ 6)= npts
290 wa(jj+ 7)= nptt
291 wa(jj+ 8)= isolnod
292 wa(jj+ 9)= jhbe
293 wa(jj+10)= igtyp
294 wa(jj+11) = gbuf%OFF(i)
295 wa(jj+12) = isrot
296 jj = jj + 12
297 IF (iglob == 1)THEN
298 IF (jcvt==2 ) THEN
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)
305 ELSE
306 gama(1)=one
307 gama(2)=zero
308 gama(3)=zero
309 gama(4)=zero
310 gama(5)=one
311 gama(6)=zero
312 END IF
313 ENDIF
314
315 DO ir=1,nptr
316 DO is=1,npts
317 DO it=1,nptt
318 DO il=1,nlay
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
336 wa(jj + 7) = zero
337 ELSE
338 wa(jj + 7) = lbuf%PLA(i)
339 ENDIF
340 wa(jj+8)= lbuf%EINT(i)
341 wa(jj+9)= lbuf%RHO(i)
342 jj = jj + 9
343 ENDDO
344 ENDDO
345 ENDDO
346 ENDDO
347
348 ie=ie+1
349 ptwa(ie)=jj
350 ENDDO
351
352 ELSEIF (jhbe == 12 .OR. jhbe == 14 .OR. jhbe == 17 .OR.
353 . isolnod == 4 .AND. isrot == 1 ) THEN
354
355 DO i=lft,llt
356 n = i + nft
357 iprt=iparts(n)
358 IF(ipart_state(iprt)==0)cycle
359 wa(jj+ 1)= gbuf%VOL(i)
360 wa(jj+ 2)= iprt
361 wa(jj+ 3)= ixs(nixs,n)
362 wa(jj+ 4)= nlay
363 wa(jj+ 5)= nptr
364 wa(jj+ 6)= npts
365 wa(jj+ 7)= nptt
366 wa(jj+ 8)= isolnod
367 wa(jj+ 9)= jhbe
368 wa(jj+10)= igtyp
369 wa(jj+11) = gbuf%OFF(i)
370 wa(jj+12) = isrot
371 IF (jhbe==17.AND.iint==2) wa(jj+ 9)= 18
372
373 jj = jj + 12
374 IF (iglob == 1)THEN
375 IF (jcvt==2 ) THEN
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)
382 ELSE
383 gama(1)=one
384 gama(2)=zero
385 gama(3)=zero
386 gama(4)=zero
387 gama(5)=one
388 gama(6)=zero
389 END IF
390 ENDIF
391
392 DO il=1,nlay
393 DO it=1,nptt
394 DO is=1,npts
395 DO ir=1,nptr
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)
409 wa(jj + 4) = watmp(4)
410 wa(jj + 5) = watmp(5)
411 wa(jj + 6) = watmp(6)
412 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0) THEN
413 wa(jj + 7) = zero
414 ELSE
415 wa(jj + 7) = lbuf%PLA(i)
416 ENDIF
417 wa(jj+8)= lbuf%EINT(i)
418 wa(jj+9)= lbuf%RHO(i)
419 jj = jj + 9
420 ENDDO
421 ENDDO
422 ENDDO
423 ENDDO
424
425
426 ie=ie+1
427 ptwa(ie)=jj
428 ENDDO
429 ELSEIF (igtyp == 43) THEN
430
431 DO i=lft,llt
432 n = i + nft
433 iprt=iparts(n)
434 IF (ipart_state(iprt)==0) cycle
435 wa(jj+ 1)= gbuf%VOL(i)
436 wa(jj+ 2)= iprt
437 wa(jj+ 3)= ixs(nixs,n)
438 wa(jj+ 4)= nlay
439 wa(jj+ 5)= nptr
440 wa(jj+ 6)= npts
441 wa(jj+ 7)= nptt
442 wa(jj+ 8)= isolnod
443 wa(jj+ 9)= jhbe
444 wa(jj+10)= igtyp
445 wa(jj+11) = gbuf%OFF(i)
446 wa(jj+12) = isrot
447 jj = jj + 12
448 gama(1)=one
449 gama(2)=zero
450 gama(3)=zero
451 gama(4)=zero
452 gama(5)=one
453 gama(6)=zero
454
455 DO ir=1,nptr
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)
476 ELSE
477 wa(jj + 9) = zero
478 ENDIF
479 jj = jj + 9
480 ENDDO
481
482
483 ie=ie+1
484 ptwa(ie)=jj
485 ENDDO
486
487 ELSEIF (isolnod == 8 .OR. npt == 1) THEN
488
489 DO i=lft,llt
490 n = i + nft
491 iprt=iparts(n)
492 IF(ipart_state(iprt)==0)cycle
493 wa(jj+ 1)= gbuf%VOL(i)
494 wa(jj+ 2)= iprt
495 wa(jj+ 3)= ixs(nixs,n)
496 wa(jj+ 4)= nlay
497 wa(jj+ 5)= nptr
498 wa(jj+ 6)= npts
499 wa(jj+ 7)= nptt
500 wa(jj+ 8)= isolnod
501 wa(jj+ 9)= jhbe
502 wa(jj+10)= igtyp
503 wa(jj+11) = gbuf%OFF(i)
504 wa(jj+12) = isrot
505 IF (jhbe==1.AND.iint==3) wa(jj+ 9)= 5
506 jj = jj + 12
507 IF (iglob == 1)THEN
508 IF (jcvt==2 ) THEN
509 gama(1)=gbuf%GAMA(kk(1)+i)
510 gama(2)=gbuf%GAMA(kk(2)+i)
511 gama(3)=gbuf%GAMA(kk(3)+i)
512 gama(4)=gbuf%GAMA(kk(4)+i)
513 gama(5)=gbuf%GAMA(kk(5)+i)
514 gama(6)=gbuf%GAMA(kk(6)+i)
515 ELSE
516 gama(1)=one
517 gama(2)=zero
518 gama
519 gama(4)=zero
520 gama(5)=one
521 gama(6)=zero
522 END IF
523 ENDIF
524
525 DO il=1,nlay
526 DO ir=1,nptr
527 DO is=1,npts
528 DO it=1,nptt
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)
539 wa(jj + 1) = watmp(1)
540 wa(jj + 2) = watmp(2)
541 wa(jj + 3) = watmp(3)
542 wa(jj + 4) = watmp(4)
543 wa(jj + 5) = watmp(5)
544 wa(jj + 6) = watmp(6)
545 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA == 0) THEN
546 wa(jj + 7) = zero
547 ELSE
548 wa(jj + 7) = lbuf%PLA(i)
549 ENDIF
550 wa(jj+8)= lbuf%EINT(i)
551 wa(jj+9)= lbuf%RHO(i)
552 jj = jj + 9
553 ENDDO
554 ENDDO
555 ENDDO
556 ENDDO
557
558
559 ie=ie+1
560 ptwa(ie)=jj
561 ENDDO
562
563 ELSE
564
565 DO i=lft,llt
566 n = i + nft
567 iprt=iparts(n)
568 IF(ipart_state(iprt)==0)cycle
569 wa(jj+ 1)= gbuf%VOL(i)
570 wa(jj+ 2)= iprt
571 wa(jj+ 3)= ixs(nixs,n)
572 wa(jj+ 4)= nlay
573 wa(jj+ 5)= nptr
574 wa(jj+ 6)= npts
575 wa(jj+ 7)= nptt
576 wa(jj+ 8)= isolnod
577 wa(jj+ 9)= jhbe
578 wa(jj+10)= igtyp
579 wa(jj+11) = gbuf%OFF(i)
580 wa(jj+12) = isrot
581 jj = jj + 12
582 IF (iglob == 1)THEN
583 IF (jcvt==2 ) THEN
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)
590 ELSE
591 gama(1)=one
592 gama(2)=zero
593 gama(3)=zero
594 gama(4)=zero
595 gama(5)=one
596 gama(6)=zero
597 END IF
598 ENDIF
599
600 DO il=1,nlay
601 DO ir=1,nptr
602 DO is=1,npts
603 DO it=1,nptt
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_PLATHEN
621 wa(jj + 7) = zero
622 ELSE
623 wa(jj + 7) = lbuf%PLA(i)
624 ENDIF
625 wa(jj+8)= lbuf%EINT(i)
626 wa(jj+9)= lbuf%RHO(i)
627 jj = jj + 9
628 ENDDO
629 ENDDO
630 ENDDO
631 ENDDO
632
633
634 ie=ie+1
635 ptwa(ie)=jj
636 ENDDO
637 ENDIF
638 ENDIF
639 ENDDO
640 200 CONTINUE
641
642
643 IF (nspmd == 1) THEN
644
645 ptwa_p0(0)=0
646 DO n=1,stat_numels
647 ptwa_p0(n) = ptwa(n)
648 END DO
649 len=jj
650 DO j=1,len
651 wap0(j) = wa(j)
652 END DO
653 ELSE
654
656 len = 0
658 END IF
659
660
661 IF (ispmd == 0 .AND. len > 0) THEN
662
663 iprt0=0
664 DO n=1,stat_numels_g
665
666 k=stat_indxs(n)
667
668 j=ptwa_p0(k-1)
669
670 iprt = nint(wap0(j + 2))
671 id = nint(wap0(j + 3))
672 nlay = nint(wap0(j + 4))
673 nptr = nint(wap0(j + 5))
674 npts = nint(wap0(j + 6))
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
682 nptg = npt
683
684 IF (ioff >= 1) THEN
685 IF (iprt /= iprt0) THEN
686 IF (izipstrs == 0) THEN
687 WRITE(iugeo,'(A)') delimit
688 IF(iglob == 1)THEN
689 WRITE(iugeo,'(A)')'/INIBRI/STRS_FGLO'
690 ELSE
691 WRITE(iugeo,'(A)')'/INIBRI/STRS_F'
692 ENDIF
693 WRITE(iugeo,'(A)')
694 . '#------------------------ REPEAT ------------------------'
695 WRITE(iugeo,'(A)')
696 . '# BRICKID NPT ISOLNOD JJHBE'
697 WRITE(iugeo,'(A)')
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
701 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5) THEN
702 WRITE(iugeo,'(A)') '# EINT, RHO'
703
704 WRITE(iugeo,'(A/A)') '# S1, S2, S3',
705 . '# S12, S23, S31'
706
707 WRITE(iugeo,'(A)') '# EPSP'
708 ELSEIF (igtyp==43 ) THEN
709 WRITE(iugeo,'(A/A)') '# S1, S2, S3',
710 . '# S12, S23, S31'
711 WRITE(iugeo,'(A)') '# EINT, EPSP'
712 ELSE
713
714 WRITE(iugeo,'(A/A)') '# S1, S2, S3',
715 . '# S12, S23, S31'
716
717 WRITE(iugeo,'(A)') '# EPSP,EINT, RHO'
718 END IF
719
720 WRITE(iugeo,'(A)')
721 . '#---------------------- END REPEAT ---------------------'
722 WRITE(iugeo,'(A)') delimit
723
724
725 ELSE
726 WRITE(line,'(A)') delimit
728 IF(iglob == 1)THEN
729 WRITE(line,'(A)')'/INIBRI/STRS_FGLO'
731 ELSE
732 WRITE(line,'(A)')'/INIBRI/STRS_F'
734 ENDIF
735 WRITE(line,'(A)')
736 . '#------------------------ REPEAT -----------------------'
738 WRITE(line,'(A)')
739 . '# BRICKID NPT ISOLNOD JJHBE'
741 WRITE(line,'(A)')
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
746 . .AND.igtyp /= 43).OR. (isolnod == 4 .AND. isrot == 0).OR.jhbe==5) THEN
747 WRITE(line,'(A)') '# EINT, RHO'
749 IF (iglob == 1)THEN
750 WRITE(line,'(A)')'# SX, SY, SZ'
752 WRITE(line,'(A)')'# SXY, SYZ, SZX'
754 ELSE
755 WRITE(line,'(A)')'# S1, S2, S3'
757 WRITE(line,'(A)')'# S12, S23, S31'
759 ENDIF
760 WRITE(line,'(A)') '# EPSP'
762
763 ELSEIF (igtyp==43 ) THEN
764 IF (iglob == 1)THEN
765 WRITE(line,'(A)')'# SX, SY, SZ'
767 WRITE(line,'(A)')'# SXY, SYZ, SZX'
769 ELSE
770 WRITE(line,'(A)')'# S1, S2, S3'
772 WRITE(line,'(A)')'# S12, S23, S31'
774 ENDIF
775 WRITE(line,'(A)') '# EINT, EPSP'
777
778 ELSE
779 IF (iglob == 1)THEN
780 WRITE(line,'(A)')'# SX, SY, SZ'
782 WRITE(line,'(A)')'# SXY, SYZ, SZX'
784 ELSE
785 WRITE(line,'(A)')'# S1, S2, S3'
787 WRITE(line,'(A)')'# S12, S23, S31'
789 ENDIF
790 WRITE(line,'(A)') '# EPSP,EINT, RHO'
792 END IF
793
794 WRITE(line,'(A)')
795 . '#---------------------- END REPEAT ----------------------'
797 WRITE(line,'(A)') delimit
799 ENDIF
800 iprt0=iprt
801 END IF
802
803 IF (isolnod == 16) THEN
804 IF (izipstrs == 0) THEN
805 WRITE(iugeo,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
806 ELSE
807 WRITE(line,
'(8I10)')
id,npt,isolnod,jhbe,nptr,npts,nptt,nlay
809 ENDIF
810 ELSEIF (tshell == 1) THEN
811 IF (izipstrs == 0) THEN
812 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
813 ELSE
814 WRITE(line,
'(7I10)')
id,npt,isolnod,jhbe,nptr,npts,nlay
816 ENDIF
817 ELSE
818 khbe=jhbe
819 IF (izipstrs == 0) THEN
820 WRITE(iugeo,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
821 ELSE
822 WRITE(line,
'(7I10)')
id,npt,isolnod,khbe,nptr,npts,nptt
824 ENDIF
825 ENDIF
826 j = j + 12
827
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
832 DO ipt = 1, nptg
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)
837 ELSE
841 ENDIF
842 j = j + 9
843 ENDDO
844 ELSE
845
846 DO ipt = 1, nptg
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)
851 ELSE
853 ENDIF
854 j = j + 9
855 ENDDO
856 ENDIF
857 ENDIF
858
859 ENDDO ! n=1,stat_numels_g
860 ENDIF
861 DEALLOCATE(ptwa)
862 DEALLOCATE(ptwa_p0)
863
864 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spmd_rgather9_dp(v, len, vp0, lenp0, iad)
subroutine spmd_stat_pgather(ptv, ptlen, ptv_p0, ptlen_p0)
subroutine strs_txt50(text, length)
subroutine tab_strs_txt50(wap0, cpt, j, sizp0, nbpline)
subroutine srota6(x, ixs, kcvt, tens, gama)