43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "scr17_c.inc"
51
52
53
54 INTEGER NIX, IX(NIX,*), NUMEL, IPARTEL(*), IPART(LIPART1,*),
55 . KELTREE, ELTREE(KELTREE,*), KSONTREE, NSONTREE, KLEVTREE,
56 . NLIST,IX1(*), IX2(*), INDEX(*), LL, NEL, LEVEL
57 CHARACTER MESS*40
58 INTEGER ID
59 CHARACTER(LEN=NCHARTITLE)::TITR
60 CHARACTER :: ELKEY*4
61 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
62
63
64
65 INTEGER LIST(NLIST), IL, JJ
66 INTEGER I, J, NOLD, K, IWORK(70000),II
67 INTEGER LELT, NE, IP, NLEV
68 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
69 INTEGER,DIMENSION(:),ALLOCATABLE :: LIST_ENTITY
70 INTEGER :: NENTITY
71
72 INTERFACE
75 INTEGER,DIMENSION(:),ALLOCATABLE :: arg1
76 INTEGER,INTENT(INOUT) :: arg2
77 TYPE(SUBMODEL_DATA) :: arg3(NSUBMOD)
78 END SUBROUTINE
79 END INTERFACE
80
81
82
83 il = 0
85 DO ii=1,nentity
86 jj=list_entity(ii)
87 IF(jj /= 0)THEN
88 il = il + 1
89 list(il)=jj
90 ENDIF
91 enddo
92 IF(ALLOCATED(list_entity))DEALLOCATE (list_entity)
93
94
95
96
97
98 CALL my_orders(0,iwork,list,index,nlist,1)
99 DO i=1,nlist
100 index(nlist+i) = list(index(i))
101 ENDDO
102 k=1
103 nold = index(nlist+1)
104 DO i=1,nlist
105 IF(nold/=index(nlist+i))k=k+1
106 list(k) = index(nlist+i)
107 nold = index(nlist+i)
108 ENDDO
109 nel=k
110
111
112
113 IF(ll==0)THEN
114 DO i=1,numel
115 ix2(i) = ix(nix,i)
116 ENDDO
117 CALL my_orders(0,iwork,ix2,index,numel,1)
118 DO i=1,numel
119 ix1(i) = ix2(index(i))
120 ENDDO
121 DO i=1,numel
122 ix2(i) = index(i)
123 ENDDO
124 ENDIF
125
126
127
128
129 i=1
130 j=1
131 DO i=1,nel
132 DO WHILE(list(i)>ix1(j).AND.j<numel)
133 j=j+1
134 ENDDO
135 IF(list(i)==ix1(j))THEN
136 list(i)=ix2(j)
137 ELSE
139 . msgtype=msgerror,
140 . anmode=aninfo,
141 . c1=elkey,
143 . c2=trim(titr),
144 . i2=list(i))
145 RETURN
146 ENDIF
147 ENDDO
148
149
150
151 lelt = 0
152
153 DO i=1,nel
154
155 ne=list(i)
156
157 ip=ipartel(ne)
158 nlev =ipart(10,ip)
159
160 level =eltree(klevtree,ne)
161 IF(level < 0) level=-(level+1)
162
163 lelt=lelt+nsontree**(nlev-level)
164
165 END DO
166
167 nel=lelt
168
169 RETURN
subroutine groups_get_elem_list(list_entity, nentity, 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)