30
31
32
33
34
35
36#include "implicit_f.inc"
37
38
39
40#include "vect01_c.inc"
41#include "com01_c.inc"
42#include "task_c.inc"
43#include "param_c.inc"
44#include "tabsiz_c.inc"
45
46
47
48 INTEGER,INTENT(IN) :: SITHBUF
49 INTEGER IPARG(NPARG,NGROUP),ITHBUF(SITHBUF)
50 INTEGER, INTENT(inout) :: WA_SIZE,NTHGRP2
51 INTEGER, DIMENSION(2*NTHGRP2+1), INTENT(inout) :: INDEX_WA_QUAD
52 INTEGER, DIMENSION(NITHGR,*), INTENT(in) :: ITHGRP
53
54
55
56 INTEGER II, I, J, K, N, IH, IP, NG, MTE, NUVAR,
57 . NEL
58 LOGICAL :: BOOL
59 INTEGER :: J_FIRST,NITER,IADB,NN,IADV,NVAR,ITYP,IJK
60 INTEGER, DIMENSION(NTHGRP2) :: INDEX_QUAD
61
62
63
64 ijk = 0
65 wa_size = 0
66 index_quad(1:nthgrp2) = 0
67 ijk = 0
68 DO niter=1,nthgrp2
69 ityp=ithgrp(2,niter)
70 nn =ithgrp(4,niter)
71 iadb =ithgrp(5,niter)
73 iadv=ithgrp(7,niter)
74 ii=0
75 IF(ityp==2.OR.ityp==117)THEN
76
77 nuvar = 0
78 ii=0
79 ih=iadb
80 IF(ityp == 117) ityp = 7
81
82
83 DO WHILE((ithbuf(ih+nn)/=ispmd).AND.(ih<iadb+nn))
84 ih = ih + 1
85 ENDDO
86
87 IF (ih>=iadb+nn) GOTO 666
88
89
90 DO ng=1,ngroup
91 ity=iparg(5,ng)
92 IF (ity == ityp) THEN
93 nft = iparg(3,ng)
94 mte = iparg(1,ng)
95 nel = iparg(2,ng)
96 IF(mte /= 13) THEN
97
98 DO i=1,nel
99 n=i+nft
100 k=ithbuf(ih)
101 ip=ithbuf(ih+nn)
102
103 IF (k==n)THEN
104 ih=ih+1
105
106 ii = ((ih-1) - iadb)*
nvar
107 DO WHILE((ithbuf(ih+nn)/=ispmd).AND.(ih<iadb+nn))
108 ih = ih + 1
109 ENDDO
110 IF (ih > iadb+nn) GOTO 666
111 wa_size = wa_size +
nvar + 1
112 ENDIF
113 ENDDO
114
115 ENDIF
116 ENDIF
117 ENDDO
118
119 ENDIF
120 666 continue
121 index_quad(niter) = wa_size
122 ENDDO
123
124
125 j_first = 0
126 bool = .true.
127 DO i=1,nthgrp2
128 IF(bool.EQV..true.) THEN
129 IF( index_quad(i)/=0 ) THEN
130 bool = .false.
131 j_first = i
132 ENDIF
133 ENDIF
134 ENDDO
135
136 j = 0
137 IF(j_first>0) THEN
138 j=j+1
139 index_wa_quad(j) = index_quad(j_first)
140 j=j+1
141 index_wa_quad(j) = j_first
142 DO i=j_first+1,nthgrp2
143 IF( index_quad(i)-index_quad(i-1)>0 ) THEN
144 j=j+1
145 index_wa_quad(j) = index_quad(i)
146 j=j+1
147 index_wa_quad(j) = i
148 ENDIF
149 ENDDO
150 ENDIF
151 index_wa_quad(2*nthgrp2+1) = j
152
153 RETURN
integer function nvar(text)