38 at4_1, at4_2, at5, at6, at7, atr1, am1, am2, alb1, &
39 aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld, &
40 ai1, ai2, ai3, mean_accum_inv, dzeta_t, &
41 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
49 integer(i4b),
intent(in) :: i, j
50 real(dp),
intent(in) :: at1(0:kcmax), at2_1(0:kcmax), at2_2(0:kcmax), &
51 at3_1(0:kcmax), at3_2(0:kcmax), at4_1(0:kcmax), &
52 at4_2(0:kcmax), at5(0:kcmax), at6(0:kcmax), at7, &
53 ai1(0:kcmax), ai2(0:kcmax), ai3, &
55 real(dp),
intent(in) :: aw1, aw2, aw3, aw4, aw5, aw7, aw8, aw9, aqtld
56 real(dp),
intent(in) :: mean_accum_inv
57 real(dp),
intent(in) :: dzeta_t, dtime_temp, dtt_2dxi, dtt_2deta
59 integer(i4b) :: kc, kt, kr
60 real(dp) :: ct1(0:kcmax), ct2(0:kcmax), ct3(0:kcmax), ct4(0:kcmax), &
61 ct5(0:kcmax), ct6(0:kcmax), ct7(0:kcmax), ctr1, cm1, cm2, &
63 real(dp) :: ct1_sg(0:kcmax), ct2_sg(0:kcmax), ct3_sg(0:kcmax), &
64 ct4_sg(0:kcmax), adv_vert_sg(0:kcmax), abs_adv_vert_sg(0:kcmax)
65 real(dp) :: ci1(0:kcmax), ci2(0:kcmax), ci3
66 real(dp) :: cw1(0:ktmax), cw2(0:ktmax), cw3(0:ktmax), cw4(0:ktmax), &
67 cw5, cw7(0:ktmax), cw8, cw9(0:ktmax)
68 real(dp) :: cw1_sg(0:ktmax), cw2_sg(0:ktmax), cw3_sg(0:ktmax), &
69 cw4_sg(0:ktmax), adv_vert_w_sg(0:ktmax), abs_adv_vert_w_sg(0:ktmax)
70 real(dp) :: ftx_c_l(0:kcmax), ftx_c_r(0:kcmax), &
71 fty_c_l(0:kcmax), fty_c_r(0:kcmax), &
72 fax_c_l(0:kcmax), fax_c_r(0:kcmax), &
73 fay_c_l(0:kcmax), fay_c_r(0:kcmax)
74 real(dp) :: fwx_t_l(0:ktmax), fwx_t_r(0:ktmax), &
75 fwy_t_l(0:ktmax), fwy_t_r(0:ktmax), &
76 fax_t_l(0:ktmax), fax_t_r(0:ktmax), &
77 fay_t_l(0:ktmax), fay_t_r(0:ktmax)
78 real(dp) :: sigma_c_help(0:kcmax), sigma_t_help(0:ktmax), &
80 real(dp) :: vx_c_help, vy_c_help, vx_t_help, vy_t_help
81 real(dp) :: adv_vert_help, adv_vert_w_help
82 real(dp) :: dtt_dxi, dtt_deta
83 real(dp) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
84 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
85 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
86 lgs_x(0:kcmax+ktmax+krmax+imax+jmax), &
87 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
88 real(dp),
parameter :: zero=0.0_dp
92 if ((i == 0).or.(i == imax).or.(j == 0).or.(j == jmax)) &
93 stop
' calc_temp3: Boundary points not allowed.'
98 cm1 = am1*h_c_neu(j,i)
99 clb1 = alb1*q_geo(j,i)
104 ct1(kc) = at1(kc)/h_c_neu(j,i)*0.5_dp*(vz_c(kc,j,i)+vz_c(kc-1,j,i))
108 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c_neu(j,i)*vz_c(kc,j,i)
111 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c_neu(j,i)*vz_c(kc,j,i)
114 #elif ( ADV_VERT==2 || ADV_VERT==3 )
117 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c_neu(j,i)*vz_c(kc,j,i)
124 ct2(kc) = ( at2_1(kc)*dzm_dtau(j,i) &
125 +at2_2(kc)*dh_c_dtau(j,i) )/h_c_neu(j,i)
126 ct3(kc) = ( at3_1(kc)*dzm_dxi_g(j,i) &
127 +at3_2(kc)*dh_c_dxi_g(j,i) )/h_c_neu(j,i) &
128 *0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1)) *insq_g11_g(j,i)
129 ct4(kc) = ( at4_1(kc)*dzm_deta_g(j,i) &
130 +at4_2(kc)*dh_c_deta_g(j,i) )/h_c_neu(j,i) &
131 *0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i)) *insq_g22_g(j,i)
133 /
c_val(temp_c(kc,j,i)) &
137 = rho*g*h_c_neu(j,i)*(1.0_dp-eaz_c_quotient(kc)) &
138 *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
140 /
c_val(temp_c(kc,j,i)) &
142 *
ratefac(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
143 *
creep(sigma_c_help(kc)) &
144 *sigma_c_help(kc)*sigma_c_help(kc)
146 ci1(kc) = ai1(kc)/h_c_neu(j,i)
151 if (vx_c(kc,j,i-1) >= zero)
then
152 ftx_c_l(kc) = temp_c(kc,j,i-1)*vx_c(kc,j,i-1)
153 fax_c_l(kc) = age_c(kc,j,i-1)*vx_c(kc,j,i-1)
155 ftx_c_l(kc) = temp_c(kc,j,i)*vx_c(kc,j,i-1)
156 fax_c_l(kc) = age_c(kc,j,i)*vx_c(kc,j,i-1)
159 if (vx_c(kc,j,i) >= zero)
then
160 ftx_c_r(kc) = temp_c(kc,j,i)*vx_c(kc,j,i)
161 fax_c_r(kc) = age_c(kc,j,i)*vx_c(kc,j,i)
163 ftx_c_r(kc) = temp_c(kc,j,i+1)*vx_c(kc,j,i)
164 fax_c_r(kc) = age_c(kc,j,i+1)*vx_c(kc,j,i)
167 if (vy_c(kc,j-1,i) >= zero)
then
168 fty_c_l(kc) = temp_c(kc,j-1,i)*vy_c(kc,j-1,i)
169 fay_c_l(kc) = age_c(kc,j-1,i)*vy_c(kc,j-1,i)
171 fty_c_l(kc) = temp_c(kc,j,i)*vy_c(kc,j-1,i)
172 fay_c_l(kc) = age_c(kc,j,i)*vy_c(kc,j-1,i)
175 if (vy_c(kc,j,i) >= zero)
then
176 fty_c_r(kc) = temp_c(kc,j,i)*vy_c(kc,j,i)
177 fay_c_r(kc) = age_c(kc,j,i)*vy_c(kc,j,i)
179 fty_c_r(kc) = temp_c(kc,j+1,i)*vy_c(kc,j,i)
180 fay_c_r(kc) = age_c(kc,j+1,i)*vy_c(kc,j,i)
189 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
190 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
191 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
192 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
193 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
195 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
196 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
197 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
198 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
199 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
201 #elif ( ADV_VERT==2 || ADV_VERT==3 )
204 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
205 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
206 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
207 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
208 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
214 temp_c_help(kc) = 0.5_dp*(temp_c(kc,j,i)+temp_c(kc+1,j,i))
218 ci2(kc) = ai2(kc)/h_c_neu(j,i)
221 cw5 = aw5/(h_t_neu(j,i)**2)
223 ci3 = ai3/(h_t_neu(j,i)**2)
228 cw1(kt) = aw1/h_t_neu(j,i)*0.5_dp*(vz_t(kt,j,i)+vz_t(kt-1,j,i))
232 cw1(kt) = aw1/h_t_neu(j,i)*0.5_dp*(vz_t(kt-1,j,i)+vz_c(0,j,i))
235 cw1_sg(kt) = aw1/h_t_neu(j,i)*vz_t(kt,j,i)
238 cw1_sg(kt) = aw1/h_t_neu(j,i)*vz_t(kt,j,i)
241 #elif ( ADV_VERT==2 || ADV_VERT==3 )
244 cw1_sg(kt) = aw1/h_t_neu(j,i)*vz_t(kt,j,i)
251 *
c_val(temp_t_m(kt,j,i)) &
253 +0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))*dzs_dxi_g(j,i) &
254 +0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))*dzs_deta_g(j,i) &
255 -0.5_dp*(vz_t(kt,j,i)+vz_t(kt-1,j,i)) )
260 cw2(kt) = aw2*(dzb_dtau(j,i)+zeta_t(kt)*dh_t_dtau(j,i)) &
262 cw3(kt) = aw3*(dzb_dxi_g(j,i)+zeta_t(kt)*dh_t_dxi_g(j,i)) &
264 *0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1)) *insq_g11_g(j,i)
265 cw4(kt) = aw4*(dzb_deta_g(j,i)+zeta_t(kt)*dh_t_deta_g(j,i)) &
267 *0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i)) *insq_g22_g(j,i)
270 + rho*g*h_t_neu(j,i)*(1.0_dp-zeta_t(kt)) &
271 *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
275 *
creep(sigma_t_help(kt)) &
276 *sigma_t_help(kt)*sigma_t_help(kt)
281 if (vx_t(kt,j,i-1) >= zero)
then
282 fwx_t_l(kt) = omega_t(kt,j,i-1)*vx_t(kt,j,i-1)
283 fax_t_l(kt) = age_t(kt,j,i-1)*vx_t(kt,j,i-1)
285 fwx_t_l(kt) = omega_t(kt,j,i)*vx_t(kt,j,i-1)
286 fax_t_l(kt) = age_t(kt,j,i)*vx_t(kt,j,i-1)
289 if (vx_t(kt,j,i) >= zero)
then
290 fwx_t_r(kt) = omega_t(kt,j,i)*vx_t(kt,j,i)
291 fax_t_r(kt) = age_t(kt,j,i)*vx_t(kt,j,i)
293 fwx_t_r(kt) = omega_t(kt,j,i+1)*vx_t(kt,j,i)
294 fax_t_r(kt) = age_t(kt,j,i+1)*vx_t(kt,j,i)
297 if (vy_t(kt,j-1,i) >= zero)
then
298 fwy_t_l(kt) = omega_t(kt,j-1,i)*vy_t(kt,j-1,i)
299 fay_t_l(kt) = age_t(kt,j-1,i)*vy_t(kt,j-1,i)
301 fwy_t_l(kt) = omega_t(kt,j,i)*vy_t(kt,j-1,i)
302 fay_t_l(kt) = age_t(kt,j,i)*vy_t(kt,j-1,i)
305 if (vy_t(kt,j,i) >= zero)
then
306 fwy_t_r(kt) = omega_t(kt,j,i)*vy_t(kt,j,i)
307 fay_t_r(kt) = age_t(kt,j,i)*vy_t(kt,j,i)
309 fwy_t_r(kt) = omega_t(kt,j+1,i)*vy_t(kt,j,i)
310 fay_t_r(kt) = age_t(kt,j+1,i)*vy_t(kt,j,i)
319 cw2_sg(kt) = 0.5_dp*(cw2(kt)+cw2(kt+1))
320 cw3_sg(kt) = 0.5_dp*(cw3(kt)+cw3(kt+1))
321 cw4_sg(kt) = 0.5_dp*(cw4(kt)+cw4(kt+1))
322 adv_vert_w_sg(kt) = cw1_sg(kt)-cw2_sg(kt)-cw3_sg(kt)-cw4_sg(kt)
323 abs_adv_vert_w_sg(kt) = abs(adv_vert_w_sg(kt))
325 cw2_sg(kt) = 0.5_dp*(cw2(kt)+cw2(kt+1))
326 cw3_sg(kt) = 0.5_dp*(cw3(kt)+cw3(kt+1))
327 cw4_sg(kt) = 0.5_dp*(cw4(kt)+cw4(kt+1))
328 adv_vert_w_sg(kt) = cw1_sg(kt)-cw2_sg(kt)-cw3_sg(kt)-cw4_sg(kt)
329 abs_adv_vert_w_sg(kt) = abs(adv_vert_w_sg(kt))
331 #elif ( ADV_VERT==2 || ADV_VERT==3 )
334 cw2_sg(kt) = 0.5_dp*(cw2(kt)+cw2(kt+1))
335 cw3_sg(kt) = 0.5_dp*(cw3(kt)+cw3(kt+1))
336 cw4_sg(kt) = 0.5_dp*(cw4(kt)+cw4(kt+1))
337 adv_vert_w_sg(kt) = cw1_sg(kt)-cw2_sg(kt)-cw3_sg(kt)-cw4_sg(kt)
338 abs_adv_vert_w_sg(kt) = abs(adv_vert_w_sg(kt))
343 #if ( ADV_HOR==3 || ADV_HOR==4 )
344 dtt_dxi = 2.0_dp*dtt_2dxi
345 dtt_deta = 2.0_dp*dtt_2deta
360 lgs_a1(kr) = 1.0_dp + 2.0_dp*ctr1
362 lgs_b(kr) = temp_r(kr,j,i)
372 lgs_b(kr) = 2.0_dp*clb1
380 lgs_b(kr) = temp_t_m(0,j,i)
384 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, krmax)
389 temp_r_neu(kr,j,i) = lgs_x(kr)
404 lgs_a0(kt) = -0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - cw5
405 lgs_a1(kt) = 1.0_dp + 2.0_dp*cw5
406 lgs_a2(kt) = 0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - cw5
411 = -0.5_dp*(adv_vert_w_sg(kt-1)+abs_adv_vert_w_sg(kt-1)) &
415 +0.5_dp*(adv_vert_w_sg(kt-1)+abs_adv_vert_w_sg(kt-1)) &
416 -0.5_dp*(adv_vert_w_sg(kt) -abs_adv_vert_w_sg(kt) ) &
419 = 0.5_dp*(adv_vert_w_sg(kt) -abs_adv_vert_w_sg(kt) ) &
424 adv_vert_w_help = 0.5_dp*(adv_vert_w_sg(kt)+adv_vert_w_sg(kt-1))
427 = -max(adv_vert_w_help, 0.0_dp) &
431 +max(adv_vert_w_help, 0.0_dp)-min(adv_vert_w_help, 0.0_dp) &
434 = min(adv_vert_w_help, 0.0_dp) &
441 lgs_b(kt) = omega_t(kt,j,i) + cw7(kt) + cw8 + cw9(kt) &
443 ( (vx_t(kt,j,i)-abs(vx_t(kt,j,i))) &
444 *(omega_t(kt,j,i+1)-omega_t(kt,j,i)) &
446 +(vx_t(kt,j,i-1)+abs(vx_t(kt,j,i-1))) &
447 *(omega_t(kt,j,i)-omega_t(kt,j,i-1)) &
448 *insq_g11_sgx(j,i-1) ) &
450 ( (vy_t(kt,j,i)-abs(vy_t(kt,j,i))) &
451 *(omega_t(kt,j+1,i)-omega_t(kt,j,i)) &
453 +(vy_t(kt,j-1,i)+abs(vy_t(kt,j-1,i))) &
454 *(omega_t(kt,j,i)-omega_t(kt,j-1,i)) &
455 *insq_g22_sgy(j-1,i) )
459 vx_t_help = 0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))
460 vy_t_help = 0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))
462 lgs_b(kt) = omega_t(kt,j,i) + cw7(kt) + cw8 + cw9(kt) &
464 ( min(vx_t_help, 0.0_dp) &
465 *(omega_t(kt,j,i+1)-omega_t(kt,j,i)) &
467 +max(vx_t_help, 0.0_dp) &
468 *(omega_t(kt,j,i)-omega_t(kt,j,i-1)) &
469 *insq_g11_sgx(j,i-1) ) &
471 ( min(vy_t_help, 0.0_dp) &
472 *(omega_t(kt,j+1,i)-omega_t(kt,j,i)) &
474 +max(vy_t_help, 0.0_dp) &
475 *(omega_t(kt,j,i)-omega_t(kt,j-1,i)) &
476 *insq_g22_sgy(j-1,i) )
480 lgs_b(kt) = omega_t(kt,j,i) + cw7(kt) + cw8 + cw9(kt) &
481 -dtt_dxi *(fwx_t_r(kt)-fwx_t_l(kt)) &
482 -dtt_deta*(fwy_t_r(kt)-fwy_t_l(kt))
490 if (am_perp(j,i) >= zero)
then
502 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, ktmax)
510 if (lgs_x(kt) < zero)
then
511 omega_t_neu(kt,j,i) = 0.0_dp
512 else if (lgs_x(kt) < omega_max)
then
513 omega_t_neu(kt,j,i) = lgs_x(kt)
515 omega_t_neu(kt,j,i) = omega_max
516 q_tld(j,i) = q_tld(j,i) &
517 +aqtld*h_t_neu(j,i)*(lgs_x(kt)-omega_max)
527 if (am_perp(j,i) >= zero)
then
530 cm2 = am2*h_c_neu(j,i)*omega_t_neu(ktmax,j,i)*am_perp(j,i) &
543 lgs_a0(kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
545 lgs_a1(kc) = 1.0_dp+ct5(kc)*(ct6(kc)+ct6(kc-1))
546 lgs_a2(kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
552 = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
556 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
557 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
558 +ct5(kc)*(ct6(kc)+ct6(kc-1))
560 = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
565 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
568 = -max(adv_vert_help, 0.0_dp) &
572 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp) &
573 +ct5(kc)*(ct6(kc)+ct6(kc-1))
575 = min(adv_vert_help, 0.0_dp) &
582 lgs_b(kc) = temp_c(kc,j,i) + ct7(kc) &
584 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
585 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
587 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
588 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
589 *insq_g11_sgx(j,i-1) ) &
591 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
592 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
594 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
595 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
596 *insq_g22_sgy(j-1,i) )
600 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
601 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
603 lgs_b(kc) = temp_c(kc,j,i) + ct7(kc) &
605 ( min(vx_c_help, 0.0_dp) &
606 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
608 +max(vx_c_help, 0.0_dp) &
609 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
610 *insq_g11_sgx(j,i-1) ) &
612 ( min(vy_c_help, 0.0_dp) &
613 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
615 +max(vy_c_help, 0.0_dp) &
616 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
617 *insq_g22_sgy(j-1,i) )
621 lgs_b(kc) = temp_c(kc,j,i) + ct7(kc) &
622 -dtt_dxi *(ftx_c_r(kc)-ftx_c_l(kc)) &
623 -dtt_deta*(fty_c_r(kc)-fty_c_l(kc))
632 lgs_b(kc) = temp_s(j,i)
636 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax)
641 temp_c_neu(kc,j,i) = lgs_x(kc)
648 lgs_a1(kt) = 1.0_dp - min(adv_vert_w_sg(kt), 0.0_dp)
649 lgs_a2(kt) = min(adv_vert_w_sg(kt), 0.0_dp)
653 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
655 ( (vx_t(kt,j,i)-abs(vx_t(kt,j,i))) &
656 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
658 +(vx_t(kt,j,i-1)+abs(vx_t(kt,j,i-1))) &
659 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
660 *insq_g11_sgx(j,i-1) ) &
662 ( (vy_t(kt,j,i)-abs(vy_t(kt,j,i))) &
663 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
665 +(vy_t(kt,j-1,i)+abs(vy_t(kt,j-1,i))) &
666 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
667 *insq_g22_sgy(j-1,i) )
671 vx_t_help = 0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))
672 vy_t_help = 0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))
674 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
676 ( min(vx_t_help, 0.0_dp) &
677 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
679 +max(vx_t_help, 0.0_dp) &
680 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
681 *insq_g11_sgx(j,i-1) ) &
683 ( min(vy_t_help, 0.0_dp) &
684 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
686 +max(vy_t_help, 0.0_dp) &
687 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
688 *insq_g22_sgy(j-1,i) )
700 lgs_a0(kt) = -0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - ci3
701 lgs_a1(kt) = 1.0_dp + 2.0_dp*ci3
702 lgs_a2(kt) = 0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - ci3
706 lgs_a0(kt) = -0.5_dp*(adv_vert_w_sg(kt-1)+abs_adv_vert_w_sg(kt-1))
707 lgs_a1(kt) = 1.0_dp &
708 +0.5_dp*(adv_vert_w_sg(kt-1)+abs_adv_vert_w_sg(kt-1)) &
709 -0.5_dp*(adv_vert_w_sg(kt) -abs_adv_vert_w_sg(kt) )
710 lgs_a2(kt) = 0.5_dp*(adv_vert_w_sg(kt) -abs_adv_vert_w_sg(kt) )
714 adv_vert_w_help = 0.5_dp*(adv_vert_w_sg(kt)+adv_vert_w_sg(kt-1))
716 lgs_a0(kt) = -max(adv_vert_w_help, 0.0_dp)
717 lgs_a1(kt) = 1.0_dp &
718 +max(adv_vert_w_help, 0.0_dp)-min(adv_vert_w_help, 0.0_dp)
719 lgs_a2(kt) = min(adv_vert_w_help, 0.0_dp)
725 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
727 ( (vx_t(kt,j,i)-abs(vx_t(kt,j,i))) &
728 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
730 +(vx_t(kt,j,i-1)+abs(vx_t(kt,j,i-1))) &
731 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
732 *insq_g11_sgx(j,i-1) ) &
734 ( (vy_t(kt,j,i)-abs(vy_t(kt,j,i))) &
735 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
737 +(vy_t(kt,j-1,i)+abs(vy_t(kt,j-1,i))) &
738 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
739 *insq_g22_sgy(j-1,i) )
743 vx_t_help = 0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))
744 vy_t_help = 0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))
746 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
748 ( min(vx_t_help, 0.0_dp) &
749 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
751 +max(vx_t_help, 0.0_dp) &
752 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
753 *insq_g11_sgx(j,i-1) ) &
755 ( min(vy_t_help, 0.0_dp) &
756 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
758 +max(vy_t_help, 0.0_dp) &
759 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
760 *insq_g22_sgy(j-1,i) )
764 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
765 -dtt_dxi *(fax_t_r(kt)-fax_t_l(kt)) &
766 -dtt_deta*(fay_t_r(kt)-fay_t_l(kt))
777 lgs_a0(kt) = -0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - ci3
778 lgs_a1(kt) = 1.0_dp + 2.0_dp*ci3
779 lgs_a2(kt) = 0.5_dp*(cw1(kt)-cw2(kt)-cw3(kt)-cw4(kt)) - ci3
783 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
785 ( (vx_t(kt,j,i)-abs(vx_t(kt,j,i))) &
786 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
788 +(vx_t(kt,j,i-1)+abs(vx_t(kt,j,i-1))) &
789 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
790 *insq_g11_sgx(j,i-1) ) &
792 ( (vy_t(kt,j,i)-abs(vy_t(kt,j,i))) &
793 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
795 +(vy_t(kt,j-1,i)+abs(vy_t(kt,j-1,i))) &
796 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
797 *insq_g22_sgy(j-1,i) )
801 vx_t_help = 0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))
802 vy_t_help = 0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))
804 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
806 ( min(vx_t_help, 0.0_dp) &
807 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
809 +max(vx_t_help, 0.0_dp) &
810 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
811 *insq_g11_sgx(j,i-1) ) &
813 ( min(vy_t_help, 0.0_dp) &
814 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
816 +max(vy_t_help, 0.0_dp) &
817 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
818 *insq_g22_sgy(j-1,i) )
826 #elif ( ADV_VERT==2 || ADV_VERT==3 )
831 if (adv_vert_sg(kc) <= zero)
then
833 lgs_a0(ktmax+kc) = 0.0_dp
834 lgs_a1(ktmax+kc) = 1.0_dp - adv_vert_sg(kc)
835 lgs_a2(ktmax+kc) = adv_vert_sg(kc)
839 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
841 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
842 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
844 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
845 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
846 *insq_g11_sgx(j,i-1) ) &
848 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
849 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
851 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
852 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
853 *insq_g22_sgy(j-1,i) )
857 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
858 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
860 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
862 ( min(vx_c_help, 0.0_dp) &
863 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
865 +max(vx_c_help, 0.0_dp) &
866 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
867 *insq_g11_sgx(j,i-1) ) &
869 ( min(vy_c_help, 0.0_dp) &
870 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
872 +max(vy_c_help, 0.0_dp) &
873 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
874 *insq_g22_sgy(j-1,i) )
878 lgs_b(ktmax+kc) = ...
882 else if (adv_vert_w_sg(kt-1) >= zero)
then
884 lgs_a0(kt) = -adv_vert_w_sg(kt-1)
885 lgs_a1(kt) = 1.0_dp + adv_vert_w_sg(kt-1)
890 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
892 ( (vx_t(kt,j,i)-abs(vx_t(kt,j,i))) &
893 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
895 +(vx_t(kt,j,i-1)+abs(vx_t(kt,j,i-1))) &
896 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
897 *insq_g11_sgx(j,i-1) ) &
899 ( (vy_t(kt,j,i)-abs(vy_t(kt,j,i))) &
900 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
902 +(vy_t(kt,j-1,i)+abs(vy_t(kt,j-1,i))) &
903 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
904 *insq_g22_sgy(j-1,i) )
908 vx_t_help = 0.5_dp*(vx_t(kt,j,i)+vx_t(kt,j,i-1))
909 vy_t_help = 0.5_dp*(vy_t(kt,j,i)+vy_t(kt,j-1,i))
911 lgs_b(kt) = age_t(kt,j,i) + dtime_temp &
913 ( min(vx_t_help, 0.0_dp) &
914 *(age_t(kt,j,i+1)-age_t(kt,j,i)) &
916 +max(vx_t_help, 0.0_dp) &
917 *(age_t(kt,j,i)-age_t(kt,j,i-1)) &
918 *insq_g11_sgx(j,i-1) ) &
920 ( min(vy_t_help, 0.0_dp) &
921 *(age_t(kt,j+1,i)-age_t(kt,j,i)) &
923 +max(vy_t_help, 0.0_dp) &
924 *(age_t(kt,j,i)-age_t(kt,j-1,i)) &
925 *insq_g22_sgy(j-1,i) )
949 lgs_a0(ktmax+kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
951 lgs_a1(ktmax+kc) = 1.0_dp+ci1(kc)*(ci2(kc)+ci2(kc-1))
952 lgs_a2(ktmax+kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
957 lgs_a0(ktmax+kc) = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1))
958 lgs_a1(ktmax+kc) = 1.0_dp &
959 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
960 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
961 lgs_a2(ktmax+kc) = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
965 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
967 lgs_a0(ktmax+kc) = -max(adv_vert_help, 0.0_dp)
968 lgs_a1(ktmax+kc) = 1.0_dp &
969 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp)
970 lgs_a2(ktmax+kc) = min(adv_vert_help, 0.0_dp)
976 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
978 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
979 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
981 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
982 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
983 *insq_g11_sgx(j,i-1) ) &
985 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
986 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
988 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
989 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
990 *insq_g22_sgy(j-1,i) )
994 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
995 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
997 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
999 ( min(vx_c_help, 0.0_dp) &
1000 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
1001 *insq_g11_sgx(j,i) &
1002 +max(vx_c_help, 0.0_dp) &
1003 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
1004 *insq_g11_sgx(j,i-1) ) &
1006 ( min(vy_c_help, 0.0_dp) &
1007 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
1008 *insq_g22_sgy(j,i) &
1009 +max(vy_c_help, 0.0_dp) &
1010 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
1011 *insq_g22_sgy(j-1,i) )
1015 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
1016 -dtt_dxi *(fax_c_r(kc)-fax_c_l(kc)) &
1017 -dtt_deta*(fay_c_r(kc)-fay_c_l(kc))
1024 if (as_perp(j,i) >= zero)
then
1025 lgs_a0(ktmax+kc) = 0.0_dp
1026 lgs_a1(ktmax+kc) = 1.0_dp
1027 lgs_b(ktmax+kc) = 0.0_dp
1029 lgs_a0(ktmax+kc) = -max(adv_vert_sg(kc-1), 0.0_dp)
1030 lgs_a1(ktmax+kc) = 1.0_dp + max(adv_vert_sg(kc-1), 0.0_dp)
1035 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
1037 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
1038 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
1039 *insq_g11_sgx(j,i) &
1040 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
1041 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
1042 *insq_g11_sgx(j,i-1) ) &
1044 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
1045 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
1046 *insq_g22_sgy(j,i) &
1047 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
1048 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
1049 *insq_g22_sgy(j-1,i) )
1053 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
1054 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
1056 lgs_b(ktmax+kc) = age_c(kc,j,i) + dtime_temp &
1058 ( min(vx_c_help, 0.0_dp) &
1059 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
1060 *insq_g11_sgx(j,i) &
1061 +max(vx_c_help, 0.0_dp) &
1062 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
1063 *insq_g11_sgx(j,i-1) ) &
1065 ( min(vy_c_help, 0.0_dp) &
1066 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
1067 *insq_g22_sgy(j,i) &
1068 +max(vy_c_help, 0.0_dp) &
1069 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
1070 *insq_g22_sgy(j-1,i) )
1074 lgs_b(ktmax+kc) = ...
1082 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax+ktmax)
1089 age_t_neu(kt,j,i) = lgs_x(kt)
1091 if (age_t_neu(kt,j,i) < (age_min*year_sec)) &
1092 age_t_neu(kt,j,i) = 0.0_dp
1093 if (age_t_neu(kt,j,i) > (age_max*year_sec)) &
1094 age_t_neu(kt,j,i) = age_max*year_sec
1100 age_c_neu(kc,j,i) = lgs_x(ktmax+kc)
1102 if (age_c_neu(kc,j,i) < (age_min*year_sec)) &
1103 age_c_neu(kc,j,i) = 0.0_dp
1104 if (age_c_neu(kc,j,i) > (age_max*year_sec)) &
1105 age_c_neu(kc,j,i) = age_max*year_sec