43
44
45
46 USE my_alloc_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59#include "com04_c.inc"
60#include "scr17_c.inc"
61
62
63
64 INTEGER FLAG,NGRPRT
65 INTEGER IPART(LIPART1,*),ISUBMOD(*)
66 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
67
68 TYPE (SUBSET_) , DIMENSION(NSUBS) :: SUBSET
69 TYPE (GROUP_) , DIMENSION(NGRPRT) :: IGRPART
70
71
72
73 INTEGER I,J,K,L,ID,NEL,IGS,JREC,
74 . IT0,IT1,IT2,IT3,IT4,IT5,
75 . FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,IBID,N1,N2,OK,NINDX,
76 . NN,IDMIN,IDMAX,OFFSET,NENTITY
77 INTEGER J10(10),BUFTMP(NSUBS+NPART),INDX(NSUBS+NPART),
78 . LIST_IGR(NGRPRT),UID,KK
80 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
81 CHARACTER(LEN=NCHARKEY) :: ,KEY2
82 CHARACTER :: MES*40
83 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
84
85 DATA mes/' PART GROUP'/
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 IF(ngrpart<=0)RETURN
109
110 ibid=0
111 it0=0
112 it1=0
113 it2=0
114 it3=0
115 it4=0
116 it5=0
117 titr1='PART GROUP'
118
119
120
121
122
124
125 igs=0
126
127
128 DO igs=1,ngrpart
129
132 . option_titr = titr ,
133 . unit_id = uid,
134 . keyword2 = key ,
135 . keyword3 = key2)
136
137
138
139 IF (flag == 0) THEN
140 igrpart(igs)%ID = 0
141 igrpart(igs)%NENTITY = 0
142 igrpart(igs)%GRTYPE = 0
143 igrpart(igs)%SORTED = 0
144 igrpart(igs)%GRPGRP = 0
145 igrpart(igs)%LEVEL = 0
146 igrpart(igs)%R2R_ALL = 0
147 igrpart(igs)%R2R_SHARE = 0
148 ENDIF
149
151 igrpart(igs)%GRTYPE=-1
152 igrpart(igs)%TITLE=titr
153
154 IF(key(1:6) == 'GRPART')THEN
155
156 igrpart(igs)%NENTITY=-1
157 igrpart(igs)%GRPGRP=2
158 it0=it0+1
159 ELSEIF(key(1:4) == 'PART' .OR. key(1:6) == 'SUBSET' .OR. key(1:3) == 'MAT' .OR. key(1:4) == 'PROP') THEN
160
161 it2=it2+1
162 IF (flag == 0) THEN
163 igrpart(igs)%NENTITY=0
164 igrpart(igs)%GRPGRP=3
165 ENDIF
166 ELSEIF(key(1:4) == 'GENE' )THEN
167
168 it3=it3+1
169 IF (flag == 0) THEN
170 igrpart(igs)%NENTITY=0
171 igrpart(igs)%GRPGRP=4
172 ENDIF
173 ELSEIF(key(1:6) == 'SUBMOD')THEN
174
175 it4=it4+1
176 IF (flag == 0) THEN
177 igrpart(igs)%NENTITY=0
178 igrpart(igs)%GRPGRP=5
179 ENDIF
180 ELSEIF(key(1:8) == 'GEN_INCR' )THEN
181
182 it5=it5+1
183 IF (flag == 0) THEN
184 igrpart(igs)%NENTITY=0
185 igrpart(igs)%GRPGRP=4
186 ENDIF
187 ENDIF
188
189 ENDDO
190
191
192
193
194 IF (flag == 0) THEN
195 DO igs=1,ngrprt
196 list_igr(igs) = igrpart(igs)%ID
197 ENDDO
199 ENDIF
200
201
202
203 IF (it2 > 0) THEN
205 DO igs=1,ngrpart
208 . option_titr = titr ,
209 . unit_id = uid,
210 . keyword2 = key ,
211 . keyword3 = key2)
212 IF (key(1:6)=='SUBSET'.OR.key(1:4)=='PART'.OR. key(1:3)=='MAT' .OR.key(1:4)=='PROP') THEN
213 nn = 0
214 nel = 0
215 buftmp = 0
216 CALL hm_tagpart(buftmp ,ipart ,key ,igrpart(igs)%ID,titr ,titr1 ,flag ,subset ,lsubmodel)
217 IF (flag == 0) THEN
218 DO j=1,npart
219 IF (buftmp(j) == 1) nel=nel+1
220 ENDDO
221 igrpart(igs)%NENTITY=nel
222 CALL my_alloc(igrpart(igs)%ENTITY,nel)
223 igrpart(igs)%ENTITY = 0
224 ELSEIF (flag == 1) THEN
225 DO j=1,npart
226 IF (buftmp(j) == 1) THEN
227 nn = nn + 1
228 igrpart(igs)%ENTITY(nn)=j
229 ENDIF
230 ENDDO
231 igrpart(igs)%LEVEL=1
232 ENDIF
233 ENDIF
234 ENDDO
235 ENDIF
236
237
238
239
240
241 IF (it3 /= 0) THEN
243 DO igs=1,ngrpart
246 . option_titr = titr ,
247 . unit_id = uid,
248 . keyword2 = key ,
249 . keyword3 = key2)
250 IF(key(1:4) == 'GENE')THEN
251 nn = 0
252 nel=0
253 buftmp = 0
254 CALL hm_get_intv (
'grnodGenArrCnt' ,nentity,is_available,lsubmodel)
255 DO kk=1,nentity
258 DO k=1,npart
259 IF (ipart(4,k) >= n1.AND.ipart(4,k) <= n2)buftmp(k)=1
260 ENDDO
261 ENDDO
262 nel=0
263 IF (flag == 0) THEN
264 DO j=1,npart
265 IF (buftmp(j) == 1) nel=nel+1
266 ENDDO
267 igrpart(igs)%NENTITY=nel
268 CALL my_alloc(igrpart(igs)%ENTITY,nel)
269 igrpart(igs)%ENTITY = 0
270 ELSEIF (flag == 1) THEN
271 DO j=1,npart
272 IF (buftmp(j) == 1) THEN
273 nn = nn + 1
274 igrpart(igs)%ENTITY(nn)=j
275 ENDIF
276 ENDDO
277 ENDIF
278 ENDIF
279 ENDDO
280 ENDIF
281
282
283
284
285 IF (it4 > 0) THEN
287 DO igs=1,ngrpart
290 . option_titr = titr ,
291 . unit_id = uid,
292 . keyword2 = key ,
293 . keyword3 = key2)
294 IF (key(1:6) == 'SUBMOD') THEN
295 nn=0
296 nel=0
297 buftmp = 0
298 nindx = 0
300 . mes ,titr,titr1,indx,nindx ,
301 . lsubmodel)
302 IF (flag == 0) THEN
303 DO j=1,npart
304 IF (buftmp(j) == 1) nel=nel+1
305 ENDDO
306 igrpart(igs)%NENTITY=nel
307 CALL my_alloc(igrpart(igs)%ENTITY,nel)
308 igrpart(igs)%ENTITY = 0
309 ELSEIF (flag == 1) THEN
310 DO j=1,npart
311 IF (buftmp(j) == 1) THEN
312 nn = nn + 1
313 igrpart(igs)%ENTITY(nn)=j
314 ENDIF
315 ENDDO
316 igrpart(igs)%LEVEL=1
317 ENDIF
318 ENDIF
319 ENDDO
320 ENDIF
321
322
323
324
325 IF (it5 /= 0) THEN
327 DO igs=1,ngrpart
330 . option_titr = titr ,
331 . unit_id = uid,
332 . keyword2 = key ,
333 . keyword3 = key2)
334
335
336 IF(key(1:8) == 'GEN_INCR')THEN
337 nn = 0
338 nel=0
339 buftmp = 0
340 CALL hm_get_intv (
'grnodGenArrCnt' ,nentity,is_available,lsubmodel)
341 DO kk=1,nentity
345
346 DO k=1,npart
348 IF(
id<idmin .OR.
id>idmax)cycle
349 IF(mod(
id-idmin,offset)==0)buftmp(k)=1
350 ENDDO
351
352
353
354
355
356 ! EXIT
357
358
359
360 ENDDO
361 nel=0
362 IF (flag == 0) THEN
363 DO j=1,npart
364 IF (buftmp(j) == 1) nel=nel+1
365 ENDDO
366 igrpart(igs)%NENTITY=nel
367 CALL my_alloc(igrpart(igs)%ENTITY,nel)
368 igrpart(igs)%ENTITY = 0
369 ELSEIF (flag == 1) THEN
370 DO j=1,npart
371 IF (buftmp(j) == 1) THEN
372 nn = nn + 1
373 igrpart(igs)%ENTITY(nn)=j
374 ENDIF
375 ENDDO
376 ENDIF
377 ENDIF
378 ENDDO
379 ENDIF
380
381 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
subroutine hm_submodpart(isubmod, tagbuf, ipart, id, flag, mess, titr, titr1, indx, nindx, lsubmodel)
subroutine hm_tagpart(bufftmp, ipart, key, id, titr, titr1, flag, subset, lsubmodel)
integer, parameter nchartitle
integer, parameter ncharkey
subroutine udouble_igr(list, nlist, mess, ir, rlist)