45 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
46 real(dp),
intent(in) :: dtime_temp
48 integer(i4b) :: i, j, kc, kr, ii, jj
49 real(dp) :: at1(0:kcmax), at2_1(0:kcmax), at2_2(0:kcmax), &
50 at3_1(0:kcmax), at3_2(0:kcmax), at4_1(0:kcmax), &
51 at4_2(0:kcmax), at5(0:kcmax), at6(0:kcmax), at7, &
52 acb1, acb2, acb3, acb4, &
53 ai1(0:kcmax), ai2(0:kcmax), ai3, &
55 real(dp) :: aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld
56 real(dp) :: dtime_temp_inv, dtt_2dxi, dtt_2deta
57 real(dp) :: temp_c_help(0:kcmax)
61 at7 = 2.0_dp/rho*dtime_temp
63 aw1 = dtime_temp/dzeta_t
64 aw2 = dtime_temp/dzeta_t
65 aw3 = dtime_temp/dzeta_t
66 aw4 = dtime_temp/dzeta_t
67 aw5 = nue/rho*dtime_temp/(dzeta_t**2)
68 aw7 = 2.0_dp/(rho*l)*dtime_temp
69 aw8 = beta**2/(rho*l) &
71 aw9 = beta/l*dtime_temp
73 ai3 = agediff*dtime_temp/(dzeta_t**2)
75 atr1 = kappa_r/(rho_c_r*h_r**2)*dtime_temp/(dzeta_r**2)
77 if (flag_aa_nonzero)
then
78 am1 = aa*beta*dzeta_c/(ea-1.0_dp)
79 am2 = aa*l*rho*dzeta_c/(ea-1.0_dp)
85 if (flag_aa_nonzero)
then
86 acb1 = (ea-1.0_dp)/aa/dzeta_c
91 acb2 = kappa_r/h_r/dzeta_r
95 alb1 = h_r/kappa_r*dzeta_r
97 aqtld = dzeta_t/dtime_temp
99 dtt_2dxi = 0.5_dp*dtime_temp/dxi
100 dtt_2deta = 0.5_dp*dtime_temp/deta
102 dtime_temp_inv = 1.0_dp/dtime_temp
106 if (flag_aa_nonzero)
then
108 at1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
109 at2_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
110 at2_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
112 at3_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
113 at3_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
115 at4_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
116 at4_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
118 at5(kc) = (ea-1.0_dp)/(rho*aa*eaz_c(kc)) &
120 if (kc /= kcmax)
then
121 at6(kc) = (ea-1.0_dp) &
122 /(aa*exp(aa*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
127 ai1(kc) = agediff*(ea-1.0_dp)/(aa*eaz_c(kc)) &
129 if (kc /= kcmax)
then
130 ai2(kc) = (ea-1.0_dp) &
131 /(aa*exp(aa*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
139 at1(kc) = dtime_temp/dzeta_c
140 at2_1(kc) = dtime_temp/dzeta_c
141 at2_2(kc) = zeta_c(kc) &
143 at3_1(kc) = dtime_temp/dzeta_c
144 at3_2(kc) = zeta_c(kc) &
146 at4_1(kc) = dtime_temp/dzeta_c
147 at4_2(kc) = zeta_c(kc) &
149 at5(kc) = 1.0_dp/rho &
151 if (kc /= kcmax)
then
159 if (kc /= kcmax)
then
175 if (maske(j,i)==0)
then
178 zm_neu(j,i) = zb(j,i)
179 h_c_neu(j,i) = h_c(j,i)
180 h_t_neu(j,i) = h_t(j,i)
182 call
calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, &
183 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
184 acb3, acb4, alb1, ai1, ai2, &
185 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
192 if (temp_c_neu(0,j,i).gt.temp_c_m(0,j,i))
then
195 temp_c_neu(0,j,i) = temp_c_m(0,j,i)
196 temp_r_neu(krmax,j,i) = temp_c_m(0,j,i)
200 if (temp_c_neu(kc,j,i).gt.temp_c_m(kc,j,i))
then
202 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
208 else if (maske(j,i)==3)
then
212 zm_neu(j,i) = zb(j,i)
213 h_c_neu(j,i) = h_c(j,i)
214 h_t_neu(j,i) = 0.0_dp
217 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
219 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
225 if (temp_c_neu(kc,j,i) > temp_c_m(kc,j,i)) &
226 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
235 zm_neu(j,i) = zb(j,i)
236 h_c_neu(j,i) = h_c(j,i)
237 h_t_neu(j,i) = h_t(j,i)
253 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
259 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
260 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
264 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
267 n_cts_neu(j,i) = n_cts_neu(jj,ii)
268 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
269 zm_neu(j,i) = zb(j,i)
270 h_c_neu(j,i) = h_c(j,i)
271 h_t_neu(j,i) = h_t(j,i)
277 zm_neu(j,i) = zb(j,i)
278 h_c_neu(j,i) = h_c(j,i)
279 h_t_neu(j,i) = h_t(j,i)
290 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
296 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
297 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
301 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
304 n_cts_neu(j,i) = n_cts_neu(jj,ii)
305 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
306 zm_neu(j,i) = zb(j,i)
307 h_c_neu(j,i) = h_c(j,i)
308 h_t_neu(j,i) = h_t(j,i)
314 zm_neu(j,i) = zb(j,i)
315 h_c_neu(j,i) = h_c(j,i)
316 h_t_neu(j,i) = h_t(j,i)
327 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
333 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
334 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
338 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
341 n_cts_neu(j,i) = n_cts_neu(jj,ii)
342 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
343 zm_neu(j,i) = zb(j,i)
344 h_c_neu(j,i) = h_c(j,i)
345 h_t_neu(j,i) = h_t(j,i)
351 zm_neu(j,i) = zb(j,i)
352 h_c_neu(j,i) = h_c(j,i)
353 h_t_neu(j,i) = h_t(j,i)
364 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
370 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
371 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
375 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
378 n_cts_neu(j,i) = n_cts_neu(jj,ii)
379 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
380 zm_neu(j,i) = zb(j,i)
381 h_c_neu(j,i) = h_c(j,i)
382 h_t_neu(j,i) = h_t(j,i)
388 zm_neu(j,i) = zb(j,i)
389 h_c_neu(j,i) = h_c(j,i)
390 h_t_neu(j,i) = h_t(j,i)
404 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
410 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
411 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
415 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
418 n_cts_neu(j,i) = n_cts_neu(jj,ii)
419 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
420 zm_neu(j,i) = zb(j,i)
421 h_c_neu(j,i) = h_c(j,i)
422 h_t_neu(j,i) = h_t(j,i)
428 zm_neu(j,i) = zb(j,i)
429 h_c_neu(j,i) = h_c(j,i)
430 h_t_neu(j,i) = h_t(j,i)
440 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
446 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
447 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
451 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
454 n_cts_neu(j,i) = n_cts_neu(jj,ii)
455 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
456 zm_neu(j,i) = zb(j,i)
457 h_c_neu(j,i) = h_c(j,i)
458 h_t_neu(j,i) = h_t(j,i)
464 zm_neu(j,i) = zb(j,i)
465 h_c_neu(j,i) = h_c(j,i)
466 h_t_neu(j,i) = h_t(j,i)
482 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
488 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
489 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
493 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
496 n_cts_neu(j,i) = n_cts_neu(jj,ii)
497 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
498 zm_neu(j,i) = zb(j,i)
499 h_c_neu(j,i) = h_c(j,i)
500 h_t_neu(j,i) = h_t(j,i)
506 zm_neu(j,i) = zb(j,i)
507 h_c_neu(j,i) = h_c(j,i)
508 h_t_neu(j,i) = h_t(j,i)
518 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
524 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
525 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
529 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
532 n_cts_neu(j,i) = n_cts_neu(jj,ii)
533 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
534 zm_neu(j,i) = zb(j,i)
535 h_c_neu(j,i) = h_c(j,i)
536 h_t_neu(j,i) = h_t(j,i)
542 zm_neu(j,i) = zb(j,i)
543 h_c_neu(j,i) = h_c(j,i)
544 h_t_neu(j,i) = h_t(j,i)
Declarations of kind types for SICOPOLIS.
Declarations of global variables for SICOPOLIS (for the ANT domain).
real(dp) function, public kappa_val(temp_val)
Heat conductivity of ice: Linear interpolation of tabulated values in KAPPA(.).
subroutine calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, acb3, acb4, alb1, ai1, ai2, dtime_temp, dtt_2dxi, dtt_2deta, i, j)
Computation of temperature and age for a cold ice column.
Material quantities of ice: Rate factor, heat conductivity, specific heat (heat capacity).
subroutine calc_temp_ssa(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, alb1, ai1, ai2, dtime_temp, dtt_2dxi, dtt_2deta, i, j)
Computation of temperature and age for ice shelves (floating ice).
Declarations of global variables for SICOPOLIS.
subroutine calc_temp_r(atr1, alb1, i, j)
Computation of temperature for an ice-free column.
subroutine calc_temp_cold(dxi, deta, dzeta_c, dzeta_t, dzeta_r, dtime_temp)
Computation of temperature and age in cold-ice mode.