36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "param_c.inc"
44#include "scr23_c.inc"
45#include "com04_c.inc"
46
47
48
49 INTEGER IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*),IXTG(NIXTG,*),
50 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),
51 . IXS10(6,*),IXS20(12,*),IXS16(8,*),IXTG1(4,*),
52 . IGEO(,*),KNOD2ELS(*),KNOD2ELC(*),KNOD2ELTG(*),
53 . NOD2ELS(*),NOD2ELC(*),NOD2ELTG(*),ADDCNEL(*),CNEL(*),
54 . KXX(NIXX,*),IXX(*),KXIG3D(NIXIG3D,*),IXIG3D(*),
55 . KNOD2ELIG3D(*),NOD2ELIG3D(*),KNOD2ELQ(*),NOD2ELQ(*)
56
58 . x(3,*),lelx(*)
59
60
61
62 INTEGER I, J, K, N, PX, PY, PZ
63
64
65
66
67 DO k=2,9
68 DO i=1,numels
69 n = ixs(k,i)
70 IF(n/=0) knod2els(n) = knod2els(n) + 1
71 END DO
72 END DO
73
74 DO k=1,6
75 DO i=1,numels10
76 n = ixs10(k,i)
77 IF(n/=0) knod2els(n) = knod2els(n) + 1
78 END DO
79 END DO
80
81 DO k=1,12
82 DO i=1,numels20
83 n = ixs20(k,i)
84 IF(n/=0) knod2els(n) = knod2els(n) + 1
85 END DO
86 END DO
87
88 DO k=1,8
89 DO i=1,numels16
90 n = ixs16(k,i)
91 IF(n/=0) knod2els(n) = knod2els(n) + 1
92 END DO
93 END DO
94
95 DO i=1,numnod
96 knod2els(i+1) = knod2els(i+1) + knod2els(i)
97 END DO
98
99 DO n=numnod,1,-1
100 knod2els(n+1)=knod2els(n)
101 END DO
102 knod2els(1)=0
103
104 DO k=2,5
105 DO i=1,numelc
106 n = ixc(k,i)
107 knod2elc(n) = knod2elc(n) + 1
108 END DO
109 END DO
110
111 DO i=1,numnod
112 knod2elc(i+1) = knod2elc(i+1) + knod2elc(i)
113 END DO
114
115 DO n=numnod,1,-1
116 knod2elc(n+1)=knod2elc(n)
117 END DO
118 knod2elc(1)=0
119
120 DO k=2,4
121 DO i=1,numeltg
122 n = ixtg(k,i)
123 knod2eltg(n) = knod2eltg(n) + 1
124 END DO
125 END DO
126
127 DO k=1,3
128 DO i=1,numeltg6
129 n = ixtg1(k,i)
130 IF (n/=0) knod2eltg(n) = knod2eltg(n) + 1
131 END DO
132 END DO
133
134 DO i=1,numnod
135 knod2eltg(i+1) = knod2eltg(i+1) + knod2eltg(i)
136 END DO
137
138 DO n=numnod,1,-1
139 knod2eltg(n+1)=knod2eltg(n)
140 END DO
141 knod2eltg(1)=0
142
143 DO i=1,numelig3d
144 px = igeo(41,kxig3d(2,i))
145 py = igeo(42,kxig3d(2,i))
146 pz = igeo(43,kxig3d(2,i))
147 DO k=1,px*py*pz
148 n = ixig3d(kxig3d(4,i)+k-1)
149 knod2elig3d(n) = knod2elig3d(n) + 1
150 END DO
151 END DO
152
153 DO i=1,numnod
154 knod2elig3d(i+1) = knod2elig3d(i+1) + knod2elig3d(i)
155 END DO
156
157 DO n=numnod,1,-1
158 knod2elig3d(n+1)=knod2elig3d(n)
159 END DO
160 knod2elig3d(1)=0
161
162
163
164 DO k=2,5
165 DO i=1,numelq
166 n = ixq(k,i)
167 knod2elq(n) = knod2elq(n) + 1
168 END DO
169 END DO
170
171 DO i=1,numnod
172 knod2elq(i+1) = knod2elq(i+1) + knod2elq(i)
173 END DO
174
175 DO n=numnod,1,-1
176 knod2elq(n+1)=knod2elq(n)
177 END DO
178 knod2elq(1)=0
179
180 DO k=2,3
181 DO i=1,numelt
182 n = ixt(k,i)
183 addcnel(n) = addcnel(n) + 1
184 END DO
185 END DO
186
187 DO k=2,3
188 DO i=1,numelp
189 n = ixp(k,i)
190 addcnel(n) = addcnel(n) + 1
191 END DO
192 END DO
193
194 DO k=2,3
195 DO i=1,numelr
196 n = ixr(k,i)
197 addcnel(n) = addcnel(n) + 1
198 END DO
199 END DO
200
201 DO i=1,numelx
202 DO k=1,kxx(3,i)-1
203 n = ixx(kxx(4,i)+k)
204 addcnel(n) = addcnel(n) + 1
205 END DO
206 END DO
207
208 DO i=1,numnod
209 addcnel(i+1) = addcnel(i+1) + addcnel(i)
210 END DO
211
212 DO n=numnod,1,-1
213 addcnel(n+1)=addcnel(n)
214 END DO
215 addcnel(1)=0
216
217
218
219
220
221
222
223
224
225
226 DO k=2,9
227 DO i=1,numels
228 n = ixs(k,i)
229 knod2els(n) = knod2els(n) + 1
230 IF(n/=0) nod2els(knod2els(n)) = i
231 END DO
232 END DO
233
234 DO k=1,6
235 DO i=1,numels10
236 n = ixs10(k,i)
237 IF (n/=0) THEN
238 knod2els(n) = knod2els(n) + 1
239 nod2els(knod2els(n)) = numels8+i
240 END IF
241 END DO
242 END DO
243
244 DO k=1,12
245 DO i=1,numels20
246 n = ixs20(k,i)
247 IF (n/=0) THEN
248 knod2els(n) = knod2els(n) + 1
249 nod2els(knod2els(n)) = numels10+numels8+i
250 END IF
251 END DO
252 END DO
253
254 DO k=1,8
255 DO i=1,numels16
256 n = ixs16(k,i)
257 IF (n/=0) THEN
258 knod2els(n) = knod2els(n) + 1
259 nod2els(knod2els(n)) = numels20+numels10+numels8+i
260 END IF
261 END DO
262 END DO
263
264 DO n=numnod,1,-1
265 knod2els(n+1)=knod2els(n)
266 END DO
267 knod2els(1)=0
268
269
270
271 DO k=2,5
272 DO i=1,numelc
273 n = ixc(k,i)
274 knod2elc(n) = knod2elc(n) + 1
275 nod2elc(knod2elc(n)) = i
276 END DO
277 END DO
278
279 DO n=numnod,1,-1
280 knod2elc(n+1)=knod2elc(n)
281 END DO
282 knod2elc(1)=0
283
284
285
286 DO k=2,4
287 DO i=1,numeltg
288 n = ixtg(k,i)
289 knod2eltg(n) = knod2eltg(n) + 1
290 nod2eltg(knod2eltg(n)) = i
291 END DO
292 END DO
293
294 DO k=1,3
295 DO i=1,numeltg6
296 n = ixtg1(k,i)
297 IF (n/=0) THEN
298 knod2eltg(n) = knod2eltg(n) + 1
299 nod2eltg(knod2eltg(n)) = numeltg-numeltg6+i
300 END IF
301 END DO
302 END DO
303
304 DO n=numnod,1,-1
305 knod2eltg(n+1)=knod2eltg(n)
306 END DO
307 knod2eltg(1)=0
308
309 DO k=2,3
310 DO i=1,numelt
311 n = ixt(k,i)
312 addcnel(n) = addcnel(n) + 1
313 cnel(addcnel(n)) = i
314 END DO
315 END DO
316
317 DO k=2,3
318 DO i=1,numelp
319 n = ixp(k,i)
320 addcnel(n) = addcnel(n) + 1
321 cnel(addcnel(n)) = numelt+i
322 END DO
323 END DO
324
325 DO k=2,3
326 DO i=1,numelr
327 n = ixr(k,i)
328 addcnel(n) = addcnel(n) + 1
329 cnel(addcnel(n)) = numelt+numelp+i
330 END DO
331 END DO
332
333 DO i=1,numelx
334 DO k=1,kxx(3,i)-1
335 n = ixx(kxx(4,i)+k)
336 addcnel(n) = addcnel(n) + 1
337 cnel(addcnel(n)) = numelt+numelp+numelr+i
338 END DO
339 END DO
340
341 DO n=numnod,1,-1
342 addcnel(n+1)=addcnel(n)
343 END DO
344 addcnel(1)=0
345
346
347 IF(numelx /= 0)THEN
348 lelx(1:numelx) = zero
349 DO i=1,numelx
350 DO j=kxx(4,i)+1,kxx(3,i)+kxx(4,i)-1
351 lelx(i) = lelx(i) +
352 . sqrt((x(1,ixx(j))-x(1,ixx(j-1)))**2
353 . +(x(2,ixx(j))-x(2,ixx(j-1)))**2
354 . +(x(3,ixx(j))-x(3,ixx(j-1)))**2)
355 ENDDO
356 ENDDO
357 ENDIF
358
359 DO i=1,numelig3d
360 px = igeo(41,kxig3d(2,i))
361 py = igeo(42,kxig3d(2,i))
362 pz = igeo(43,kxig3d(2,i))
363 DO k=1,px*py*pz
364 n = ixig3d(kxig3d(4,i)+k-1)
365 knod2elig3d(n) = knod2elig3d(n) + 1
366 nod2elig3d(knod2elig3d(n)) = i
367 END DO
368 END DO
369
370 DO n=numnod,1,-1
371 knod2elig3d(n+1)=knod2elig3d(n)
372 END DO
373 knod2elig3d(1)=0
374
375
376
377
378 DO k=2,5
379 DO i=1,numelq
380 n = ixq(k,i)
381 knod2elq(n) = knod2elq(n) + 1
382 nod2elq(knod2elq(n)) = i
383 END DO
384 END DO
385
386 DO n=numnod,1,-1
387 knod2elq(n+1)=knod2elq(n)
388 END DO
389 knod2elq(1)=0
390
391 RETURN