37
38
39
42
43
44
45#include "implicit_f.inc"
46#include "comlock.inc"
47
48
49
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "scr14_c.inc"
53#include "scr16_c.inc"
54
55
56
57
58 INTEGER
59 . IXS(NIXS,*), IXC(NIXC,*), IXTG(NIXTG,*), FASOLFR(2,*),
60 . IAD_ELEM(2,*), FR_ELEM(*), WEIGHT(*),IXQ(7,*),SEGQUADFR(2,*),
61 . IXS10(6,*)
62 INTEGER , INTENT(IN) :: SZ_NPCONT2
64 . x(3,*), contn(3,*), contt(3,*),fncontp2(3,*),ftcontp2(3,*)
66 my_real ,
INTENT(IN) :: npcont2(3,sz_npcont2)
67 TYPE (H3D_DATABASE) :: H3D_DATA
68
69
70
71 INTEGER N1,N2,N3,N4,NN1,NN2,NN3,J,
72 . I,N,IFAC,ILINE,
73 . IERROR, LENR, NI,NNOUT
74 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAGN
77 . x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,
78 . x31,y31,z31,x42,y42,z42,x32,y32,z32,e3x,e3y,e3z,
79 . fs2, fs3, ft2, ft3, e, f, g, rayon,ay1,ay2,ay3,ay4,
80 . areainv,normal(3),nnn,f_total(1:3),fn_proj
81 INTEGER FACES(4,6),LINES(2,4),FACES10(3,24)
82 my_real,
DIMENSION(:),
ALLOCATABLE :: nodarea
83 my_real,
DIMENSION(:,:),
ALLOCATABLE :: norm_n
84
85 DATA faces/1,2,3,4,
86 . 2,1,5,6,
87 . 1,5,8,4,
88 . 5,6,7,8,
89 . 3,4,8,7,
90 . 2,6,7,3/
91 DATA lines/1,2,
92 . 2,3,
93 . 3,4,
94 . 4,1/
95 DATA faces10/0,0,0,
96 . 0,0,0,
97 . 0,0,0,
98 . 0,0,0,
99 . 1,13,14,
100 . 5,14,16,
101 . 6,13,16,
102 . 13,14,16,
103 . 1,11,13,
104 . 3,11,15,
105 . 5,14,15,
106 . 11,14,15,
107 . 0,0,0,
108 . 0,0,0,
109 . 0,0,0,
110 . 0,0,0,
111 . 3,12,15,
112 . 5,15,16,
113 . 6,12,16,
114 . 12,15,16,
115 . 1,11,13,
116 . 3,11,12,
117 . 6,12,13,
118 . 11,12,13/
119
120
121 ALLOCATE(nodarea(numnod))
122 DO n=1,numnod
123 nodarea(n)=zero
124 END DO
125
126
127 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT /=0) THEN
128 nnout = 0
129 DO n=1,numnod
130 normal(1:3) = contn(1:3,n)
131 nnn = normal(1)**2+normal(2)**2+normal(3)**2
132 IF(nnn > em14) nnout = nnout + 1
133 END DO
134 IF(nnout >0) THEN
135 ALLOCATE(itagn(numnod))
136 ALLOCATE(norm_n(3,nnout))
137 itagn = 0
138 ni = 0
139 DO n=1,numnod
140 normal(1:3) = contn(1:3,n)
141 nnn = normal(1)**2+normal(2)**2+normal(3)**2
142 IF(nnn > em14) THEN
143 nnn = one/sqrt(nnn)
144 normal(1:3) = normal(1:3)*nnn
145 ni = ni + 1
146 itagn(n) = ni
147 norm_n(1:3,ni) = normal(1:3)
148 END IF
149 END DO
150 DO i=1,nfasolfr
151 n =fasolfr(1,i)
152 ifac=fasolfr(2,i)
153
154 IF( n <= numels8 ) THEN
155
156 n1=ixs(faces(1,ifac)+1,n)
157 n2=ixs(faces(2,ifac)+1,n)
158 n3=ixs(faces(3,ifac)+1,n)
159 n4=ixs(faces(4,ifac)+1,n)
160 IF((itagn(n1)+itagn(n2)+itagn(n3
161 x1=x(1,n1)
162 y1=x(2,n1)
163 z1=x(3,n1)
164 x2=x(1,n2)
165 y2=x(2,n2)
166 z2=x(3,n2)
167 x3=x(1,n3)
168 y3=x(2,n3)
169 z3=x(3,n3)
170 x4=x(1,n4)
171 y4=x(2,n4)
172 z4=x(3,n4)
173
174 x31=x3-x1
175 y31=y3-y1
176 z31=z3-z1
177 x42=x4-x2
178 y42=y4-y2
179 z42=z4-z2
180
181 e3x=y31*z42-z31*y42
182 e3y=z31*x42-x31*z42
183 e3z=x31*y42-y31*x42
184
185 IF( n4/=n3
186 . .AND.n3/=n2
187 . .AND.n2/=n1
188 . .AND.n1/=n4THEN
189 e3x=one_over_8*e3x
190 e3y=one_over_8*e3y
191 e3z=one_over_8*e3z
192
193 ni= itagn(n1)
194 IF (ni > 0 ) THEN
195 normal(1:3)= norm_n(1:3,ni)
196 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
197 ENDIF
198 ni= itagn(n2)
199 IF (ni > 0 ) THEN
200 normal(1:3)= norm_n(1:3,ni)
201 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
202 ENDIF
203 ni= itagn(n3)
204 IF (ni > 0 ) THEN
205 normal(1:3)= norm_n(1:3,ni)
206 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
207 ENDIF
208 ni= itagn(n4)
209 IF (ni > 0 ) THEN
210 normal(1:3)= norm_n(1:3,ni)
211 nodarea(n4)=nodarea(n4)+normal(
212 ENDIF
213 ELSE
214 e3x=one_over_6*e3x
215 e3y=one_over_6*e3y
216 e3z=one_over_6*e3z
217
218 ni= itagn(n1)
219 IF (ni > 0 ) THEN
220 normal(1:3)= norm_n(1:3,ni)
221 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y
222 ENDIF
223 IF (n2 /= n1 ) THEN
224 ni= itagn(n2)
225 IF (ni > 0 ) THEN
226 normal(1:3)= norm_n(1:3,ni)
227 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
228 ENDIF
229 ENDIF
230 IF (n3 /= n2 .AND. n3 /= n1 ) THEN
231 ni= itagn(n3)
232 IF (ni > 0 ) THEN
233 normal(1:3)= norm_n(1:3,ni)
234 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
235 ENDIF
236 ENDIF
237 IF (n4 /= n3 .AND. n4 /= n2 .AND. n4 /= n1 ) THEN
238 ni= itagn(n4)
239 IF (ni > 0 ) THEN
240 normal(1:3)= norm_n(1:3,ni)
241 nodarea(n4)=nodarea(n4)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
242 ENDIF
243 ENDIF
244 END IF
245
246 ELSEIF( n <= numels8+numels10 ) THEN
247
248 n1=0
249 n2=0
250 n3=0
251
252
253 DO j=1,4
254 nn1=faces10(1,4*(ifac-1)+j)
255 nn2
256 nn3=faces10(3,4*(ifac-1)+j)
257
258 IF(nn1 > 0 ) THEN
259 IF(nn1 >0.AND.nn1 < 10) THEN
260 n1=ixs(nn1+1,n)
261 ELSE
262 n1=ixs10(nn1-10,n-numels8)
263 ENDIF
264 ENDIF
265
266 IF(nn2 > 0 ) THEN
267 IF(nn2 < 10) THEN
268 n2=ixs(nn2+1,n)
269 ELSE
270 n2=ixs10(nn2-10,n-numels8)
271 ENDIF
272 ENDIF
273
274 IF(nn3 > 0 ) THEN
275 IF(nn3 < 10) THEN
276 n3=ixs(nn3+1,n)
277 ELSE
278 n3=ixs10(nn3-10,n-numels8)
279 ENDIF
280 ENDIF
281
282
283 IF(n1 > 0 .AND. n2 > 0 .AND.n3 > 0) THEN
284 IF((itagn(n1)+itagn(n2)+itagn(n3))==0 ) cycle
285 x1=x(1,n1)
286 y1=x(2,n1)
287 z1=x(3,n1)
288 x2=x(1,n2)
289 y2=x(2,n2)
290 z2=x(3,n2)
291 x3=x(1,n3)
292 y3=x(2,n3)
293 z3=x(3,n3)
294
295 x31=x3-x1
296 y31=y3-y1
297 z31=z3-z1
298 x32=x3-x2
299 y32=y3-y2
300 z32=z3-z2
301
302 e3x=y31*z32-z31*y32
303 e3y=z31*x32-x31*z32
304 e3z=x31*y32-y31*x32
305
306 e3x=one_over_6*e3x
307 e3y=one_over_6*e3y
308 e3z=one_over_6*e3z
309
310 ni= itagn(n1)
311 IF (ni > 0 ) THEN
312 normal(1:3)= norm_n(1:3,ni)
313 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
314 ENDIF
315 ni= itagn(n2)
316 IF (ni > 0 ) THEN
317 normal(1:3)= norm_n(1:3,ni)
318 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
319 ENDIF
320 ni= itagn(n3)
321 IF (ni > 0 ) THEN
322 normal(1:3)= norm_n(1:3,ni)
323 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
324 ENDIF
325 ENDIF
326 ENDDO
327 ENDIF
328 END DO
329
330 DO n=1,numelc
331 n1=ixc(2,n)
332 n2=ixc(3,n)
333 n3=ixc(4,n)
334 n4=ixc(5,n)
335 IF((itagn(n1)+itagn(n2)+itagn(n3)+itagn(n4))==0 ) cycle
336 IF(n4/=n3)THEN
337 x1=x(1,n1)
338 y1=x(2,n1)
339 z1=x(3,n1)
340 x2=x(1,n2)
341 y2=x(2,n2)
342 z2=x(3,n2)
343 x3=x(1,n3)
344 y3=x(2,n3)
345 z3=x(3,n3)
346 x4=x(1,n4)
347 y4=x(2,n4)
348 z4=x(3,n4)
349
350 x31=x3-x1
351 y31=y3-y1
352 z31=z3-z1
353 x42=x4-x2
354 y42=y4-y2
355 z42=z4-z2
356
357 e3x=y31*z42-z31*y42
358 e3y=z31*x42-x31*z42
359 e3z=x31*y42-y31*x42
360
361 e3x=one_over_8*e3x
362 e3y=one_over_8*e3y
363 e3z=one_over_8*e3z
364
365
366 IF (ni > 0 ) THEN
367 normal(1:3)= norm_n(1:3,ni)
368 nodarea(n1)=nodarea(n1)+normal(
369 ENDIF
370 ni= itagn(n2)
371 IF (ni > 0 ) THEN
372 normal(1:3)= norm_n(1:3,ni)
373 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
374 ENDIF
375 ni= itagn(n3)
376 IF (ni > 0 ) THEN
377 normal(1:3)= norm_n(1:3,ni)
378 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3
379 ENDIF
380 ni= itagn(n4)
381 IF (ni > 0 ) THEN
382 normal(1:3)= norm_n(1:3,ni)
383 nodarea(n4)=nodarea(n4)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
384 ENDIF
385
386 ELSE
387 x1=x(1,n1)
388 y1=x(2,n1)
389 z1=x(3,n1)
390 x2=x(1,n2)
391 y2=x(2,n2)
392 z2=x(3,n2)
393 x3=x(1,n3)
394 y3=x(2,n3)
395 z3=x(3,n3)
396 x31=x3-x1
397 y31=y3-y1
398 z31=z3-z1
399 x32=x3-x2
400 y32=y3-y2
401 z32=z3-z2
402
403 e3x=y31*z32-z31*y32
404 e3y=z31*x32-x31*z32
405 e3z=x31*y32-y31*x32
406 e3x=one_over_6*e3x
407 e3y=one_over_6*e3y
408 e3z=one_over_6*e3z
409
410
411 IF (ni > 0 ) THEN
412 normal(1:3)= norm_n(1:3,ni)
413 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
414 ENDIF
415 ni= itagn(n2)
416 IF (ni > 0 ) THEN
417 normal(1:3)= norm_n(1:3,ni)
418 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
419 ENDIF
420 ni= itagn(n3)
421 IF (ni > 0 ) THEN
422 normal(1:3)= norm_n(1:3,ni)
423 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal
424 ENDIF
425 END IF
426 END DO
427
428 DO n=1,numeltg
429 n1=ixtg(2,n)
430 n2=ixtg(3,n)
431 n3=ixtg(4,n)
432 x1=x(1,n1)
433 y1=x(2,n1)
434 z1=x(3,n1)
435 x2=x(1,n2)
436 y2=x(2,n2)
437 z2=x(3,n2)
438 x3=x(1,n3)
439 y3=x(2,n3)
440 z3=x(3,n3)
441 x31=x3-x1
442 y31=y3-y1
443 z31=z3-z1
444 x32=x3-x2
445 y32=y3-y2
446 z32=z3-z2
447
448 e3x=y31*z32-z31*y32
449 e3y=z31*x32-x31*z32
450 e3z=x31*y32-y31*x32
451 e3x=one_over_6*e3x
452 e3y=one_over_6*e3y
453 e3z=one_over_6*e3z
454
455
456 IF (ni > 0 ) THEN
457 normal(1:3)= norm_n(1:3,ni)
458 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
459 ENDIF
460 ni= itagn(n2)
461 IF (ni > 0 ) THEN
462 normal(1:3)= norm_n(1:3,ni)
463 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
464 ENDIF
465 ni= itagn(n3)
466 IF (ni > 0 ) THEN
467 normal(1:3)= norm_n(1:3,ni)
468 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
469 ENDIF
470 END DO
471
472 DO i=1,nsegquadfr
473 n =segquadfr(1,i)
474 iline=segquadfr(2,i)
475
476 n1=ixq(lines(1,iline)+1,n)
477 n2=ixq(lines(2,iline)+1,n)
478
479 y1=x(2,n1)
480 z1=x(3,n1)
481 y2=x(2,n2)
482 z2=x(3,n2)
483
484 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
486
487
488 nodarea(n1)=nodarea(n1)+
area
489 nodarea(n2)=nodarea(n2)+
area
490
491 ENDDO
492 END IF
493
494 IF(nspmd > 1)THEN
495 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
497 END IF
498
499 DO n=1,numnod
500 IF (nodarea(n) <= em20) THEN
501 contn(1,n)=zero
502 contn(2,n)=zero
503 contn(3,n)=zero
504 contt(1,n)=zero
505 contt(2,n)=zero
506 contt(3,n)=zero
507 ELSE
508 areainv = one/
max(em20,nodarea(n))
509 contn(1,n)=areainv*contn(1,n)
510 contn(2,n)=areainv*contn(2,n)
511 contn(3,n)=areainv*contn(3,n)
512 contt(1,n)=areainv*contt(1,n)
513 contt(2,n)=areainv*contt(2,n)
514 contt(3,n)=areainv*contt(3,n)
515 ENDIF
516 END DO
517 IF (nnout >0) THEN
518 DEALLOCATE(itagn)
519 DEALLOCATE(norm_n)
520 nodarea(1:numnod)=zero
521 END IF
522 ENDIF
523
524 DO i=1,nfasolfr
525 n =fasolfr(1,i)
526 ifac=fasolfr(2,i)
527
528 IF( n <= numels8 ) THEN
529
530 n1=ixs(faces(1,ifac)+1,n)
531 n2=ixs(faces(2,ifac)+1,n)
532 n3=ixs(faces(3,ifac)+1,n)
533 n4=ixs(faces(4,ifac)+1,n)
534 x1=x(1,n1)
535 y1=x(2,n1)
536 z1=x(3,n1)
537 x2=x(1,n2)
538 y2=x(2,n2)
539 z2=x(3,n2)
540 x3=x(1,n3)
541 y3=x(2,n3)
542 z3=x(3,n3)
543 x4=x(1,n4)
544 y4=x(2,n4)
545 z4=x(3,n4)
546
547 x31=x3-x1
548 y31=y3-y1
549 z31=z3-z1
550 x42=x4-x2
551 y42=y4-y2
552 z42=z4-z2
553
554 e3x=y31*z42-z31*y42
555 e3y=z31*x42-x31*z42
556 e3z=x31*y42-y31*x42
557
558 IF( n4/=n3
559 . .AND.n3/=n2
560 . .AND.n2/=n1
561 . .AND.n1/=n4)THEN
562 e3x=one_over_8*e3x
563 e3y=one_over_8*e3y
564 e3z=one_over_8*e3z
565 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
566 nodarea(n1)=nodarea(n1)+
area
567 nodarea(n2)=nodarea(n2)+
area
568 nodarea(n3)=nodarea(n3)+
area
569 nodarea(n4)=nodarea(n4)+
area
570 ELSE
571 e3x=one_over_6*e3x
572 e3y=one_over_6*e3y
573 e3z=one_over_6*e3z
574 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
575 IF(n4==n3)THEN
576 IF(n2/=n1) THEN
577 nodarea(n1)=nodarea(n1)+
area
578 nodarea(n2)=nodarea(n2)+
area
579 nodarea(n3)=nodarea(n3)+
area
580 ENDIF
581 ELSEIF(n3==n2)THEN
582 IF(n4/=n1) THEN
583 nodarea(n1)=nodarea(n1)+
area
584 nodarea(n2)=nodarea(n2)+
area
585 nodarea(n4)=nodarea(n4)+
area
586 ENDIF
587 ELSEIF(n2==n1)THEN
588 IF(n4/=n3) THEN
589 nodarea(n2)=nodarea(n2)+
area
590 nodarea(n3)=nodarea(n3)+
area
591 nodarea(n4)=nodarea(n4)+
area
592 ENDIF
593 ELSEIF(n1==n4)THEN
594 IF(n2/=n3) THEN
595 nodarea(n2)=nodarea(n2)
596 nodarea(n3)=nodarea(n3)+
area
597 nodarea(n4)=nodarea(n4)+
area
598 ENDIF
599 END IF
600 END IF
601
602 ELSEIF( n <= numels8+numels10 ) THEN
603
604
605 DO j=1,4
606 nn1=faces10(1,4*(ifac-1)+j)
607 nn2=faces10(2,4*(ifac-1)+j)
608 nn3=faces10(3,4*(ifac-1)+j)
609
610 IF(nn1 > 0 ) THEN
611 IF(nn1 >0.AND.nn1 < 10) THEN
612 n1=ixs(nn1+1,n)
613 ELSE
614 n1=ixs10(nn1-10,n-numels8)
615 ENDIF
616 ENDIF
617
618 IF(nn2 > 0 ) THEN
619 IF(nn2 < 10) THEN
620 n2=ixs(nn2+1,n)
621 ELSE
622 n2=ixs10(nn2-10,n-numels8)
623 ENDIF
624 ENDIF
625
626 IF(nn3 > 0 ) THEN
627 IF(nn3 < 10) THEN
628 n3=ixs(nn3+1,n)
629 ELSE
630 n3=ixs10(nn3-10,n-numels8)
631 ENDIF
632 ENDIF
633
634
635 IF(nn1 > 0 .AND. nn2 > 0 .AND.nn3 > 0) THEN
636 x1=x(1,n1)
637 y1=x(2,n1)
638 z1=x(3,n1)
639 x2=x(1,n2)
640 y2=x(2,n2)
641 z2=x(3,n2)
642 x3=x(1,n3)
643 y3=x(2,n3)
644 z3=x(3,n3)
645
646 x31=x3-x1
647 y31=y3-y1
648 z31=z3-z1
649 x32=x3-x2
650 y32=y3-y2
651 z32=z3-z2
652
653 e3x=y31*z32-z31*y32
654 e3y=z31*x32-x31*z32
655 e3z=x31*y32-y31*x32
656
657 e3x=one_over_6*e3x
658 e3y=one_over_6*e3y
659 e3z=one_over_6*e3z
660 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
661
662 nodarea(n1)=nodarea(n1)+
area
663 nodarea(n2)=nodarea(n2)+
area
664 nodarea(n3)=nodarea(n3)+
area
665 ENDIF
666 ENDDO
667 ENDIF
668 END DO
669
670 DO n=1,numelc
671 n1=ixc(2,n
672 n2=ixc(3,n)
673 n3=ixc(4,n)
674 n4=ixc(5,n)
675 IF(n4/=n3)THEN
676 x1=x(1,n1)
677 y1=x(2,n1)
678 z1=x(3,n1)
679 x2=x(1,n2)
680 y2=x(2,n2)
681 z2=x(3,n2)
682 x3=x(1,n3)
683 y3=x(2,n3)
684 z3=x(3,n3)
685 x4=x(1,n4)
686 y4=x(2,n4)
687 z4=x(3,n4)
688
689 x31=x3-x1
690 y31=y3-y1
691 z31=z3-z1
692 x42=x4-x2
693 y42=y4-y2
694 z42=z4-z2
695
696 e3x=y31*z42-z31*y42
697 e3y=z31*x42-x31*z42
698 e3z=x31*y42-y31*x42
699
700 e3x=one_over_8*e3x
701 e3y=one_over_8*e3y
702 e3z=one_over_8*e3z
703
704 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
705 nodarea(n1)=nodarea(n1)+
area
706 nodarea(n2)=nodarea(n2)+
area
707 nodarea(n3)=nodarea(n3)+
area
708 nodarea(n4)=nodarea(n4)+
area
709
710 ELSE
711 x1=x(1,n1)
712 y1=x(2,n1)
713 z1=x(3,n1)
714 x2=x(1,n2)
715 y2=x(2,n2)
716 z2=x(3,n2)
717 x3=x(1,n3)
718 y3=x(2,n3)
719 z3=x(3,n3)
720 x31=x3-x1
721 y31=y3-y1
722 z31=z3-z1
723 x32=x3-x2
724 y32=y3-y2
725 z32=z3-z2
726
727 e3x=y31*z32-z31*y32
728 e3y=z31*x32-x31*z32
729 e3z=x31*y32-y31*x32
730 e3x=one_over_6*e3x
731 e3y=one_over_6*e3y
732 e3z=one_over_6*e3z
733
734 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
735 nodarea(n1)=nodarea(n1)+
area
736 nodarea(n2)=nodarea(n2)+
area
737 nodarea(n3)=nodarea(n3)+
area
738 END IF
739 END DO
740
741 DO n=1,numeltg
742 n1=ixtg(2,n)
743 n2=ixtg(3,n)
744 n3=ixtg(4,n)
745 x1=x(1,n1)
746 y1=x(2,n1)
747 z1=x(3,n1)
748 x2=x(1,n2)
749 y2=x(2,n2)
750 z2=x(3,n2)
751 x3=x(1,n3)
752 y3=x(2,n3)
753 z3=x(3,n3)
754 x31=x3-x1
755 y31=y3-y1
756 z31=z3-z1
757 x32=x3-x2
758 y32=y3-y2
759 z32=z3-z2
760
761 e3x=y31*z32-z31*y32
762 e3y=z31*x32-x31*z32
763 e3z=x31*y32-y31*x32
764 e3x=one_over_6*e3x
765 e3y=one_over_6*e3y
766 e3z=one_over_6*e3z
767
768 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
769 nodarea(n1)=nodarea(n1)+
area
770 nodarea(n2)=nodarea(n2)+
area
771 nodarea(n3)=nodarea(n3)+
area
772 END DO
773
774 DO i=1,nsegquadfr
775 n =segquadfr(1,i)
776 iline=segquadfr(2,i)
777
778 n1=ixq(lines(1,iline)+1,n)
779 n2=ixq(lines(2,iline)+1,n)
780
781 y1=x(2,n1)
782 z1=x(3,n1)
783 y2=x(2,n2)
784 z2=x(3,n2)
785
786 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
788
789
790 nodarea(n1)=nodarea(n1)+
area
791 nodarea(n2)=nodarea(n2)+
area
792
793 ENDDO
794
795 IF(nspmd > 1)THEN
796 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
798 END IF
799
800 IF(anim_v(27)+h3d_data%N_VECT_PCONT2 /=0) THEN
801 DO n=1,numnod
802 IF (nodarea(n) == zero) THEN
803 fncontp2(1,n)=zero
804 fncontp2(2,n)=zero
805 fncontp2(3,n)=zero
806 ftcontp2(1,n)=zero
807 ftcontp2(2,n)=zero
808 ftcontp2(3,n)=zero
809 ELSE
810
811
812 areainv = one/
max(em20,nodarea(n))
813 normal(1:3) = npcont2(1:3,n)
814 nnn = sqrt(
max(em20,normal(1)**2+normal(2)**2+normal(3)**2))
815 normal(1:3) = normal(1:3)/nnn
816 fn_proj = fncontp2(1,n)*normal(1)+fncontp2(2,n)*normal(2)+fncontp2(3,n)*normal(3)
817 f_total(1:3) = fncontp2(1:3,n)
818 fncontp2(1,n)=areainv*fn_proj*normal(1)
819 fncontp2(2,n)=areainv*fn_proj*normal(2)
820 fncontp2(3,n)=areainv*fn_proj*normal(3)
821 ftcontp2(1,n)=areainv*(f_total(1)-fn_proj*normal(1))
822 ftcontp2(2,n)=areainv*(f_total(2)-fn_proj*normal(2))
823 ftcontp2(3,n)=areainv*(f_total(3)-fn_proj*normal(3))
824 ENDIF
825 END DO
826 ENDIF
827
830 DO n=1,numnod
831 IF (nodarea(n) == zero) THEN
832 csefric(ni,n)=zero
833 ELSE
834 areainv = one/
max(em30,nodarea(n))
835 csefric(ni,n)=areainv*efric(ni,n)
836 ENDIF
837 END DO
838 ENDDO
839 ENDIF
840
841 IF(h3d_data%N_SCAL_CSE_FRIC >0)THEN
842 DO n=1,numnod
843 IF (nodarea(n) == zero) THEN
844 csefricg(n)=zero
845 ELSE
846 areainv = one/
max(em30,nodarea(n))
847 csefricg(n)=areainv*efricg(n)
848 ENDIF
849 END DO
850 ENDIF
851
852 DEALLOCATE(nodarea)
853
854 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine spmd_exch_nodarea(nodarea, iad_elem, fr_elem, lenr, weight)