SICOPOLIS V5-dev  Revision 1173
calc_dxyz_m.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Module : c a l c _ d x y z _ m
4 !
5 !> @file
6 !!
7 !! Computation of all components of the strain-rate tensor, the full
8 !! effective strain rate and the shear fraction.
9 !!
10 !! @section Copyright
11 !!
12 !! Copyright 2014-2017 Ralf Greve
13 !!
14 !! @section License
15 !!
16 !! This file is part of SICOPOLIS.
17 !!
18 !! SICOPOLIS is free software: you can redistribute it and/or modify
19 !! it under the terms of the GNU General Public License as published by
20 !! the Free Software Foundation, either version 3 of the License, or
21 !! (at your option) any later version.
22 !!
23 !! SICOPOLIS is distributed in the hope that it will be useful,
24 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
25 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 !! GNU General Public License for more details.
27 !!
28 !! You should have received a copy of the GNU General Public License
29 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
30 !<
31 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
32 
33 !-------------------------------------------------------------------------------
34 !> Computation of all components of the strain-rate tensor, the full
35 !! effective strain rate and the shear fraction.
36 !<------------------------------------------------------------------------------
38 
39  use sico_types_m
41  use sico_vars_m
42 
43  implicit none
44 
45  private
46  public :: calc_dxyz
47 
48 contains
49 
50 !-------------------------------------------------------------------------------
51 !> Main subroutine of calc_dxyz_m:
52 !! Computation of all components of the strain-rate tensor, the full
53 !! effective strain rate and the shear fraction.
54 !<------------------------------------------------------------------------------
55  subroutine calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
56 
57  implicit none
58 
59  real(dp), intent(in) :: dxi, deta, dzeta_c, dzeta_t
60 
61  integer(i4b) :: i, j, kc, kt
62  real(dp) :: dxi_inv, deta_inv
63  real(dp), dimension(0:JMAX,0:IMAX) :: fact_x, fact_y
64  real(dp), dimension(0:KCMAX) :: fact_z_c
65  real(dp) :: fact_z_t
66  real(dp) :: H_c_inv, H_t_inv
67  real(dp), dimension(0:KCMAX) :: lxy_c, lyx_c, lxz_c, lzx_c, lyz_c, lzy_c
68  real(dp), dimension(0:KTMAX) :: lxy_t, lyx_t, lxz_t, lzx_t, lyz_t, lzy_t
69  real(dp), dimension(0:KCMAX) :: shear_c_squared
70  real(dp), dimension(0:KTMAX) :: shear_t_squared
71  real(dp) :: abs_v_ssa_inv, nx, ny
72  real(dp) :: shear_x_help, shear_y_help
73  real(dp) :: lambda_shear_help
74 
75 !-------- Term abbreviations --------
76 
77  dxi_inv = 1.0_dp/dxi
78  deta_inv = 1.0_dp/deta
79 
80  fact_x = dxi_inv *insq_g11_g
81  fact_y = deta_inv*insq_g22_g
82 
83  do kc=0, kcmax
84  if (flag_aa_nonzero) then
85  fact_z_c(kc) = (ea-1.0_dp)/(aa*eaz_c(kc)*dzeta_c)
86  else
87  fact_z_c(kc) = 1.0_dp/dzeta_c
88  end if
89  end do
90 
91  fact_z_t = 1.0_dp/dzeta_t
92 
93 !-------- Initialisation --------
94 
95  dxx_c = 0.0_dp
96  dyy_c = 0.0_dp
97  dxy_c = 0.0_dp
98  dxz_c = 0.0_dp
99  dyz_c = 0.0_dp
100  de_c = 0.0_dp
101  lambda_shear_c = 0.0_dp
102 
103  dxx_t = 0.0_dp
104  dyy_t = 0.0_dp
105  dxy_t = 0.0_dp
106  dxz_t = 0.0_dp
107  dyz_t = 0.0_dp
108  de_t = 0.0_dp
109  lambda_shear_t = 0.0_dp
110 
111 !-------- Computation --------
112 
113  do i=1, imax-1
114  do j=1, jmax-1
115 
116  if ((maske(j,i) == 0).or.(maske(j,i) == 3)) then
117  ! grounded or floating ice
118 
119  h_c_inv = 1.0_dp/(abs(h_c(j,i))+epsi)
120 
121  kc=0
122 
123  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
124  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
125 
126  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
127  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
128  *0.25_dp*fact_y(j,i)
129 
130  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
131  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
132  *0.25_dp*fact_x(j,i)
133 
134  lzx_c(kc) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
135  lzy_c(kc) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
136 
137  lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
138  - (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) ) &
139  *0.5_dp*fact_z_c(kc)*h_c_inv
140 
141  lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
142  - (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) ) &
143  *0.5_dp*fact_z_c(kc)*h_c_inv
144 
145  ! end kc=0
146 
147  do kc=1, kcmax-1
148 
149  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
150  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
151 
152  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
153  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
154  *0.25_dp*fact_y(j,i)
155 
156  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
157  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
158  *0.25_dp*fact_x(j,i)
159 
160  lzx_c(kc) = ( (vz_c(kc,j,i+1)+vz_c(kc-1,j,i+1)) &
161  - (vz_c(kc,j,i-1)+vz_c(kc-1,j,i-1)) ) &
162  *0.25_dp*fact_x(j,i)
163 
164  lzy_c(kc) = ( (vz_c(kc,j+1,i)+vz_c(kc-1,j+1,i)) &
165  - (vz_c(kc,j-1,i)+vz_c(kc-1,j-1,i)) ) &
166  *0.25_dp*fact_y(j,i)
167 
168  lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
169  - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
170  *0.25_dp*fact_z_c(kc)*h_c_inv
171 
172  lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
173  - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
174  *0.25_dp*fact_z_c(kc)*h_c_inv
175 
176  end do
177 
178  kc=kcmax
179 
180  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
181  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
182 
183  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
184  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
185  *0.25_dp*fact_y(j,i)
186 
187  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
188  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
189  *0.25_dp*fact_x(j,i)
190 
191  lzx_c(kc) = (vz_s(j,i+1)-vz_s(j,i-1))*0.5_dp*fact_x(j,i)
192  lzy_c(kc) = (vz_s(j+1,i)-vz_s(j-1,i))*0.5_dp*fact_y(j,i)
193 
194  lxz_c(kc) = ( (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) &
195  - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
196  *0.5_dp*fact_z_c(kc)*h_c_inv
197 
198  lyz_c(kc) = ( (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) &
199  - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
200  *0.5_dp*fact_z_c(kc)*h_c_inv
201 
202  ! end kc=KCMAX
203 
204  dxy_c(:,j,i) = 0.5_dp*(lxy_c+lyx_c)
205  dxz_c(:,j,i) = 0.5_dp*(lxz_c+lzx_c)
206  dyz_c(:,j,i) = 0.5_dp*(lyz_c+lzy_c)
207 
208  do kc=0, kcmax
209 
210  shear_c_squared(kc) = dxz_c(kc,j,i)*dxz_c(kc,j,i) &
211  + dyz_c(kc,j,i)*dyz_c(kc,j,i)
212 
213  de_c(kc,j,i) = sqrt( dxx_c(kc,j,i)*dxx_c(kc,j,i) &
214  + dyy_c(kc,j,i)*dyy_c(kc,j,i) &
215  + dxx_c(kc,j,i)*dyy_c(kc,j,i) &
216  + dxy_c(kc,j,i)*dxy_c(kc,j,i) &
217  + shear_c_squared(kc) )
218 
219  lambda_shear_c(kc,j,i) = sqrt(shear_c_squared(kc))/de_c(kc,j,i)
220 
221  end do
222 
223 #if (CALCMOD==1)
224 
225  if ((n_cts(j,i) == -1).or.(n_cts(j,i) == 0)) then
226  ! cold ice base, temperate ice base
227 
228  dxx_t(:,j,i) = dxx_c(0,j,i)
229  dyy_t(:,j,i) = dyy_c(0,j,i)
230  dxy_t(:,j,i) = dxy_c(0,j,i)
231  dxz_t(:,j,i) = dxz_c(0,j,i)
232  dyz_t(:,j,i) = dyz_c(0,j,i)
233  de_t(:,j,i) = de_c(0,j,i)
234  lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
235 
236  else ! n_cts(j,i) == 1, temperate ice layer
237 
238  h_t_inv = 1.0_dp/(abs(h_t(j,i))+epsi)
239 
240  kt=0
241 
242  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
243  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
244 
245  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
246  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
247  *0.25_dp*fact_y(j,i)
248 
249  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
250  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
251  *0.25_dp*fact_x(j,i)
252 
253  lzx_t(kt) = (vz_b(j,i+1)-vz_b(j,i-1))*0.5_dp*fact_x(j,i)
254  lzy_t(kt) = (vz_b(j+1,i)-vz_b(j-1,i))*0.5_dp*fact_y(j,i)
255 
256  lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
257  - (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) ) &
258  *0.5_dp*fact_z_t*h_t_inv
259 
260  lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
261  - (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) ) &
262  *0.5_dp*fact_z_t*h_t_inv
263 
264  ! end kt=0
265 
266  do kt=1, ktmax-1
267 
268  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
269  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
270 
271  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
272  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
273  *0.25_dp*fact_y(j,i)
274 
275  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
276  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
277  *0.25_dp*fact_x(j,i)
278 
279  lzx_t(kt) = ( (vz_t(kt,j,i+1)+vz_t(kt-1,j,i+1)) &
280  - (vz_t(kt,j,i-1)+vz_t(kt-1,j,i-1)) ) &
281  *0.25_dp*fact_x(j,i)
282 
283  lzy_t(kt) = ( (vz_t(kt,j+1,i)+vz_t(kt-1,j+1,i)) &
284  - (vz_t(kt,j-1,i)+vz_t(kt-1,j-1,i)) ) &
285  *0.25_dp*fact_y(j,i)
286 
287  lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
288  - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
289  *0.25_dp*fact_z_t*h_t_inv
290 
291  lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
292  - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
293  *0.25_dp*fact_z_t*h_t_inv
294 
295  end do
296 
297  kt=ktmax
298 
299  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
300  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
301 
302  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
303  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
304  *0.25_dp*fact_y(j,i)
305 
306  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
307  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
308  *0.25_dp*fact_x(j,i)
309 
310  lzx_t(kt) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
311  lzy_t(kt) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
312 
313  lxz_t(kt) = ( (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) &
314  - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
315  *0.5_dp*fact_z_t*h_t_inv
316 
317  lyz_t(kt) = ( (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) &
318  - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
319  *0.5_dp*fact_z_t*h_t_inv
320 
321  ! end kt=KTMAX
322 
323  dxy_t(:,j,i) = 0.5_dp*(lxy_t+lyx_t)
324  dxz_t(:,j,i) = 0.5_dp*(lxz_t+lzx_t)
325  dyz_t(:,j,i) = 0.5_dp*(lyz_t+lzy_t)
326 
327  do kt=0, ktmax
328 
329  shear_t_squared(kt) = dxz_t(kt,j,i)*dxz_t(kt,j,i) &
330  + dyz_t(kt,j,i)*dyz_t(kt,j,i)
331 
332  de_t(kt,j,i) = sqrt( dxx_t(kt,j,i)*dxx_t(kt,j,i) &
333  + dyy_t(kt,j,i)*dyy_t(kt,j,i) &
334  + dxx_t(kt,j,i)*dyy_t(kt,j,i) &
335  + dxy_t(kt,j,i)*dxy_t(kt,j,i) &
336  + shear_t_squared(kt) )
337 
338  lambda_shear_t(kt,j,i) = sqrt(shear_t_squared(kt))/de_t(kt,j,i)
339 
340  end do
341 
342  end if
343 
344 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1)
345 
346  dxx_t(:,j,i) = dxx_c(0,j,i)
347  dyy_t(:,j,i) = dyy_c(0,j,i)
348  dxy_t(:,j,i) = dxy_c(0,j,i)
349  dxz_t(:,j,i) = dxz_c(0,j,i)
350  dyz_t(:,j,i) = dyz_c(0,j,i)
351  de_t(:,j,i) = de_c(0,j,i)
352  lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
353 
354 #else
355  stop ' >>> calc_dxyz: Parameter CALCMOD must be -1, 0, 1, 2 or 3!'
356 #endif
357 
358 ! ------ Modification of the shear fraction for floating ice (ice shelves)
359 
360  if (maske(j,i) == 3) then ! floating ice
361 
362  abs_v_ssa_inv = 1.0_dp / &
363  sqrt( 0.25_dp*(vx_m(j,i)+vx_m(j,i-1))**2 &
364  +0.25_dp*(vy_m(j,i)+vy_m(j-1,i))**2 )
365 
366  nx = -0.5_dp*(vy_m(j,i)+vy_m(j-1,i)) * abs_v_ssa_inv
367  ny = 0.5_dp*(vx_m(j,i)+vx_m(j,i-1)) * abs_v_ssa_inv
368 
369  shear_x_help = dxx_c(kcmax,j,i)*nx &
370  + dxy_c(kcmax,j,i)*ny &
371  - dxx_c(kcmax,j,i)*nx**3 &
372  - 2.0_dp*dxy_c(kcmax,j,i)*nx**2*ny &
373  - dyy_c(kcmax,j,i)*nx*ny**2
374  ! strain rate for ice shelves independent of depth,
375  ! thus surface values used here
376 
377  shear_y_help = dxy_c(kcmax,j,i)*nx &
378  + dyy_c(kcmax,j,i)*ny &
379  - dxx_c(kcmax,j,i)*nx**2*ny &
380  - 2.0_dp*dxy_c(kcmax,j,i)*nx*ny**2 &
381  - dyy_c(kcmax,j,i)*ny**3
382  ! strain rate for ice shelves independent of depth,
383  ! thus surface values used here
384 
385  lambda_shear_help = sqrt(shear_x_help**2 + shear_y_help**2) &
386  / de_ssa(j,i)
387 
388  lambda_shear_c(:,j,i) = lambda_shear_help
389  lambda_shear_t(:,j,i) = lambda_shear_help
390 
391  end if
392 
393 ! ------ Constrain the shear fraction to reasonable [0,1] interval
394 
395  lambda_shear_c(:,j,i) = min(max(lambda_shear_c(:,j,i), 0.0_dp), 1.0_dp)
396  lambda_shear_t(:,j,i) = min(max(lambda_shear_t(:,j,i), 0.0_dp), 1.0_dp)
397 
398  else ! maske(j,i) == 1 or 2; ice-free land or ocean
399 
400  dxx_c(:,j,i) = 0.0_dp
401  dyy_c(:,j,i) = 0.0_dp
402  dxy_c(:,j,i) = 0.0_dp
403  dxz_c(:,j,i) = 0.0_dp
404  dyz_c(:,j,i) = 0.0_dp
405  de_c(:,j,i) = 0.0_dp
406  lambda_shear_c(:,j,i) = 0.0_dp
407 
408  dxx_t(:,j,i) = 0.0_dp
409  dyy_t(:,j,i) = 0.0_dp
410  dxy_t(:,j,i) = 0.0_dp
411  dxz_t(:,j,i) = 0.0_dp
412  dyz_t(:,j,i) = 0.0_dp
413  de_t(:,j,i) = 0.0_dp
414  lambda_shear_t(:,j,i) = 0.0_dp
415 
416  end if
417 
418  end do
419  end do
420 
421  end subroutine calc_dxyz
422 
423 !-------------------------------------------------------------------------------
424 
425 end module calc_dxyz_m
426 !
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vx_c
vx_c(kc,j,i): Velocity in x-direction in the upper (kc) ice domain (at (i+1/2,j,kc)) ...
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) de_c
de_c(kc,j,i): Full effective strain rate in the upper (kc) ice domain
integer(i2b), dimension(0:jmax, 0:imax) n_cts
n_cts(j,i): Mask for thermal conditions. -1: cold ice base, 0: temperate ice base with cold ice above...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) lambda_shear_t
lambda_shear_t(kt,j,i): Shear fraction in the lower (kt) ice domain
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) dxy_t
dxy_t(kt,j,i): Strain rate dxy in the lower (kt) ice domain
real(dp), parameter epsi
epsi: Very small number
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) de_t
de_t(kt,j,i): Full effective strain rate in the lower (kt) ice domain
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) dyy_t
dyy_t(kt,j,i): Strain rate dyy in the lower (kt) ice domain
real(dp), dimension(0:jmax, 0:imax) vz_m
vz_m(j,i): Velocity in z-direction at the position z=zm (interface between the upper (kc) and the low...
real(dp), dimension(0:kcmax) eaz_c
eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
real(dp), dimension(0:jmax, 0:imax) vx_m
vx_m(j,i): Mean (depth-averaged) velocity in x-direction, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) vz_b
vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
real(dp), dimension(0:jmax, 0:imax) vz_s
vz_s(j,i): Velocity in z-direction at the ice surface, at (i,j)
real(dp), dimension(0:jmax, 0:imax) insq_g22_g
insq_g22_g(j,i): Inverse square root of g22 on grid point (i,j)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) dyz_c
dyz_c(kc,j,i): Strain rate dyz in the upper (kc) ice domain
integer(i2b), dimension(0:jmax, 0:imax) maske
maske(j,i): Ice-land-ocean mask. 0: grounded ice, 1: ice-free land, 2: ocean, 3: floating ice ...
Computation of all components of the strain-rate tensor, the full effective strain rate and the shear...
Definition: calc_dxyz_m.F90:37
real(dp), dimension(0:jmax, 0:imax) de_ssa
de_ssa(j,i): Effective strain rate of the SSA, at (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vz_t
vz_t(kt,j,i): Velocity in z-direction in the lower (kt) ice domain (at (i,j,kt+1/2)) ...
real(dp), dimension(0:jmax, 0:imax) vy_m
vy_m(j,i): Mean (depth-averaged) velocity in y-direction, at (i,j+1/2)
Declarations of global variables for SICOPOLIS (for the ANT domain).
Definition: sico_vars_m.F90:35
real(dp) ea
ea: Abbreviation for exp(aa)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) lambda_shear_c
lambda_shear_c(kc,j,i): Shear fraction in the upper (kc) ice domain
logical flag_aa_nonzero
flag_aa_nonzero: Flag for the exponential stretch parameter aa. .true.: aa greater than zero (non-equ...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) dyz_t
dyz_t(kt,j,i): Strain rate dyz in the lower (kt) ice domain
real(dp) aa
aa: Exponential stretch parameter of the non-equidistant vertical grid in the upper (kc) ice domain ...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) dxz_t
dxz_t(kt,j,i): Strain rate dxz in the lower (kt) ice domain
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) h_c
H_c(j,i): Thickness of ice in the upper (kc) domain (thickness of the cold-ice layer for POLY...
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) dxx_c
dxx_c(kc,j,i): Strain rate dxx in the upper (kc) ice domain
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) dxx_t
dxx_t(kt,j,i): Strain rate dxx in the lower (kt) ice domain
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vz_c
vz_c(kc,j,i): Velocity in z-direction in the upper (kc) ice domain (at (i,j,kc+1/2)) ...
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) dyy_c
dyy_c(kc,j,i): Strain rate dyy in the upper (kc) ice domain
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) dxz_c
dxz_c(kc,j,i): Strain rate dxz in the upper (kc) ice domain
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) dxy_c
dxy_c(kc,j,i): Strain rate dxy in the upper (kc) ice domain
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vy_t
vy_t(kt,j,i): Velocity in y-direction in the lower (kt) ice domain (at (i,j+1/2,kt)) ...
real(dp), dimension(0:jmax, 0:imax) insq_g11_g
insq_g11_g(j,i): Inverse square root of g11 on grid point (i,j)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vy_c
vy_c(kc,j,i): Velocity in y-direction in the upper (kc) ice domain (at (i,j+1/2,kc)) ...
subroutine, public calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
Main subroutine of calc_dxyz_m: Computation of all components of the strain-rate tensor, the full effective strain rate and the shear fraction.
Definition: calc_dxyz_m.F90:56
real(dp), dimension(0:jmax, 0:imax) h_t
H_t(j,i): Thickness of ice in the lower (kt) domain (thickness of the temperate layer for POLY...
Declarations of global variables for SICOPOLIS.
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vx_t
vx_t(kt,j,i): Velocity in x-direction in the lower (kt) ice domain (at (i+1/2,j,kt)) ...