34 . P0ARS ,WASZ ,IXS ,GEO ,ELBUF_TAB,
35 . IXR ,IXP ,IXT ,OUTPUT , LIPART1 ,
36 . NPART ,IPART,NUMSPH,IPARTSP )
45#include "implicit_f.inc"
56 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),
57 . IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
58 . WASZ,P0ARS,IXS(,*),IXR(NIXR,*),IXP(NIXP,*),
62 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
63 TYPE(output_),
INTENT(INOUT) :: OUTPUT
64 INTEGER,
INTENT(IN) :: LIPART1
65 INTEGER,
INTENT(IN) :: NPART
66 INTEGER,
INTENT(IN) :: NUMSPH
67 INTEGER,
INTENT(IN) :: IPARTSP(NUMSPH)
68 INTEGER,
INTENT(IN) :: IPART(LIPART1,NPART)
72 INTEGER JJ,NN,ITY,IAD,NFT,LFT,LLT,NPT,NPTM,ISTRAIN,IHBE,ISH3N,
73 . NUVAR,MLW,NG,NEL,I,NPG,MPT,ISROT,
74 . RWASZ,WASZ2,P0ARSZ2,RWASZ2,JHBE,ISOLNOD,
75 . nlay,nptr,npts,nptt,nptg,igtyp,icsig,
76 . npts0,nptr0,nptt0,nuvarr,nvarf,il,npt_all,iprop,
77 . el_fix,el_var,ismstr,nfail,iprt,mt
78 TYPE(buf_fail_) ,
POINTER :: FBUF
83 IF (stat_c(1) == 1.OR.stat_c(2) == 1.OR.stat_r(1) == 1.OR.
84 . stat_p(1) == 1.OR.stat_p(3) == 1.OR.stat_t(1) == 1.OR.
85 . output%STATE%STAT_SPH(3) == 1 )
THEN
87 wasz = 3*
max(stat_numelc,stat_numeltg,stat_numelr,stat_numelp,stat_numelt)
88 wasz =
max(wasz,4*output%STATE%STAT_NUMELSPH)
90 rwasz = 3*
max(stat_numelc_g,stat_numeltg_g,stat_numelr_g,stat_numelp_g,stat_numelt_g)
91 rwasz=
max(rwasz,4*output%STATE%STAT_NUMELSPH_G)
92 IF (ispmd == 0) p0ars = rwasz
98 IF (stat_c(3) == 1)
THEN
106 IF (ity == 3 .OR. ity == 7)
THEN
109 nptm =
max(1,iabs(npt))
110 nlay = elbuf_tab(ng)%NLAY
111 nptr = elbuf_tab(ng)%NPTR
112 npts = elbuf_tab(ng)%NPTS
115 IF (ity==3 .AND. ihbe==23) npg=4
119 IF (igtyp == 51 .OR. igtyp == 52)
THEN
122 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
126 wasz2 = wasz2+(6+nptm*npg)*nel
132 IF (ispmd == 0) p0arsz2 = rwasz2
135 p0ars=
max(p0ars,p0arsz2)+6
136 wasz =
max(wasz,wasz2)
141 IF (stat_c(4) == 1)
THEN
149 IF (ity == 3 .OR. ity == 7)
THEN
154 nlay = elbuf_tab(ng)%NLAY
155 nptr = elbuf_tab(ng)%NPTR
156 npts = elbuf_tab(ng)%NPTS
159 IF (ity==3.AND.ihbe==23) npg=4
163 IF (igtyp == 51 .OR. igtyp == 52)
THEN
166 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
170 IF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23) mpt=0
172 wasz2 = wasz2 + 5*nel
174 wasz2 = wasz2 + (9*npg+7)*nel
176 wasz2 = wasz2 + (6*npg*mpt+7)*nel
183 IF (ispmd == 0) p0arsz2 = rwasz2
186 p0ars=
max(p0ars,p0arsz2)+6
187 wasz =
max(wasz,wasz2)
192 IF (stat_c(10) == 1)
THEN
200 IF (ity == 3 .OR. ity == 7)
THEN
205 nlay = elbuf_tab(ng)%NLAY
206 nptr = elbuf_tab(ng)%NPTR
216 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
219 IF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23) mpt=0
221 wasz2 = wasz2 + 5*nel
223 wasz2 = wasz2 + (13*npg+7)*nel
225 wasz2 = wasz2 + (8*npg*mpt+7)*nel
232 IF (ispmd == 0) p0arsz2 = rwasz2
235 p0ars=
max(p0ars,p0arsz2)+6
236 wasz =
max(wasz,wasz2)
241 IF (stat_c(11) == 1)
THEN
248 IF (ity == 3.OR.ity == 7)
THEN
252 nlay = elbuf_tab(ng)%NLAY
255 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
264 wasz2 = wasz2 + (7*npg*mpt+6)*nel
270 IF (ispmd == 0) p0arsz2 = rwasz2
273 p0ars=
max(p0ars,p0arsz2)+6
274 wasz =
max(wasz,wasz2)
279 IF (stat_c(5) == 1)
THEN
286 IF (ity == 3.OR.ity == 7)
THEN
290 IF (mlw == 1.OR.mlw == 3.OR.mlw == 23) mpt=0
296 wasz2 = wasz2 + 5*nel
297 wasz2 = wasz2 + (8*npg+1)*nel
303 IF (ispmd == 0) p0arsz2 = rwasz2
306 p0ars=
max(p0ars,p0arsz2)+6
307 wasz =
max(wasz,wasz2)
311 IF (stat_c(6) == 1)
THEN
320 IF (ity == 3.OR.ity == 7)
THEN
327 istrain= iparg(44,ng)
328 nlay = elbuf_tab(ng)%NLAY
329 nptr = elbuf_tab(ng)%NPTR
330 npts = elbuf_tab(ng)%NPTS
332 IF (mlw == 25.OR.mlw == 27.OR.mlw == 32) istrain=1
337 nuvar =
max(nuvar,ipm(8,ixc(1,i+nft)))
341 nuvar =
max(nuvar,ipm(8,ixtg(1,i+nft)))
346 ELSEIF (mlw == 87)
THEN
347 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT + 12
348 ELSEIF (mlw == 112)
THEN
350 ELSE IF (mlw == 36)
THEN
358 IF (igtyp == 51 .OR. igtyp == 52)
THEN
361 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
367 wasz2 = wasz2 + nel*(6+npg*nptm*nuvar)
373 IF (ispmd == 0) p0arsz2 = rwasz2
376 p0ars=
max(p0ars,p0arsz2)+6
377 wasz =
max(wasz,wasz2)
382 IF (stat_c(7) == 1)
THEN
391 IF (ity == 3.OR.ity == 7)
THEN
398 wasz2 = wasz2 + nel*(9+npt*5)
404 IF (ispmd == 0) p0arsz2 = rwasz2
407 p0ars=
max(p0ars,p0arsz2)+6
408 wasz =
max(wasz,wasz2)
413 IF (stat_c(8) == 1)
THEN
422 IF (ity == 3.OR.ity == 7)
THEN
428 istrain= iparg(44,ng)
430 nptr = elbuf_tab(ng)%NPTR
431 npts = elbuf_tab(ng)%NPTS
433 IF (mlw == 25.OR.mlw == 27.OR.mlw == 32) istrain=1
438 nuvarr =
max(nuvarr,ipm(221,ixc(1,i+nft)) + 1)
442 nuvarr =
max(nuvarr,ipm(221,ixtg(1,i+nft)) + 1)
451 IF (igtyp == 51 .OR. igtyp == 52)
THEN
454 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
460 wasz2 = wasz2 + nel*(7 + npg*(3+npt *
max(1,nuvarr)* 15))
466 IF (ispmd == 0) p0arsz2 = rwasz2
469 p0ars=
max(p0ars,p0arsz2)+6
470 wasz =
max(wasz,wasz2)
477 IF (stat_s(4)==1 .OR. stat_s(8)==1)
THEN
482 nlay = elbuf_tab(ng)%NLAY
483 nptr = elbuf_tab(ng)%NPTR
484 npts = elbuf_tab(ng)%NPTS
485 nptt = elbuf_tab(ng)%NPTT
486 npt = nlay*nptr*npts*nptt
488 wasz2 = wasz2 + nel * (12 + 9 * npt)
493 IF (ispmd== 0) p0arsz2 = rwasz2
496 p0ars=
max (p0ars,p0arsz2)+8
497 wasz =
max(wasz,wasz2)
503 IF (stat_s(5)==1 .OR. stat_s(9)==1)
THEN
508 nlay = elbuf_tab(ng)%NLAY
509 nptr = elbuf_tab(ng)%NPTR
510 npts = elbuf_tab(ng)%NPTS
511 nptt = elbuf_tab(ng)%NPTT
512 npt = nlay*nptr*npts*nptt
514 wasz2 = wasz2 + nel * (11 + 6 * npt)
519 IF (ispmd==0 ) p0arsz2 = rwasz2
522 p0ars=
max(p0ars,p0arsz2)+6
523 wasz =
max(wasz,wasz2)
530 IF (stat_s(6)==1)
THEN
537 nlay = elbuf_tab(ng)%NLAY
538 nptr = elbuf_tab(ng)%NPTR
539 npts = elbuf_tab(ng)%NPTS
540 nptt = elbuf_tab(ng)%NPTT
541 npt = nlay*nptr*npts*nptt
547 nuvar =
max(nuvar,ipm(8,ixs(1,i+nft)))
550 wasz2 = wasz2 + nel * (11 + npt * nuvar)
555 IF (ispmd==0 ) p0arsz2 = rwasz2
558 p0ars=
max(p0ars,p0arsz2)+6
559 wasz =
max(wasz,wasz2)
566 IF (stat_s(7)==1.OR.stat_s(10)==1)
THEN
571 nlay = elbuf_tab(ng)%NLAY
572 nptr = elbuf_tab(ng)%NPTR
573 npts = elbuf_tab(ng)%NPTS
574 nptt = elbuf_tab(ng)%NPTT
575 npt = nlay*nptr*npts*nptt
577 wasz2 = wasz2 + nel * (11 + nlay * 6)
582 IF (ispmd ==0) p0arsz2 = rwasz2
585 p0ars=
max(p0ars,p0arsz2)+14
586 wasz =
max(wasz,wasz2)
593 IF (stat_s(11)==1)
THEN
597 nfail =
max(nfail,elbuf_tab(ng)%BUFLY(1)%NFAIL)
602 fbuf => elbuf_tab(ng)%BUFLY(1)%FAIL(1,1,1)
603 nvarf =
max(nvarf,fbuf%FLOC(1)%NVAR)
605 ENDIF !
IF (nfail > 0)
612 nlay = elbuf_tab(ng)%NLAY
613 nptr = elbuf_tab(ng)%NPTR
614 npts = elbuf_tab(ng)%NPTS
615 nptt = elbuf_tab(ng)%NPTT
616 npt = nlay*nptr*npts*nptt
618 wasz2 = wasz2 + nel * (10 + 5 * (npt * (nvarf+1) + 4) )
623 IF (ispmd==0 ) p0arsz2 = rwasz2
626 p0ars=
max(p0ars,p0arsz2)+6
627 wasz =
max(wasz,wasz2)
634 IF (stat_r(1) == 1)
THEN
642 igtyp = igeo(11,iprop)
647 ELSEIF (igtyp == 12)
THEN
649 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25
650 . .OR. igtyp == 23 )
THEN
652 ELSEIF (igtyp == 26)
THEN
654 ELSEIF (igtyp == 29 .OR. igtyp == 30 .OR. igtyp == 31 .OR.
655 . igtyp == 32 .OR. igtyp == 33 .OR. igtyp == 35 .OR.
656 . igtyp == 36 .OR. igtyp == 44 .OR. igtyp == 45 .OR.
662 nuvar = nint(geo(25,iprop))
663 el_var = el_var + nuvar
666 wasz2 = wasz2 + nel * el_var
671 IF (ispmd == 0) p0arsz2 = rwasz2
674 p0ars=
max(p0ars,p0arsz2
682 IF (stat_p(1) == 1)
THEN
691 igtyp = igeo(11,iprop)
696 ELSEIF (igtyp == 18)
THEN
697 el_var = 4*npt + el_fix
699 el_var = el_var + nuvar
702 wasz2 = wasz2 + nel * el_var
707 IF (ispmd == 0) p0arsz2 = rwasz2
710 p0ars=
max(p0ars,p0arsz2)+6
711 wasz =
max(wasz,wasz2)
718 IF (stat_p(3) == 1)
THEN
731 IF (igtyp == 18 .AND. mlw == 36)
THEN
733 nuvar =
max(nuvar,ipm(8,ixp(1,i+nft)))
737 wasz2 = wasz2 + nel*(6+npt*nuvar)
743 IF (ispmd == 0) p0arsz2 = rwasz2
746 p0ars=
max(p0ars,p0arsz2)+6
747 wasz =
max(wasz,wasz2)
754 IF (stat_t(1) == 1)
THEN
763 wasz2 = wasz2 + nel * el_fix
768 IF (ispmd == 0) p0arsz2 = rwasz2
771 p0ars=
max(p0ars,p0arsz2)+6
772 wasz =
max(wasz,wasz2)
779 IF (stat_s(13)==1)
THEN
788 wasz2 = wasz2 + nel * 7
789 IF (ismstr==1.OR.ismstr>=10)
THEN
790 wasz2 = wasz2 + nel * isolnod*3
791 IF (isolnod==4 .AND. isrot>0) wasz2 = wasz2 + nel
797 IF (ispmd==0 ) p0arsz2 = rwasz2
800 p0ars=
max(p0ars,p0arsz2)+6
801 wasz =
max (wasz,wasz2)
805 IF (output%STATE%STAT_SPH(3) == 1)
THEN
816 nuvar =
max(nuvar,ipm(8,mt))
818 wasz2 = wasz2+(nuvar+12)*nel
823 IF (ispmd == 0) p0arsz2 = rwasz2
826 p0ars=
max(p0ars,p0arsz2)+6
827 wasz =
max(wasz,wasz2)