34 . CONTN ,CONTT ,IAD_ELEM,FR_ELEM,WEIGHT ,
35 . IXQ ,SEGQUADFR,IXS10 ,FNCONTP2,FTCONTP2 ,
36 . H3D_DATA,CSEFRIC,CSEFRICG,SZ_NPCONT2,NPCONT2)
45#include "implicit_f.inc"
59 . IXS(NIXS,*), IXC(NIXC,*), IXTG(NIXTG,*), FASOLFR(2,*),
60 . IAD_ELEM(2,*), FR_ELEM(*), WEIGHT(*),IXQ(7,*),SEGQUADFR(2,*),
62 INTEGER ,
INTENT(IN) :: SZ_NPCONT2
64 . X(3,*), CONTN(3,*), CONTT(3,*),FNCONTP2(3,*),FTCONTP2(3,*)
65 my_real ,
INTENT(INOUT) :: csefric(
ninefric
66 my_real ,
INTENT(IN) :: npcont2(3,sz_npcont2)
67 TYPE (H3D_DATABASE) :: H3D_DATA
71 INTEGER N1,N2,N3,N4,,NN2,NN3,J,
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
121 ALLOCATE(nodarea(numnod))
127 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT /=0)
THEN
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
135 ALLOCATE(itagn(numnod))
136 ALLOCATE(norm_n(3,nnout))
140 normal(1:3) = contn(1:3,n)
141 nnn = normal(1)**2+normal(2)**2+normal(3)**2
144 normal(1:3) = normal(1:3)*nnn
147 norm_n(1:3,ni) = normal(1:3)
154 IF( n <= numels8 )
THEN
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)+itagn(n4))==0 ) cycle
195 normal(1:3)= norm_n(1:3,ni)
196 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
200 normal(1:3)= norm_n(1:3,ni)
201 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
205 normal(1:3)= norm_n(1:3,ni)
206 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
210 normal(1:3)= norm_n(1:3,ni)
211 nodarea(n4)=nodarea(n4)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
220 normal(1:3)= norm_n(1:3,ni)
221 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal
226 normal(1:3)= norm_n(1:3,ni)
227 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
230 IF (n3 /= n2 .AND. n3 /= n1 )
THEN
233 normal(1:3)= norm_n(1:3,ni)
234 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
237 IF (n4 /= n3 .AND. n4 /= n2 .AND. n4 /= n1 )
THEN
240 normal(1:3)= norm_n(1:3,ni)
241 nodarea(n4)=nodarea(n4)+normal(1)*e3x+normal(2)*e3y+normal
246 ELSEIF( n <= numels8
THEN
254 nn1=faces10(1,4*(ifac-1)+j)
255 nn2=faces10(2,4*(ifac-1)+j)
256 nn3=faces10(3,4*(ifac-1)+j)
259 IF(nn1 >0.AND.nn1 < 10)
THEN
262 n1=ixs10(nn1-10,n-numels8)
278 n3=ixs10(nn3-10,n-numels8)
283 IF(n1 > 0 .AND. n2 > 0 .AND.n3 > 0)
THEN
284 IF((itagn(n1)+itagn(n2)+itagn(n3))==0 ) cycle
312 normal(1:3)= norm_n(1:3,ni)
313 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
317 normal(1:3)= norm_n(1:3,ni)
318 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)
322 normal(1:3)= norm_n(1:3,ni)
323 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
335 IF((itagn(n1)+itagn(n2)+itagn(n3)+itagn(n4))==0 ) cycle
367 normal(1:3)= norm_n(1:3,ni)
368 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
372 normal(1:3)= norm_n(1:3,ni)
373 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
377 normal(1:3)= norm_n(1:3,ni)
378 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
382 normal(1:3)= norm_n(1:3,ni)
383 nodarea(n4)=nodarea(n4)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
412 normal(1:3)= norm_n(1:3,ni)
413 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
417 normal(1:3)= norm_n(1:3,ni)
418 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
422 normal(1:3)= norm_n(1:3,ni)
423 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
457 normal(1:3)= norm_n(1:3,ni)
458 nodarea(n1)=nodarea(n1)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
462 normal(1:3)= norm_n(1:3,ni)
463 nodarea(n2)=nodarea(n2)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
467 normal(1:3)= norm_n(1:3,ni)
468 nodarea(n3)=nodarea(n3)+normal(1)*e3x+normal(2)*e3y+normal(3)*e3z
476 n1=ixq(lines(1,iline)+1,n)
477 n2=ixq(lines(2,iline)+1,n)
484 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
488 nodarea(n1)=nodarea(n1)+area
489 nodarea(n2)=nodarea(n2)+area
495 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
500 IF (nodarea(n) <= em20)
THEN
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)
520 nodarea(1:numnod)=zero
528 IF( n <= numels8 )
THEN
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)
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
574 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
577 nodarea(n1)=nodarea(n1)+area
578 nodarea(n2)=nodarea(n2)+area
579 nodarea(n3)=nodarea(n3)+area
583 nodarea(n1)=nodarea(n1)+area
584 nodarea(n2)=nodarea(n2)+area
585 nodarea(n4)=nodarea(n4)+area
589 nodarea(n2)=nodarea(n2)+area
590 nodarea(n3)=nodarea(n3)+area
591 nodarea(n4)=nodarea(n4)+area
595 nodarea(n2)=nodarea(n2)+area
596 nodarea(n3)=nodarea(n3)+area
597 nodarea(n4)=nodarea(n4)+area
602 ELSEIF( n <= numels8+numels10 )
THEN
606 nn1=faces10(1,4*(ifac-1)+j)
607 nn2=faces10(2,4*(ifac-1)+j)
608 nn3=faces10(3,4*(ifac-1)+j)
611 IF(nn1 >0.AND.nn1 < 10)
THEN
614 n1=ixs10(nn1-10,n-numels8)
622 n2=ixs10(nn2-10,n-numels8)
630 n3=ixs10(nn3-10,n-numels8)
635 IF(nn1 > 0 .AND. nn2 > 0 .AND.nn3 > 0)
THEN
660 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
662 nodarea(n1)=nodarea(n1)+area
663 nodarea(n2)=nodarea(n2)+area
664 nodarea(n3)=nodarea(n3)+area
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
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
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
778 n1=ixq(lines(1,iline)+1,n)
779 n2=ixq(lines(2,iline)+1,n)
786 area = sqrt((y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
790 nodarea(n1)=nodarea(n1)+area
791 nodarea(n2)=nodarea(n2)+area
796 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
800 IF(anim_v(27)+h3d_data%N_VECT_PCONT2 /=0)
THEN
802 IF (nodarea(n) == zero)
THEN
812 areainv = one/
max(em20,nodarea(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))
831 IF (nodarea(n) == zero)
THEN
834 areainv = one/
max(em30,nodarea(n))
835 csefric(ni,n)=areainv*efric(ni,n)
841 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
843 IF (nodarea(n) == zero)
THEN
846 areainv = one/
max(em30,nodarea(n))
847 csefricg(n)=areainv*efricg(n)
868 . CONTN ,CONTT ,IAD_ELEM,FR_ELEM,WEIGHT ,
869 . NODGLOB ,FNCONTG ,FTCONTG,FNCONTP2,FTCONTP2 ,
870 . H3D_DATA,CSEFRIC_STAMP,CSEFRICG_STAMP,SZ_NPCONT2,NPCONT2)
879#include "implicit_f.inc"
880#include "comlock.inc"
884#include "com01_c.inc"
885#include "com04_c.inc"
888#include "scr14_c.inc"
889#include "scr16_c.inc"
895 . IXS(NIXS,*), IXC(NIXC,*), IXTG(NIXTG,*), FASOLFR(2,*),
896 . IAD_ELEM(2,*), FR_ELEM(*), WEIGHT(*), NODGLOB(*)
897 INTEGER ,
INTENT(IN) :: SZ_NPCONT2
899 . X(3,*), CONTN(3,*), CONTT(3,*), FNCONTG(3,*), FTCONTG(3,*),
900 . fncontp2(3,*),ftcontp2(3,*)
903 my_real ,
INTENT(IN) :: npcont2(3,sz_npcont2)
904 TYPE (H3D_DATABASE) :: H3D_DATA
913 . x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,
914 . x31,y31,z31,x42,y42,z42,x32,y32,z32,e3x,e3y,e3z,
915 . tmp,areainv,normal(3),nnn,f_total(1:3),fn_proj
917 my_real,
DIMENSION(:),
ALLOCATABLE :: nodarea,nodareag
927 ALLOCATE(nodarea(numnod))
936 n1=ixs(faces(1,ifac)+1,n)
937 n2=ixs(faces(2,ifac)+1,n)
938 n3=ixs(faces(3,ifac)+1,n)
939 n4=ixs(faces(4,ifac)+1,n)
971 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
972 nodarea(n1)=nodarea(n1)+
area
973 nodarea(n2)=nodarea(n2)+
area
974 nodarea(n3)=nodarea(n3)+
area
975 nodarea(n4)=nodarea(n4)+
area
980 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
983 nodarea(n1)=nodarea(n1)+
area
984 nodarea(n2)=nodarea(n2)+
area
985 nodarea(n3)=nodarea(n3)+
area
989 nodarea(n1)=nodarea(n1)+
area
990 nodarea(n2)=nodarea(n2)+
area
991 nodarea(n4)=nodarea(n4)+
area
995 nodarea(n2)=nodarea(n2)+
area
996 nodarea(n3)=nodarea(n3)+
area
997 nodarea(n4)=nodarea(n4)+
area
1001 nodarea(n2)=nodarea(n2)+
area
1002 nodarea(n3)=nodarea(n3)+
area
1003 nodarea(n4)=nodarea(n4)+
area
1043 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
1044 nodarea(n1)=nodarea(n1)+
area
1045 nodarea(n2)=nodarea(n2)+
area
1046 nodarea(n3)=nodarea(n3)+
area
1047 nodarea(n4)=nodarea(n4)+
area
1073 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
1074 nodarea(n1)=nodarea(n1)+
area
1075 nodarea(n2)=nodarea(n2)+
area
1076 nodarea(n3)=nodarea(n3)+
area
1107 area=sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
1108 nodarea(n1)=nodarea(n1)+
area
1109 nodarea(n2)=nodarea(n2)+
area
1110 nodarea(n3)=nodarea(n3)+
area
1114 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
1121 . +h3d_data%N_SCAL_CSE_FRIC /=0)
THEN
1123 ALLOCATE(nodareag(numnodg))
1129 nodareag(i)=nodarea(k)*weight(k)
1134 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT/=0)
THEN
1141 csefric_stamp(ni,i)=efric_stamp(ni,i)
1147 IF(h3d_data%N_SCAL_CSE_FRIC > 0)
THEN
1149 csefricg_stamp(i)=efricg_stamp(i)
1158 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT /=0)
THEN
1160 IF (nspmd == 1)
THEN
1163 IF (nodarea(n) == zero)
THEN
1171 tmp=one/
max(em30,nodarea(n))
1172 fncontg(1,i)=fncontg(1,i)*tmp
1173 fncontg(2,i)=fncontg(2,i)*tmp
1174 fncontg(3,i)=fncontg(3,i)*tmp
1175 ftcontg(1,i)=ftcontg(1,i)*tmp
1176 ftcontg(2,i)=ftcontg(2,i)*tmp
1177 ftcontg(3,i)=ftcontg(3,i)*tmp
1183 IF (nodareag(n) == zero)
THEN
1191 tmp=one/
max(em30,nodareag(n))
1192 fncontg(1,n)=fncontg(1,n)*tmp
1193 fncontg(2,n)=fncontg(2,n)*tmp
1194 fncontg(3,n)=fncontg(3,n)*tmp
1195 ftcontg(1,n)=ftcontg(1,n)*tmp
1196 ftcontg(2,n)=ftcontg(2,n)*tmp
1197 ftcontg(3,n)=ftcontg(3,n)*tmp
1214 IF(anim_v(27)+h3d_data%N_VECT_PCONT2 /=0)
THEN
1216 IF (nodarea(n) == zero)
THEN
1226 areainv = one/
max(em20,nodarea(n))
1227 normal(1:3) = npcont2(1:3,n)
1228 nnn = sqrt(
max(em20,normal(1)**2+normal(2)**2+normal(3)**2))
1229 normal(1:3) = normal(1:3)/nnn
1230 fn_proj = fncontp2(1,n)*normal(1)+fncontp2(2,n)*normal(2)+fncontp2
1231 f_total(1:3) = fncontp2(1:3,n)
1232 fncontp2(1,n)=areainv*fn_proj*normal
1233 fncontp2(2,n)=areainv*fn_proj*normal(2)
1234 fncontp2(3,n)=areainv*fn_proj*normal(3)
1235 ftcontp2(1,n)=areainv*(f_total(1)-fn_proj*normal(1))
1236 ftcontp2(2,n)=areainv*(f_total(2)-fn_proj*normal(2))
1237 ftcontp2(3,n)=areainv*(f_total(3)-fn_proj*normal(3))
1243 IF (nspmd == 1)
THEN
1247 IF (nodarea(n) == zero)
THEN
1248 csefric_stamp(ni,i)=zero
1250 tmp=one/
max(em30,nodarea(n))
1251 csefric_stamp(ni,i)=tmp*efric_stamp(ni,i)
1259 IF (nodareag(n) == zero)
THEN
1260 csefric_stamp(ni,n)=zero
1262 tmp=one/
max(em30,nodareag(n))
1263 csefric_stamp(ni,n)=tmp*csefric_stamp(ni,n)
1270 csefric_stamp(ni,n)=zero
1277 IF(h3d_data%N_SCAL_CSE_FRIC > 0)
THEN
1278 IF (nspmd == 1)
THEN
1281 IF (nodarea(n) == zero)
THEN
1282 csefricg_stamp(i)=zero
1284 tmp=one/
max(em30,nodarea(n))
1285 csefricg_stamp(i)=tmp*efricg_stamp(i)
1291 IF (nodareag(n) == zero)
THEN
1292 csefricg_stamp(n)=zero
1294 tmp=one/
max(em30,nodareag(n))
1295 csefricg_stamp(n)=tmp*csefricg_stamp(n)
1300 csefricg_stamp(n)=zero
1308 . +h3d_data%N_SCAL_CSE_FRIC /=0)
DEALLOCATE(nodareag)