36 at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, &
37 acb3, acb4, alb1, ai1, ai2, &
38 dtime_temp, dtt_2dxi, dtt_2deta, i, j)
48 integer(i4b),
intent(in) :: i, j
49 real(dp),
intent(in) :: at1(0:kcmax), at2_1(0:kcmax), at2_2(0:kcmax), &
50 at3_1(0:kcmax), at3_2(0:kcmax), at4_1(0:kcmax), &
51 at4_2(0:kcmax), at5(0:kcmax), at6(0:kcmax), at7, &
52 ai1(0:kcmax), ai2(0:kcmax), &
53 atr1, acb1, acb2, acb3, acb4, alb1
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) :: temp_c_help(0:kcmax)
64 real(dp) :: vx_c_help, vy_c_help
65 real(dp) :: adv_vert_help
66 real(dp) :: dtt_dxi, dtt_deta
67 real(dp) :: lgs_a0(0:kcmax+ktmax+krmax+imax+jmax), &
68 lgs_a1(0:kcmax+ktmax+krmax+imax+jmax), &
69 lgs_a2(0:kcmax+ktmax+krmax+imax+jmax), &
70 lgs_x(0:kcmax+ktmax+krmax+imax+jmax), &
71 lgs_b(0:kcmax+ktmax+krmax+imax+jmax)
72 real(dp),
parameter :: zero=0.0_dp
76 if ((i == 0).or.(i == imax).or.(j == 0).or.(j == jmax)) &
77 stop
' calc_temp1: Boundary points not allowed.'
89 if (.not.flag_shelfy_stream(j,i))
then
92 ccb3 = acb3*0.5_dp*(vx_t(0,j,i)+vx_t(0,j,i-1)) &
93 *h_c(j,i)*dzs_dxi_g(j,i)
94 ccb4 = acb4*0.5_dp*(vy_t(0,j,i)+vy_t(0,j-1,i)) &
95 *h_c(j,i)*dzs_deta_g(j,i)
100 ccb3 = -c_drag(j,i) &
101 * sqrt(vx_b_g(j,i)**2 &
103 **(1.0_dp+p_weert_inv(j,i))
109 clb1 = alb1*q_geo(j,i)
114 ct1(kc) = at1(kc)/h_c(j,i)*0.5_dp*(vz_c(kc,j,i)+vz_c(kc-1,j,i))
118 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
121 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
124 #elif (ADV_VERT==2 || ADV_VERT==3)
127 ct1_sg(kc) = 0.5_dp*(at1(kc)+at1(kc+1))/h_c(j,i)*vz_c(kc,j,i)
134 ct2(kc) = ( at2_1(kc)*dzm_dtau(j,i) &
135 +at2_2(kc)*dh_c_dtau(j,i) )/h_c(j,i)
136 ct3(kc) = ( at3_1(kc)*dzm_dxi_g(j,i) &
137 +at3_2(kc)*dh_c_dxi_g(j,i) )/h_c(j,i) &
138 *0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1)) *insq_g11_g(j,i)
139 ct4(kc) = ( at4_1(kc)*dzm_deta_g(j,i) &
140 +at4_2(kc)*dh_c_deta_g(j,i) )/h_c(j,i) &
141 *0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i)) *insq_g22_g(j,i)
143 /
c_val(temp_c(kc,j,i)) &
147 if (.not.flag_shelfy_stream(j,i))
then
150 /
c_val(temp_c(kc,j,i)) &
152 *
ratefac_c(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
153 *
creep(sigma_c(kc,j,i)) &
154 *sigma_c(kc,j,i)*sigma_c(kc,j,i)
157 ct7(kc) = 2.0_dp*at7 &
158 /
c_val(temp_c(kc,j,i)) &
160 temp_c(kc,j,i), temp_c_m(kc,j,i), 0.0_dp, &
161 enh_c(kc,j,i), 0_i2b) &
166 ci1(kc) = ai1(kc)/h_c(j,i)
173 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
174 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
175 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
176 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
177 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
179 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
180 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
181 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
182 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
183 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
185 #elif (ADV_VERT==2 || ADV_VERT==3)
188 ct2_sg(kc) = 0.5_dp*(ct2(kc)+ct2(kc+1))
189 ct3_sg(kc) = 0.5_dp*(ct3(kc)+ct3(kc+1))
190 ct4_sg(kc) = 0.5_dp*(ct4(kc)+ct4(kc+1))
191 adv_vert_sg(kc) = ct1_sg(kc)-ct2_sg(kc)-ct3_sg(kc)-ct4_sg(kc)
192 abs_adv_vert_sg(kc) = abs(adv_vert_sg(kc))
198 temp_c_help(kc) = 0.5_dp*(temp_c(kc,j,i)+temp_c(kc+1,j,i))
202 ci2(kc) = ai2(kc)/h_c(j,i)
206 dtt_dxi = 2.0_dp*dtt_2dxi
207 dtt_deta = 2.0_dp*dtt_2deta
223 lgs_a1(kr) = 1.0_dp + 2.0_dp*ctr1
225 lgs_b(kr) = temp_r(kr,j,i)
235 lgs_b(kr) = 2.0_dp*clb1
243 lgs_a1(kr) = -(ccb1+ccb2)
245 lgs_b(kr) = ccb3+ccb4
251 lgs_a0(krmax+kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
253 lgs_a1(krmax+kc) = 1.0_dp+ct5(kc)*(ct6(kc)+ct6(kc-1))
254 lgs_a2(krmax+kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
260 = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
264 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
265 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
266 +ct5(kc)*(ct6(kc)+ct6(kc-1))
268 = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) ) &
273 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
276 = -max(adv_vert_help, 0.0_dp) &
280 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp) &
281 +ct5(kc)*(ct6(kc)+ct6(kc-1))
283 = min(adv_vert_help, 0.0_dp) &
290 lgs_b(krmax+kc) = temp_c(kc,j,i) + ct7(kc) &
292 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
293 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
295 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
296 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
297 *insq_g11_sgx(j,i-1) ) &
299 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
300 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
302 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
303 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
304 *insq_g22_sgy(j-1,i) )
308 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
309 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
311 lgs_b(krmax+kc) = temp_c(kc,j,i) + ct7(kc) &
313 ( min(vx_c_help, 0.0_dp) &
314 *(temp_c(kc,j,i+1)-temp_c(kc,j,i)) &
316 +max(vx_c_help, 0.0_dp) &
317 *(temp_c(kc,j,i)-temp_c(kc,j,i-1)) &
318 *insq_g11_sgx(j,i-1) ) &
320 ( min(vy_c_help, 0.0_dp) &
321 *(temp_c(kc,j+1,i)-temp_c(kc,j,i)) &
323 +max(vy_c_help, 0.0_dp) &
324 *(temp_c(kc,j,i)-temp_c(kc,j-1,i)) &
325 *insq_g22_sgy(j-1,i) )
332 lgs_a0(krmax+kc) = 0.0_dp
333 lgs_a1(krmax+kc) = 1.0_dp
334 lgs_b(krmax+kc) = temp_s(j,i)
338 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax+krmax)
343 temp_r_neu(kr,j,i) = lgs_x(kr)
347 temp_c_neu(kc,j,i) = lgs_x(krmax+kc)
354 omega_t_neu(kt,j,i) = 0.0_dp
364 lgs_a1(kc) = 1.0_dp - min(adv_vert_sg(kc), 0.0_dp)
365 lgs_a2(kc) = min(adv_vert_sg(kc), 0.0_dp)
369 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
371 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
372 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
374 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
375 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
376 *insq_g11_sgx(j,i-1) ) &
378 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
379 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
381 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
382 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
383 *insq_g22_sgy(j-1,i) )
387 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
388 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
390 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
392 ( min(vx_c_help, 0.0_dp) &
393 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
395 +max(vx_c_help, 0.0_dp) &
396 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
397 *insq_g11_sgx(j,i-1) ) &
399 ( min(vy_c_help, 0.0_dp) &
400 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
402 +max(vy_c_help, 0.0_dp) &
403 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
404 *insq_g22_sgy(j-1,i) )
412 lgs_a0(kc) = -0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
414 lgs_a1(kc) = 1.0_dp+ci1(kc)*(ci2(kc)+ci2(kc-1))
415 lgs_a2(kc) = 0.5_dp*(ct1(kc)-ct2(kc)-ct3(kc)-ct4(kc)) &
420 lgs_a0(kc) = -0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1))
421 lgs_a1(kc) = 1.0_dp &
422 +0.5_dp*(adv_vert_sg(kc-1)+abs_adv_vert_sg(kc-1)) &
423 -0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
424 lgs_a2(kc) = 0.5_dp*(adv_vert_sg(kc) -abs_adv_vert_sg(kc) )
428 adv_vert_help = 0.5_dp*(adv_vert_sg(kc)+adv_vert_sg(kc-1))
430 lgs_a0(kc) = -max(adv_vert_help, 0.0_dp)
431 lgs_a1(kc) = 1.0_dp &
432 +max(adv_vert_help, 0.0_dp)-min(adv_vert_help, 0.0_dp)
433 lgs_a2(kc) = min(adv_vert_help, 0.0_dp)
439 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
441 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
442 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
444 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
445 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
446 *insq_g11_sgx(j,i-1) ) &
448 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
449 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
451 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
452 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
453 *insq_g22_sgy(j-1,i) )
457 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
458 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
460 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
462 ( min(vx_c_help, 0.0_dp) &
463 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
465 +max(vx_c_help, 0.0_dp) &
466 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
467 *insq_g11_sgx(j,i-1) ) &
469 ( min(vy_c_help, 0.0_dp) &
470 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
472 +max(vy_c_help, 0.0_dp) &
473 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
474 *insq_g22_sgy(j-1,i) )
481 if (as_perp(j,i) >= zero)
then
486 lgs_a0(kc) = -max(adv_vert_sg(kc-1), 0.0_dp)
487 lgs_a1(kc) = 1.0_dp + max(adv_vert_sg(kc-1), 0.0_dp)
492 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
494 ( (vx_c(kc,j,i)-abs(vx_c(kc,j,i))) &
495 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
497 +(vx_c(kc,j,i-1)+abs(vx_c(kc,j,i-1))) &
498 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
499 *insq_g11_sgx(j,i-1) ) &
501 ( (vy_c(kc,j,i)-abs(vy_c(kc,j,i))) &
502 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
504 +(vy_c(kc,j-1,i)+abs(vy_c(kc,j-1,i))) &
505 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
506 *insq_g22_sgy(j-1,i) )
510 vx_c_help = 0.5_dp*(vx_c(kc,j,i)+vx_c(kc,j,i-1))
511 vy_c_help = 0.5_dp*(vy_c(kc,j,i)+vy_c(kc,j-1,i))
513 lgs_b(kc) = age_c(kc,j,i) + dtime_temp &
515 ( min(vx_c_help, 0.0_dp) &
516 *(age_c(kc,j,i+1)-age_c(kc,j,i)) &
518 +max(vx_c_help, 0.0_dp) &
519 *(age_c(kc,j,i)-age_c(kc,j,i-1)) &
520 *insq_g11_sgx(j,i-1) ) &
522 ( min(vy_c_help, 0.0_dp) &
523 *(age_c(kc,j+1,i)-age_c(kc,j,i)) &
525 +max(vy_c_help, 0.0_dp) &
526 *(age_c(kc,j,i)-age_c(kc,j-1,i)) &
527 *insq_g22_sgy(j-1,i) )
535 call
tri_sle(lgs_a0, lgs_a1, lgs_a2, lgs_x, lgs_b, kcmax)
542 age_c_neu(kc,j,i) = lgs_x(kc)
544 if (age_c_neu(kc,j,i) < (age_min*year_sec)) &
545 age_c_neu(kc,j,i) = 0.0_dp
546 if (age_c_neu(kc,j,i) > (age_max*year_sec)) &
547 age_c_neu(kc,j,i) = age_max*year_sec
554 age_t_neu(kt,j,i) = age_c_neu(0,j,i)
subroutine tri_sle(a0, a1, a2, x, b, nrows)
Solution of a system of linear equations Ax=b with tridiagonal matrix A.
Declarations of kind types for SICOPOLIS.
real(dp) function viscosity(de_val, temp_val, temp_m_val, omega_val, enh_val, i_flag_cold_temp)
Ice viscosity as a function of the effective strain rate and the temperature (in cold ice) or the wat...
Declarations of global variables for SICOPOLIS (for the ANT domain).
real(dp) function, public ratefac_c(temp_val, temp_m_val)
Rate factor for cold ice: Linear interpolation of tabulated values in RF(.).
Solvers for systems of linear equations used by SICOPOLIS.
real(dp) function, public kappa_val(temp_val)
Heat conductivity of ice: Linear interpolation of tabulated values in KAPPA(.).
subroutine calc_temp1(at1, at2_1, at2_2, at3_1, at3_2, at4_1, at4_2, at5, at6, at7, atr1, acb1, acb2, acb3, acb4, alb1, ai1, ai2, dtime_temp, dtt_2dxi, dtt_2deta, i, j)
Computation of temperature and age for a cold ice column.
real(dp) function, public c_val(temp_val)
Specific heat of ice: Linear interpolation of tabulated values in C(.).
Material quantities of ice: Rate factor, heat conductivity, specific heat (heat capacity).
Declarations of global variables for SICOPOLIS.
real(dp) function creep(sigma_val)
Creep response function for ice.