38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46
47
48
49 INTEGER NGL(*)
50
52 . r,s,t,w,
53 . dnidr(16),dnids(16),dnidt(16),dxdr(*),dydr(*),dzdr(*),
54 . dxds(*),dyds(*),dzds(*),dxdt(*),dydt(*),dzdt(*),
55 . drdx(mvsiz), dsdx(mvsiz), dtdx(mvsiz),
56 . drdy(mvsiz), dsdy(mvsiz), dtdy(mvsiz),
57 . drdz(mvsiz), dsdz(mvsiz), dtdz(mvsiz),
58 . xx(mvsiz,16),yy(mvsiz,16),zz(mvsiz,16),
59 . px(mvsiz,16),py(mvsiz,16),pz(mvsiz,16),
60 . vol(*),off(*),deltax(*),volg(mvsiz) ,
61 . kxx(mvsiz,16),ni(16),ul(mvsiz,16)
62 double precision
63 . voldp(*),detdp
64
65
66
67#include "vect01_c.inc"
68
69
70
71 INTEGER I,N
73 . d, aa, bb, det(mvsiz),r9 ,r13 ,s9 ,s10 ,s11 ,s12 ,t10 ,t14
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244 DO i=lft,llt
245
246 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
247 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
248 + + dnidr(7)*xx(i,7) + dnidr(8)*xx(i,8)
249 + + dnidr(9)*(xx(i,9) - xx(i,11)) + dnidr(10)*xx(i,10)
250 + + dnidr(12)*xx(i,12) + dnidr(13)*(xx(i,13) - xx(i,15))
251 + + dnidr(14)*xx(i,14) + dnidr(16)*xx(i,16)
252
253 dxds(i) = dnids(1)*xx(i,1) + dnids(2)*xx(i,2) + dnids(3)*xx(i,3)
254 + + dnids(4)*xx(i,4) + dnids(5)*xx(i,5) + dnids(6)*xx(i,6)
255 + + dnids(7)*xx(i,7) + dnids(8)*xx(i,8)
256 + + dnids(9)* (xx(i,9) - xx(i,13))
257 + + dnids(10)*(xx(i,10) - xx(i,14))
258 + + dnids(11)*(xx(i,11) - xx(i,15))
259 + + dnids(12)*(xx(i,12) - xx(i,16))
260
261 dxdt(i) = dnidt(1)*xx(i,1) + dnidt(2)*xx(i,2) + dnidt(3)*xx(i,3)
262 + + dnidt(4)*xx(i,4) + dnidt(5)*xx(i,5) + dnidt(6)*xx(i,6)
263 + + dnidt(7)*xx(i,7) + dnidt(8)*xx(i,8)
264 + + dnidt(9)*xx(i,9) + dnidt(10)*(xx(i,10) - xx(i,12))
265 + + dnidt(11)*xx(i,11) + dnidt(13)*xx(i,13)
266 + + dnidt(14)*(xx(i,14) - xx(i,16)) + dnidt(15)*xx(i,15)
267
268
269
270 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
271 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
272 + + dnidr(7)*yy(i,7) + dnidr(8)*yy(i,8)
273 + + dnidr(9)*(yy(i,9) - yy(i,11)) + dnidr(10)*yy(i,10)
274 + + dnidr(12)*yy(i,12) + dnidr(13)*(yy(i,13) - yy(i,15))
275 + + dnidr(14)*yy(i,14) + dnidr(16)*yy(i,16)
276
277 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
278 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
279 + + dnids(7)*yy(i,7) + dnids(8)*yy(i,8)
280 + + dnids(9)* (yy(i,9) - yy(i,13))
281 + + dnids(10)*(yy(i,10) - yy(i,14))
282 + + dnids(11)*(yy(i,11) - yy(i,15))
283 + + dnids(12)*(yy(i,12) - yy(i,16))
284
285 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
286 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
287 + + dnidt(7)*yy(i,7) + dnidt(8)*yy(i,8)
288 + + dnidt(9)*yy(i,9) + dnidt(10)*(yy(i,10) - yy(i,12))
289 + + dnidt(11)*yy(i,11) + dnidt(13)*yy(i,13)
290 + + dnidt(14)*(yy(i,14) - yy(i,16)) + dnidt(15)*yy(i,15)
291
292
293
294 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
295 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
296 + + dnidr(7)*zz(i,7) + dnidr(8)*zz(i,8)
297 + + dnidr(9)*(zz(i,9) - zz(i,11)) + dnidr(10)*zz(i,10)
298 + + dnidr(12)*zz(i,12) + dnidr(13)*(zz(i,13) - zz(i,15))
299 + + dnidr(14)*zz(i,14) + dnidr(16)*zz(i,16)
300
301 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
302 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
303 + + dnids(7)*zz(i,7) + dnids(8)*zz(i,8)
304 + + dnids(9)* (zz(i,9) - zz(i,13))
305 + + dnids(10)*(zz(i,10) - zz(i,14))
306 + + dnids(11)*(zz(i,11) - zz(i,15))
307 + + dnids(12)*(zz(i,12) - zz(i,16))
308
309 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
310 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
311 + + dnidt(7)*zz(i,7) + dnidt(8)*zz(i,8)
312 + + dnidt(9)*zz(i,9) + dnidt(10)*(zz(i,10) - zz(i,12))
313 + + dnidt(11)*zz(i,11) + dnidt(13)*zz(i,13)
314 + + dnidt(14)*(zz(i,14) - zz(i,16)) + dnidt(15)*zz(i,15)
315
316
317
318
319
320
321
322
323
324
325 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
326 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
327 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
328
329 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
330 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
331 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
332
333 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
334 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
335 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
336
337 detdp = dxdr(i) * drdx(i)
338 . + dydr(i) * drdy(i)
339 . + dzdr(i) * drdz(i)
340 det(i) = detdp
341 voldp(i) = w * detdp
342 vol(i) = voldp(i)
343
344 IF(vol(i)<=zero)THEN
346 . msgtype=msgerror,
347 . anmode=aninfo,
348 . i1=ngl(i))
349 ENDIF
350 ENDDO
351
352
353
354
355
356 DO i=lft,llt
357
358
359
360
361 d = 1./det(i)
362 drdx(i)=d*drdx(i)
363 dsdx(i)=d*dsdx(i)
364 dtdx(i)=d*dtdx(i)
365
366 drdy(i)=d*drdy(i)
367 dsdy(i)=d*dsdy(i)
368 dtdy(i)=d*dtdy(i)
369
370 drdz(i)=d*drdz(i)
371 dsdz(i)=d*dsdz(i)
372 dtdz(i)=d*dtdz(i)
373
374
375
376
377
378 px(i,1) = dnidr(1)*drdx(i) + dnids(1)*dsdx(i) + dnidt(1)*dtdx(i)
379 px(i,2) = dnidr(2)*drdx(i) + dnids(2)*dsdx(i) + dnidt(2)*dtdx(i)
380 px(i,3) = dnidr(3)*drdx(i) + dnids(3)*dsdx(i) + dnidt(3)*dtdx(i)
381 px(i,4) = dnidr(4)*drdx(i) + dnids(4)*dsdx(i) + dnidt(4)*dtdx(i)
382 px(i,5) = dnidr(5)*drdx(i) + dnids(5)*dsdx(i) + dnidt(5)*dtdx(i)
383 px(i,6) = dnidr(6)*drdx(i) + dnids(6)*dsdx(i) + dnidt(6)*dtdx(i)
384 px(i,7) = dnidr(7)*drdx(i) + dnids(7)*dsdx(i) + dnidt(7)*dtdx(i)
385 px(i,8) = dnidr(8)*drdx(i) + dnids(8)*dsdx(i) + dnidt(8)*dtdx(i)
386 r9 = dnidr(9) *drdx(i)
387 r13 = dnidr(13)*drdx(i)
388 s9 = dnids(9) *dsdx(i)
389 s10 = dnids(10)*dsdx(i)
390 s11 = dnids(11)*dsdx(i)
391 s12 = dnids(12)*dsdx(i)
392 t10 = dnidt(10)*dtdx(i)
393 t14 = dnidt(14)*dtdx(i)
394 px(i,9) = r9 + s9 + dnidt(9)*dtdx(i)
395 px(i,10)= dnidr(10)*drdx(i)+ s10 + t10
396 px(i,11)=-r9 + s11 + dnidt(11)*dtdx(i)
397 px(i,12)= dnidr(12)*drdx(i)+ s12 - t10
398 px(i,13)= r13 - s9 + dnidt(13)*dtdx(i)
399 px(i,14)= dnidr(14)*drdx(i)- s10 + t14
400 px(i,15)=-r13 - s11 + dnidt(15)*dtdx(i)
401 px(i,16)= dnidr(16)*drdx(i)- s12 - t14
402
403 py(i,1) = dnidr(1)*drdy(i) + dnids(1)*dsdy(i) + dnidt(1)*dtdy(i)
404 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
405 py(i,2) = dnidr(2)*drdy(i) + dnids(2)*dsdy(i) + dnidt(2)*dtdy(i)
406 py(i,3) = dnidr(3)*drdy(i) + dnids(3)*dsdy(i) + dnidt(3)*dtdy(i)
407 py(i,4) = dnidr(4)*drdy(i) + dnids(4)*dsdy(i) + dnidt(4)*dtdy(i)
408 py(i,5) = dnidr(5)*drdy(i) + dnids(5)*dsdy(i) + dnidt(5)*dtdy(i)
409 py(i,6) = dnidr(6)*drdy(i) + dnids(6)*dsdy(i) + dnidt(6)*dtdy(i)
410 py(i,7) = dnidr(7)*drdy(i) + dnids(7)*dsdy(i) + dnidt(7)*dtdy(i)
411 py(i,8) = dnidr(8)*drdy(i) + dnids(8)*dsdy(i) + dnidt(8)*dtdy(i)
412 r9 = dnidr(9) *drdy(i)
413 r13 = dnidr(13)*drdy(i)
414 s9 = dnids(9) *dsdy(i)
415 s10 = dnids(10)*dsdy(i)
416 s11 = dnids(11)*dsdy(i)
417 s12 = dnids(12)*dsdy(i)
418 t10 = dnidt(10)*dtdy(i)
419 t14 = dnidt(14)*dtdy(i)
420 py(i,9) = r9 + s9 + dnidt(9)*dtdy(i)
421 py(i,10)= dnidr(10)*drdy(i)+ s10 + t10
422 py(i,11)=-r9 + s11 + dnidt(11)*dtdy(i)
423 py(i,12)= dnidr(12)*drdy(i)+ s12 - t10
424 py(i,13)= r13 - s9 + dnidt(13)*dtdy(i)
425 py(i,14)= dnidr(14)*drdy(i)- s10 + t14
426 py(i,15)=-r13 - s11 + dnidt(15)*dtdy(i)
427 py(i,16)= dnidr(16)*drdy(i)- s12 - t14
428
429 pz(i,1) = dnidr(1)*drdz(i) + dnids(1)*dsdz(i) + dnidt(1)*dtdz(i)
430 pz(i,2) = dnidr(2)*drdz(i) + dnids(2)*dsdz(i) + dnidt(2)*dtdz(i)
431 pz(i,3) = dnidr(3)*drdz(i) + dnids(3)*dsdz(i) + dnidt(3)*dtdz(i)
432 pz(i,4) = dnidr(4)*drdz(i) + dnids(4)*dsdz(i) + dnidt(4)*dtdz(i)
433 pz(i,5) = dnidr(5)*drdz(i) + dnids(5)*dsdz(i) + dnidt(5)*dtdz(i)
434 pz(i,6) = dnidr(6)*drdz(i) + dnids(6)*dsdz(i) + dnidt(6)*dtdz(i)
435 pz(i,7) = dnidr(7)*drdz(i) + dnids(7)*dsdz(i) + dnidt(7)*dtdz(i)
436 pz(i,8) = dnidr(8)*drdz(i) + dnids(8)*dsdz(i) + dnidt(8)*dtdz(i)
437 r9 = dnidr(9) *drdz(i)
438 r13 = dnidr(13)*drdz(i)
439 s9 = dnids(9) *dsdz(i)
440 s10 = dnids(10)*dsdz(i)
441 s11 = dnids(11)*dsdz(i)
442 s12 = dnids(12)*dsdz(i)
443 t10 = dnidt(10)*dtdz(i)
444 t14 = dnidt(14)*dtdz(i)
445 pz(i,9) = r9 + s9 + dnidt(9)*dtdz(i)
446 pz(i,10)= dnidr(10)*drdz(i)+ s10 + t10
447 pz(i,11)=-r9 + s11 + dnidt(11)*dtdz(i)
448 pz(i,12)= dnidr(12)*drdz(i)+ s12 - t10
449 pz(i,13)= r13 - s9 + dnidt(13)*dtdz(i)
450 pz(i,14)= dnidr(14)*drdz(i)- s10 + t14
451 pz(i,15)=-r13 - s11 + dnidt(15)*dtdz(i)
452 pz(i,16)= dnidr(16)*drdz(i)- s12 - t14
453
454 ENDDO
455
456
457
458 DO n=1,16
459 DO i=lft,llt
460 kxx(i,n) = vol(i)*
461 . (px(i,n)*px(i,n) + py(i,n)*py(i,n) + pz(i,n)*pz(i,n))
462 ul(i,n) = ul(i,n) + kxx(i,n)
463 ENDDO
464 ENDDO
465 DO i=lft,llt
466 volg(i) =volg(i) + vol(i)
467 ENDDO
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482 1000 FORMAT(/' ZERO OR NEGATIVE VOLUME : 3D-ELEMENT NB',i10/)
483 2000 FORMAT(/' ZERO OR NEGATIVE VOLUME : DELETE 3D-ELEMENT NB',i10/)
484
485 RETURN
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)