50 real(dp),
intent(in) :: dzeta_c, dzeta_t
52 integer(i4b) :: i, j, kc, kt
53 real(dp) :: avxy3(0:kcmax), aqxy1(0:kcmax)
54 real(dp) :: ctxyz1(0:kcmax,0:jmax,0:imax), &
55 ctxyz2(0:ktmax,0:jmax,0:imax)
56 real(dp) :: flui_t(0:ktmax), flui_c(0:kcmax)
57 real(dp) :: cflui0(0:ktmax), cflui1(0:kcmax)
58 real(dp) :: cvxy2(0:ktmax), cvxy3(0:kcmax)
59 real(dp) :: cqxy0(0:ktmax), cqxy1(0:kcmax)
61 real(dp) :: ratio_sl_threshold
66 if (flag_aa_nonzero)
then
67 avxy3(kc) = aa*eaz_c(kc)/(ea-1.0_dp)*dzeta_c
68 aqxy1(kc) = aa/(ea-1.0_dp)*eaz_c(kc)*dzeta_c
82 if ((maske(j,i) == 0).or.flag_grounding_line_2(j,i))
then
86 ctxyz1(kc,j,i) = rho*g*h_c(j,i)*(1.0_dp-eaz_c_quotient(kc))
89 if (n_cts(j,i) == 1)
then
92 ctxyz2(kt,j,i) = rho*g*h_t(j,i)*(1.0_dp-zeta_t(kt))
98 ctxyz2(kt,j,i) = 0.0_dp
106 ctxyz1(kc,j,i) = 0.0_dp
110 ctxyz2(kt,j,i) = 0.0_dp
124 txz_c(kc,j,i) = -0.5_dp*(ctxyz1(kc,j,i)+ctxyz1(kc,j,i+1)) &
129 txz_t(kt,j,i) = txz_c(0,j,i) &
130 -0.5_dp*(ctxyz2(kt,j,i)+ctxyz2(kt,j,i+1)) &
143 tyz_c(kc,j,i) = -0.5_dp*(ctxyz1(kc,j,i)+ctxyz1(kc,j+1,i)) &
148 tyz_t(kt,j,i) = tyz_c(0,j,i) &
149 -0.5_dp*(ctxyz2(kt,j,i)+ctxyz2(kt,j+1,i)) &
162 sigma_c(kc,j,i) = ctxyz1(kc,j,i) &
163 *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
167 sigma_t(kt,j,i) = sigma_c(0,j,i) &
169 *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
181 if ((maske(j,i) == 0).or.flag_grounding_line_2(j,i))
then
187 flui_t(kt) = 2.0_dp &
190 *
creep(sigma_t(kt,j,i))
191 cflui0(kt) = h_t(j,i)*flui_t(kt)*dzeta_t
195 flui_c(kc) = 2.0_dp &
197 #if (CALCMOD==0 || CALCMOD==1 || CALCMOD==-1)
198 *
ratefac_c(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
199 #elif (CALCMOD==2 || CALCMOD==3)
203 *
creep(sigma_c(kc,j,i))
204 cflui1(kc) = aqxy1(kc)*h_c(j,i)*flui_c(kc)
209 flui_ave_sia(j,i) = 0.0_dp
211 if (n_cts(j,i) == 1)
then
214 flui_ave_sia(j,i) = flui_ave_sia(j,i)+0.5_dp*(cflui0(kt+1)+cflui0(kt))
220 flui_ave_sia(j,i) = flui_ave_sia(j,i)+0.5_dp*(cflui1(kc+1)+cflui1(kc))
223 flui_ave_sia(j,i) = flui_ave_sia(j,i)/(h_c(j,i)+h_t(j,i))
227 flui_ave_sia(j,i) = 0.0_dp
240 if ((maske(j,i) == 0).or.flag_grounding_line_2(j,i))
then
246 cvxy2(kt) = 2.0_dp*h_t(j,i) &
249 *
creep(sigma_t(kt,j,i)) &
250 *(ctxyz1(0,j,i)+ctxyz2(kt,j,i)) &
255 cvxy3(kc) = 2.0_dp*avxy3(kc)*h_c(j,i) &
257 #if (CALCMOD==0 || CALCMOD==1 || CALCMOD==-1)
258 *
ratefac_c(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
259 #elif (CALCMOD==2 || CALCMOD==3)
263 *
creep(sigma_c(kc,j,i)) &
269 if (n_cts(j,i) == -1)
then
272 d_help_t(kt,j,i) = d_help_b(j,i)
275 d_help_c(0,j,i) = d_help_t(ktmax,j,i)
278 d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
279 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
282 else if (n_cts(j,i) == 0)
then
285 d_help_t(kt,j,i) = d_help_b(j,i)
288 d_help_c(0,j,i) = d_help_t(ktmax,j,i)
291 d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
292 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
297 d_help_t(0,j,i) = d_help_b(j,i)
300 d_help_t(kt+1,j,i) = d_help_t(kt,j,i) &
301 +0.5_dp*(cvxy2(kt+1)+cvxy2(kt))
304 d_help_c(0,j,i) = d_help_t(ktmax,j,i)
307 d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
308 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
316 d_help_t(kt,j,i) = 0.0_dp
320 d_help_c(kc,j,i) = 0.0_dp
334 vx_t(kt,j,i) = -0.5_dp*(d_help_t(kt,j,i)+d_help_t(kt,j,i+1)) &
339 vx_c(kc,j,i) = -0.5_dp*(d_help_c(kc,j,i)+d_help_c(kc,j,i+1)) &
352 vy_t(kt,j,i) = -0.5_dp*(d_help_t(kt,j,i)+d_help_t(kt,j+1,i)) &
357 vy_c(kc,j,i) = -0.5_dp*(d_help_c(kc,j,i)+d_help_c(kc,j+1,i)) &
369 vx_s_g(j,i) = -d_help_c(kcmax,j,i)*dzs_dxi_g(j,i)
370 vy_s_g(j,i) = -d_help_c(kcmax,j,i)*dzs_deta_g(j,i)
377 vh_max = vh_max/year_sec
381 vx_s_g(j,i) = max(vx_s_g(j,i), -vh_max)
382 vx_s_g(j,i) = min(vx_s_g(j,i), vh_max)
383 vy_s_g(j,i) = max(vy_s_g(j,i), -vh_max)
384 vy_s_g(j,i) = min(vy_s_g(j,i), vh_max)
386 vx_t(kt,j,i) = max(vx_t(kt,j,i), -vh_max)
387 vx_t(kt,j,i) = min(vx_t(kt,j,i), vh_max)
388 vy_t(kt,j,i) = max(vy_t(kt,j,i), -vh_max)
389 vy_t(kt,j,i) = min(vy_t(kt,j,i), vh_max)
392 vx_c(kc,j,i) = max(vx_c(kc,j,i), -vh_max)
393 vx_c(kc,j,i) = min(vx_c(kc,j,i), vh_max)
394 vy_c(kc,j,i) = max(vy_c(kc,j,i), -vh_max)
395 vy_c(kc,j,i) = min(vy_c(kc,j,i), vh_max)
406 if ((maske(j,i) == 0).or.flag_grounding_line_2(j,i))
then
412 cqxy0(kt) = h_t(j,i)*d_help_t(kt,j,i)*dzeta_t
416 cqxy1(kc) = aqxy1(kc)*h_c(j,i)*d_help_c(kc,j,i)
423 if (n_cts(j,i) == 1)
then
426 h_diff(j,i) = h_diff(j,i)+0.5_dp*(cqxy0(kt+1)+cqxy0(kt))
432 h_diff(j,i) = h_diff(j,i)+0.5_dp*(cqxy1(kc+1)+cqxy1(kc))
437 if (h_diff(j,i) < hd_min) h_diff(j,i) = 0.0_dp
438 if (h_diff(j,i) > hd_max) h_diff(j,i) = hd_max
455 qx(j,i) = -0.5_dp*(h_diff(j,i)+h_diff(j,i+1))*dzs_dxi(j,i)
457 if ( (maske(j,i)==0).or.(maske(j,i+1)==0) )
then
460 vx_m(j,i) = qx(j,i) &
461 / ( 0.5_dp*(h_c(j,i)+h_t(j,i)+h_c(j,i+1)+h_t(j,i+1)) )
463 vx_m(j,i) = max(vx_m(j,i), -vh_max)
464 vx_m(j,i) = min(vx_m(j,i), vh_max)
466 ratio_sl_x(j,i) = abs(vx_t(0,j,i)) / max(abs(vx_c(kcmax,j,i)), epsi)
471 ratio_sl_x(j,i) = 0.0_dp
481 qy(j,i) = -0.5_dp*(h_diff(j,i)+h_diff(j+1,i))*dzs_deta(j,i)
483 if ( (maske(j,i)==0).or.(maske(j+1,i)==0) )
then
486 vy_m(j,i) = qy(j,i) &
487 / ( 0.5_dp*(h_c(j,i)+h_t(j,i)+h_c(j+1,i)+h_t(j+1,i)) )
489 vy_m(j,i) = max(vy_m(j,i), -vh_max)
490 vy_m(j,i) = min(vy_m(j,i), vh_max)
492 ratio_sl_y(j,i) = abs(vy_t(0,j,i)) / max(abs(vy_c(kcmax,j,i)), epsi)
497 ratio_sl_y(j,i) = 0.0_dp
506 flag_shelfy_stream_x = .false.
507 flag_shelfy_stream_y = .false.
508 flag_shelfy_stream = .false.
510 #if (DYNAMICS==0 || DYNAMICS==1)
512 ratio_sl_threshold = 1.11e+11_dp
516 #if ( defined(RATIO_SL_THRESH) )
517 ratio_sl_threshold = ratio_sl_thresh
519 ratio_sl_threshold = 0.5_dp
524 if (ratio_sl_x(j,i) > ratio_sl_threshold) flag_shelfy_stream_x(j,i) = .true.
530 if (ratio_sl_y(j,i) > ratio_sl_threshold) flag_shelfy_stream_y(j,i) = .true.
537 if ( (maske(j,i) == 0) &
539 ( flag_shelfy_stream_x(j,i-1) &
540 .or.flag_shelfy_stream_x(j,i) &
541 .or.flag_shelfy_stream_y(j-1,i) &
542 .or.flag_shelfy_stream_y(j,i) ) &
545 flag_shelfy_stream(j,i) = .true.
553 stop
' calc_vxy_sia: DYNAMICS must be either 0, 1 or 2!'
subroutine calc_vxy_sia(dzeta_c, dzeta_t)
Computation of the shear stresses txz, tyz, the effective shear stress sigma, the depth-averaged flui...
real(dp) function, public ratefac_t(omega_val)
Rate factor for temperate ice.
Declarations of kind types for SICOPOLIS.
real(dp) function, public ratefac_c_t(temp_val, omega_val, temp_m_val)
Rate factor for cold and temperate ice: Combination of ratefac_c and ratefac_t (only for the enthalpy...
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(.).
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.