179
180
181
186
187
188
189#include "implicit_f.inc"
190
191
192
193#include "units_c.inc"
194
195
196
197 INTEGER NIX,SID,NEL,NUMEL,IELT,FLAG,NN,IGS
198 INTEGER ISUBMOD(*),IX(NIX,*)
199 CHARACTER MESS(*)
200 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
201 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
202
203 TYPE (GROUP_) IGRELEM(*)
204
205
206
207 INTEGER I,J,K,ISU,IDEL,INUM,TAG,CUR_SUBMOD,ISELECT,IOK, ID,IDU,ELEMTYPE,KK,JJ
208 INTEGER TAGS(0:NSUBMOD)
209 CHARACTER(LEN=NCHARKEY) :: KEY
210 CHARACTER(LEN=NCHARLINE) ::CART
211 CHARACTER(LEN=NCHARFIELD) ::VERS_IN
212 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGELEMSUB
213 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
214 INTEGER,DIMENSION(:),ALLOCATABLE :: LIST_ELEM
215 INTEGER :: NENTITY
216
217 INTERFACE
220 INTEGER,DIMENSION(:),ALLOCATABLE :: arg1
221 INTEGER,INTENT(INOUT) :: arg2
222 TYPE(SUBMODEL_DATA) :: arg3(NSUBMOD)
223 END SUBROUTINE
224 END INTERFACE
225
226
227
228
229
230
231 tags = 0
232
234 DO kk=1,nentity
235 jj=list_elem(kk)
236 IF(jj /= 0)THEN
237 isu=0
238 iselect = 0
239 iok = 0
240 DO k=1,nsubmod
241 cur_submod = k
242 iselect = 0
243 DO WHILE (cur_submod /= 0 .AND. iselect == 0)
244 IF (lsubmodel(cur_submod)%NOSUBMOD == jj) iselect = 1
245 IF (lsubmodel(cur_submod)%NOSUBMOD == -jj) iselect = -1
246 cur_submod = lsubmodel(cur_submod)%IFATHER
247 ENDDO
248 IF (iselect == 1) THEN
249 isu=k
250 tags(k) = tags(k) + 1
251 iok = 1
252 ELSEIF (iselect == -1) THEN
253 isu=k
254 tags(k) = tags(k) - 1
255 iok = 1
256 ENDIF
257 ENDDO
258 IF (iok == 0)
CALL ancmsg(msgid=194,
259 . msgtype=msgwarning,
260 . anmode=aninfo,
261 . c1=titr1,
262 . i1=sid,
263 . c2=titr1,
264 . c3=titr,
265 . c4='SUBMODEL',
266 . i2=jj)
267 ENDIF
268 enddo
269 IF(ALLOCATED(list_elem))DEALLOCATE (list_elem)
270
271
272
273 DO k=1,nsubmod
274 IF (tags(k) > 1) tags(k) = 1
275 IF (tags(k) < -1) tags(k) = -1
276 ENDDO
277
278 isu = 0
279 tag = 0
280 cur_submod = 0
281 rewind iusbm
282
283
284
285
286
287
288 IF (ielt == 1) THEN
289 elemtype = 208
290 ELSEIF (ielt == 2) THEN
291 elemtype = 104
292 ELSEIF (ielt == 3) THEN
293 elemtype = 104
294 ELSEIF (ielt == 4) THEN
295 elemtype = 61
296 ELSEIF (ielt == 5) THEN
297 elemtype = 60
298 ELSEIF (ielt == 6) THEN
299 elemtype = 21
300 ELSEIF (ielt == 7) THEN
301 elemtype = 103
302 ENDIF
303
304 ALLOCATE(tagelemsub(numel))
305 tagelemsub = 0
306 CALL cpp_elem_sub_tag(elemtype,tagelemsub)
307 IF (flag == 0) THEN
308 DO i=1,nsubmod
309 IF(tags(i) >= 1)THEN
310 DO j=1,numel
311 IF(tagelemsub(j) == i) nel=nel+1
312 ENDDO
313 ENDIF
314 ENDDO
315 ELSEIF (flag == 1) THEN
316 DO i=1,nsubmod
317 IF(tags(i) >= 1)THEN
318 DO j=1,numel
319 IF(tagelemsub(j) == i) THEN
320 nn = nn + 1
321 igrelem(igs)%ENTITY(nn) = j
322 ENDIF
323 ENDDO
324 ENDIF
325 ENDDO
326 ENDIF
327 IF (ALLOCATED(tagelemsub)) DEALLOCATE(tagelemsub)
328
329 RETURN
subroutine groups_get_elem_list(list_entity, nentity, lsubmodel)
integer, parameter ncharkey
integer, parameter ncharfield
integer, parameter ncharline
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)