23 subroutine heat_film_231(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
34 integer(kind=kint) NN, LTYPE, MM
35 integer(kind=kint) NOD(MM)
36 real(kind=kreal) thick, hh, sink
37 real(kind=kreal) xx(nn),yy(nn),zz(nn),term1(mm*mm),term2(mm)
39 integer(kind=kint) I, IC, IP, JP, LX
40 real(kind=kreal) ri, gx, gy, xsum
41 real(kind=kreal) xg(2),wgt(2),h(2),hr(2)
43 data xg/-0.5773502691896, 0.5773502691896/
48 else if(ltype.EQ.2)
then
51 else if(ltype.EQ.3)
then
72 gx=gx+hr(i)*xx(nod(i))
73 gy=gy+hr(i)*yy(nod(i))
75 xsum = dsqrt( gx*gx+gy*gy )*thick
76 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
78 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
88 subroutine heat_film_232(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
99 integer(kind=kint) :: NN, LTYPE, MM
100 integer(kind=kint) :: NOD(MM)
101 real(kind=kreal) :: thick, hh, sink
102 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
104 integer(kind=kint) :: I, IC, IP, JP, LX
105 real(kind=kreal) :: ri, gx, gy, xsum
106 real(kind=kreal) :: xg(3), wgt(3), h(3), hr(3)
110 xg(1) = -0.7745966692
113 wgt(1) = 0.5555555555
114 wgt(2) = 0.8888888888
115 wgt(3) = 0.5555555555
121 else if(ltype.EQ.2)
then
125 else if(ltype.EQ.3)
then
140 h(1)=-0.5*(1.0-ri)*ri
141 h(2)= 0.5*(1.0+ri)*ri
149 gx=gx+hr(i)*xx(nod(i))
150 gy=gy+hr(i)*yy(nod(i))
152 xsum = dsqrt( gx*gx+gy*gy )*thick
153 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
155 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
165 subroutine heat_film_241(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
177 integer(kind=kint) :: NN, LTYPE, MM
178 integer(kind=kint) :: NOD(MM)
179 real(kind=kreal) :: thick, hh, sink
180 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
182 integer(kind=kint) :: I, IC, IP, JP, LX
183 real(kind=kreal) :: ri, gx, gy, xsum
184 real(kind=kreal) :: xg(2), wgt(2), h(2), hr(2)
186 data xg/-0.5773502691896, 0.5773502691896/
191 else if(ltype.EQ.2)
then
194 else if(ltype.EQ.3)
then
197 else if(ltype.EQ.4)
then
218 gx=gx+hr(i)*xx(nod(i))
219 gy=gy+hr(i)*yy(nod(i))
221 xsum = dsqrt( gx*gx+gy*gy )*thick
222 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
224 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
234 subroutine heat_film_242(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
246 integer(kind=kint) :: NN, LTYPE, MM
247 integer(kind=kint) :: NOD(MM)
248 real(kind=kreal) :: thick, hh, sink
249 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
251 integer(kind=kint) :: I, IC, IP, JP, LX
252 real(kind=kreal) :: ri, gx, gy, xsum
253 real(kind=kreal) :: xg(3), wgt(3), h(3), hr(3)
257 xg(1) = -0.7745966692
260 wgt(1) = 0.5555555555
261 wgt(2) = 0.8888888888
262 wgt(3) = 0.5555555555
268 else if(ltype.EQ.2)
then
272 else if(ltype.EQ.3)
then
276 else if(ltype.EQ.4)
then
291 h(1)=-0.5*(1.0-ri)*ri
292 h(2)= 0.5*(1.0+ri)*ri
300 gx=gx+hr(i)*xx(nod(i))
301 gy=gy+hr(i)*yy(nod(i))
303 xsum = dsqrt( gx*gx+gy*gy )*thick
304 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
306 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
316 subroutine heat_film_341(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
328 integer(kind=kint) :: NN, LTYPE, MM
329 integer(kind=kint) :: NOD(MM)
330 real(kind=kreal) :: hh, sink
331 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
333 integer(kind=kint) :: IC, IP, JP
334 real(kind=kreal) :: ax, ay, az, bx, by, bz, aa
337 if ( ltype.EQ.1 )
then
341 else if( ltype.EQ.2 )
then
345 else if( ltype.EQ.3 )
then
349 else if( ltype.EQ.4 )
then
355 ax = xx( nod(2) ) - xx( nod(1) )
356 ay = yy( nod(2) ) - yy( nod(1) )
357 az = zz( nod(2) ) - zz( nod(1) )
358 bx = xx( nod(3) ) - xx( nod(1) )
359 by = yy( nod(3) ) - yy( nod(1) )
360 bz = zz( nod(3) ) - zz( nod(1) )
362 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
366 term2(ip) = - aa*hh*sink
369 term1(ic) = - aa*hh/3.0
377 subroutine heat_film_342(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
389 integer(kind=kint) :: NN, LTYPE, MM
390 integer(kind=kint) :: NOD(MM)
391 real(kind=kreal) :: hh, sink
392 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
394 integer(kind=kint) :: I, IC, IP, JP, L1, L2
395 real(kind=kreal) :: x1, x2, x3, xl1, xl2
396 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
397 real(kind=kreal) :: xj11, xj21, xj31, xj12, xj22, xj32, xj13, xj23, xj33
398 real(kind=kreal) :: xsum, det, wg
399 real(kind=kreal) :: xg(3), wgt(3), h(6), hl1(6), hl2(6), hl3(6)
403 xg(1) = -0.7745966692
406 wgt(1) = 0.5555555555
407 wgt(2) = 0.8888888888
408 wgt(3) = 0.5555555555
417 else if(ltype.EQ.2)
then
424 else if(ltype.EQ.3)
then
431 else if(ltype.EQ.4)
then
452 x1=0.5*(1.0-x2)*(xl1+1.0)
491 g1x=g1x+(hl1(i)-hl3(i))*xx(nod(i))
492 g1y=g1y+(hl1(i)-hl3(i))*yy(nod(i))
493 g1z=g1z+(hl1(i)-hl3(i))*zz(nod(i))
494 g2x=g2x+(hl2(i)-hl3(i))*xx(nod(i))
495 g2y=g2y+(hl2(i)-hl3(i))*yy(nod(i))
496 g2z=g2z+(hl2(i)-hl3(i))*zz(nod(i))
501 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
523 wg=wgt(l1)*wgt(l2)*det*(1.0-x2)*0.25*hh
524 term1(ic) = term1(ic)-wg*h(ip)*h(jp)
525 if( ip.EQ.jp ) term2(ip) = term2(ip)-wg*h(jp)*sink
536 subroutine heat_film_351(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
549 integer(kind=kint) :: NN, LTYPE, MM
550 integer(kind=kint) :: NOD(MM)
551 real(kind=kreal) :: hh, sink
552 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
554 integer(kind=kint) :: ISUF, I, IC, IP, JP, IG1, IG2
555 real(kind=kreal) :: ri, si, xsum
556 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
557 real(kind=kreal) :: ax, ay, az, bx, by, bz, aa
558 real(kind=kreal) :: h(6), hr(6), hs(6), ht(6)
559 real(kind=kreal) :: xg(2), wgt(2)
563 data xg/-0.5773502691896,0.5773502691896/
568 if( ltype.EQ.1 )
then
573 else if( ltype.EQ.2 )
then
578 else if( ltype.EQ.3 )
then
584 else if( ltype.EQ.4 )
then
590 else if( ltype.EQ.5 )
then
612 h(1)=0.25*(1.0-ri)*(1.0-si)
613 h(2)=0.25*(1.0+ri)*(1.0-si)
614 h(3)=0.25*(1.0+ri)*(1.0+si)
615 h(4)=0.25*(1.0-ri)*(1.0+si)
632 g1x=g1x+hr(i)*xx(nod(i))
633 g1y=g1y+hr(i)*yy(nod(i))
634 g1z=g1z+hr(i)*zz(nod(i))
635 g2x=g2x+hs(i)*xx(nod(i))
636 g2y=g2y+hs(i)*yy(nod(i))
637 g2z=g2z+hs(i)*zz(nod(i))
642 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
644 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
646 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
652 elseif( isuf.EQ.1 )
then
653 ax = xx( nod(2) ) - xx( nod(1) )
654 ay = yy( nod(2) ) - yy( nod(1) )
655 az = zz( nod(2) ) - zz( nod(1) )
656 bx = xx( nod(3) ) - xx( nod(1) )
657 by = yy( nod(3) ) - yy( nod(1) )
658 bz = zz( nod(3) ) - zz( nod(1) )
659 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
663 term2(ip) = - aa*hh*sink
666 term1(ic) = - aa*hh/3.0
676 subroutine heat_film_352(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
690 integer(kind=kint) :: NN, LTYPE, MM
691 integer(kind=kint) :: NOD(MM)
692 real(kind=kreal) :: hh, sink
693 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
695 integer(kind=kint) :: ISUF, I, IC, IP, JP, IG1, IG2, L1, L2
696 real(kind=kreal) :: ri, si, rp, sp, rm, sm
697 real(kind=kreal) :: xsum, det, wg
698 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
699 real(kind=kreal) :: x1, x2, x3, xl1, xl2
700 real(kind=kreal) :: xj11, xj21, xj31, xj12, xj22, xj32, xj13, xj23, xj33
701 real(kind=kreal) :: h(8), hr(8), hs(8), ht(8), hl1(6), hl2(6), hl3(6)
702 real(kind=kreal) :: xg(3), wgt(3)
706 xg(1) = -0.7745966692
709 wgt(1) = 0.5555555555
710 wgt(2) = 0.8888888888
711 wgt(3) = 0.5555555555
714 if( ltype.EQ.1 )
then
722 else if( ltype.EQ.2 )
then
730 else if( ltype.EQ.3 )
then
740 else if( ltype.EQ.4 )
then
750 else if( ltype.EQ.5 )
then
777 h(1)=0.25*rm*sm*(-1.0-ri-si)
778 h(2)=0.25*rp*sm*(-1.0+ri-si)
779 h(3)=0.25*rp*sp*(-1.0+ri+si)
780 h(4)=0.25*rm*sp*(-1.0-ri+si)
781 h(5)=0.5*(1.0-ri*ri)*(1.0-si)
782 h(6)=0.5*(1.0-si*si)*(1.0+ri)
783 h(7)=0.5*(1.0-ri*ri)*(1.0+si)
784 h(8)=0.5*(1.0-si*si)*(1.0-ri)
785 hr(1)=-.25*sm*(-1.0-ri-si)-0.25*rm*sm
786 hr(2)= .25*sm*(-1.0+ri-si)+0.25*rp*sm
787 hr(3)= .25*sp*(-1.0+ri+si)+0.25*rp*sp
788 hr(4)=-.25*sp*(-1.0-ri+si)-0.25*rm*sp
790 hr(6)= .5*(1.0-si*si)
792 hr(8)=-.5*(1.0-si*si)
793 hs(1)=-.25*rm*(-1.0-ri-si)-0.25*rm*sm
794 hs(2)=-.25*rp*(-1.0+ri-si)-0.25*rp*sm
795 hs(3)= .25*rp*(-1.0+ri+si)+0.25*rp*sp
796 hs(4)= .25*rm*(-1.0-ri+si)+0.25*rm*sp
797 hs(5)=-.5*(1.0-ri*ri)
799 hs(7)= .5*(1.0-ri*ri)
808 g1x=g1x+hr(i)*xx(nod(i))
809 g1y=g1y+hr(i)*yy(nod(i))
810 g1z=g1z+hr(i)*zz(nod(i))
811 g2x=g2x+hs(i)*xx(nod(i))
812 g2y=g2y+hs(i)*yy(nod(i))
813 g2z=g2z+hs(i)*zz(nod(i))
818 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
819 wg=xsum*wgt(ig1)*wgt(ig2)*hh
820 term1(ic)=term1(ic)-wg*h(ip)*h(jp)
821 if( ip.EQ.jp ) term2(ip)=term2(ip)-wg*h(jp)*sink
827 elseif( isuf.EQ.1 )
then
840 x1=0.5*(1.0-x2)*(xl1+1.0)
879 g1x=g1x+(hl1(i)-hl3(i))*xx(nod(i))
880 g1y=g1y+(hl1(i)-hl3(i))*yy(nod(i))
881 g1z=g1z+(hl1(i)-hl3(i))*zz(nod(i))
882 g2x=g2x+(hl2(i)-hl3(i))*xx(nod(i))
883 g2y=g2y+(hl2(i)-hl3(i))*yy(nod(i))
884 g2z=g2z+(hl2(i)-hl3(i))*zz(nod(i))
889 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
910 wg=wgt(l1)*wgt(l2)*det*(1.0-x2)*0.25*hh
911 term1(ic) = term1(ic)-wg*h(ip)*h(jp)
912 if( ip.EQ.jp ) term2(ip) = term2(ip)-wg*h(jp)*sink
924 subroutine heat_film_361(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
938 integer(kind=kint) :: NN, LTYPE, MM
939 integer(kind=kint) :: NOD(MM)
940 real(kind=kreal) :: hh, sink
941 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
943 integer(kind=kint) :: I, IC, IP, JP, IG1, IG2
944 real(kind=kreal) :: ri, si, xsum
945 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
946 real(kind=kreal) :: h(4), hr(4), hs(4), ht(4)
947 real(kind=kreal) :: xg(2), wgt(2)
951 data xg/-0.5773502691896,0.5773502691896/
954 if( ltype.EQ.1 )
then
959 else if( ltype.EQ.2 )
then
964 else if( ltype.EQ.3 )
then
969 else if( ltype.EQ.4 )
then
974 else if( ltype.EQ.5 )
then
979 else if( ltype.EQ.6 )
then
996 h(1)=0.25*(1.0-ri)*(1.0-si)
997 h(2)=0.25*(1.0+ri)*(1.0-si)
998 h(3)=0.25*(1.0+ri)*(1.0+si)
999 h(4)=0.25*(1.0-ri)*(1.0+si)
1015 g1x=g1x+hr(i)*xx(nod(i))
1016 g1y=g1y+hr(i)*yy(nod(i))
1017 g1z=g1z+hr(i)*zz(nod(i))
1018 g2x=g2x+hs(i)*xx(nod(i))
1019 g2y=g2y+hs(i)*yy(nod(i))
1020 g2z=g2z+hs(i)*zz(nod(i))
1025 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
1027 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
1029 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
1041 subroutine heat_film_362(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
1055 integer(kind=kint) :: NN, LTYPE, MM
1056 integer(kind=kint) :: NOD(MM)
1057 real(kind=kreal) :: hh, sink
1058 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
1060 integer(kind=kint) :: I, IC, IP, JP, IG1, IG2
1061 real(kind=kreal) :: ri, si, rp, sp, rm, sm
1062 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
1063 real(kind=kreal) :: xsum
1064 real(kind=kreal) :: h(8), hr(8), hs(8), ht(8)
1065 real(kind=kreal) :: xg(3), wgt(3)
1069 xg(1) = -0.7745966692
1071 xg(3) = 0.7745966692
1072 wgt(1) = 0.5555555555
1073 wgt(2) = 0.8888888888
1074 wgt(3) = 0.5555555555
1076 if( ltype.EQ.1 )
then
1085 else if( ltype.EQ.2 )
then
1094 else if( ltype.EQ.3 )
then
1103 else if( ltype.EQ.4 )
then
1112 else if( ltype.EQ.5 )
then
1121 else if( ltype.EQ.6 )
then
1148 h(1)=0.25*rm*sm*(-1.0-ri-si)
1149 h(2)=0.25*rp*sm*(-1.0+ri-si)
1150 h(3)=0.25*rp*sp*(-1.0+ri+si)
1151 h(4)=0.25*rm*sp*(-1.0-ri+si)
1152 h(5)=0.5*(1.0-ri*ri)*(1.0-si)
1153 h(6)=0.5*(1.0-si*si)*(1.0+ri)
1154 h(7)=0.5*(1.0-ri*ri)*(1.0+si)
1155 h(8)=0.5*(1.0-si*si)*(1.0-ri)
1156 hr(1)=-.25*sm*(-1.0-ri-si)-0.25*rm*sm
1157 hr(2)= .25*sm*(-1.0+ri-si)+0.25*rp*sm
1158 hr(3)= .25*sp*(-1.0+ri+si)+0.25*rp*sp
1159 hr(4)=-.25*sp*(-1.0-ri+si)-0.25*rm*sp
1161 hr(6)= .5*(1.0-si*si)
1163 hr(8)=-.5*(1.0-si*si)
1164 hs(1)=-.25*rm*(-1.0-ri-si)-0.25*rm*sm
1165 hs(2)=-.25*rp*(-1.0+ri-si)-0.25*rp*sm
1166 hs(3)= .25*rp*(-1.0+ri+si)+0.25*rp*sp
1167 hs(4)= .25*rm*(-1.0-ri+si)+0.25*rm*sp
1168 hs(5)=-.5*(1.0-ri*ri)
1170 hs(7)= .5*(1.0-ri*ri)
1181 g1x=g1x+hr(i)*xx(nod(i))
1182 g1y=g1y+hr(i)*yy(nod(i))
1183 g1z=g1z+hr(i)*zz(nod(i))
1184 g2x=g2x+hs(i)*xx(nod(i))
1185 g2y=g2y+hs(i)*yy(nod(i))
1186 g2z=g2z+hs(i)*zz(nod(i))
1192 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
1194 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
1196 term2(ip) = term2(ip)- xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
1217 integer(kind=kint) :: NN
1218 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), hh, sink, term1(nn*nn), term2(nn)
1220 real(kind=kreal) :: ax, ay, az, bx, by, bz, aa
1221 integer(kind=kint) :: IC, IP, JP
1229 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
1233 term2(ip) = - aa*hh*sink
1236 term1(ic) = - aa*hh/3.0
1253 integer(kind=kint) :: NN
1254 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), hh, sink, term1(nn*nn), term2(nn)
1256 integer(kind=kint) :: I, IC, IP, JP, IG1, IG2
1257 real(kind=kreal) :: ri, si, xsum
1258 real(kind=kreal) :: g1x, g1y, g1z, g2x, g2y, g2z, g3x, g3y, g3z
1259 real(kind=kreal) :: h(4), hr(4), hs(4), ht(4)
1260 real(kind=kreal) :: xg(2), wgt(2)
1264 data xg/-0.5773502691896,0.5773502691896/
1279 h(1)=0.25*(1.0-ri)*(1.0-si)
1280 h(2)=0.25*(1.0+ri)*(1.0-si)
1281 h(3)=0.25*(1.0+ri)*(1.0+si)
1282 h(4)=0.25*(1.0-ri)*(1.0+si)
1309 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
1311 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
1313 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink