13 type(hecmwst_local_mesh) :: hecMESH
14 integer(kind=kint) :: i, j
16 allocate(fstrheat%TEMP0(hecmesh%n_node))
17 allocate(fstrheat%TEMPC(hecmesh%n_node))
18 allocate(fstrheat%TEMP (hecmesh%n_node))
19 fstrheat%TEMP0 = 0.0d0
20 fstrheat%TEMPC = 0.0d0
23 if(hecmesh%hecmw_flag_initcon == 1)
then
24 do i = 1, hecmesh%n_node
25 j = hecmesh%node_init_val_index(i)
26 fstrheat%TEMP0(i) = hecmesh%node_init_val_item(j)
27 fstrheat%TEMPC(i) = fstrheat%TEMP0(i)
28 fstrheat%TEMP (i) = fstrheat%TEMP0(i)
30 write(
ilog,*)
' Initial condition of temperatures: OK'
35 do i= 1, hecmesh%n_node
37 fstrheat%TEMPC(i)= fstrheat%TEMP0(i)
38 fstrheat%TEMP (i)= fstrheat%TEMP0(i)
43 write(
ilog,*)
' Initial condition of temperatures: OK'
50 type(hecmwst_local_mesh) :: hecMESH
52 integer(kind=kint) :: nradiate
54 if(hecmesh%my_rank == 0)
then
55 write(
imsg,*)
'============================='
56 write(
imsg,*)
' H E A T T R A N S F E R '
57 write(
imsg,*)
'============================='
59 write(
ista,*)
' ISTEP INCR ITER RESIDUAL IITER '
60 write(
ista,*)
'-------------------------------------------------'
63 nradiate = fstrheat%R_SUF_tot
64 call hecmw_allreduce_i1(hecmesh, nradiate, hecmw_sum)
65 if(nradiate > 0 .and. hecmesh%my_rank == 0)
then
66 write(
imsg,
"(a,f12.4)")
"* Absolute zero temperature for radiation: ", hecmesh%zero_temp
74 deallocate(fstrheat%TEMP0)
75 deallocate(fstrheat%TEMPC)
76 deallocate(fstrheat%TEMP )
87 integer(kind=kint) :: namax, i, nn, is, iE, icou, j, k
88 real(kind=kreal) :: x1, y1, x2, y2
90 type(hecmwst_local_mesh) :: hecMESH
94 do i = 1, hecmesh%amp%n_amp
95 nn = hecmesh%amp%amp_index(i) - hecmesh%amp%amp_index(i-1)
99 fstrheat%AMPLITUDEtot= hecmesh%amp%n_amp
101 allocate (fstrheat%AMPLtab (fstrheat%AMPLITUDEtot) )
102 allocate (fstrheat%AMPL (fstrheat%AMPLITUDEtot,namax), &
103 fstrheat%AMPLtime(fstrheat%AMPLITUDEtot,namax) )
107 fstrheat%AMPLtime = 0.d0
109 do i = 1, fstrheat%AMPLITUDEtot
110 is = hecmesh%amp%amp_index(i-1) + 1
111 ie = hecmesh%amp%amp_index(i)
114 fstrheat%AMPLtab(i) = nn
119 fstrheat%AMPL (i,icou) = hecmesh%amp%amp_val (j)
120 fstrheat%AMPLtime(i,icou) = hecmesh%amp%amp_table(j)
130 allocate ( fstrheat%AMPLfuncA( fstrheat%AMPLITUDEtot,namax+1 ) )
131 allocate ( fstrheat%AMPLfuncB( fstrheat%AMPLITUDEtot,namax+1 ) )
133 fstrheat%AMPLfuncA = 0.d0
134 fstrheat%AMPLfuncB = 0.d0
137 do i = 1, fstrheat%AMPLITUDEtot
139 fstrheat%AMPLfuncA(i,1) = 0.d0
140 fstrheat%AMPLfuncB(i,1) = fstrheat%AMPL(i,1)
142 nn = fstrheat%AMPLtab(i)
146 x1 = fstrheat%AMPLtime(i,k-1)
147 y1 = fstrheat%AMPL (i,k-1)
148 x2 = fstrheat%AMPLtime(i,k)
149 y2 = fstrheat%AMPL (i,k)
151 fstrheat%AMPLfuncA(i,k) = (y2-y1)/(x2-x1)
152 fstrheat%AMPLfuncB(i,k) = -(y2-y1)/(x2-x1)*x1 + y1
156 fstrheat%AMPLfuncA(i,nn+1) = 0.d0
157 fstrheat%AMPLfuncB(i,nn+1) = fstrheat%AMPL(i,nn)
171 integer(kind=kint) :: m1max, m2max, m3max, icou, im, jm, nn, ic, jS, jE, kc, km, k
172 real(kind=kreal) :: aa, bb
174 type(hecmwst_local_mesh) :: hecMESH
181 fstrheat%MATERIALtot= hecmesh%material%n_mat
187 do im = 1, hecmesh%material%n_mat
190 nn = hecmesh%material%mat_TABLE_index(icou) - hecmesh%material%mat_TABLE_index(icou-1)
191 if( jm.eq.1 ) m1max = max(nn,m1max)
192 if( jm.eq.2 ) m2max = max(nn,m2max)
193 if( jm.eq.3 ) m3max = max(nn,m3max)
197 allocate (fstrheat%RHOtab (fstrheat%MATERIALtot), &
198 fstrheat%CPtab (fstrheat%MATERIALtot), &
199 fstrheat%CONDtab (fstrheat%MATERIALtot))
200 allocate (fstrheat%RHO (fstrheat%MATERIALtot,m1max), &
201 fstrheat%RHOtemp (fstrheat%MATERIALtot,m1max))
202 allocate (fstrheat%CP (fstrheat%MATERIALtot,m2max), &
203 fstrheat%CPtemp (fstrheat%MATERIALtot,m2max))
204 allocate (fstrheat%COND (fstrheat%MATERIALtot,m3max), &
205 fstrheat%CONDtemp(fstrheat%MATERIALtot,m3max))
211 fstrheat%RHOtemp = 0.d0
212 fstrheat%CPtemp = 0.d0
213 fstrheat%CONDtemp = 0.d0
219 do im = 1, fstrheat%MATERIALtot
222 js = hecmesh%material%mat_TABLE_index(ic-1) + 1
223 je = hecmesh%material%mat_TABLE_index(ic )
225 if( jm.eq.1 ) fstrheat%RHOtab (im) = nn
226 if( jm.eq.2 ) fstrheat%CPtab (im) = nn
227 if( jm.eq.3 ) fstrheat%CONDtab(im) = nn
233 fstrheat%RHO (im,kc) = hecmesh%material%mat_VAL (km)
234 fstrheat%RHOtemp (im,kc) = hecmesh%material%mat_TEMP(km)
237 fstrheat%CP (im,kc) = hecmesh%material%mat_VAL (km)
238 fstrheat%CPtemp (im,kc) = hecmesh%material%mat_TEMP(km)
241 fstrheat%COND (im,kc) = hecmesh%material%mat_VAL (km)
242 fstrheat%CONDtemp(im,kc) = hecmesh%material%mat_TEMP(km)
254 allocate (fstrheat%RHOfuncA (fstrheat%MATERIALtot, m1max+1) &
255 ,fstrheat%RHOfuncB (fstrheat%MATERIALtot, m1max+1))
256 allocate (fstrheat%CPfuncA (fstrheat%MATERIALtot, m2max+1) &
257 ,fstrheat%CPfuncB (fstrheat%MATERIALtot, m2max+1))
258 allocate (fstrheat%CONDfuncA(fstrheat%MATERIALtot, m3max+1) &
259 ,fstrheat%CONDfuncB(fstrheat%MATERIALtot, m3max+1))
261 fstrheat%RHOfuncA = 0.d0
262 fstrheat%RHOfuncB = 0.d0
263 fstrheat%CPfuncA = 0.d0
264 fstrheat%CPfuncB = 0.d0
265 fstrheat%CONDfuncA = 0.d0
266 fstrheat%CONDfuncB = 0.d0
269 do im = 1, fstrheat%MATERIALtot
270 fstrheat%RHOfuncB(im,1) = fstrheat%RHO(im,1)
271 do k = 2, fstrheat%RHOtab(im)
272 bb= fstrheat%RHO (im,k) - fstrheat%RHO (im,k-1)
273 aa= fstrheat%RHOtemp(im,k) - fstrheat%RHOtemp(im,k-1)
274 fstrheat%RHOfuncA(im,k) = bb/aa
275 fstrheat%RHOfuncB(im,k) = -(bb/aa)*fstrheat%RHOtemp(im,k-1) + fstrheat%RHO(im,k-1)
277 fstrheat%RHOfuncB(im,fstrheat%RHOtab(im)+1) = fstrheat%RHO(im,fstrheat%RHOtab(im))
281 do im = 1, fstrheat%MATERIALtot
282 fstrheat%CPfuncB(im,1) = fstrheat%CP(im,1)
283 do k = 2, fstrheat%CPtab(im)
284 bb= fstrheat%CP (im,k) - fstrheat%CP (im,k-1)
285 aa= fstrheat%CPtemp(im,k) - fstrheat%CPtemp(im,k-1)
286 fstrheat%CPfuncA(im,k) = bb/aa
287 fstrheat%CPfuncB(im,k) = -(bb/aa)*fstrheat%CPtemp(im,k-1) + fstrheat%CP(im,k-1)
289 fstrheat%CPfuncB(im,fstrheat%CPtab(im)+1) = fstrheat%CP(im,fstrheat%CPtab(im))
293 do im = 1, fstrheat%MATERIALtot
294 fstrheat%CONDfuncB(im,1)= fstrheat%COND(im,1)
295 do k = 2, fstrheat%CONDtab(im)
296 bb = fstrheat%COND (im,k) - fstrheat%COND (im,k-1)
297 aa = fstrheat%CONDtemp(im,k) - fstrheat%CONDtemp(im,k-1)
298 fstrheat%CONDfuncA(im,k) = bb/aa
299 fstrheat%CONDfuncB(im,k) = -(bb/aa)*fstrheat%CONDtemp(im,k-1) + fstrheat%COND(im,k-1)
301 fstrheat%CONDfuncB(im,fstrheat%CONDtab(im)+1) = fstrheat%COND(im,fstrheat%CONDtab(im))
This module defines common data and basic structures for analysis.
integer(kind=kint), parameter imsg
integer(kind=kint), parameter ilog
FILE HANDLER.
integer(kind=kint), parameter ista
type(tinitialcondition), dimension(:), pointer, save g_initialcnd
This module provides functions to initialize heat analysis.
subroutine heat_finalize(fstrHEAT)
subroutine heat_init_log(hecMESH, fstrHEAT)
subroutine heat_init_material(hecMESH, fstrHEAT)
subroutine heat_init(hecMESH, fstrHEAT)
subroutine heat_init_amplitude(hecMESH, fstrHEAT)
Data for HEAT ANSLYSIS (fstrHEAT)