SICOPOLIS V5-dev  Revision 1420
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-2019 Ralf Greve, Fuyuki Saito
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  use error_m
43 
44  implicit none
45 
46  private
47  public :: calc_dxyz
48 
49 contains
50 
51 !-------------------------------------------------------------------------------
52 !> Main subroutine of calc_dxyz_m:
53 !! Computation of all components of the strain-rate tensor, the full
54 !! effective strain rate and the shear fraction.
55 !<------------------------------------------------------------------------------
56  subroutine calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
57 
58  implicit none
59 
60  real(dp), intent(in) :: dxi, deta, dzeta_c, dzeta_t
61 
62  integer(i4b) :: i, j, kc, kt
63  real(dp) :: dxi_inv, deta_inv
64  real(dp), dimension(0:JMAX,0:IMAX) :: fact_x, fact_y
65  real(dp), dimension(0:KCMAX) :: fact_z_c
66  real(dp) :: fact_z_t
67  real(dp) :: H_c_inv, H_t_inv
68  real(dp), dimension(0:KCMAX) :: lxy_c, lyx_c, lxz_c, lzx_c, lyz_c, lzy_c
69  real(dp), dimension(0:KTMAX) :: lxy_t, lyx_t, lxz_t, lzx_t, lyz_t, lzy_t
70  real(dp), dimension(0:KCMAX) :: shear_c_squared
71  real(dp), dimension(0:KTMAX) :: shear_t_squared
72  real(dp) :: abs_v_ssa_inv, nx, ny
73  real(dp) :: shear_x_help, shear_y_help
74  real(dp) :: lambda_shear_help
75 
76 !-------- Term abbreviations --------
77 
78  dxi_inv = 1.0_dp/dxi
79  deta_inv = 1.0_dp/deta
80 
81  fact_x = dxi_inv *insq_g11_g
82  fact_y = deta_inv*insq_g22_g
83 
84  do kc=0, kcmax
85  if (flag_aa_nonzero) then
86  fact_z_c(kc) = (ea-1.0_dp)/(aa*eaz_c(kc)*dzeta_c)
87  else
88  fact_z_c(kc) = 1.0_dp/dzeta_c
89  end if
90  end do
91 
92  fact_z_t = 1.0_dp/dzeta_t
93 
94 !-------- Initialisation --------
95 
96  dxx_c = 0.0_dp
97  dyy_c = 0.0_dp
98  dxy_c = 0.0_dp
99  dxz_c = 0.0_dp
100  dyz_c = 0.0_dp
101  de_c = 0.0_dp
102  lambda_shear_c = 0.0_dp
103 
104  dxx_t = 0.0_dp
105  dyy_t = 0.0_dp
106  dxy_t = 0.0_dp
107  dxz_t = 0.0_dp
108  dyz_t = 0.0_dp
109  de_t = 0.0_dp
110  lambda_shear_t = 0.0_dp
111 
112 !-------- Computation --------
113 
114  do i=1, imax-1
115  do j=1, jmax-1
116 
117  if ((maske(j,i) == 0_i1b).or.(maske(j,i) == 3_i1b)) then
118  ! grounded or floating ice
119 
120  h_c_inv = 1.0_dp/(abs(h_c(j,i))+eps_dp)
121 
122  kc=0
123 
124  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
125  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
126 
127  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
128  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
129  *0.25_dp*fact_y(j,i)
130 
131  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
132  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
133  *0.25_dp*fact_x(j,i)
134 
135  lzx_c(kc) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
136  lzy_c(kc) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
137 
138  lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
139  - (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) ) &
140  *0.5_dp*fact_z_c(kc)*h_c_inv
141 
142  lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
143  - (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) ) &
144  *0.5_dp*fact_z_c(kc)*h_c_inv
145 
146  ! end kc=0
147 
148  do kc=1, kcmax-1
149 
150  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
151  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
152 
153  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
154  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
155  *0.25_dp*fact_y(j,i)
156 
157  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
158  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
159  *0.25_dp*fact_x(j,i)
160 
161  lzx_c(kc) = ( (vz_c(kc,j,i+1)+vz_c(kc-1,j,i+1)) &
162  - (vz_c(kc,j,i-1)+vz_c(kc-1,j,i-1)) ) &
163  *0.25_dp*fact_x(j,i)
164 
165  lzy_c(kc) = ( (vz_c(kc,j+1,i)+vz_c(kc-1,j+1,i)) &
166  - (vz_c(kc,j-1,i)+vz_c(kc-1,j-1,i)) ) &
167  *0.25_dp*fact_y(j,i)
168 
169  lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
170  - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
171  *0.25_dp*fact_z_c(kc)*h_c_inv
172 
173  lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
174  - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
175  *0.25_dp*fact_z_c(kc)*h_c_inv
176 
177  end do
178 
179  kc=kcmax
180 
181  dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
182  dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
183 
184  lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
185  - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
186  *0.25_dp*fact_y(j,i)
187 
188  lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
189  - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
190  *0.25_dp*fact_x(j,i)
191 
192  lzx_c(kc) = (vz_s(j,i+1)-vz_s(j,i-1))*0.5_dp*fact_x(j,i)
193  lzy_c(kc) = (vz_s(j+1,i)-vz_s(j-1,i))*0.5_dp*fact_y(j,i)
194 
195  lxz_c(kc) = ( (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) &
196  - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
197  *0.5_dp*fact_z_c(kc)*h_c_inv
198 
199  lyz_c(kc) = ( (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) &
200  - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
201  *0.5_dp*fact_z_c(kc)*h_c_inv
202 
203  ! end kc=KCMAX
204 
205  dxy_c(:,j,i) = 0.5_dp*(lxy_c+lyx_c)
206  dxz_c(:,j,i) = 0.5_dp*(lxz_c+lzx_c)
207  dyz_c(:,j,i) = 0.5_dp*(lyz_c+lzy_c)
208 
209  do kc=0, kcmax
210 
211  shear_c_squared(kc) = dxz_c(kc,j,i)*dxz_c(kc,j,i) &
212  + dyz_c(kc,j,i)*dyz_c(kc,j,i)
213 
214  de_c(kc,j,i) = sqrt( ( ( dxx_c(kc,j,i)*dxx_c(kc,j,i) &
215  +dyy_c(kc,j,i)*dyy_c(kc,j,i) ) &
216  + ( dxx_c(kc,j,i)*dyy_c(kc,j,i) &
217  +dxy_c(kc,j,i)*dxy_c(kc,j,i) ) &
218  + shear_c_squared(kc) ) &
219  + eps_dp*eps_dp )
220 
221  lambda_shear_c(kc,j,i) = sqrt(shear_c_squared(kc)) &
222  /(de_c(kc,j,i)+eps_dp)
223 
224  end do
225 
226 #if (CALCMOD==1)
227 
228  if ((n_cts(j,i) == -1_i1b).or.(n_cts(j,i) == 0_i1b)) then
229  ! cold ice base, temperate ice base
230 
231  dxx_t(:,j,i) = dxx_c(0,j,i)
232  dyy_t(:,j,i) = dyy_c(0,j,i)
233  dxy_t(:,j,i) = dxy_c(0,j,i)
234  dxz_t(:,j,i) = dxz_c(0,j,i)
235  dyz_t(:,j,i) = dyz_c(0,j,i)
236  de_t(:,j,i) = de_c(0,j,i)
237  lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
238 
239  else ! n_cts(j,i) == 1_i1b, temperate ice layer
240 
241  h_t_inv = 1.0_dp/(abs(h_t(j,i))+eps_dp)
242 
243  kt=0
244 
245  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
246  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
247 
248  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
249  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
250  *0.25_dp*fact_y(j,i)
251 
252  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
253  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
254  *0.25_dp*fact_x(j,i)
255 
256  lzx_t(kt) = (vz_b(j,i+1)-vz_b(j,i-1))*0.5_dp*fact_x(j,i)
257  lzy_t(kt) = (vz_b(j+1,i)-vz_b(j-1,i))*0.5_dp*fact_y(j,i)
258 
259  lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
260  - (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) ) &
261  *0.5_dp*fact_z_t*h_t_inv
262 
263  lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
264  - (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) ) &
265  *0.5_dp*fact_z_t*h_t_inv
266 
267  ! end kt=0
268 
269  do kt=1, ktmax-1
270 
271  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
272  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
273 
274  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
275  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
276  *0.25_dp*fact_y(j,i)
277 
278  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
279  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
280  *0.25_dp*fact_x(j,i)
281 
282  lzx_t(kt) = ( (vz_t(kt,j,i+1)+vz_t(kt-1,j,i+1)) &
283  - (vz_t(kt,j,i-1)+vz_t(kt-1,j,i-1)) ) &
284  *0.25_dp*fact_x(j,i)
285 
286  lzy_t(kt) = ( (vz_t(kt,j+1,i)+vz_t(kt-1,j+1,i)) &
287  - (vz_t(kt,j-1,i)+vz_t(kt-1,j-1,i)) ) &
288  *0.25_dp*fact_y(j,i)
289 
290  lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
291  - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
292  *0.25_dp*fact_z_t*h_t_inv
293 
294  lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
295  - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
296  *0.25_dp*fact_z_t*h_t_inv
297 
298  end do
299 
300  kt=ktmax
301 
302  dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
303  dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
304 
305  lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
306  - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
307  *0.25_dp*fact_y(j,i)
308 
309  lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
310  - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
311  *0.25_dp*fact_x(j,i)
312 
313  lzx_t(kt) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
314  lzy_t(kt) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
315 
316  lxz_t(kt) = ( (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) &
317  - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
318  *0.5_dp*fact_z_t*h_t_inv
319 
320  lyz_t(kt) = ( (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) &
321  - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
322  *0.5_dp*fact_z_t*h_t_inv
323 
324  ! end kt=KTMAX
325 
326  dxy_t(:,j,i) = 0.5_dp*(lxy_t+lyx_t)
327  dxz_t(:,j,i) = 0.5_dp*(lxz_t+lzx_t)
328  dyz_t(:,j,i) = 0.5_dp*(lyz_t+lzy_t)
329 
330  do kt=0, ktmax
331 
332  shear_t_squared(kt) = dxz_t(kt,j,i)*dxz_t(kt,j,i) &
333  + dyz_t(kt,j,i)*dyz_t(kt,j,i)
334 
335  de_t(kt,j,i) = sqrt( ( ( dxx_t(kt,j,i)*dxx_t(kt,j,i) &
336  +dyy_t(kt,j,i)*dyy_t(kt,j,i) ) &
337  + ( dxx_t(kt,j,i)*dyy_t(kt,j,i) &
338  +dxy_t(kt,j,i)*dxy_t(kt,j,i) ) &
339  + shear_t_squared(kt) ) &
340  + eps_dp*eps_dp )
341 
342  lambda_shear_t(kt,j,i) = sqrt(shear_t_squared(kt)) &
343  /(de_t(kt,j,i)+eps_dp)
344 
345  end do
346 
347  end if
348 
349 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1)
350 
351  dxx_t(:,j,i) = dxx_c(0,j,i)
352  dyy_t(:,j,i) = dyy_c(0,j,i)
353  dxy_t(:,j,i) = dxy_c(0,j,i)
354  dxz_t(:,j,i) = dxz_c(0,j,i)
355  dyz_t(:,j,i) = dyz_c(0,j,i)
356  de_t(:,j,i) = de_c(0,j,i)
357  lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
358 
359 #else
360  errormsg = ' >>> calc_dxyz: Parameter CALCMOD must be -1, 0, 1, 2 or 3!'
361  call error(errormsg)
362 #endif
363 
364 ! ------ Modification of the shear fraction for floating ice (ice shelves)
365 
366  if (maske(j,i) == 3_i1b) then ! floating ice
367 
368  abs_v_ssa_inv = 1.0_dp / &
369  sqrt( ( 0.25_dp*(vx_m(j,i)+vx_m(j,i-1))**2 &
370  +0.25_dp*(vy_m(j,i)+vy_m(j-1,i))**2 ) &
371  + eps_dp**2 )
372 
373  nx = -0.5_dp*(vy_m(j,i)+vy_m(j-1,i)) * abs_v_ssa_inv
374  ny = 0.5_dp*(vx_m(j,i)+vx_m(j,i-1)) * abs_v_ssa_inv
375 
376  shear_x_help = ( dxx_c(kcmax,j,i)*nx + dxy_c(kcmax,j,i)*ny ) &
377  - ( dxx_c(kcmax,j,i)*nx**3 &
378  +2.0_dp*dxy_c(kcmax,j,i)*(nx**2*ny) &
379  + dyy_c(kcmax,j,i)*(nx*ny**2) )
380  ! strain rate for ice shelves independent of depth,
381  ! thus surface values used here
382 
383  shear_y_help = ( dyy_c(kcmax,j,i)*ny + dxy_c(kcmax,j,i)*nx ) &
384  - ( dyy_c(kcmax,j,i)*ny**3 &
385  +2.0_dp*dxy_c(kcmax,j,i)*(ny**2*nx) &
386  + dxx_c(kcmax,j,i)*(ny*nx**2) )
387  ! strain rate for ice shelves independent of depth,
388  ! thus surface values used here
389 
390  lambda_shear_help = sqrt( ( shear_x_help**2 + shear_y_help**2 ) &
391  + eps_dp**2 ) &
392  / (de_ssa(j,i)+eps_dp)
393 
394 
395  lambda_shear_c(:,j,i) = lambda_shear_help
396  lambda_shear_t(:,j,i) = lambda_shear_help
397 
398  end if
399 
400 ! ------ Constrain the shear fraction to reasonable [0,1] interval
401 
402  lambda_shear_c(:,j,i) = min(max(lambda_shear_c(:,j,i), 0.0_dp), 1.0_dp)
403  lambda_shear_t(:,j,i) = min(max(lambda_shear_t(:,j,i), 0.0_dp), 1.0_dp)
404 
405  else ! maske(j,i) == 1_i1b or 2_i1b; ice-free land or ocean
406 
407  dxx_c(:,j,i) = 0.0_dp
408  dyy_c(:,j,i) = 0.0_dp
409  dxy_c(:,j,i) = 0.0_dp
410  dxz_c(:,j,i) = 0.0_dp
411  dyz_c(:,j,i) = 0.0_dp
412  de_c(:,j,i) = 0.0_dp
413  lambda_shear_c(:,j,i) = 0.0_dp
414 
415  dxx_t(:,j,i) = 0.0_dp
416  dyy_t(:,j,i) = 0.0_dp
417  dxy_t(:,j,i) = 0.0_dp
418  dxz_t(:,j,i) = 0.0_dp
419  dyz_t(:,j,i) = 0.0_dp
420  de_t(:,j,i) = 0.0_dp
421  lambda_shear_t(:,j,i) = 0.0_dp
422 
423  end if
424 
425  end do
426  end do
427 
428  end subroutine calc_dxyz
429 
430 !-------------------------------------------------------------------------------
431 
432 end module calc_dxyz_m
433 !
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)) ...
integer(i1b), 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:kcmax, 0:jmax, 0:imax) de_c
de_c(kc,j,i): Full effective strain rate in the upper (kc) ice domain
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), 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)
subroutine error(error_message)
Main routine of error_m: Writing of error messages and stopping execution.
Definition: error_m.F90:47
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
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
Writing of error messages and stopping execution.
Definition: error_m.F90:35
real(dp), parameter eps_dp
eps_dp: Small number to double-precision accuracy
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
integer(i1b), 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 ...
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:57
character(len=256) errormsg
errormsg: Error-message string
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)) ...