23 subroutine heat_film_231(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
32 implicit real(kind=kreal)(a-h,o-z)
34 integer(kind=kint) NOD(MM)
35 real(kind=kreal) xx(nn),yy(nn),zz(nn),term1(mm*mm),term2(mm)
36 real(kind=kreal) xg(2),wgt(2),h(2),hr(2)
38 data xg/-0.5773502691896, 0.5773502691896/
43 else if(ltype.EQ.2)
then
46 else if(ltype.EQ.3)
then
67 gx=gx+hr(i)*xx(nod(i))
68 gy=gy+hr(i)*yy(nod(i))
70 xsum = dsqrt( gx*gx+gy*gy )*thick
71 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
73 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
83 subroutine heat_film_232(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
92 implicit real(kind=kreal) (a - h, o - z)
94 integer(kind=kint) :: NOD(MM)
95 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
96 real(kind=kreal) :: xg(3), wgt(3), h(3), hr(3)
100 xg(1) = -0.7745966692
103 wgt(1) = 0.5555555555
104 wgt(2) = 0.8888888888
105 wgt(3) = 0.5555555555
111 else if(ltype.EQ.2)
then
115 else if(ltype.EQ.3)
then
130 h(1)=-0.5*(1.0-ri)*ri
131 h(2)= 0.5*(1.0+ri)*ri
139 gx=gx+hr(i)*xx(nod(i))
140 gy=gy+hr(i)*yy(nod(i))
142 xsum = dsqrt( gx*gx+gy*gy )*thick
143 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
145 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
155 subroutine heat_film_241(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
165 implicit real(kind=kreal) (a - h, o - z)
167 integer(kind=kint) :: NOD(MM)
168 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
169 real(kind=kreal) :: xg(2), wgt(2), h(2), hr(2)
171 data xg/-0.5773502691896, 0.5773502691896/
176 else if(ltype.EQ.2)
then
179 else if(ltype.EQ.3)
then
182 else if(ltype.EQ.4)
then
203 gx=gx+hr(i)*xx(nod(i))
204 gy=gy+hr(i)*yy(nod(i))
206 xsum = dsqrt( gx*gx+gy*gy )*thick
207 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
209 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
219 subroutine heat_film_242(NN,XX,YY,ZZ,THICK,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
229 implicit real(kind=kreal) (a - h, o - z)
231 integer(kind=kint) :: NOD(MM)
232 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
233 real(kind=kreal) :: xg(3), wgt(3), h(3), hr(3)
237 xg(1) = -0.7745966692
240 wgt(1) = 0.5555555555
241 wgt(2) = 0.8888888888
242 wgt(3) = 0.5555555555
248 else if(ltype.EQ.2)
then
252 else if(ltype.EQ.3)
then
256 else if(ltype.EQ.4)
then
271 h(1)=-0.5*(1.0-ri)*ri
272 h(2)= 0.5*(1.0+ri)*ri
280 gx=gx+hr(i)*xx(nod(i))
281 gy=gy+hr(i)*yy(nod(i))
283 xsum = dsqrt( gx*gx+gy*gy )*thick
284 term1(ic) = term1(ic) - xsum*wgt(lx)*h(ip)*h(jp)*hh
286 term2(ip) = term2(ip) - xsum*wgt(lx)*h(jp)*hh*sink
296 subroutine heat_film_341(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
306 implicit real(kind=kreal) (a - h, o - z)
308 integer(kind=kint) :: NOD(MM)
309 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
312 if ( ltype.EQ.1 )
then
316 else if( ltype.EQ.2 )
then
320 else if( ltype.EQ.3 )
then
324 else if( ltype.EQ.4 )
then
330 ax = xx( nod(2) ) - xx( nod(1) )
331 ay = yy( nod(2) ) - yy( nod(1) )
332 az = zz( nod(2) ) - zz( nod(1) )
333 bx = xx( nod(3) ) - xx( nod(1) )
334 by = yy( nod(3) ) - yy( nod(1) )
335 bz = zz( nod(3) ) - zz( nod(1) )
337 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
341 term2(ip) = - aa*hh*sink
344 term1(ic) = - aa*hh/3.0
352 subroutine heat_film_342(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
362 implicit real(kind=kreal) (a - h, o - z)
364 integer(kind=kint) :: NOD(MM)
365 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
366 real(kind=kreal) :: xg(3), wgt(3), h(6), hl1(6), hl2(6), hl3(6)
370 xg(1) = -0.7745966692
373 wgt(1) = 0.5555555555
374 wgt(2) = 0.8888888888
375 wgt(3) = 0.5555555555
384 else if(ltype.EQ.2)
then
391 else if(ltype.EQ.3)
then
398 else if(ltype.EQ.4)
then
419 x1=0.5*(1.0-x2)*(xl1+1.0)
458 g1x=g1x+(hl1(i)-hl3(i))*xx(nod(i))
459 g1y=g1y+(hl1(i)-hl3(i))*yy(nod(i))
460 g1z=g1z+(hl1(i)-hl3(i))*zz(nod(i))
461 g2x=g2x+(hl2(i)-hl3(i))*xx(nod(i))
462 g2y=g2y+(hl2(i)-hl3(i))*yy(nod(i))
463 g2z=g2z+(hl2(i)-hl3(i))*zz(nod(i))
468 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
490 wg=wgt(l1)*wgt(l2)*det*(1.0-x2)*0.25*hh
491 term1(ic) = term1(ic)-wg*h(ip)*h(jp)
492 if( ip.EQ.jp ) term2(ip) = term2(ip)-wg*h(jp)*sink
503 subroutine heat_film_351(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
514 implicit real(kind=kreal) (a - h, o - z)
516 integer(kind=kint) :: NOD(MM)
517 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
519 real(kind=kreal) :: h(6), hr(6), hs(6), ht(6)
520 real(kind=kreal) :: xg(2), wgt(2)
524 data xg/-0.5773502691896,0.5773502691896/
529 if( ltype.EQ.1 )
then
534 else if( ltype.EQ.2 )
then
539 else if( ltype.EQ.3 )
then
545 else if( ltype.EQ.4 )
then
551 else if( ltype.EQ.5 )
then
573 h(1)=0.25*(1.0-ri)*(1.0-si)
574 h(2)=0.25*(1.0+ri)*(1.0-si)
575 h(3)=0.25*(1.0+ri)*(1.0+si)
576 h(4)=0.25*(1.0-ri)*(1.0+si)
593 g1x=g1x+hr(i)*xx(nod(i))
594 g1y=g1y+hr(i)*yy(nod(i))
595 g1z=g1z+hr(i)*zz(nod(i))
596 g2x=g2x+hs(i)*xx(nod(i))
597 g2y=g2y+hs(i)*yy(nod(i))
598 g2z=g2z+hs(i)*zz(nod(i))
603 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
605 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
607 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
613 elseif( isuf.EQ.1 )
then
614 ax = xx( nod(2) ) - xx( nod(1) )
615 ay = yy( nod(2) ) - yy( nod(1) )
616 az = zz( nod(2) ) - zz( nod(1) )
617 bx = xx( nod(3) ) - xx( nod(1) )
618 by = yy( nod(3) ) - yy( nod(1) )
619 bz = zz( nod(3) ) - zz( nod(1) )
620 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
624 term2(ip) = - aa*hh*sink
627 term1(ic) = - aa*hh/3.0
637 subroutine heat_film_352(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
649 implicit real(kind=kreal) (a - h, o - z)
651 integer(kind=kint) :: NOD(MM)
652 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
654 real(kind=kreal) :: h(8), hr(8), hs(8), ht(8), hl1(6), hl2(6), hl3(6)
655 real(kind=kreal) :: xg(3), wgt(3)
659 xg(1) = -0.7745966692
662 wgt(1) = 0.5555555555
663 wgt(2) = 0.8888888888
664 wgt(3) = 0.5555555555
667 if( ltype.EQ.1 )
then
675 else if( ltype.EQ.2 )
then
683 else if( ltype.EQ.3 )
then
693 else if( ltype.EQ.4 )
then
703 else if( ltype.EQ.5 )
then
730 h(1)=0.25*rm*sm*(-1.0-ri-si)
731 h(2)=0.25*rp*sm*(-1.0+ri-si)
732 h(3)=0.25*rp*sp*(-1.0+ri+si)
733 h(4)=0.25*rm*sp*(-1.0-ri+si)
734 h(5)=0.5*(1.0-ri*ri)*(1.0-si)
735 h(6)=0.5*(1.0-si*si)*(1.0+ri)
736 h(7)=0.5*(1.0-ri*ri)*(1.0+si)
737 h(8)=0.5*(1.0-si*si)*(1.0-ri)
738 hr(1)=-.25*sm*(-1.0-ri-si)-0.25*rm*sm
739 hr(2)= .25*sm*(-1.0+ri-si)+0.25*rp*sm
740 hr(3)= .25*sp*(-1.0+ri+si)+0.25*rp*sp
741 hr(4)=-.25*sp*(-1.0-ri+si)-0.25*rm*sp
743 hr(6)= .5*(1.0-si*si)
745 hr(8)=-.5*(1.0-si*si)
746 hs(1)=-.25*rm*(-1.0-ri-si)-0.25*rm*sm
747 hs(2)=-.25*rp*(-1.0+ri-si)-0.25*rp*sm
748 hs(3)= .25*rp*(-1.0+ri+si)+0.25*rp*sp
749 hs(4)= .25*rm*(-1.0-ri+si)+0.25*rm*sp
750 hs(5)=-.5*(1.0-ri*ri)
752 hs(7)= .5*(1.0-ri*ri)
761 g1x=g1x+hr(i)*xx(nod(i))
762 g1y=g1y+hr(i)*yy(nod(i))
763 g1z=g1z+hr(i)*zz(nod(i))
764 g2x=g2x+hs(i)*xx(nod(i))
765 g2y=g2y+hs(i)*yy(nod(i))
766 g2z=g2z+hs(i)*zz(nod(i))
771 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
772 wg=xsum*wgt(ig1)*wgt(ig2)*hh
773 term1(ic)=term1(ic)-wg*h(ip)*h(jp)
774 if( ip.EQ.jp ) term2(ip)=term2(ip)-wg*h(jp)*sink
780 elseif( isuf.EQ.1 )
then
793 x1=0.5*(1.0-x2)*(xl1+1.0)
832 g1x=g1x+(hl1(i)-hl3(i))*xx(nod(i))
833 g1y=g1y+(hl1(i)-hl3(i))*yy(nod(i))
834 g1z=g1z+(hl1(i)-hl3(i))*zz(nod(i))
835 g2x=g2x+(hl2(i)-hl3(i))*xx(nod(i))
836 g2y=g2y+(hl2(i)-hl3(i))*yy(nod(i))
837 g2z=g2z+(hl2(i)-hl3(i))*zz(nod(i))
842 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
863 wg=wgt(l1)*wgt(l2)*det*(1.0-x2)*0.25*hh
864 term1(ic) = term1(ic)-wg*h(ip)*h(jp)
865 if( ip.EQ.jp ) term2(ip) = term2(ip)-wg*h(jp)*sink
877 subroutine heat_film_361(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
889 implicit real(kind=kreal) (a - h, o - z)
891 integer(kind=kint) :: NOD(MM)
892 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
894 real(kind=kreal) :: h(4), hr(4), hs(4), ht(4)
895 real(kind=kreal) :: xg(2), wgt(2)
899 data xg/-0.5773502691896,0.5773502691896/
902 if( ltype.EQ.1 )
then
907 else if( ltype.EQ.2 )
then
912 else if( ltype.EQ.3 )
then
917 else if( ltype.EQ.4 )
then
922 else if( ltype.EQ.5 )
then
927 else if( ltype.EQ.6 )
then
944 h(1)=0.25*(1.0-ri)*(1.0-si)
945 h(2)=0.25*(1.0+ri)*(1.0-si)
946 h(3)=0.25*(1.0+ri)*(1.0+si)
947 h(4)=0.25*(1.0-ri)*(1.0+si)
963 g1x=g1x+hr(i)*xx(nod(i))
964 g1y=g1y+hr(i)*yy(nod(i))
965 g1z=g1z+hr(i)*zz(nod(i))
966 g2x=g2x+hs(i)*xx(nod(i))
967 g2y=g2y+hs(i)*yy(nod(i))
968 g2z=g2z+hs(i)*zz(nod(i))
973 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
975 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
977 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
989 subroutine heat_film_362(NN,XX,YY,ZZ,LTYPE,HH,SINK,MM,TERM1,TERM2,NOD)
1001 implicit real(kind=kreal) (a - h, o - z)
1003 integer(kind=kint) :: NOD(MM)
1004 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(mm*mm), term2(mm)
1006 real(kind=kreal) :: h(8), hr(8), hs(8), ht(8)
1007 real(kind=kreal) :: xg(3), wgt(3)
1011 xg(1) = -0.7745966692
1013 xg(3) = 0.7745966692
1014 wgt(1) = 0.5555555555
1015 wgt(2) = 0.8888888888
1016 wgt(3) = 0.5555555555
1018 if( ltype.EQ.1 )
then
1027 else if( ltype.EQ.2 )
then
1036 else if( ltype.EQ.3 )
then
1045 else if( ltype.EQ.4 )
then
1054 else if( ltype.EQ.5 )
then
1063 else if( ltype.EQ.6 )
then
1090 h(1)=0.25*rm*sm*(-1.0-ri-si)
1091 h(2)=0.25*rp*sm*(-1.0+ri-si)
1092 h(3)=0.25*rp*sp*(-1.0+ri+si)
1093 h(4)=0.25*rm*sp*(-1.0-ri+si)
1094 h(5)=0.5*(1.0-ri*ri)*(1.0-si)
1095 h(6)=0.5*(1.0-si*si)*(1.0+ri)
1096 h(7)=0.5*(1.0-ri*ri)*(1.0+si)
1097 h(8)=0.5*(1.0-si*si)*(1.0-ri)
1098 hr(1)=-.25*sm*(-1.0-ri-si)-0.25*rm*sm
1099 hr(2)= .25*sm*(-1.0+ri-si)+0.25*rp*sm
1100 hr(3)= .25*sp*(-1.0+ri+si)+0.25*rp*sp
1101 hr(4)=-.25*sp*(-1.0-ri+si)-0.25*rm*sp
1103 hr(6)= .5*(1.0-si*si)
1105 hr(8)=-.5*(1.0-si*si)
1106 hs(1)=-.25*rm*(-1.0-ri-si)-0.25*rm*sm
1107 hs(2)=-.25*rp*(-1.0+ri-si)-0.25*rp*sm
1108 hs(3)= .25*rp*(-1.0+ri+si)+0.25*rp*sp
1109 hs(4)= .25*rm*(-1.0-ri+si)+0.25*rm*sp
1110 hs(5)=-.5*(1.0-ri*ri)
1112 hs(7)= .5*(1.0-ri*ri)
1123 g1x=g1x+hr(i)*xx(nod(i))
1124 g1y=g1y+hr(i)*yy(nod(i))
1125 g1z=g1z+hr(i)*zz(nod(i))
1126 g2x=g2x+hs(i)*xx(nod(i))
1127 g2y=g2y+hs(i)*yy(nod(i))
1128 g2z=g2z+hs(i)*zz(nod(i))
1134 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
1136 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
1138 term2(ip) = term2(ip)- xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
1157 implicit real(kind=kreal) (a - h, o - z)
1159 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), hh, sink, term1(nn*nn), term2(nn)
1167 aa = dsqrt( (ay*bz-az*by)**2+(az*bx-ax*bz)**2+(ax*by-ay*bx)**2 )/6.0
1171 term2(ip) = - aa*hh*sink
1174 term1(ic) = - aa*hh/3.0
1189 implicit real(kind=kreal) (a - h, o - z)
1191 real(kind=kreal) :: xx(nn), yy(nn), zz(nn), term1(nn*nn), term2(nn)
1193 real(kind=kreal) :: h(4), hr(4), hs(4), ht(4)
1194 real(kind=kreal) :: xg(2), wgt(2)
1198 data xg/-0.5773502691896,0.5773502691896/
1213 h(1)=0.25*(1.0-ri)*(1.0-si)
1214 h(2)=0.25*(1.0+ri)*(1.0-si)
1215 h(3)=0.25*(1.0+ri)*(1.0+si)
1216 h(4)=0.25*(1.0-ri)*(1.0+si)
1243 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
1245 term1(ic)=term1(ic)-xsum*wgt(ig1)*wgt(ig2)*h(ip)*h(jp)*hh
1247 term2(ip)=term2(ip)-xsum*wgt(ig1)*wgt(ig2)*h(jp)*hh*sink
This module provides subroutines to generate heat transfer boundary.
subroutine heat_film_242(NN, XX, YY, ZZ, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_232(NN, XX, YY, ZZ, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_342(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_352(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_341(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_731(NN, XX, YY, ZZ, HH, SINK, TERM1, TERM2)
subroutine heat_film_241(NN, XX, YY, ZZ, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_231(NN, XX, YY, ZZ, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_351(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_741(NN, XX, YY, ZZ, HH, SINK, TERM1, TERM2)
subroutine heat_film_362(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_361(NN, XX, YY, ZZ, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)