7 !! Computation of temperature and age in cold-ice mode.
11 !! Copyright 2009-2013 Ralf Greve
15 !! This file is part of SICOPOLIS.
17 !! SICOPOLIS is free software: you can redistribute it and/or modify
18 !! it under the terms of the GNU General Public License as published by
19 !! the Free Software Foundation, either version 3 of the License, or
20 !! (at your option) any later version.
22 !! SICOPOLIS is distributed in the hope that it will be useful,
23 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
24 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 !! GNU General Public License for more details.
27 !! You should have received a copy of the GNU General Public License
28 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
30 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
33 !> Computation of temperature and age in cold-ice mode.
34 !<------------------------------------------------------------------------------
36 dtime_temp, mean_accum_inv)
43 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
44 real(dp),
intent(in) :: dtime_temp
45 real(dp),
intent(in) :: mean_accum_inv
47 integer(i4b) :: i, j, kc, 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 acb1, acb2, acb3, acb4, &
52 ai1(0:kcmax), ai2(0:kcmax), ai3, ai4, &
54 real(dp) :: aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld
55 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)
74 ai4 = deform*dzeta_c/(ea-1.0_dp)
76 atr1 = kappa_r/(rho_c_r*h_r**2)*dtime_temp/(dzeta_r**2)
78 am1 = deform*beta*dzeta_c/(ea-1.0_dp)
79 am2 = deform*l*rho*dzeta_c/(ea-1.0_dp)
81 acb1 = (ea-1.0_dp)/deform/dzeta_c
82 acb2 = kappa_r/h_r/dzeta_r
86 alb1 = h_r/kappa_r*dzeta_r
88 aqtld = dzeta_t/dtime_temp
90 dtt_2dxi = 0.5_dp*dtime_temp/dxi
91 dtt_2deta = 0.5_dp*dtime_temp/deta
93 dtime_temp_inv = 1.0_dp/dtime_temp
96 at1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
97 at2_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
98 at2_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
100 at3_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
101 at3_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
103 at4_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
104 at4_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
106 at5(kc) = (ea-1.0_dp)/(rho*deform*eaz_c(kc)) &
108 if (kc /= kcmax)
then
109 at6(kc) = (ea-1.0_dp) &
110 /(deform*exp(deform*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
115 ai1(kc) = agediff*(ea-1.0_dp)/(deform*eaz_c(kc)) &
117 if (kc /= kcmax)
then
118 ai2(kc) = (ea-1.0_dp) &
119 /(deform*exp(deform*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
131 if (maske(j,i)==0)
then
134 zm_neu(j,i) = zb(j,i)
135 h_c_neu(j,i) = h_c(j,i)
136 h_t_neu(j,i) = h_t(j,i)
138 call
calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, &
139 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
140 acb3, acb4, alb1, ai1, ai2, ai4, &
142 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
149 if (temp_c_neu(0,j,i).gt.temp_c_m(0,j,i))
then
152 temp_c_neu(0,j,i) = temp_c_m(0,j,i)
153 temp_r_neu(krmax,j,i) = temp_c_m(0,j,i)
157 if (temp_c_neu(kc,j,i).gt.temp_c_m(kc,j,i))
then
159 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
165 else if (maske(j,i)==3)
then
169 zm_neu(j,i) = zb(j,i)
170 h_c_neu(j,i) = h_c(j,i)
171 h_t_neu(j,i) = 0.0_dp
174 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
175 ai1, ai2, ai4, mean_accum_inv, &
176 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
182 if (temp_c_neu(kc,j,i) > temp_c_m(kc,j,i)) &
183 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
192 zm_neu(j,i) = zb(j,i)
193 h_c_neu(j,i) = h_c(j,i)
194 h_t_neu(j,i) = h_t(j,i)
210 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
216 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
217 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
221 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
224 n_cts_neu(j,i) = n_cts_neu(jj,ii)
225 kc_cts(j,i) = kc_cts(jj,ii)
226 zm_neu(j,i) = zb(j,i)
227 h_c_neu(j,i) = h_c(j,i)
228 h_t_neu(j,i) = h_t(j,i)
234 zm_neu(j,i) = zb(j,i)
235 h_c_neu(j,i) = h_c(j,i)
236 h_t_neu(j,i) = h_t(j,i)
247 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
253 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
254 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
258 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
261 n_cts_neu(j,i) = n_cts_neu(jj,ii)
262 kc_cts(j,i) = kc_cts(jj,ii)
263 zm_neu(j,i) = zb(j,i)
264 h_c_neu(j,i) = h_c(j,i)
265 h_t_neu(j,i) = h_t(j,i)
271 zm_neu(j,i) = zb(j,i)
272 h_c_neu(j,i) = h_c(j,i)
273 h_t_neu(j,i) = h_t(j,i)
284 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
290 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
291 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
295 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
298 n_cts_neu(j,i) = n_cts_neu(jj,ii)
299 kc_cts(j,i) = kc_cts(jj,ii)
300 zm_neu(j,i) = zb(j,i)
301 h_c_neu(j,i) = h_c(j,i)
302 h_t_neu(j,i) = h_t(j,i)
308 zm_neu(j,i) = zb(j,i)
309 h_c_neu(j,i) = h_c(j,i)
310 h_t_neu(j,i) = h_t(j,i)
321 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
327 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
328 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
332 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
335 n_cts_neu(j,i) = n_cts_neu(jj,ii)
336 kc_cts(j,i) = kc_cts(jj,ii)
337 zm_neu(j,i) = zb(j,i)
338 h_c_neu(j,i) = h_c(j,i)
339 h_t_neu(j,i) = h_t(j,i)
345 zm_neu(j,i) = zb(j,i)
346 h_c_neu(j,i) = h_c(j,i)
347 h_t_neu(j,i) = h_t(j,i)
361 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
367 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
368 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
372 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
375 n_cts_neu(j,i) = n_cts_neu(jj,ii)
376 kc_cts(j,i) = kc_cts(jj,ii)
377 zm_neu(j,i) = zb(j,i)
378 h_c_neu(j,i) = h_c(j,i)
379 h_t_neu(j,i) = h_t(j,i)
385 zm_neu(j,i) = zb(j,i)
386 h_c_neu(j,i) = h_c(j,i)
387 h_t_neu(j,i) = h_t(j,i)
397 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
403 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
404 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
408 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
411 n_cts_neu(j,i) = n_cts_neu(jj,ii)
412 kc_cts(j,i) = kc_cts(jj,ii)
413 zm_neu(j,i) = zb(j,i)
414 h_c_neu(j,i) = h_c(j,i)
415 h_t_neu(j,i) = h_t(j,i)
421 zm_neu(j,i) = zb(j,i)
422 h_c_neu(j,i) = h_c(j,i)
423 h_t_neu(j,i) = h_t(j,i)
439 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
445 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
446 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
450 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
453 n_cts_neu(j,i) = n_cts_neu(jj,ii)
454 kc_cts(j,i) = kc_cts(jj,ii)
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)
463 zm_neu(j,i) = zb(j,i)
464 h_c_neu(j,i) = h_c(j,i)
465 h_t_neu(j,i) = h_t(j,i)
475 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
481 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
482 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
486 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
489 n_cts_neu(j,i) = n_cts_neu(jj,ii)
490 kc_cts(j,i) = kc_cts(jj,ii)
491 zm_neu(j,i) = zb(j,i)
492 h_c_neu(j,i) = h_c(j,i)
493 h_t_neu(j,i) = h_t(j,i)
499 zm_neu(j,i) = zb(j,i)
500 h_c_neu(j,i) = h_c(j,i)
501 h_t_neu(j,i) = h_t(j,i)