44 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
45 real(dp),
intent(in) :: dtime_temp
47 integer(i4b) :: i, j, kc, kt, kr, ii, jj
48 real(dp) :: at1(0:kcmax), at2_1(0:kcmax), at2_2(0:kcmax), &
49 at3_1(0:kcmax), at3_2(0:kcmax), at4_1(0:kcmax), &
50 at4_2(0:kcmax), at5(0:kcmax), at6(0:kcmax), at7, &
51 ai1(0:kcmax), ai2(0:kcmax), &
52 atr1, acb1, acb2, acb3, acb4, alb1, aqtlde(0:kcmax), &
54 real(dp) :: dtt_2dxi, dtt_2deta
58 at7 = 2.0_dp/rho*dtime_temp
60 atr1 = kappa_r/(rho_c_r*h_r**2)*dtime_temp/(dzeta_r**2)
62 if (flag_aa_nonzero)
then
63 am1 = aa*beta*dzeta_c/(ea-1.0_dp)
68 if (flag_aa_nonzero)
then
69 acb1 = (ea-1.0_dp)/aa/dzeta_c
74 acb2 = kappa_r/h_r/dzeta_r
78 alb1 = h_r/kappa_r*dzeta_r
80 dtt_2dxi = 0.5_dp*dtime_temp/dxi
81 dtt_2deta = 0.5_dp*dtime_temp/deta
85 if (flag_aa_nonzero)
then
87 at1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
88 at2_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
89 at2_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
91 at3_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
92 at3_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
94 at4_1(kc) = (ea-1.0_dp)/(aa*eaz_c(kc))*dtime_temp/dzeta_c
95 at4_2(kc) = (eaz_c(kc)-1.0_dp)/(aa*eaz_c(kc)) &
97 at5(kc) = (ea-1.0_dp)/(rho*aa*eaz_c(kc)) &
100 at6(kc) = (ea-1.0_dp) &
101 /(aa*exp(aa*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
106 ai1(kc) = agediff*(ea-1.0_dp)/(aa*eaz_c(kc)) &
108 if (kc /= kcmax)
then
109 ai2(kc) = (ea-1.0_dp) &
110 /(aa*exp(aa*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
115 aqtlde(kc) = (aa*eaz_c(kc))/(ea-1.0_dp)*dzeta_c/dtime_temp
116 am3(kc) = (aa*eaz_c(kc))/(ea-1.0_dp)*dzeta_c*beta
120 at1(kc) = dtime_temp/dzeta_c
121 at2_1(kc) = dtime_temp/dzeta_c
122 at2_2(kc) = zeta_c(kc) &
124 at3_1(kc) = dtime_temp/dzeta_c
125 at3_2(kc) = zeta_c(kc) &
127 at4_1(kc) = dtime_temp/dzeta_c
128 at4_2(kc) = zeta_c(kc) &
130 at5(kc) = 1.0_dp/rho &
132 if (kc /= kcmax)
then
140 if (kc /= kcmax)
then
146 aqtlde(kc) = dzeta_c/dtime_temp
147 am3(kc) = dzeta_c*beta
158 if (maske(j,i)==0)
then
162 if (n_cts(j,i) == -1)
then
166 zm_neu(j,i) = zb(j,i)
167 h_c_neu(j,i) = h_c(j,i)
168 h_t_neu(j,i) = 0.0_dp
171 at4_1, at4_2, at5, at6, at7, &
172 atr1, acb1, acb2, acb3, acb4, alb1, &
174 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
178 if (temp_c_neu(0,j,i) > temp_c_m(0,j,i)-eps)
then
184 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
185 ai1, ai2, aqtlde, am3, &
186 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
192 else if (n_cts(j,i) == 0)
then
195 kc_cts_neu(j,i) = kc_cts(j,i)
196 zm_neu(j,i) = zb(j,i)
197 h_c_neu(j,i) = h_c(j,i)
198 h_t_neu(j,i) = h_t(j,i)
201 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
202 ai1, ai2, aqtlde, am3, &
203 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
207 if ( (temp_c_neu(1,j,i)-temp_c_neu(0,j,i)) < (am1*h_c(j,i)) )
then
213 at4_1, at4_2, at5, at6, at7, &
214 atr1, acb1, acb2, acb3, acb4, alb1, &
216 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
218 if (temp_c_neu(0,j,i) > temp_c_m(0,j,i)-eps)
then
224 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
225 ai1, ai2, aqtlde, am3, &
226 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
236 else if (maske(j,i)==3)
then
240 zm_neu(j,i) = zb(j,i)
241 h_c_neu(j,i) = h_c(j,i)
242 h_t_neu(j,i) = 0.0_dp
245 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
247 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
254 if (temp_c_neu(kc,j,i) > temp_c_m(kc,j,i)) &
255 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
256 if (omega_c_neu(kc,j,i) > 0.0_dp) &
257 omega_c_neu(kc,j,i) = 0.0_dp
266 zm_neu(j,i) = zb(j,i)
267 h_c_neu(j,i) = h_c(j,i)
268 h_t_neu(j,i) = 0.0_dp
284 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
290 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
291 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
292 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
293 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
298 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
299 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
300 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
304 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
307 n_cts_neu(j,i) = n_cts_neu(jj,ii)
308 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
309 zm_neu(j,i) = zb(j,i)
310 h_c_neu(j,i) = h_c(j,i)
311 h_t_neu(j,i) = h_t(j,i)
317 zm_neu(j,i) = zb(j,i)
318 h_c_neu(j,i) = h_c(j,i)
319 h_t_neu(j,i) = h_t(j,i)
330 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
336 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
337 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
338 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
339 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
344 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
345 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
346 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
350 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
353 n_cts_neu(j,i) = n_cts_neu(jj,ii)
354 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
355 zm_neu(j,i) = zb(j,i)
356 h_c_neu(j,i) = h_c(j,i)
357 h_t_neu(j,i) = h_t(j,i)
363 zm_neu(j,i) = zb(j,i)
364 h_c_neu(j,i) = h_c(j,i)
365 h_t_neu(j,i) = h_t(j,i)
376 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
382 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
383 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
384 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
385 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
390 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
391 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
392 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
396 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
399 n_cts_neu(j,i) = n_cts_neu(jj,ii)
400 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
401 zm_neu(j,i) = zb(j,i)
402 h_c_neu(j,i) = h_c(j,i)
403 h_t_neu(j,i) = h_t(j,i)
409 zm_neu(j,i) = zb(j,i)
410 h_c_neu(j,i) = h_c(j,i)
411 h_t_neu(j,i) = h_t(j,i)
422 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
428 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
429 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
430 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
431 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
436 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
437 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
438 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
442 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
445 n_cts_neu(j,i) = n_cts_neu(jj,ii)
446 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
447 zm_neu(j,i) = zb(j,i)
448 h_c_neu(j,i) = h_c(j,i)
449 h_t_neu(j,i) = h_t(j,i)
455 zm_neu(j,i) = zb(j,i)
456 h_c_neu(j,i) = h_c(j,i)
457 h_t_neu(j,i) = h_t(j,i)
471 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
477 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
478 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
479 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
480 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
485 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
486 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
487 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
491 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
494 n_cts_neu(j,i) = n_cts_neu(jj,ii)
495 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
496 zm_neu(j,i) = zb(j,i)
497 h_c_neu(j,i) = h_c(j,i)
498 h_t_neu(j,i) = h_t(j,i)
504 zm_neu(j,i) = zb(j,i)
505 h_c_neu(j,i) = h_c(j,i)
506 h_t_neu(j,i) = h_t(j,i)
516 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
522 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
523 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
524 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
525 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
530 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
531 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
532 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
536 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
539 n_cts_neu(j,i) = n_cts_neu(jj,ii)
540 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
541 zm_neu(j,i) = zb(j,i)
542 h_c_neu(j,i) = h_c(j,i)
543 h_t_neu(j,i) = h_t(j,i)
549 zm_neu(j,i) = zb(j,i)
550 h_c_neu(j,i) = h_c(j,i)
551 h_t_neu(j,i) = h_t(j,i)
567 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
573 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
574 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
575 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
576 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
581 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
582 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
583 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
587 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
590 n_cts_neu(j,i) = n_cts_neu(jj,ii)
591 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
592 zm_neu(j,i) = zb(j,i)
593 h_c_neu(j,i) = h_c(j,i)
594 h_t_neu(j,i) = h_t(j,i)
600 zm_neu(j,i) = zb(j,i)
601 h_c_neu(j,i) = h_c(j,i)
602 h_t_neu(j,i) = h_t(j,i)
612 if ( (maske(j,i) == 0).or.(maske(j,i) == 3) )
then
618 enth_c_neu(kc,j,i) = enth_c_neu(kc,jj,ii)
619 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
620 omega_c_neu(kc,j,i) = omega_c_neu(kc,jj,ii)
621 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
626 enth_t_neu(kt,j,i) = enth_t_neu(kt,jj,ii)
627 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
628 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
632 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
635 n_cts_neu(j,i) = n_cts_neu(jj,ii)
636 kc_cts_neu(j,i) = kc_cts_neu(jj,ii)
637 zm_neu(j,i) = zb(j,i)
638 h_c_neu(j,i) = h_c(j,i)
639 h_t_neu(j,i) = h_t(j,i)
645 zm_neu(j,i) = zb(j,i)
646 h_c_neu(j,i) = h_c(j,i)
647 h_t_neu(j,i) = h_t(j,i)
subroutine calc_temp_enth(dxi, deta, dzeta_c, dzeta_t, dzeta_r, dtime_temp)
Computation of temperature, water content and age with the enthalpy method.
Declarations of kind types for SICOPOLIS.
Declarations of global variables for SICOPOLIS (for the ANT domain).
subroutine calc_temp_enth_2(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, alb1, ai1, ai2, aqtlde, am3, dtime_temp, dtt_2dxi, dtt_2deta, i, j)
Computation of temperature and age for an ice column with a temperate base with the enthalpy method...
subroutine calc_temp_enth_1(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 with the enthalpy method.
subroutine calc_temp_enth_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) with the enthalpy method...
Declarations of global variables for SICOPOLIS.
subroutine calc_temp_r(atr1, alb1, i, j)
Computation of temperature for an ice-free column.