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 if(hecmesh%my_rank == 0)
then
53 write(
imsg,*)
'============================='
54 write(
imsg,*)
' H E A T T R A N S F E R '
55 write(
imsg,*)
'============================='
57 write(
ista,*)
' ISTEP INCR ITER RESIDUAL IITER '
58 write(
ista,*)
'-------------------------------------------------'
66 deallocate(fstrheat%TEMP0)
67 deallocate(fstrheat%TEMPC)
68 deallocate(fstrheat%TEMP )
79 integer(kind=kint) :: namax, i, nn, is, iE, icou, j, k
80 real(kind=kreal) :: x1, y1, x2, y2
82 type(hecmwst_local_mesh) :: hecMESH
86 do i = 1, hecmesh%amp%n_amp
87 nn = hecmesh%amp%amp_index(i) - hecmesh%amp%amp_index(i-1)
91 fstrheat%AMPLITUDEtot= hecmesh%amp%n_amp
93 allocate (fstrheat%AMPLtab (fstrheat%AMPLITUDEtot) )
94 allocate (fstrheat%AMPL (fstrheat%AMPLITUDEtot,namax), &
95 fstrheat%AMPLtime(fstrheat%AMPLITUDEtot,namax) )
99 fstrheat%AMPLtime = 0.d0
101 do i = 1, fstrheat%AMPLITUDEtot
102 is = hecmesh%amp%amp_index(i-1) + 1
103 ie = hecmesh%amp%amp_index(i)
106 fstrheat%AMPLtab(i) = nn
111 fstrheat%AMPL (i,icou) = hecmesh%amp%amp_val (j)
112 fstrheat%AMPLtime(i,icou) = hecmesh%amp%amp_table(j)
122 allocate ( fstrheat%AMPLfuncA( fstrheat%AMPLITUDEtot,namax+1 ) )
123 allocate ( fstrheat%AMPLfuncB( fstrheat%AMPLITUDEtot,namax+1 ) )
125 fstrheat%AMPLfuncA = 0.d0
126 fstrheat%AMPLfuncB = 0.d0
129 do i = 1, fstrheat%AMPLITUDEtot
131 fstrheat%AMPLfuncA(i,1) = 0.d0
132 fstrheat%AMPLfuncB(i,1) = fstrheat%AMPL(i,1)
134 nn = fstrheat%AMPLtab(i)
138 x1 = fstrheat%AMPLtime(i,k-1)
139 y1 = fstrheat%AMPL (i,k-1)
140 x2 = fstrheat%AMPLtime(i,k)
141 y2 = fstrheat%AMPL (i,k)
143 fstrheat%AMPLfuncA(i,k) = (y2-y1)/(x2-x1)
144 fstrheat%AMPLfuncB(i,k) = -(y2-y1)/(x2-x1)*x1 + y1
148 fstrheat%AMPLfuncA(i,nn+1) = 0.d0
149 fstrheat%AMPLfuncB(i,nn+1) = fstrheat%AMPL(i,nn)
163 integer(kind=kint) :: m1max, m2max, m3max, icou, im, jm, nn, ic, jS, jE, kc, km, k
164 real(kind=kreal) :: aa, bb
166 type(hecmwst_local_mesh) :: hecMESH
173 fstrheat%MATERIALtot= hecmesh%material%n_mat
179 do im = 1, hecmesh%material%n_mat
182 nn = hecmesh%material%mat_TABLE_index(icou) - hecmesh%material%mat_TABLE_index(icou-1)
183 if( jm.eq.1 ) m1max = max(nn,m1max)
184 if( jm.eq.2 ) m2max = max(nn,m2max)
185 if( jm.eq.3 ) m3max = max(nn,m3max)
189 allocate (fstrheat%RHOtab (fstrheat%MATERIALtot), &
190 fstrheat%CPtab (fstrheat%MATERIALtot), &
191 fstrheat%CONDtab (fstrheat%MATERIALtot))
192 allocate (fstrheat%RHO (fstrheat%MATERIALtot,m1max), &
193 fstrheat%RHOtemp (fstrheat%MATERIALtot,m1max))
194 allocate (fstrheat%CP (fstrheat%MATERIALtot,m2max), &
195 fstrheat%CPtemp (fstrheat%MATERIALtot,m2max))
196 allocate (fstrheat%COND (fstrheat%MATERIALtot,m3max), &
197 fstrheat%CONDtemp(fstrheat%MATERIALtot,m3max))
203 fstrheat%RHOtemp = 0.d0
204 fstrheat%CPtemp = 0.d0
205 fstrheat%CONDtemp = 0.d0
211 do im = 1, fstrheat%MATERIALtot
214 js = hecmesh%material%mat_TABLE_index(ic-1) + 1
215 je = hecmesh%material%mat_TABLE_index(ic )
217 if( jm.eq.1 ) fstrheat%RHOtab (im) = nn
218 if( jm.eq.2 ) fstrheat%CPtab (im) = nn
219 if( jm.eq.3 ) fstrheat%CONDtab(im) = nn
225 fstrheat%RHO (im,kc) = hecmesh%material%mat_VAL (km)
226 fstrheat%RHOtemp (im,kc) = hecmesh%material%mat_TEMP(km)
229 fstrheat%CP (im,kc) = hecmesh%material%mat_VAL (km)
230 fstrheat%CPtemp (im,kc) = hecmesh%material%mat_TEMP(km)
233 fstrheat%COND (im,kc) = hecmesh%material%mat_VAL (km)
234 fstrheat%CONDtemp(im,kc) = hecmesh%material%mat_TEMP(km)
246 allocate (fstrheat%RHOfuncA (fstrheat%MATERIALtot, m1max+1) &
247 ,fstrheat%RHOfuncB (fstrheat%MATERIALtot, m1max+1))
248 allocate (fstrheat%CPfuncA (fstrheat%MATERIALtot, m2max+1) &
249 ,fstrheat%CPfuncB (fstrheat%MATERIALtot, m2max+1))
250 allocate (fstrheat%CONDfuncA(fstrheat%MATERIALtot, m3max+1) &
251 ,fstrheat%CONDfuncB(fstrheat%MATERIALtot, m3max+1))
253 fstrheat%RHOfuncA = 0.d0
254 fstrheat%RHOfuncB = 0.d0
255 fstrheat%CPfuncA = 0.d0
256 fstrheat%CPfuncB = 0.d0
257 fstrheat%CONDfuncA = 0.d0
258 fstrheat%CONDfuncB = 0.d0
261 do im = 1, fstrheat%MATERIALtot
262 fstrheat%RHOfuncB(im,1) = fstrheat%RHO(im,1)
263 do k = 2, fstrheat%RHOtab(im)
264 bb= fstrheat%RHO (im,k) - fstrheat%RHO (im,k-1)
265 aa= fstrheat%RHOtemp(im,k) - fstrheat%RHOtemp(im,k-1)
266 fstrheat%RHOfuncA(im,k) = bb/aa
267 fstrheat%RHOfuncB(im,k) = -(bb/aa)*fstrheat%RHOtemp(im,k-1) + fstrheat%RHO(im,k-1)
269 fstrheat%RHOfuncB(im,fstrheat%RHOtab(im)+1) = fstrheat%RHO(im,fstrheat%RHOtab(im))
273 do im = 1, fstrheat%MATERIALtot
274 fstrheat%CPfuncB(im,1) = fstrheat%CP(im,1)
275 do k = 2, fstrheat%CPtab(im)
276 bb= fstrheat%CP (im,k) - fstrheat%CP (im,k-1)
277 aa= fstrheat%CPtemp(im,k) - fstrheat%CPtemp(im,k-1)
278 fstrheat%CPfuncA(im,k) = bb/aa
279 fstrheat%CPfuncB(im,k) = -(bb/aa)*fstrheat%CPtemp(im,k-1) + fstrheat%CP(im,k-1)
281 fstrheat%CPfuncB(im,fstrheat%CPtab(im)+1) = fstrheat%CP(im,fstrheat%CPtab(im))
285 do im = 1, fstrheat%MATERIALtot
286 fstrheat%CONDfuncB(im,1)= fstrheat%COND(im,1)
287 do k = 2, fstrheat%CONDtab(im)
288 bb = fstrheat%COND (im,k) - fstrheat%COND (im,k-1)
289 aa = fstrheat%CONDtemp(im,k) - fstrheat%CONDtemp(im,k-1)
290 fstrheat%CONDfuncA(im,k) = bb/aa
291 fstrheat%CONDfuncB(im,k) = -(bb/aa)*fstrheat%CONDtemp(im,k-1) + fstrheat%COND(im,k-1)
293 fstrheat%CONDfuncB(im,fstrheat%CONDtab(im)+1) = fstrheat%COND(im,fstrheat%CONDtab(im))