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,K,L,ID,NEL,IGS,IGRS,JREC,ISU,NONTRI,JJ,KK,
70 . FLAG_FMT,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
148 buftmp(igrnod(igrs)%ENTITY(l))=1
149 ENDIF
150 ENDDO
151 ELSE
152
153 nel = nel + igrnod(igrs)%NENTITY
154 ENDIF
155 ENDIF
156 ENDIF
157 ENDDO
158 IF(ALLOCATED(list_entity))DEALLOCATE (list_entity)
159 ENDIF
160
161 IF (skipflag == 0) THEN
162 IF (nontri == 0 ) THEN
163
164 DO j=1,numnod
165 IF (buftmp(j) > 0) nel=nel+1
166 ENDDO
167 ENDIF
168
169 igrnod(igs)%NENTITY = nel
170 CALL my_alloc(igrnod(igs)%ENTITY,nel)
171 igrnod(igs)%ENTITY = 0
172 ENDIF
173
174 ELSEIF (flag == 1 .AND. igrnod(igs)%LEVEL == 0 .AND.
175 . igrnod(igs)%NENTITY > -1) THEN
176
178 DO kk=1,nentity
179 jj = list_entity(kk)
180 IF (jj /= 0) THEN
181 igrs=0
182 DO k=1,ngrnod
183 IF (iabs(jj) == igrnod(k)%ID) THEN
184 igrs=k
185 EXIT
186 ENDIF
187 ENDDO
188 IF (igrs == 0) THEN
189 ELSEIF (igrnod(igrs)%NENTITY == -1) THEN
190 cycle
191 ELSE
192 IF (nontri == 0) THEN
193
194 DO l=1,igrnod(igrs)%NENTITY
195 IF (jj < 0) THEN
196
197 buftmp(igrnod(igrs)%ENTITY(l))=-1
198 ELSEIF (buftmp(igrnod(igrs)%ENTITY(l)) == 0) THEN
199
200 buftmp(igrnod(igrs)%ENTITY(l))=1
201 ENDIF
202 ENDDO
203 ELSE
204 DO l=1,igrnod(igrs)%NENTITY
205 nn = nn + 1
206 igrnod(igs)%ENTITY(nn) = igrnod(igrs)%ENTITY(l)
207 ENDDO
208 ENDIF ! IF (nontri == 0)
209 ENDIF
210 ENDIF
211 ENDDO
212 IF(ALLOCATED(list_entity))DEALLOCATE (list_entity)
213
214 IF (nontri == 0) THEN
215
216 DO j=1,numnod
217 IF (buftmp(j) > 0) THEN
218 nn = nn + 1
219 igrnod(igs)%ENTITY(nn)=j
220 ENDIF
221 ENDDO
222 ENDIF
223 igrnod(igs)%LEVEL = 1
224
225 ENDIF
226 ENDIF
227 ENDDO
228
229 DEALLOCATE(buftmp)
230 RETURN
231 900
CALL ancmsg(msgid=176,
232 . msgtype=msgerror,
233 . anmode=aninfo,
235 . c1=titr,
236 . i2=igrnod(igs)%ID,
237 . c2=elkey)
238
239 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)