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