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, 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 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
56 real(dp) :: temp_c_help(0:kcmax)
57 real(dp) :: fact_thick
58 real(dp) :: time_lag_cts
59 real(dp) :: vol_t, vol_t_smooth, korrfakt_t, &
60 dh_t_smooth(0:jmax,0:imax)
64 at7 = 2.0_dp/rho*dtime_temp
66 aw1 = dtime_temp/dzeta_t
67 aw2 = dtime_temp/dzeta_t
68 aw3 = dtime_temp/dzeta_t
69 aw4 = dtime_temp/dzeta_t
70 aw5 = nue/rho*dtime_temp/(dzeta_t**2)
71 aw7 = 2.0_dp/(rho*l)*dtime_temp
72 aw8 = beta**2/(rho*l) &
74 aw9 = beta/l*dtime_temp
76 ai3 = agediff*dtime_temp/(dzeta_t**2)
77 ai4 = deform*dzeta_c/(ea-1.0_dp)
79 atr1 = kappa_r/(rho_c_r*h_r**2)*dtime_temp/(dzeta_r**2)
81 am1 = deform*beta*dzeta_c/(ea-1.0_dp)
82 am2 = deform*l*rho*dzeta_c/(ea-1.0_dp)
84 acb1 = (ea-1.0_dp)/deform/dzeta_c
85 acb2 = kappa_r/h_r/dzeta_r
89 alb1 = h_r/kappa_r*dzeta_r
91 aqtld = dzeta_t/dtime_temp
93 dtt_2dxi = 0.5_dp*dtime_temp/dxi
94 dtt_2deta = 0.5_dp*dtime_temp/deta
96 dtime_temp_inv = 1.0_dp/dtime_temp
99 at1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
100 at2_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
101 at2_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
103 at3_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
104 at3_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
106 at4_1(kc) = (ea-1.0_dp)/(deform*eaz_c(kc))*dtime_temp/dzeta_c
107 at4_2(kc) = (eaz_c(kc)-1.0_dp)/(deform*eaz_c(kc)) &
109 at5(kc) = (ea-1.0_dp)/(rho*deform*eaz_c(kc)) &
111 if (kc /= kcmax)
then
112 at6(kc) = (ea-1.0_dp) &
113 /(deform*exp(deform*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
118 ai1(kc) = agediff*(ea-1.0_dp)/(deform*eaz_c(kc)) &
120 if (kc /= kcmax)
then
121 ai2(kc) = (ea-1.0_dp) &
122 /(deform*exp(deform*0.5_dp*(zeta_c(kc)+zeta_c(kc+1)))) &
134 if (maske(j,i)==0)
then
138 if (n_cts(j,i).eq.-1)
then
140 n_cts_neu(j,i) = n_cts(j,i)
141 zm_neu(j,i) = zb(j,i)
142 h_c_neu(j,i) = h_c(j,i)
143 h_t_neu(j,i) = h_t(j,i)
145 call
calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, &
146 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
147 acb3, acb4, alb1, ai1, ai2, ai4, &
149 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
153 if (temp_c_neu(0,j,i).gt.temp_c_m(0,j,i))
then
157 call
calc_temp2(at1, at2_1, at2_2, at3_1, at3_2, &
158 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
159 ai1, ai2, ai4, mean_accum_inv, &
160 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
167 ( n_cts_neu(j,i).eq.0 ).and. &
168 ( (temp_c_neu(1,j,i)-temp_c_neu(0,j,i)) &
169 .gt.(am1*h_c_neu(j,i)) ) &
173 zm_neu(j,i) = zb(j,i)+0.001_dp
174 h_c_neu(j,i) = h_c(j,i)-0.001_dp
175 h_t_neu(j,i) = h_t(j,i)+0.001_dp
178 call
calc_temp3(at1, at2_1, at2_2, at3_1, at3_2, &
179 at4_1, at4_2, at5, at6, at7, atr1, &
181 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
182 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
183 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
186 at4_1, at4_2, at5, at6, at7, atr1, am1, am2, alb1, &
187 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
188 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
189 dtime_temp, dtt_2dxi, dtt_2deta, dtime_temp_inv, &
196 else if (n_cts(j,i).eq.0)
then
198 n_cts_neu(j,i) = n_cts(j,i)
199 zm_neu(j,i) = zb(j,i)
200 h_c_neu(j,i) = h_c(j,i)
201 h_t_neu(j,i) = h_t(j,i)
203 call
calc_temp2(at1, at2_1, at2_2, at3_1, at3_2, &
204 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
205 ai1, ai2, ai4, mean_accum_inv, &
206 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
210 if ( (temp_c_neu(1,j,i)-temp_c_neu(0,j,i)) &
211 .lt. (am1*h_c(j,i)) )
then
215 call
calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, &
216 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
217 acb3, acb4, alb1, ai1, ai2, ai4, &
219 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
221 if (temp_c_neu(0,j,i).ge.temp_c_m(0,j,i))
then
225 call
calc_temp2(at1, at2_1, at2_2, at3_1, at3_2, &
226 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
227 ai1, ai2, ai4, mean_accum_inv, &
228 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
237 ( n_cts_neu(j,i).eq.0 ).and. &
238 ( (temp_c_neu(1,j,i)-temp_c_neu(0,j,i)) &
239 .gt.(am1*h_c_neu(j,i)) ) &
243 zm_neu(j,i) = zb(j,i)+0.001_dp
244 h_c_neu(j,i) = h_c(j,i)-0.001_dp
245 h_t_neu(j,i) = h_t(j,i)+0.001_dp
248 call
calc_temp3(at1, at2_1, at2_2, at3_1, at3_2, &
249 at4_1, at4_2, at5, at6, at7, atr1, &
251 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
252 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
253 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
256 at4_1, at4_2, at5, at6, at7, atr1, am1, am2, alb1, &
257 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
258 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
259 dtime_temp, dtt_2dxi, dtt_2deta, dtime_temp_inv, &
268 n_cts_neu(j,i) = n_cts(j,i)
269 zm_neu(j,i) = zm(j,i)
270 h_c_neu(j,i) = h_c(j,i)
271 h_t_neu(j,i) = h_t(j,i)
273 call
calc_temp3(at1, at2_1, at2_2, at3_1, at3_2, &
274 at4_1, at4_2, at5, at6, at7, atr1, &
276 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
277 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
278 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
280 if ( (temp_c_neu(0,j,i)-(-beta*h_c_neu(j,i))).gt.0.0_dp ) &
283 at4_1, at4_2, at5, at6, at7, atr1, am1, am2, alb1, &
284 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
285 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
286 dtime_temp, dtt_2dxi, dtt_2deta, dtime_temp_inv, &
290 at4_1, at4_2, at5, at6, at7, atr1, am1, am2, alb1, &
291 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
292 ai1, ai2, ai3, ai4, mean_accum_inv, dzeta_t, &
293 dtime_temp, dtt_2dxi, dtt_2deta, dtime_temp_inv, &
301 else if (maske(j,i)==3)
then
304 zm_neu(j,i) = zb(j,i)
305 h_c_neu(j,i) = h_c(j,i) + h_t(j,i)
306 h_t_neu(j,i) = 0.0_dp
309 at4_1, at4_2, at5, at6, at7, atr1, alb1, &
310 ai1, ai2, ai4, mean_accum_inv, &
311 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
317 if (temp_c_neu(kc,j,i) > temp_c_m(kc,j,i)) &
318 temp_c_neu(kc,j,i) = temp_c_m(kc,j,i)
326 zm_neu(j,i) = zb(j,i)
327 h_c_neu(j,i) = h_c(j,i)
328 h_t_neu(j,i) = h_t(j,i)
344 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
350 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
351 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
355 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
356 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
360 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
363 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
364 h_c_neu(j,i) = h_c(j,i)
365 h_t_neu(j,i) = h_t(j,i)
366 zm_neu(j,i) = zb(j,i)
371 zm_neu(j,i) = zb(j,i)
372 h_c_neu(j,i) = h_c(j,i)
373 h_t_neu(j,i) = h_t(j,i)
384 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
390 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
391 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
395 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
396 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
400 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
403 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
404 h_c_neu(j,i) = h_c(j,i)
405 h_t_neu(j,i) = h_t(j,i)
406 zm_neu(j,i) = zb(j,i)
411 zm_neu(j,i) = zb(j,i)
412 h_c_neu(j,i) = h_c(j,i)
413 h_t_neu(j,i) = h_t(j,i)
424 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
430 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
431 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
435 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
436 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
440 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
443 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
444 h_c_neu(j,i) = h_c(j,i)
445 h_t_neu(j,i) = h_t(j,i)
446 zm_neu(j,i) = zb(j,i)
451 zm_neu(j,i) = zb(j,i)
452 h_c_neu(j,i) = h_c(j,i)
453 h_t_neu(j,i) = h_t(j,i)
464 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
470 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
471 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
475 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
476 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
480 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
483 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
484 h_c_neu(j,i) = h_c(j,i)
485 h_t_neu(j,i) = h_t(j,i)
486 zm_neu(j,i) = zb(j,i)
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)
507 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
513 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
514 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
518 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
519 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
523 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
526 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
527 h_c_neu(j,i) = h_c(j,i)
528 h_t_neu(j,i) = h_t(j,i)
529 zm_neu(j,i) = zb(j,i)
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)
546 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
552 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
553 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
557 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
558 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
562 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
565 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
566 h_c_neu(j,i) = h_c(j,i)
567 h_t_neu(j,i) = h_t(j,i)
568 zm_neu(j,i) = zb(j,i)
573 zm_neu(j,i) = zb(j,i)
574 h_c_neu(j,i) = h_c(j,i)
575 h_t_neu(j,i) = h_t(j,i)
591 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
597 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
598 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
602 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
603 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
607 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
610 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
611 h_c_neu(j,i) = h_c(j,i)
612 h_t_neu(j,i) = h_t(j,i)
613 zm_neu(j,i) = zb(j,i)
618 zm_neu(j,i) = zb(j,i)
619 h_c_neu(j,i) = h_c(j,i)
620 h_t_neu(j,i) = h_t(j,i)
630 if ( (maske(j,i).eq.0).or.(maske(j,i).eq.3) )
then
636 temp_c_neu(kc,j,i) = temp_c_neu(kc,jj,ii)
637 age_c_neu(kc,j,i) = age_c_neu(kc,jj,ii)
641 omega_t_neu(kt,j,i) = omega_t_neu(kt,jj,ii)
642 age_t_neu(kt,j,i) = age_t_neu(kt,jj,ii)
646 temp_r_neu(kr,j,i) = temp_r_neu(kr,jj,ii)
649 n_cts_neu(j,i) = min(n_cts_neu(jj,ii),0)
650 h_c_neu(j,i) = h_c(j,i)
651 h_t_neu(j,i) = h_t(j,i)
652 zm_neu(j,i) = zb(j,i)
657 zm_neu(j,i) = zb(j,i)
658 h_c_neu(j,i) = h_c(j,i)
659 h_t_neu(j,i) = h_t(j,i)
674 if (n_cts_neu(j,i).eq.1)
then
675 vol_t = vol_t + h_t_neu(j,i)*area(j,i)
684 if (n_cts_neu(j,i).ne.-1)
then
686 dh_t_smooth(j,i) = numdiff_h_t* ( -4.0_dp*h_t_neu(j,i) &
687 +h_t_neu(j,i+1)+h_t_neu(j,i-1) &
688 +h_t_neu(j+1,i)+h_t_neu(j-1,i) )
689 if (dh_t_smooth(j,i).gt.0.001_dp) n_cts_neu(j,i) = 1
697 if (n_cts_neu(j,i).eq.1)
then
698 h_t_neu(j,i) = h_t_neu(j,i) + dh_t_smooth(j,i)
705 vol_t_smooth = 0.0_dp
708 if (n_cts_neu(j,i).eq.1)
then
709 vol_t_smooth = vol_t_smooth + h_t_neu(j,i)*area(j,i)
716 if (vol_t_smooth.gt.0.0_dp)
then
718 korrfakt_t = vol_t/vol_t_smooth
721 if (n_cts_neu(j,i).eq.1)
then
722 h_t_neu(j,i) = h_t_neu(j,i)*korrfakt_t
733 time_lag_cts = tau_cts*year_sec
738 if (n_cts_neu(j,i).eq.1)
then
740 h_t_neu(j,i) = ( time_lag_cts*h_t(j,i) &
741 + dtime_temp*h_t_neu(j,i) ) &
742 /(time_lag_cts+dtime_temp)
744 zm_neu(j,i) = zb(j,i) + h_t_neu(j,i)
745 h_c_neu(j,i) = zs(j,i) - zm_neu(j,i)