7 !! Computation of age for a cold / temperate ice column.
11 !! Copyright 2009-2013 Bernd Muegge, 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 age for a cold / temperate ice column.
34 !<------------------------------------------------------------------------------
41 integer(i4b) :: i, j, kc, kt
42 real(dp) :: g11_g22_g_inv(0:jmax,0:imax)
43 real(dp) :: d_sq_g11_g22_g_dxi(0:jmax,0:imax), &
44 d_sq_g11_g22_g_deta(0:jmax,0:imax)
46 real(dp) :: eaz_c_half(0:kcmax)
47 real(dp) :: vx_c_g(0:kcmax,0:jmax,0:imax), &
48 vy_c_g(0:kcmax,0:jmax,0:imax), &
49 vz_c_g(0:kcmax,0:jmax,0:imax)
50 real(dp) :: vx_c_half(0:kcmax,0:jmax,0:imax), &
51 vy_c_half(0:kcmax,0:jmax,0:imax)
52 real(dp) :: age_c_half(0:kcmax,0:jmax,0:imax)
53 real(dp) :: t_c_mean(0:kcmax,0:jmax,0:imax), &
54 x_c_mean(0:kcmax,0:jmax,0:imax), &
55 y_c_mean(0:kcmax,0:jmax,0:imax)
56 real(dp) :: t_c_mean_quarter(0:jmax,0:imax), &
57 x_c_mean_quarter(0:jmax,0:imax), &
58 y_c_mean_quarter(0:jmax,0:imax)
59 real(dp) :: t_c(0:kcmax,0:jmax,0:imax), &
60 x_c(0:kcmax,0:jmax,0:imax), &
61 y_c(0:kcmax,0:jmax,0:imax)
62 real(dp) :: t_c_0(0:jmax,0:imax), &
63 x_c_0(0:jmax,0:imax), &
65 real(dp) :: vx_c_quarter(0:jmax,0:imax), &
66 vy_c_quarter(0:jmax,0:imax)
67 real(dp) :: age_c_quarter(0:jmax,0:imax)
68 real(dp) :: adv_c_x(0:kcmax,0:jmax,0:imax), &
69 adv_c_y(0:kcmax,0:jmax,0:imax), &
70 adv_c_z(0:kcmax,0:jmax,0:imax)
71 real(dp) :: adv_c_z_0(0:jmax,0:imax)
72 real(dp) :: mean_c_t(0:kcmax,0:jmax,0:imax), &
73 mean_c_f(0:kcmax,0:jmax,0:imax), &
74 mean_c_g(0:kcmax,0:jmax,0:imax), &
75 mean_c_h(0:kcmax,0:jmax,0:imax)
76 real(dp) :: mean_c_t_quarter(0:jmax,0:imax), &
77 mean_c_f_quarter(0:jmax,0:imax), &
78 mean_c_g_quarter(0:jmax,0:imax), &
79 mean_c_h_quarter(0:jmax,0:imax)
80 real(dp) :: add_t_c_1(0:kcmax,0:jmax,0:imax), &
81 add_t_c_2(0:kcmax,0:jmax,0:imax), &
82 add_t_c_3(0:kcmax,0:jmax,0:imax)
83 real(dp) :: add_t_c_1_0(0:jmax,0:imax), &
84 add_t_c_2_0(0:jmax,0:imax), &
85 add_t_c_3_0(0:jmax,0:imax)
86 real(dp) :: eaz_c_quarter
88 real(dp) :: vx_t_g(0:ktmax,0:jmax,0:imax), &
89 vy_t_g(0:ktmax,0:jmax,0:imax), &
90 vz_t_g(0:ktmax,0:jmax,0:imax)
91 real(dp) :: vx_t_half(0:ktmax,0:jmax,0:imax), &
92 vy_t_half(0:ktmax,0:jmax,0:imax)
93 real(dp) :: age_t_half(0:ktmax,0:jmax,0:imax)
94 real(dp) :: t_t_mean(0:jmax,0:imax), &
95 x_t_mean(0:jmax,0:imax), &
96 y_t_mean(0:jmax,0:imax)
97 real(dp) :: t_t(0:ktmax,0:jmax,0:imax), &
98 x_t(0:ktmax,0:jmax,0:imax), &
99 y_t(0:ktmax,0:jmax,0:imax)
100 real(dp) :: t_t_0(0:jmax,0:imax), &
101 x_t_0(0:jmax,0:imax), &
103 real(dp) :: t_t_max(0:jmax,0:imax), &
104 x_t_max(0:jmax,0:imax), &
105 y_t_max(0:jmax,0:imax)
106 real(dp) :: vx_t_quarter(0:jmax,0:imax), &
107 vy_t_quarter(0:jmax,0:imax)
108 real(dp) :: vx_t_threequarter(0:jmax,0:imax), &
109 vy_t_threequarter(0:jmax,0:imax)
110 real(dp) :: age_t_quarter(0:jmax,0:imax)
111 real(dp) :: age_t_threequarter(0:jmax,0:imax)
112 real(dp) :: adv_t_x(0:ktmax,0:jmax,0:imax), &
113 adv_t_y(0:ktmax,0:jmax,0:imax), &
114 adv_t_z(0:ktmax,0:jmax,0:imax)
115 real(dp) :: adv_t_z_0(0:jmax,0:imax)
116 real(dp) :: adv_t_z_max(0:jmax,0:imax)
117 real(dp) :: mean_t_t(0:ktmax,0:jmax,0:imax), &
118 mean_t_f(0:ktmax,0:jmax,0:imax), &
119 mean_t_g(0:ktmax,0:jmax,0:imax)
120 real(dp) :: mean_t_t_quarter(0:jmax,0:imax), &
121 mean_t_f_quarter(0:jmax,0:imax), &
122 mean_t_g_quarter(0:jmax,0:imax)
123 real(dp) :: mean_t_t_threequarter(0:jmax,0:imax), &
124 mean_t_f_threequarter(0:jmax,0:imax), &
125 mean_t_g_threequarter(0:jmax,0:imax)
126 real(dp) :: add_t_t_1(0:ktmax,0:jmax,0:imax), &
127 add_t_t_2(0:ktmax,0:jmax,0:imax), &
128 add_t_t_3(0:ktmax,0:jmax,0:imax)
129 real(dp) :: add_t_t_1_0(0:jmax,0:imax), &
130 add_t_t_2_0(0:jmax,0:imax), &
131 add_t_t_3_0(0:jmax,0:imax)
132 real(dp) :: add_t_t_1_max(0:jmax,0:imax), &
133 add_t_t_2_max(0:jmax,0:imax), &
134 add_t_t_3_max(0:jmax,0:imax)
136 real(dp) :: dtime_temp, dxi, deta, dzeta_c, dzeta_t, dtau
137 real(dp),
parameter :: zero=0.0_dp
141 if ((i.eq.0).or.(i.eq.imax).or.(j.eq.0).or.(j.eq.jmax)) &
142 stop
' calc_age_t: Boundary points not allowed.'
150 dzeta_c = 1.0_dp/
real(kcmax,dp)
151 dzeta_t = 1.0_dp/
real(ktmax,dp)
154 g11_g22_g_inv(j,i) = 1.0_dp / ( sq_g11_g(j,i)**2 * sq_g22_g(j,i)**2 )
156 d_sq_g11_g22_g_dxi(j,i) = ( sq_g11_g(j,i+1) * sq_g22_g(j,i+1) &
157 - sq_g11_g(j,i-1) * sq_g22_g(j,i-1) ) &
160 d_sq_g11_g22_g_deta(j,i) = ( sq_g11_g(j+1,i) * sq_g22_g(j+1,i) &
161 - sq_g11_g(j-1,i) * sq_g22_g(j-1,i) ) &
168 vx_t_half(kt,j,i) = ( vz_t(kt,j,i) + vz_t(kt,j,i-1) &
169 + vz_t(kt+1,j,i) + vz_t(kt+1,j,i-1) ) * 0.25_dp
170 vy_t_half(kt,j,i) = ( vz_t(kt,j,i) + vz_t(kt,j-1,i) &
171 + vz_t(kt+1,j,i) + vz_t(kt+1,j-1,i) ) * 0.25_dp
173 age_t_half(kt,j,i) = ( age_t(kt,j,i) + age_t(kt+1,j,i) ) * 0.5_dp
175 t_t(kt,j,i) = ( dzb_dtau(j,i) + (kt+0.5_dp)*dzeta_t * dh_t_dtau(j,i) )
176 x_t(kt,j,i) = insq_g11_g(j,i) &
177 * ( dzb_dxi(j,i) + (kt+0.5_dp)*dzeta_t * dh_t_dxi(j,i) )
178 y_t(kt,j,i) = insq_g22_g(j,i) &
179 * ( dzb_deta(j,i) + (kt+0.5_dp)*dzeta_t * dh_t_deta(j,i))
185 vz_t_g(0,j,i) = vz_t(0,j,i)
187 vz_t_g(kt,j,i) = ( vz_t(kt,j,i) + vz_t(kt-1,j,i) ) * 0.5_dp
194 vx_t_g(kt,j,i) = ( vx_t(kt,j,i) + vx_t(kt,j,i-1) ) * 0.5_dp
195 vy_t_g(kt,j,i) = ( vy_t(kt,j,i) + vy_t(kt,j-1,i) ) * 0.5_dp
199 t_t_mean(j,i) = ( 1.0_dp/h_t(j,i)*dh_t_dtau(j,i) )
200 x_t_mean(j,i) = insq_g11_g(j,i) &
201 * ( 1.0_dp/h_t(j,i)*dh_t_dxi(j,i) )
202 y_t_mean(j,i) = insq_g22_g(j,i) &
203 * ( 1.0_dp/h_t(j,i)*dh_t_deta(j,i) )
207 mean_t_t(kt,j,i) = dtau * t_t_mean(j,i) * age_t(kt,j,i)
209 mean_t_f(kt,j,i) = dtau * ( x_t_mean(j,i) &
210 - d_sq_g11_g22_g_dxi(j,i) &
211 * sq_g22_g(j,i) * g11_g22_g_inv(j,i) ) &
212 * age_t(kt,j,i) * vx_t_g(kt,j,i)
214 mean_t_g(kt,j,i) = dtau * ( y_t_mean(j,i) &
215 - d_sq_g11_g22_g_deta(j,i) &
216 * sq_g11_g(j,i) * g11_g22_g_inv(j,i) ) &
217 * age_t(kt,j,i) * vy_t_g(kt,j,i)
221 adv_t_x(kt,j,i) = dtau/(2.0_dp*dxi) &
222 * ( age_t(kt,j,i)*insq_g11_g(j,i) &
223 * (abs(vx_t(kt,j,i))+vx_t(kt,j,i)) &
224 - age_t(kt,j,i+1)*insq_g11_g(j,i+1) &
225 * (abs(vx_t(kt,j,i))-vx_t(kt,j,i)) &
226 - age_t(kt,j,i-1)*insq_g11_g(j,i-1) &
227 * (abs(vx_t(kt,j,i-1))+vx_t(kt,j,i-1)) &
228 + age_t(kt,j,i)*insq_g11_g(j,i) &
229 * (abs(vx_t(kt,j,i-1))-vx_t(kt,j,i-1)) )
231 adv_t_y(kt,j,i) = dtau/(2.0_dp*deta) &
232 * ( age_t(kt,j,i)*insq_g22_g(j,i) &
233 * (abs(vy_t(kt,j,i))+vy_t(kt,j,i)) &
234 - age_t(kt,j+1,i)*insq_g22_g(j+1,i) &
235 * (abs(vy_t(kt,j,i))-vy_t(kt,j,i)) &
236 - age_t(kt,j-1,i)*insq_g22_g(j-1,i) &
237 * (abs(vy_t(kt,j-1,i))+vy_t(kt,j-1,i)) &
238 + age_t(kt,j,i)*insq_g22_g(j,i) &
239 * (abs(vy_t(kt,j-1,i))-vy_t(kt,j-1,i)) )
248 adv_t_z(kt,j,i) = dtau/(2.0_dp*dzeta_t) * 1.0_dp/h_t(j,i) &
249 * ( age_t(kt,j,i) * (abs(vz_t(kt,j,i))+vz_t(kt,j,i)) &
250 - age_t(kt+1,j,i) * (abs(vz_t(kt,j,i))-vz_t(kt,j,i)) &
251 - age_t(kt-1,j,i) * (abs(vz_t(kt-1,j,i))+vz_t(kt-1,j,i)) &
252 + age_t(kt,j,i) * (abs(vz_t(kt-1,j,i))-vz_t(kt-1,j,i)) )
256 add_t_t_1(kt,j,i) = dtau/dzeta_t &
257 * ( t_t(kt,j,i) * age_t_half(kt,j,i) &
258 - t_t(kt-1,j,i) * age_t_half(kt-1,j,i) )
259 add_t_t_2(kt,j,i) = dtau/dzeta_t &
260 * ( x_t(kt,j,i)*age_t_half(kt,j,i)*vx_t_half(kt,j,i) &
261 - x_t(kt-1,j,i)*age_t_half(kt-1,j,i) &
262 *vx_t_half(kt-1,j,i) )
263 add_t_t_3(kt,j,i) = dtau/dzeta_t &
264 * ( y_t(kt,j,i)*age_t_half(kt,j,i)*vy_t_half(kt,j,i) &
265 - y_t(kt-1,j,i)*age_t_half(kt-1,j,i) &
266 *vy_t_half(kt-1,j,i) )
273 t_t_0(j,i) = dzb_dtau(j,i)
274 x_t_0(j,i) = insq_g11_g(j,i) * dzb_dxi(j,i)
275 y_t_0(j,i) = insq_g22_g(j,i) * dzb_deta(j,i)
277 age_t_quarter(j,i) = (3.0_dp*age_t(0,j,i)+age_t(1,j,i))/4.0_dp
279 vx_t_quarter(j,i) = (3.0_dp*vx_t_g(0,j,i)+vx_t_g(1,j,i))/4.0_dp
280 vy_t_quarter(j,i) = (3.0_dp*vy_t_g(0,j,i)+vy_t_g(1,j,i))/4.0_dp
284 adv_t_z_0(j,i) = (2.0_dp*dtau)/dzeta_t * 1.0_dp/h_t(j,i) &
285 * ( age_t(0,j,i)/2.0_dp * (abs(vz_t(0,j,i))+vz_t(0,j,i)) &
286 - age_t(1,j,i)/2.0_dp * (abs(vz_t(0,j,i))-vz_t(0,j,i)) &
287 - age_t(0,j,i) * vz_t(0,j,i))
291 mean_t_t_quarter(j,i) = dtau * t_t_mean(j,i) * age_t_quarter(j,i)
293 mean_t_f_quarter(j,i) = dtau * ( x_t_mean(j,i) &
294 - d_sq_g11_g22_g_dxi(j,i) &
295 * sq_g22_g(j,i) * g11_g22_g_inv(j,i) ) &
296 * age_t_quarter(j,i) * vx_t_quarter(j,i)
298 mean_t_g_quarter(j,i) = dtau * ( y_t_mean(j,i) &
299 - d_sq_g11_g22_g_deta(j,i) &
300 * sq_g11_g(j,i) * g11_g22_g_inv(j,i) ) &
301 * age_t_quarter(j,i) * vy_t_quarter(j,i)
305 add_t_t_1_0(j,i) = 2.0_dp*dtau/dzeta_t &
306 * ( t_t(0,j,i)*age_t_half(0,j,i) &
307 - t_t_0(j,i) * age_t(0,j,i) )
308 add_t_t_2_0(j,i) = 2.0_dp*dtau/dzeta_t &
309 * ( x_t(0,j,i)*age_t_half(0,j,i)*vx_t_half(0,j,i) &
310 - x_t_0(j,i)*age_t(0,j,i)*vx_t_g(0,j,i) )
311 add_t_t_3_0(j,i) = 2.0_dp*dtau/dzeta_t &
312 * ( y_t(0,j,i)*age_t_half(0,j,i)*vy_t_half(0,j,i) &
313 - y_t_0(j,i)*age_t(0,j,i)*vy_t_g(0,j,i) )
317 t_t_max(j,i) = dzb_dtau(j,i) + dh_t_dtau(j,i)
318 x_t_max(j,i) = insq_g11_g(j,i) * ( dzb_dxi(j,i) + dh_t_dxi(j,i) )
319 y_t_max(j,i) = insq_g22_g(j,i) * ( dzb_deta(j,i) + dh_t_deta(j,i) )
322 age_t_threequarter(j,i) = (3.0_dp*age_t(ktmax,j,i)+age_t(ktmax-1,j,i))/4.0_dp
324 vx_t_threequarter(j,i) = (3.0_dp*vx_t_g(ktmax,j,i)+vx_t_g(ktmax-1,j,i))/4.0_dp
325 vy_t_threequarter(j,i) = (3.0_dp*vy_t_g(ktmax,j,i)+vy_t_g(ktmax-1,j,i))/4.0_dp
329 adv_t_z_max(j,i) = (2.0_dp*dtau)/dzeta_t * 1.0_dp/h_t(j,i) &
330 * ( age_t(ktmax,j,i) * vz_t(ktmax-1,j,i) &
331 - age_t(ktmax-1,j,i)/2.0_dp &
332 * (abs(vz_t(ktmax-1,j,i))+vz_t(ktmax-1,j,i)) &
333 + age_t(ktmax,j,i)/2.0_dp &
334 * (abs(vz_t(ktmax-1,j,i))-vz_t(ktmax-1,j,i)) )
339 mean_t_t_threequarter(j,i) = dtau * t_t_mean(j,i) * age_t_threequarter(j,i)
341 mean_t_f_threequarter(j,i) = dtau * ( x_t_mean(j,i) &
342 - d_sq_g11_g22_g_dxi(j,i) &
343 * sq_g22_g(j,i) * g11_g22_g_inv(j,i) ) &
344 * age_t_threequarter(j,i) * vx_t_threequarter(j,i)
346 mean_t_g_threequarter(j,i) = dtau * ( y_t_mean(j,i) &
347 - d_sq_g11_g22_g_deta(j,i) &
348 * sq_g11_g(j,i) * g11_g22_g_inv(j,i) ) &
349 * age_t_threequarter(j,i) * vy_t_threequarter(j,i)
353 add_t_t_1_max(j,i) = 2.0_dp*dtau/dzeta_t &
354 * ( t_t_max(j,i)*age_t(ktmax,j,i) &
355 - t_t(ktmax-1,j,i)*age_t_half(ktmax-1,j,i) )
356 add_t_t_2_max(j,i) = 2.0_dp*dtau/dzeta_t &
357 * ( x_t_max(j,i)*age_t(ktmax,j,i)*vx_t_g(0,j,i) &
358 - x_t(ktmax-1,j,i)*age_t_half(ktmax-1,j,i) &
359 *vx_t_half(ktmax-1,j,i) )
360 add_t_t_3_max(j,i) = 2.0_dp*dtau/dzeta_t &
361 * ( y_t_max(j,i)*age_t(ktmax,j,i)*vy_t_g(0,j,i) &
362 - y_t(ktmax-1,j,i)*age_t_half(ktmax-1,j,i) &
363 *vy_t_half(ktmax-1,j,i) )
367 eaz_c_quarter = exp(deform*(0.25_dp)*dzeta_c)
373 vx_c_half(kc,j,i) = ( vz_c(kc,j,i) + vz_c(kc,j,i-1) &
374 + vz_c(kc+1,j,i) + vz_c(kc+1,j,i-1) ) * 0.25_dp
375 vy_c_half(kc,j,i) = ( vz_c(kc,j,i) + vz_c(kc,j-1,i) &
376 + vz_c(kc+1,j,i) + vz_c(kc+1,j-1,i) ) * 0.25_dp
378 age_c_half(kc,j,i) = ( age_c(kc,j,i) + age_c(kc+1,j,i) ) * 0.5_dp
379 eaz_c_half(kc) = exp(deform*(kc+0.5_dp)*dzeta_c)
381 t_c(kc,j,i) = ( (ea-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc))*dzm_dtau(j,i) &
382 + (eaz_c_half(kc)-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc)) &
384 x_c(kc,j,i) = insq_g11_g(j,i) &
385 * ( (ea-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc))*dzm_dxi(j,i) &
386 + (eaz_c_half(kc)-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc)) &
388 y_c(kc,j,i) = insq_g22_g(j,i) &
389 * ( (ea-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc))*dzm_deta(j,i) &
390 + (eaz_c_half(kc)-1.0_dp)/(h_c(j,i)*deform*eaz_c_half(kc)) &
397 vz_c_g(0,j,i) = vz_c(0,j,i)
399 vz_c_g(kc,j,i) = ( vz_c(kc,j,i) + vz_c(kc-1,j,i) ) * 0.5_dp
406 vx_c_g(kc,j,i) = ( vx_c(kc,j,i) + vx_c(kc,j,i-1) ) * 0.5_dp
407 vy_c_g(kc,j,i) = ( vy_c(kc,j,i) + vy_c(kc,j-1,i) ) * 0.5_dp
411 t_c_mean(kc,j,i) = ( (ea-1.0_dp)/(h_c(j,i)*eaz_c(kc))*dzm_dtau(j,i) &
412 - 1.0_dp/(h_c(j,i)*eaz_c(kc))*dh_c_dtau(j,i) )
413 x_c_mean(kc,j,i) = insq_g11_g(j,i) &
414 * ( (ea-1.0_dp)/(h_c(j,i)*eaz_c(kc))*dzm_dxi(j,i) &
415 - 1.0_dp/(h_c(j,i)*eaz_c(kc))*dh_c_dxi(j,i) )
416 y_c_mean(kc,j,i) = insq_g22_g(j,i) &
417 * ( (ea-1.0_dp)/(h_c(j,i)*eaz_c(kc))*dzm_deta(j,i) &
418 - 1.0_dp/(h_c(j,i)*eaz_c(kc))*dh_c_deta(j,i) )
422 mean_c_t(kc,j,i) = dtau * t_c_mean(kc,j,i) * age_c(kc,j,i)
424 mean_c_f(kc,j,i) = dtau * ( x_c_mean(kc,j,i) &
425 - d_sq_g11_g22_g_dxi(j,i) &
426 * sq_g22_g(j,i) * g11_g22_g_inv(j,i) ) &
427 * age_c(kc,j,i) * vx_c_g(kc,j,i)
429 mean_c_g(kc,j,i) = dtau * ( y_c_mean(kc,j,i) &
430 - d_sq_g11_g22_g_deta(j,i) &
431 * sq_g11_g(j,i) * g11_g22_g_inv(j,i) ) &
432 * age_c(kc,j,i) * vy_c_g(kc,j,i)
434 mean_c_h(kc,j,i) = dtau * ( ea-1.0_dp)/(h_c(j,i) *eaz_c(kc) ) &
435 * age_c(kc,j,i) * vz_c_g(kc,j,i)
439 adv_c_x(kc,j,i) = dtau/(2.0_dp*dxi) &
440 * ( age_c(kc,j,i)*insq_g11_g(j,i) &
441 * (abs(vx_c(kc,j,i))+vx_c(kc,j,i)) &
442 - age_c(kc,j,i+1)*insq_g11_g(j,i+1) &
443 * (abs(vx_c(kc,j,i))-vx_c(kc,j,i)) &
444 - age_c(kc,j,i-1)*insq_g11_g(j,i-1) &
445 * (abs(vx_c(kc,j,i-1))+vx_c(kc,j,i-1)) &
446 + age_c(kc,j,i)*insq_g11_g(j,i) &
447 * (abs(vx_c(kc,j,i-1))-vx_c(kc,j,i-1)) )
449 adv_c_y(kc,j,i) = dtau/(2.0_dp*deta) &
450 * ( age_c(kc,j,i)*insq_g22_g(j,i) &
451 * (abs(vy_c(kc,j,i))+vy_c(kc,j,i)) &
452 - age_c(kc,j+1,i)*insq_g22_g(j+1,i) &
453 * (abs(vy_c(kc,j,i))-vy_c(kc,j,i)) &
454 - age_c(kc,j-1,i)*insq_g22_g(j-1,i) &
455 * (abs(vy_c(kc,j-1,i))+vy_c(kc,j-1,i)) &
456 + age_c(kc,j,i)*insq_g22_g(j,i) &
457 * (abs(vy_c(kc,j-1,i))-vy_c(kc,j-1,i)) )
466 adv_c_z(kc,j,i) = dtau/(2.0_dp*dzeta_c) * (ea - 1.0_dp)/(h_c(j,i)*deform) &
467 * ( age_c(kc,j,i)/eaz_c(kc) &
468 * (abs(vz_c(kc,j,i))+vz_c(kc,j,i)) &
469 - age_c(kc+1,j,i)/eaz_c(kc+1) &
470 * (abs(vz_c(kc,j,i))-vz_c(kc,j,i)) &
471 - age_c(kc-1,j,i)/eaz_c(kc-1) &
472 * (abs(vz_c(kc-1,j,i))+vz_c(kc-1,j,i)) &
473 + age_c(kc,j,i)/eaz_c(kc) &
474 * (abs(vz_c(kc-1,j,i))-vz_c(kc-1,j,i)) )
478 add_t_c_1(kc,j,i) = dtau/dzeta_c &
479 * ( t_c(kc,j,i) * age_c_half(kc,j,i) &
480 - t_c(kc-1,j,i) * age_c_half(kc-1,j,i) )
481 add_t_c_2(kc,j,i) = dtau/dzeta_c &
482 * ( x_c(kc,j,i)*age_c_half(kc,j,i)*vx_c_half(kc,j,i) &
483 - x_c(kc-1,j,i)*age_c_half(kc-1,j,i) &
484 *vx_c_half(kc-1,j,i) )
485 add_t_c_3(kc,j,i) = dtau/dzeta_c &
486 * ( y_c(kc,j,i)*age_c_half(kc,j,i)*vy_c_half(kc,j,i) &
487 - y_c(kc-1,j,i)*age_c_half(kc-1,j,i) &
488 *vy_c_half(kc-1,j,i) )
495 t_c_0(j,i) = ( (ea-1.0_dp)/(h_c(j,i)*deform)*dzm_dtau(j,i) )
496 x_c_0(j,i) = insq_g11_g(j,i) &
497 * ( (ea-1.0_dp)/(h_c(j,i)*deform)*dzm_dxi(j,i) )
498 y_c_0(j,i) = insq_g22_g(j,i) &
499 * ( (ea-1.0_dp)/(h_c(j,i)*deform)*dzm_deta(j,i) )
501 age_c_quarter(j,i) = (3.0_dp*age_c(0,j,i)+age_c(1,j,i))/4.0_dp
503 vx_c_quarter(j,i) = (3.0_dp*vx_c_g(0,j,i)+vx_c_g(1,j,i))/4.0_dp
504 vy_c_quarter(j,i) = (3.0_dp*vy_c_g(0,j,i)+vy_c_g(1,j,i))/4.0_dp
506 t_c_mean_quarter(j,i) = ( (ea-1.0_dp)/(h_c(j,i)*eaz_c_quarter)*dzm_dtau(j,i) &
507 - 1.0_dp/(h_c(j,i)*eaz_c_quarter)*dh_c_dtau(j,i) )
508 x_c_mean_quarter(j,i) = insq_g11_g(j,i) &
509 * ( (ea-1.0_dp)/(h_c(j,i)*eaz_c_quarter)*dzm_dxi(j,i) &
510 - 1.0_dp/(h_c(j,i)*eaz_c_quarter)*dh_c_dxi(j,i) )
511 y_c_mean_quarter(j,i) = insq_g22_g(j,i) &
512 * ( (ea-1.0_dp)/(h_c(j,i)*eaz_c_quarter)*dzm_deta(j,i) &
513 - 1.0_dp/(h_c(j,i)*eaz_c_quarter)*dh_c_deta(j,i) )
517 adv_c_z_0(j,i) = (2.0_dp*dtau)/dzeta_c * (ea - 1.0_dp)/(h_c(j,i)*deform) &
518 * ( age_c(0,j,i)/2.0_dp &
519 * (abs(vz_c(0,j,i))+vz_c(0,j,i)) &
520 - age_c(1,j,i)/(2.0_dp*eaz_c(1)) &
521 * (abs(vz_c(0,j,i))-vz_c(0,j,i)) &
527 mean_c_t_quarter(j,i) = dtau * t_c_mean_quarter(j,i) * age_c_quarter(j,i)
529 mean_c_f_quarter(j,i) = dtau * ( x_c_mean_quarter(j,i) &
530 - d_sq_g11_g22_g_dxi(j,i) &
531 * sq_g22_g(j,i) * g11_g22_g_inv(j,i) ) &
532 * age_c_quarter(j,i) * vx_c_quarter(j,i)
534 mean_c_g_quarter(j,i) = dtau * ( y_c_mean_quarter(j,i) &
535 - d_sq_g11_g22_g_deta(j,i) &
536 * sq_g11_g(j,i) * g11_g22_g_inv(j,i) ) &
537 * age_c_quarter(j,i) * vy_c_quarter(j,i)
539 mean_c_h_quarter(j,i) = dtau * ( ea-1)/(h_c(j,i) *eaz_c_quarter ) &
540 * age_c_quarter(j,i) * vz_c_g(0,j,i)
544 add_t_c_1_0(j,i) = 2.0_dp*dtau/dzeta_c &
545 * ( t_c(0,j,i)*age_c_half(0,j,i) &
546 - t_c_0(j,i) * age_c(0,j,i) )
547 add_t_c_2_0(j,i) = 2.0_dp*dtau/dzeta_c &
548 * ( x_c(0,j,i)*age_c_half(0,j,i)*vx_c_half(0,j,i) &
549 - x_c_0(j,i)*age_c(0,j,i)*vx_c_g(0,j,i) )
550 add_t_c_3_0(j,i) = 2.0_dp*dtau/dzeta_c &
551 * ( y_c(0,j,i)*age_c_half(0,j,i)*vy_c_half(0,j,i) &
552 - y_c_0(j,i)*age_c(0,j,i)*vy_c_g(0,j,i) )
560 age_c_neu(kc,j,i) = 0.0_dp
566 age_c_neu(kc,j,i) = age_c(kc,j,i) + dtau &
574 + add_t_c_1(kc,j,i) &
575 + add_t_c_2(kc,j,i) &
585 if (vz_c(0,j,i).le.zero)
then
587 age_c_neu(0,j,i) = age_c(0,j,i) + dtau &
591 + mean_c_t_quarter(j,i) &
592 + mean_c_f_quarter(j,i) &
593 + mean_c_g_quarter(j,i) &
594 - mean_c_h_quarter(j,i) &
599 age_t_neu(ktmax,j,i) = age_c(0,j,i)
601 else if (vz_t(ktmax-1,j,i).ge.zero)
then
603 age_t_neu(ktmax,j,i) = age_t(ktmax,j,i) + dtau &
604 - adv_t_x(ktmax,j,i) &
605 - adv_t_y(ktmax,j,i) &
607 + mean_t_t_threequarter(j,i) &
608 + mean_t_f_threequarter(j,i) &
609 + mean_t_g_threequarter(j,i) &
610 + add_t_t_1_max(j,i) &
611 + add_t_t_2_max(j,i) &
614 age_c(0,j,i) = age_t_neu(ktmax,j,i)
622 age_t_neu(kt,j,i) = age_t(kt,j,i) + dtau &
629 + add_t_t_1(kt,j,i) &
630 + add_t_t_2(kt,j,i) &
639 age_t_neu(0,j,i) = age_t(0,j,i) + dtau &
643 + mean_t_t_quarter(j,i) &
644 + mean_t_f_quarter(j,i) &
645 + mean_t_g_quarter(j,i) &
655 if ( (maske_neu(j,i).eq.1).or.(maske_neu(j,i).eq.2) ) &
656 age_c_neu(kc,j,i) = 0.0_dp
657 if (age_c_neu(kc,j,i).lt.zero) &
658 age_c_neu(kc,j,i) = 0.0_dp
659 if (age_c_neu(kc,j,i).gt.(age_max*year_sec)) &
660 age_c_neu(kc,j,i) = age_max*year_sec
666 if ( (maske_neu(j,i).eq.1).or.(maske_neu(j,i).eq.2) ) &
667 age_t_neu(kt,j,i) = 0.0_dp
668 if (age_t_neu(kt,j,i).lt.zero) &
669 age_t_neu(kt,j,i) = 0.0_dp
670 if (age_t_neu(kt,j,i).gt.(age_max*year_sec)) &
671 age_t_neu(kt,j,i) = age_max*year_sec