41
42
43
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "remesh_c.inc"
56#include "scr17_c.inc"
57
58
59
60 INTEGER , IX(NIX,*), NUMEL, IPARTEL(*), IPART(LIPART1,*),
61 . KELTREE, ELTREE(KELTREE,*), KSONTREE, NSONTREE, KLEVTREE,
62 . NLIST, IX1(*), IX2(*), INDEX(*), KK, NEL, NELT(*)
63 CHARACTER MESS*40
64 INTEGER ID
65 CHARACTER(LEN=NCHARTITLE) :: TITR
66 CHARACTER ELKEY*4
67 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
68
69
70
71 INTEGER LIST(NLIST), IL, JJ, NENTITY, II
72 INTEGER I, J, NOLD, K, IWORK(70000)
73 INTEGER LELT, LELT1, LELT2, NE, KE, IP, LEVEL, NLEV,
74 . LELTMP, NELTMP(NSONTREE**(LEVELMAX+1))
75 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
76
77
78
79 il =0
80
81 CALL hm_get_intv (
'idsmax' ,nentity,is_available,lsubmodel)
82
83 DO ii=1,nentity
85 IF(jj /= 0)THEN
86 il = il + 1
87 list(il)=jj
88 ENDIF
89 enddo
90
91
92
93
94
95 CALL my_orders(0,iwork,list,index,nlist,1)
96 DO i=1,nlist
97 index(nlist+i) = list(index(i))
98 ENDDO
99 k=1
100 nold = index(nlist+1)
101 DO i=1,nlist
102 IF(nold/=index(nlist+i))k=k+1
103 list(k) = index(nlist+i)
104 nold = index(nlist+i)
105 ENDDO
106 nel=k
107
108
109
110 IF(kk==0)THEN
111 DO i=1,numel
112 ix2(i) = ix(nix,i)
113 ENDDO
114 CALL my_orders(0,iwork,ix2,index,numel,1)
115 DO i=1,numel
116 ix1(i) = ix2(index(i))
117 ENDDO
118 DO i=1,numel
119 ix2(i) = index(i)
120 ENDDO
121 ENDIF
122
123
124
125
126 i=1
127 j=1
128 DO i=1,nel
129 DO WHILE(list(i)>ix1(j).AND.j<numel)
130 j=j+1
131 ENDDO
132 IF(list(i)==ix1(j))THEN
133 list(i)=ix2(j)
134 ELSE
136 . msgtype=msgerror,
137 . anmode=aninfo,
138 . c1=elkey,
140 . c2=trim(titr),
141 . i2=list(i))
142 RETURN
143 ENDIF
144 ENDDO
145
146
147
148 lelt = 0
149
150 DO i=1,nel
151 ne=list(i)
152
153 ip=ipartel(ne)
154 nlev =ipart(10,ip)
155
156 IF(nlev==0)THEN
157 lelt=lelt+1
158 nelt(lelt)=ne
159 ELSE
160
161 leltmp =1
162 neltmp(1)=ne
163
164 level =eltree(klevtree,ne)
165 IF(level < 0) level=-(level+1)
166
167 lelt1=0
168 lelt2=leltmp
169
170 DO WHILE(level < nlev)
171 DO ke=lelt1+1,lelt2
172 DO k=0,nsontree-1
173 leltmp=leltmp+1
174 neltmp(leltmp)=eltree(ksontree,neltmp(ke))+k
175 END DO
176 END DO
177
178 lelt1=lelt2
179 lelt2=leltmp
180
181 level=level+1
182 END DO
183
184 DO ke=lelt1+1,lelt2
185 lelt=lelt+1
186 nelt(lelt)=neltmp(ke)
187 END DO
188
189 END IF
190 END DO
191
192 nel=lelt
193
194 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
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)