36 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
37 acb3, acb4, alb1, ai1, ai2, ai4, &
39 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
47 integer(i4b),
intent(in) :: i, j
48 real(dp),
intent(in) :: 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), ai4, &
52 atr1, acb1, acb2, acb3, acb4, alb1
53 real(dp),
intent(in) :: mean_accum_inv
54 real(dp),
intent(in) :: dtime_temp, dtt_2dxi, dtt_2deta
56 integer(i4b) :: kc, kt, kr
57 real(dp) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), ct4(0:kcmax), &
58 ct5(0:kcmax), ct6(0:kcmax), ct7(0:kcmax), ctr1, &
59 ccb1, ccb2, ccb3, ccb4, clb1
60 real(dp) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), ct3_sg(0:kcmax), &
61 ct4_sg(0:kcmax), adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
62 real(dp) :: ci1(0:kcmax), ci2(0:kcmax)
63 real(dp) :: ftx_c_l(0:kcmax), ftx_c_r(0:kcmax), &
64 fty_c_l(0:kcmax), fty_c_r(0:kcmax), &
65 fax_c_l(0:kcmax), fax_c_r(0:kcmax), &
66 fay_c_l(0:kcmax), fay_c_r(0:kcmax)
67 real(dp) :: temp_c_help(0:kcmax)
68 real(dp) :: vx_c_help, vy_c_help
69 real(dp) :: adv_vert_help
70 real(dp) :: dtt_dxi, dtt_deta
71 real(dp) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
72 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
73 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
74 lgs_x(0:kcmax+ktmax+krmax+imax+jmax), &
75 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
76 real(dp),
parameter :: zero=0.0_dp
80 if ((i == 0).or.(i == imax).or.(j == 0).or.(j == jmax)) &
81 stop
' calc_temp1: Boundary points not allowed.'
91 ccb3 = acb3*0.5_dp*(vx_t(0,j,i)+vx_t(0,j,i-1)) &
92 *h_c(j,i)*dzs_dxi_g(j,i)
93 ccb4 = acb4*0.5_dp*(vy_t(0,j,i)+vy_t(0,j-1,i)) &
94 *h_c(j,i)*dzs_deta_g(j,i)
96 clb1 = alb1*q_geo(j,i)
101 ct1(kc) = at1(kc)/h_c(j,i)*0.5_dp*(vz_c(kc,j,i)+vz_c(kc-1,j,i))
105 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
108 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
111 #elif ( ADV_VERT==2 || ADV_VERT==3 )
114 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
121 ct2(kc) = ( at2_1(kc)*dzm_dtau(j,i) &
122 +at2_2(kc)*dh_c_dtau(j,i) )/h_c(j,i)
123 ct3(kc) = ( at3_1(kc)*dzm_dxi_g(j,i) &
124 +at3_2(kc)*dh_c_dxi_g(j,i) )/h_c(j,i) &
125 *0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1)) *insq_g11_g(j,i)
126 ct4(kc) = ( at4_1(kc)*dzm_deta_g(j,i) &
127 +at4_2(kc)*dh_c_deta_g(j,i) )/h_c(j,i) &
128 *0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i)) *insq_g22_g(j,i)
130 /
c_val(temp_c(kc,j,i)) &
133 /
c_val(temp_c(kc,j,i)) &
135 *
ratefac(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
136 *
creep(sigma_c(kc,j,i)) &
137 *sigma_c(kc,j,i)*sigma_c(kc,j,i)
138 ci1(kc) = ai1(kc)/h_c(j,i)
143 if (vx_c(kc,j,i-1) >= zero)
then
144 ftx_c_l(kc) = temp_c(kc,j,i-1)*vx_c(kc,j,i-1)
145 fax_c_l(kc) = age_c(kc,j,i-1)*vx_c(kc,j,i-1)
147 ftx_c_l(kc) = temp_c(kc,j,i)*vx_c(kc,j,i-1)
148 fax_c_l(kc) = age_c(kc,j,i)*vx_c(kc,j,i-1)
151 if (vx_c(kc,j,i) >= zero)
then
152 ftx_c_r(kc) = temp_c(kc,j,i)*vx_c(kc,j,i)
153 fax_c_r(kc) = age_c(kc,j,i)*vx_c(kc,j,i)
155 ftx_c_r(kc) = temp_c(kc,j,i+1)*vx_c(kc,j,i)
156 fax_c_r(kc) = age_c(kc,j,i+1)*vx_c(kc,j,i)
159 if (vy_c(kc,j-1,i) >= zero)
then
160 fty_c_l(kc) = temp_c(kc,j-1,i)*vy_c(kc,j-1,i)
161 fay_c_l(kc) = age_c(kc,j-1,i)*vy_c(kc,j-1,i)
163 fty_c_l(kc) = temp_c(kc,j,i)*vy_c(kc,j-1,i)
164 fay_c_l(kc) = age_c(kc,j,i)*vy_c(kc,j-1,i)
167 if (vy_c(kc,j,i) >= zero)
then
168 fty_c_r(kc) = temp_c(kc,j,i)*vy_c(kc,j,i)
169 fay_c_r(kc) = age_c(kc,j,i)*vy_c(kc,j,i)
171 fty_c_r(kc) = temp_c(kc,j+1,i)*vy_c(kc,j,i)
172 fay_c_r(kc) = age_c(kc,j+1,i)*vy_c(kc,j,i)
181 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
182 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
183 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
184 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
185 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
187 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
188 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
189 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
190 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
191 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
193 #elif ( ADV_VERT==2 || ADV_VERT==3 )
196 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
197 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
198 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
199 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
200 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
206 temp_c_help(kc) = 0.5_dp*(temp_c(kc,j,i)+temp_c(kc+1,j,i))
210 ci2(kc) = ai2(kc)/h_c(j,i)
213 #if ( ADV_HOR==3 || ADV_HOR==4 )
214 dtt_dxi = 2.0_dp*dtt_2dxi
215 dtt_deta = 2.0_dp*dtt_2deta
231 lgs_a1(kr) = 1.0_dp + 2.0_dp*ctr1
233 lgs_b(kr) = temp_r(kr,j,i)
243 lgs_b(kr) = 2.0_dp*clb1
251 lgs_a1(kr) = -(ccb1+ccb2)
253 lgs_b(kr) = ccb3+ccb4
259 lgs_a0(krmax+kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
261 lgs_a1(krmax+kc) = 1.0_dp+ct5(kc)*(ct6(kc)+ct6(kc-1))
262 lgs_a2(krmax+kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
268 = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
272 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
273 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
274 +ct5(kc)*(ct6(kc)+ct6(kc-1))
276 = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
281 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
284 = -max(adv_vert_help, 0.0_dp) &
288 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp) &
289 +ct5(kc)*(ct6(kc)+ct6(kc-1))
291 = min(adv_vert_help, 0.0_dp) &
298 lgs_b(krmax+kc) = temp_c(kc,j,i) + ct7(kc) &
300 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
301 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
303 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
304 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
305 *insq_g11_sgx(j,i-1) ) &
307 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
308 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
310 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
311 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
312 *insq_g22_sgy(j-1,i) )
316 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
317 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
319 lgs_b(krmax+kc) = temp_c(kc,j,i) + ct7(kc) &
321 ( min(vx_c_help, 0.0_dp) &
322 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
324 +max(vx_c_help, 0.0_dp) &
325 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
326 *insq_g11_sgx(j,i-1) ) &
328 ( min(vy_c_help, 0.0_dp) &
329 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
331 +max(vy_c_help, 0.0_dp) &
332 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
333 *insq_g22_sgy(j-1,i) )
337 lgs_b(krmax+kc) = temp_c(kc,j,i) + ct7(kc) &
338 -dtt_dxi *(ftx_c_r(kc)-ftx_c_l(kc)) &
339 -dtt_deta*(fty_c_r(kc)-fty_c_l(kc))
346 lgs_a0(krmax+kc) = 0.0_dp
347 lgs_a1(krmax+kc) = 1.0_dp
348 lgs_b(krmax+kc) = temp_s(j,i)
352 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax+krmax)
357 temp_r_neu(kr,j,i) = lgs_x(kr)
361 temp_c_neu(kc,j,i) = lgs_x(krmax+kc)
368 omega_t_neu(kt,j,i) = 0.0_dp
378 lgs_a1(kc) = 1.0_dp - min(adv_vert_sg(kc), 0.0_dp)
379 lgs_a2(kc) = min(adv_vert_sg(kc), 0.0_dp)
383 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
385 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
386 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
388 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
389 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
390 *insq_g11_sgx(j,i-1) ) &
392 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
393 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
395 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
396 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
397 *insq_g22_sgy(j-1,i) )
401 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
402 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
404 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
406 ( min(vx_c_help, 0.0_dp) &
407 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
409 +max(vx_c_help, 0.0_dp) &
410 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
411 *insq_g11_sgx(j,i-1) ) &
413 ( min(vy_c_help, 0.0_dp) &
414 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
416 +max(vy_c_help, 0.0_dp) &
417 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
418 *insq_g22_sgy(j-1,i) )
430 lgs_a0(kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
432 lgs_a1(kc) = 1.0_dp+ci1(kc)*(ci2(kc)+ci2(kc-1))
433 lgs_a2(kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
438 lgs_a0(kc) = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1))
439 lgs_a1(kc) = 1.0_dp &
440 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
441 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
442 lgs_a2(kc) = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
446 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
448 lgs_a0(kc) = -max(adv_vert_help, 0.0_dp)
449 lgs_a1(kc) = 1.0_dp &
450 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp)
451 lgs_a2(kc) = min(adv_vert_help, 0.0_dp)
457 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
459 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
460 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
462 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
463 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
464 *insq_g11_sgx(j,i-1) ) &
466 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
467 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
469 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
470 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
471 *insq_g22_sgy(j-1,i) )
475 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
476 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
478 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
480 ( min(vx_c_help, 0.0_dp) &
481 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
483 +max(vx_c_help, 0.0_dp) &
484 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
485 *insq_g11_sgx(j,i-1) ) &
487 ( min(vy_c_help, 0.0_dp) &
488 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
490 +max(vy_c_help, 0.0_dp) &
491 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
492 *insq_g22_sgy(j-1,i) )
496 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
497 -dtt_dxi *(fax_c_r(kc)-fax_c_l(kc)) &
498 -dtt_deta*(fay_c_r(kc)-fay_c_l(kc))
505 if (as_perp(j,i) >= zero)
then
510 lgs_a0(kc) = -max(adv_vert_sg(kc-1), 0.0_dp)
511 lgs_a1(kc) = 1.0_dp + max(adv_vert_sg(kc-1), 0.0_dp)
516 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
518 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
519 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
521 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
522 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
523 *insq_g11_sgx(j,i-1) ) &
525 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
526 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
528 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
529 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
530 *insq_g22_sgy(j-1,i) )
534 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
535 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
537 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
539 ( min(vx_c_help, 0.0_dp) &
540 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
542 +max(vx_c_help, 0.0_dp) &
543 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
544 *insq_g11_sgx(j,i-1) ) &
546 ( min(vy_c_help, 0.0_dp) &
547 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
549 +max(vy_c_help, 0.0_dp) &
550 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
551 *insq_g22_sgy(j-1,i) )
563 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax)
570 age_c_neu(kc,j,i) = lgs_x(kc)
572 if (age_c_neu(kc,j,i) < (age_min*year_sec)) &
573 age_c_neu(kc,j,i) = 0.0_dp
574 if (age_c_neu(kc,j,i) > (age_max*year_sec)) &
575 age_c_neu(kc,j,i) = age_max*year_sec
582 age_t_neu(kt,j,i) = age_c_neu(0,j,i)