21 integer(kind=kint) :: k, icel, isuf, iam1, iam2, ic_type, isect, nn, is, j, mm, m, ic, ip
22 integer(kind=kint) :: inod, jp, jnod, isU, ieU, ik, isL, ieL
23 real(kind=kreal) :: ctime, qq, hh, sink, thick
26 type(hecmwst_matrix) :: hecMAT
27 type(hecmwst_local_mesh) :: hecMESH
29 real(kind=kreal) :: xx(20), yy(20), zz(20)
30 real(kind=kreal) :: term1(64), term2(20), stiff(8,8)
31 integer(kind=kint) :: nodLocal(20), nsuf(8), nodSurf(8)
39 do k = 1, fstrheat%H_SUF_tot
40 icel = fstrheat%H_SUF_elem(k)
41 if( fstrsolid%elements(icel)%elemact_flag == kelact_inactive ) cycle
43 isuf = fstrheat%H_SUF_surf(k)
44 iam1 = fstrheat%H_SUF_ampl(k,1)
45 iam2 = fstrheat%H_SUF_ampl(k,2)
47 hh = fstrheat%H_SUF_val (k,1) * qq
48 if( dabs(hh) < 1.d-16 ) cycle
50 sink = fstrheat%H_SUF_val (k,2) * qq
51 ic_type = hecmesh%elem_type(icel)
52 if( ic_type == 761 ) ic_type = 731
53 if( ic_type == 781 ) ic_type = 741
54 isect = hecmesh%section_ID(icel)
56 nn = hecmw_get_max_node(ic_type)
58 is = hecmesh%elem_node_index(icel-1)
60 nodlocal(j) = hecmesh%elem_node_item(is+j)
61 xx(j) = hecmesh%node( 3*nodlocal(j)-2 )
62 yy(j) = hecmesh%node( 3*nodlocal(j)-1 )
63 zz(j) = hecmesh%node( 3*nodlocal(j) )
66 if ( ic_type.eq.231 )
then
67 is = hecmesh%section%sect_R_index(isect)
68 thick = hecmesh%section%sect_R_item(is)
70 call heat_film_231(nn,xx,yy,thick,isuf,hh,sink,mm,term1,term2,nsuf)
71 elseif( ic_type.eq.232 )
then
72 is = hecmesh%section%sect_R_index(isect)
73 thick = hecmesh%section%sect_R_item(is)
75 call heat_film_232(nn,xx,yy,thick,isuf,hh,sink,mm,term1,term2,nsuf)
76 elseif( ic_type.eq.241 )
then
77 is = hecmesh%section%sect_R_index(isect)
78 thick = hecmesh%section%sect_R_item(is)
80 call heat_film_241(nn,xx,yy,thick,isuf,hh,sink,mm,term1,term2,nsuf)
81 elseif( ic_type.eq.242 )
then
82 is = hecmesh%section%sect_R_index(isect)
83 thick = hecmesh%section%sect_R_item(is)
85 call heat_film_242(nn,xx,yy,thick,isuf,hh,sink,mm,term1,term2,nsuf)
86 elseif( ic_type.eq.341 )
then
88 call heat_film_341(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
89 elseif( ic_type.eq.342 )
then
91 call heat_film_342(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
92 elseif( ic_type.eq.351 )
then
94 if( isuf.eq.1 .or. isuf.eq.2 ) mm = 3
95 call heat_film_351(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
96 elseif( ic_type.eq.352 )
then
98 if( isuf.eq.1 .or. isuf.eq.2 ) mm = 6
99 call heat_film_352(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
100 elseif( ic_type.eq.361 )
then
102 call heat_film_361(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
103 elseif( ic_type.eq.362 )
then
105 call heat_film_362(nn,xx,yy,zz,isuf,hh,sink,mm,term1,term2,nsuf)
106 elseif( ic_type.eq.731 )
then
113 elseif( ic_type.eq.741 )
then
124 nodsurf(ip) = nodlocal(nsuf(ip))
132 stiff(ip,jp) = -term1(ic)
136 call hecmw_mat_ass_elem(hecmat, mm, nodsurf, stiff)
140 hecmat%B(nodsurf(ip)) = hecmat%B(nodsurf(ip)) - term2(ip)
This module defines common data and basic structures for analysis.
This module provide a function to get amplitude definition.
subroutine heat_get_amplitude(fstrHEAT, id, TT, QQ, OutOfRange)
This module provides subroutines to generate heat transfer boundary.
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_232(NN, XX, YY, THICK, 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_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_242(NN, XX, YY, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_241(NN, XX, YY, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
subroutine heat_film_231(NN, XX, YY, THICK, LTYPE, HH, SINK, MM, TERM1, TERM2, NOD)
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)
This module provides a subroutine for setting heat transfer boundary conditions.
subroutine heat_mat_ass_bc_film(hecMESH, hecMAT, fstrSOLID, fstrHEAT, CTIME)
Data for HEAT ANSLYSIS (fstrHEAT)