39
40
41
42
43
44
45 USE my_alloc_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com04_c.inc"
59
60
61
62 INTEGER FLAG,ICOUNT,ITER
63
64 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
65 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
66
67
68
69 INTEGER I,J,,L,ID,NEL,IGS,IGRS,JREC,ISU,NONTRI,JJ,KK,
70 . ,FLAG_FMT_TMP,IFIX_TMP,SKIPFLAG,UID,NN,NENTITY
71 INTEGER J10(10)
72 INTEGER,DIMENSION(:),ALLOCATABLE :: BUFTMP
73 INTEGER,DIMENSION(:),ALLOCATABLE :: LIST_ENTITY
74 CHARACTER(LEN=NCHARTITLE) :: TITR
75 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
76 CHARACTER ELKEY*4
77 LOGICAL IS_AVAILABLE
78 INTERFACE
81 INTEGER,DIMENSION(:),ALLOCATABLE :: arg1
82 INTEGER,INTENT(INOUT) :: arg2
83 TYPE(SUBMODEL_DATA) :: arg3(NSUBMOD)
84 END SUBROUTINE
85 END INTERFACE
86
87 CALL my_alloc(buftmp,numnod*2)
88 is_available = .false.
89 IF (flag == 0) icount=0
90 igs =0
92
93 DO i=1,ngrnod
96 . option_titr = titr ,
97 . unit_id = uid,
98 . keyword2 = key ,
99 . keyword3 = key2 )
100
101 igs=igs+1
102 IF (igrnod(igs)%GRPGRP == 2) THEN
103 buftmp = 0
104 nel=0
105 nn = 0
106 nontri = igrnod(igs)%SORTED
107
108 IF (flag == 0 .AND. igrnod(igs)%NENTITY == -1) THEN
109
110 skipflag = 0
111 IF (skipflag == 0) THEN
113 DO kk = 1,nentity
114 jj = list_entity(kk)
115 IF (jj /= 0) THEN
116 igrs=0
117 DO k=1,ngrnod
118 IF (iabs(jj) == igrnod(k)%ID) THEN
119 igrs=k
120 EXIT
121 ENDIF
122 ENDDO
123 IF (igrs == 0) THEN
125 . msgtype=msgwarning,
126 . anmode=aninfo,
127 . i1=igrnod(igs)%ID,c1=titr,
128 . i2=iabs(jj))
129 ELSEIF (igrnod(igrs)%LEVEL == 0) THEN
130
131 IF (iter > ngrnod) GOTO 900
132 igrnod(igs)%NENTITY=-1
133 igrnod(igs)%LEVEL=0
134 icount=1
135 skipflag = 1
136 nel = 0
137 cycle
138 ELSE
139
140 IF (nontri == 0) THEN
141
142 DO l=1,igrnod(igrs)%NENTITY
143 IF (jj < 0) THEN
144
145 buftmp(igrnod(igrs)%ENTITY(l))=-1
146 ELSEIF (buftmp(igrnod(igrs)%ENTITY(l)) == 0) THEN
147 buftmp(igrnod(igrs)%ENTITY(l))=1
148 ENDIF
149 ENDDO
150 ELSE
151
152 nel = nel + igrnod(igrs)%NENTITY
153 ENDIF
154 ENDIF
155 ENDIF
156 ENDDO
157 IF(ALLOCATED(list_entity))DEALLOCATE (list_entity)
158 ENDIF
159
160 IF (skipflag == 0) THEN
161 IF (nontri == 0 ) THEN
162
163 DO j=1,numnod
164 IF (buftmp(j) > 0) nel=nel+1
165 ENDDO
166 ENDIF
167
168 igrnod(igs)%NENTITY = nel
169 CALL my_alloc(igrnod(igs)%ENTITY,nel)
170 igrnod(igs)%ENTITY = 0
171 ENDIF
172
173 ELSEIF (flag == 1 .AND. igrnod(igs)%LEVEL == 0 .AND.
174 . igrnod(igs)%NENTITY > -1) THEN
175
177 DO kk=1,nentity
178 jj = list_entity(kk)
179 IF (jj /= 0) THEN
180 igrs=0
181 DO k=1,ngrnod
182 IF (iabs(jj) == igrnod(k)%ID) THEN
183 igrs=k
184 EXIT
185 ENDIF
186 ENDDO
187 IF (igrs == 0) THEN
188 ELSEIF (igrnod(igrs)%NENTITY == -1) THEN
189 cycle
190 ELSE
191 IF (nontri == 0) THEN
192
193 DO l=1,igrnod(igrs)%NENTITY
194 IF (jj < 0) THEN
195
196 buftmp(igrnod(igrs)%ENTITY(l))=-1
197 ELSEIF (buftmp(igrnod(igrs)%ENTITY(l)) == 0) THEN
198 buftmp(igrnod(igrs)%ENTITY(l))=1
199 ENDIF
200 ENDDO
201 ELSE
202 DO l=1,igrnod(igrs)%NENTITY
203 nn = nn + 1
204 igrnod(igs)%ENTITY(nn) = igrnod(igrs)%ENTITY(l)
205 ENDDO
206 ENDIF
207 ENDIF
208 ENDIF
209 ENDDO
210 IF(ALLOCATED(list_entity))DEALLOCATE (list_entity)
211
212 IF (nontri == 0) THEN
213
214 DO j=1,numnod
215 IF (buftmp(j) > 0) THEN
216 nn = nn + 1
217 igrnod(igs)%ENTITY(nn)=j
218 ENDIF
219 ENDDO
220 ENDIF
221 igrnod(igs)%LEVEL = 1
222
223 ENDIF
224 ENDIF
225 ENDDO
226
227 DEALLOCATE(buftmp)
228 RETURN
229 900
CALL ancmsg(msgid=176,
230 . msgtype=msgerror,
231 . anmode=aninfo,
233 . c1=titr,
234 . i2=igrnod(igs)%ID,
235 . c2=elkey)
236
237 RETURN
subroutine groups_get_elem_list(list_entity, nentity, lsubmodel)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharkey
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)