7 !! Computation of the shear stresses txz, tyz, the effective shear stress
 
    8 !! sigma, the depth-averaged fluidity flui_ave_sia, the horizontal
 
    9 !! velocity vx, vy and the horizontal volume flux qx, qy in the shallow ice
 
   14 !! Copyright 2009-2013 Ralf Greve
 
   18 !! This file is part of SICOPOLIS.
 
   20 !! SICOPOLIS is free software: you can redistribute it and/or modify
 
   21 !! it under the terms of the GNU General Public License as published by
 
   22 !! the Free Software Foundation, either version 3 of the License, or
 
   23 !! (at your option) any later version.
 
   25 !! SICOPOLIS is distributed in the hope that it will be useful,
 
   26 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
 
   27 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
   28 !! GNU General Public License for more details.
 
   30 !! You should have received a copy of the GNU General Public License
 
   31 !! along with SICOPOLIS.  If not, see <http://www.gnu.org/licenses/>.
 
   33 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
   36 !> Computation of the shear stresses txz, tyz, the effective shear stress
 
   37 !! sigma, the depth-averaged fluidity flui_ave_sia, the horizontal
 
   38 !! velocity vx, vy and the horizontal volume flux qx, qy in the shallow ice
 
   40 !<------------------------------------------------------------------------------
 
   48 real(dp), 
intent(in) :: dzeta_c, dzeta_t
 
   50 integer(i4b) :: i, j, kc, kt
 
   51 real(dp) :: avxy3(0:kcmax), aqxy1(0:kcmax)
 
   52 real(dp) :: ctxyz1(0:kcmax,0:jmax,0:imax), &
 
   53             ctxyz2(0:ktmax,0:jmax,0:imax)
 
   54 real(dp) :: flui_t(0:ktmax), flui_c(0:kcmax)
 
   55 real(dp) :: cflui0(0:ktmax), cflui1(0:kcmax)
 
   56 real(dp) :: cvxy2(0:ktmax), cvxy3(0:kcmax)
 
   57 real(dp) :: cqxy0(0:ktmax), cqxy1(0:kcmax)
 
   64    avxy3(kc) = deform*eaz_c(kc)/(ea-1.0_dp)*dzeta_c
 
   65    aqxy1(kc) = deform/(ea-1.0_dp)*eaz_c(kc)*dzeta_c
 
   75    if (maske(j,i) == 0) 
then    
   78          ctxyz1(kc,j,i) = rho*g*h_c(j,i)*(1.0_dp-eaz_c_quotient(kc))
 
   81       if (n_cts(j,i) == 1) 
then    
   84             ctxyz2(kt,j,i) = rho*g*h_t(j,i)*(1.0_dp-zeta_t(kt))
 
   90             ctxyz2(kt,j,i) = 0.0_dp
 
   98          ctxyz1(kc,j,i) = 0.0_dp
 
  102          ctxyz2(kt,j,i) = 0.0_dp
 
  116       txz_c(kc,j,i) = -0.5_dp*(ctxyz1(kc,j,i)+ctxyz1(kc,j,i+1)) &
 
  121       txz_t(kt,j,i) = txz_c(0,j,i) &
 
  122                       -0.5_dp*(ctxyz2(kt,j,i)+ctxyz2(kt,j,i+1)) &
 
  135       tyz_c(kc,j,i) = -0.5_dp*(ctxyz1(kc,j,i)+ctxyz1(kc,j+1,i)) &
 
  140       tyz_t(kt,j,i) = tyz_c(0,j,i) &
 
  141                       -0.5_dp*(ctxyz2(kt,j,i)+ctxyz2(kt,j+1,i)) &
 
  154       sigma_c(kc,j,i) = ctxyz1(kc,j,i) &
 
  155            *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
 
  159       sigma_t(kt,j,i) = sigma_c(0,j,i) &
 
  161            *(dzs_dxi_g(j,i)**2+dzs_deta_g(j,i)**2)**0.5_dp
 
  173    if (maske(j,i) == 0) 
then    
  178          flui_t(kt) = 2.0_dp &
 
  181                       *
creep(sigma_t(kt,j,i))
 
  182          cflui0(kt) = h_t(j,i)*flui_t(kt)*dzeta_t
 
  186          flui_c(kc) = 2.0_dp &
 
  188                       *
ratefac(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
 
  189                       *
creep(sigma_c(kc,j,i))
 
  190          cflui1(kc) = aqxy1(kc)*h_c(j,i)*flui_c(kc)
 
  195       flui_ave_sia(j,i) = 0.0_dp
 
  197       if (n_cts(j,i) == 1) 
then 
  200             flui_ave_sia(j,i) = flui_ave_sia(j,i)+0.5_dp*(cflui0(kt+1)+cflui0(kt))
 
  206          flui_ave_sia(j,i) = flui_ave_sia(j,i)+0.5_dp*(cflui1(kc+1)+cflui1(kc))
 
  209       flui_ave_sia(j,i) = flui_ave_sia(j,i)/(h_c(j,i)+h_t(j,i))
 
  213       flui_ave_sia(j,i) = 0.0_dp
 
  226    if (maske(j,i) == 0) 
then    
  231          cvxy2(kt) = 2.0_dp*h_t(j,i) &
 
  234                      *
creep(sigma_t(kt,j,i)) &
 
  235                      *(ctxyz1(0,j,i)+ctxyz2(kt,j,i)) &
 
  240          cvxy3(kc) = 2.0_dp*avxy3(kc)*h_c(j,i) &
 
  242                      *
ratefac(temp_c(kc,j,i), temp_c_m(kc,j,i)) &
 
  243                      *
creep(sigma_c(kc,j,i)) &
 
  249       if (n_cts(j,i) == -1) 
then    
  252             d_help_t(kt,j,i) = d_help_b(j,i)
 
  255          d_help_c(0,j,i) = d_help_t(ktmax,j,i)
 
  258             d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
 
  259                                 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
 
  262       else if (n_cts(j,i) == 0) 
then    
  265             d_help_t(kt,j,i) = d_help_b(j,i)
 
  268          d_help_c(0,j,i) = d_help_t(ktmax,j,i)
 
  271             d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
 
  272                                 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
 
  277          d_help_t(0,j,i) = d_help_b(j,i)
 
  280             d_help_t(kt+1,j,i) = d_help_t(kt,j,i) &
 
  281                                 +0.5_dp*(cvxy2(kt+1)+cvxy2(kt))
 
  284          d_help_c(0,j,i) = d_help_t(ktmax,j,i)
 
  287             d_help_c(kc+1,j,i) = d_help_c(kc,j,i) &
 
  288                                 +0.5_dp*(cvxy3(kc+1)+cvxy3(kc))
 
  296          d_help_t(kt,j,i) = 0.0_dp
 
  300          d_help_c(kc,j,i) = 0.0_dp
 
  314       vx_t(kt,j,i) = -0.5_dp*(d_help_t(kt,j,i)+d_help_t(kt,j,i+1)) &
 
  319       vx_c(kc,j,i) = -0.5_dp*(d_help_c(kc,j,i)+d_help_c(kc,j,i+1)) &
 
  332       vy_t(kt,j,i) = -0.5_dp*(d_help_t(kt,j,i)+d_help_t(kt,j+1,i)) &
 
  337       vy_c(kc,j,i) = -0.5_dp*(d_help_c(kc,j,i)+d_help_c(kc,j+1,i)) &
 
  349    vx_s_g(j,i) = -d_help_c(kcmax,j,i)*dzs_dxi_g(j,i)
 
  350    vy_s_g(j,i) = -d_help_c(kcmax,j,i)*dzs_deta_g(j,i)
 
  357 vh_max = vh_max/year_sec
 
  361    vx_s_g(j,i) = max(vx_s_g(j,i), -vh_max)
 
  362    vx_s_g(j,i) = min(vx_s_g(j,i),  vh_max)
 
  363    vy_s_g(j,i) = max(vy_s_g(j,i), -vh_max)
 
  364    vy_s_g(j,i) = min(vy_s_g(j,i),  vh_max)
 
  366       vx_t(kt,j,i) = max(vx_t(kt,j,i), -vh_max)
 
  367       vx_t(kt,j,i) = min(vx_t(kt,j,i),  vh_max)
 
  368       vy_t(kt,j,i) = max(vy_t(kt,j,i), -vh_max)
 
  369       vy_t(kt,j,i) = min(vy_t(kt,j,i),  vh_max)
 
  372       vx_c(kc,j,i) = max(vx_c(kc,j,i), -vh_max)
 
  373       vx_c(kc,j,i) = min(vx_c(kc,j,i),  vh_max)
 
  374       vy_c(kc,j,i) = max(vy_c(kc,j,i), -vh_max)
 
  375       vy_c(kc,j,i) = min(vy_c(kc,j,i),  vh_max)
 
  386    if (maske(j,i) == 0) 
then    
  391          cqxy0(kt) = h_t(j,i)*d_help_t(kt,j,i)*dzeta_t
 
  395          cqxy1(kc) = aqxy1(kc)*h_c(j,i)*d_help_c(kc,j,i)
 
  402       if (n_cts(j,i) == 1) 
then 
  405             h_diff(j,i) = h_diff(j,i)+0.5_dp*(cqxy0(kt+1)+cqxy0(kt))
 
  411          h_diff(j,i) = h_diff(j,i)+0.5_dp*(cqxy1(kc+1)+cqxy1(kc))
 
  416       if (h_diff(j,i) < hd_min) h_diff(j,i) = 0.0_dp
 
  417       if (h_diff(j,i) > hd_max) h_diff(j,i) = hd_max
 
  434    qx(j,i) = -0.5_dp*(h_diff(j,i)+h_diff(j,i+1))*dzs_dxi(j,i)
 
  436    if ( (maske(j,i)==0).or.(maske(j,i+1)==0) ) 
then    
  439       vx_m(j,i) = qx(j,i) / ( 0.5_dp*(h_c(j,i)+h_t(j,i)+h_c(j,i+1)+h_t(j,i+1)) )
 
  451    qy(j,i) = -0.5_dp*(h_diff(j,i)+h_diff(j+1,i))*dzs_deta(j,i)
 
  453    if ( (maske(j,i)==0).or.(maske(j+1,i)==0) ) 
then    
  456       vy_m(j,i) = qy(j,i) / ( 0.5_dp*(h_c(j,i)+h_t(j,i)+h_c(j+1,i)+h_t(j+1,i)) )