SICOPOLIS V5-dev  Revision 1105
topograd_m.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Module : t o p o g r a d _ m
4 !
5 !> @file
6 !!
7 !! Calculation of topography gradients on the staggered grid and on the grid
8 !! points (including length rescaling with the corresponding components of the
9 !! metric tensor).
10 !!
11 !! @section Copyright
12 !!
13 !! Copyright 2009-2017 Ralf Greve
14 !!
15 !! @section License
16 !!
17 !! This file is part of SICOPOLIS.
18 !!
19 !! SICOPOLIS is free software: you can redistribute it and/or modify
20 !! it under the terms of the GNU General Public License as published by
21 !! the Free Software Foundation, either version 3 of the License, or
22 !! (at your option) any later version.
23 !!
24 !! SICOPOLIS is distributed in the hope that it will be useful,
25 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
26 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 !! GNU General Public License for more details.
28 !!
29 !! You should have received a copy of the GNU General Public License
30 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
31 !<
32 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
33 
34 !-------------------------------------------------------------------------------
35 !> Calculation of topography gradients on the staggered grid and on the grid
36 !! points (including length rescaling with the corresponding components of the
37 !! metric tensor).
38 !<------------------------------------------------------------------------------
39 module topograd_m
40 
41  use sico_types_m
43  use sico_vars_m
44 
45  implicit none
46 
47  public
48 
49 contains
50 
51 !-------------------------------------------------------------------------------
52 !> Calculation of topography gradients on the staggered grid and on the grid
53 !! points (the latter by second-order discretization).
54 !<------------------------------------------------------------------------------
55  subroutine topograd_1(dxi, deta, n_switch)
56 
57  implicit none
58 
59  integer(i4b), intent(in) :: n_switch
60  real(dp), intent(in) :: dxi, deta
61 
62  integer(i4b) :: i, j
63  real(dp) :: dxi_inv, deta_inv
64  real(dp), dimension(0:JMAX,0:IMAX) :: zs_aux, zm_aux, zb_aux
65 
66  dxi_inv = 1.0_dp/dxi
67  deta_inv = 1.0_dp/deta
68 
69 !-------- Distinguish between old and new topography data --------
70 
71  if (n_switch == 1) then
72  zs_aux = zs
73  zm_aux = zm
74  zb_aux = zb
75  else if (n_switch == 2) then
76  zs_aux = zs_neu
77  zm_aux = zm_neu
78  zb_aux = zb_neu
79  else
80  stop ' >>> topograd_1: Wrong value for n_switch!'
81  end if
82 
83 !-------- Topography gradients on the staggered grid --------
84 
85 ! ------ x-derivatives
86 
87  do i=0, imax-1
88  do j=0, jmax
89  dzs_dxi(j,i) = (zs_aux(j,i+1)-zs_aux(j,i))*dxi_inv &
90  *insq_g11_sgx(j,i)
91  dzm_dxi(j,i) = (zm_aux(j,i+1)-zm_aux(j,i))*dxi_inv &
92  *insq_g11_sgx(j,i)
93  dzb_dxi(j,i) = (zb_aux(j,i+1)-zb_aux(j,i))*dxi_inv &
94  *insq_g11_sgx(j,i)
95  dh_c_dxi(j,i) = dzs_dxi(j,i)-dzm_dxi(j,i)
96  dh_t_dxi(j,i) = dzm_dxi(j,i)-dzb_dxi(j,i)
97  end do
98  end do
99 
100 ! ------ y-derivatives
101 
102  do i=0, imax
103  do j=0, jmax-1
104  dzs_deta(j,i) = (zs_aux(j+1,i)-zs_aux(j,i))*deta_inv &
105  *insq_g22_sgy(j,i)
106  dzm_deta(j,i) = (zm_aux(j+1,i)-zm_aux(j,i))*deta_inv &
107  *insq_g22_sgy(j,i)
108  dzb_deta(j,i) = (zb_aux(j+1,i)-zb_aux(j,i))*deta_inv &
109  *insq_g22_sgy(j,i)
110  dh_c_deta(j,i) = dzs_deta(j,i)-dzm_deta(j,i)
111  dh_t_deta(j,i) = dzm_deta(j,i)-dzb_deta(j,i)
112  end do
113  end do
114 
115 !-------- Topography gradients on the grid points --------
116 
117 ! ------ x-derivatives
118 
119  do i=1, imax-1
120  do j=0, jmax
121  dzs_dxi_g(j,i) = (zs_aux(j,i+1)-zs_aux(j,i-1))*0.5_dp*dxi_inv &
122  *insq_g11_g(j,i)
123  dzm_dxi_g(j,i) = (zm_aux(j,i+1)-zm_aux(j,i-1))*0.5_dp*dxi_inv &
124  *insq_g11_g(j,i)
125  dzb_dxi_g(j,i) = (zb_aux(j,i+1)-zb_aux(j,i-1))*0.5_dp*dxi_inv &
126  *insq_g11_g(j,i)
127  dh_c_dxi_g(j,i) = dzs_dxi_g(j,i)-dzm_dxi_g(j,i)
128  dh_t_dxi_g(j,i) = dzm_dxi_g(j,i)-dzb_dxi_g(j,i)
129  end do
130  end do
131 
132  do j=0, jmax
133  dzs_dxi_g(j,0) = (zs_aux(j,1)-zs_aux(j,0))*dxi_inv &
134  *insq_g11_g(j,0)
135  dzm_dxi_g(j,0) = (zm_aux(j,1)-zm_aux(j,0))*dxi_inv &
136  *insq_g11_g(j,0)
137  dzb_dxi_g(j,0) = (zb_aux(j,1)-zb_aux(j,0))*dxi_inv &
138  *insq_g11_g(j,0)
139  dh_c_dxi_g(j,0) = dzs_dxi_g(j,0)-dzm_dxi_g(j,0)
140  dh_t_dxi_g(j,0) = dzm_dxi_g(j,0)-dzb_dxi_g(j,0)
141  dzs_dxi_g(j,imax) = (zs_aux(j,imax)-zs_aux(j,imax-1)) &
142  *dxi_inv &
143  *insq_g11_g(j,imax)
144  dzm_dxi_g(j,imax) = (zm_aux(j,imax)-zm_aux(j,imax-1)) &
145  *dxi_inv &
146  *insq_g11_g(j,imax)
147  dzb_dxi_g(j,imax) = (zb_aux(j,imax)-zb_aux(j,imax-1)) &
148  *dxi_inv &
149  *insq_g11_g(j,imax)
150  dh_c_dxi_g(j,imax) = dzs_dxi_g(j,imax)-dzm_dxi_g(j,imax)
151  dh_t_dxi_g(j,imax) = dzm_dxi_g(j,imax)-dzb_dxi_g(j,imax)
152  end do
153 
154 ! ------ y-derivatives
155 
156  do i=0, imax
157  do j=1, jmax-1
158  dzs_deta_g(j,i) = (zs_aux(j+1,i)-zs_aux(j-1,i)) &
159  *0.5_dp*deta_inv &
160  *insq_g22_g(j,i)
161  dzm_deta_g(j,i) = (zm_aux(j+1,i)-zm_aux(j-1,i)) &
162  *0.5_dp*deta_inv &
163  *insq_g22_g(j,i)
164  dzb_deta_g(j,i) = (zb_aux(j+1,i)-zb_aux(j-1,i)) &
165  *0.5_dp*deta_inv &
166  *insq_g22_g(j,i)
167  dh_c_deta_g(j,i) = dzs_deta_g(j,i)-dzm_deta_g(j,i)
168  dh_t_deta_g(j,i) = dzm_deta_g(j,i)-dzb_deta_g(j,i)
169  end do
170  end do
171 
172  do i=0, imax
173  dzs_deta_g(0,i) = (zs_aux(1,i)-zs_aux(0,i))*deta_inv &
174  *insq_g22_g(0,i)
175  dzm_deta_g(0,i) = (zm_aux(1,i)-zm_aux(0,i))*deta_inv &
176  *insq_g22_g(0,i)
177  dzb_deta_g(0,i) = (zb_aux(1,i)-zb_aux(0,i))*deta_inv &
178  *insq_g22_g(0,i)
179  dh_c_deta_g(0,i) = dzs_deta_g(0,i)-dzm_deta_g(0,i)
180  dh_t_deta_g(0,i) = dzm_deta_g(0,i)-dzb_deta_g(0,i)
181  dzs_deta_g(jmax,i) = (zs_aux(jmax,i)-zs_aux(jmax-1,i)) &
182  *deta_inv &
183  *insq_g22_g(jmax,i)
184  dzm_deta_g(jmax,i) = (zm_aux(jmax,i)-zm_aux(jmax-1,i)) &
185  *deta_inv &
186  *insq_g22_g(jmax,i)
187  dzb_deta_g(jmax,i) = (zb_aux(jmax,i)-zb_aux(jmax-1,i)) &
188  *deta_inv &
189  *insq_g22_g(jmax,i)
190  dh_c_deta_g(jmax,i) = dzs_deta_g(jmax,i)-dzm_deta_g(jmax,i)
191  dh_t_deta_g(jmax,i) = dzm_deta_g(jmax,i)-dzb_deta_g(jmax,i)
192  end do
193 
194  end subroutine topograd_1
195 
196 !-------------------------------------------------------------------------------
197 !> Calculation of topography gradients on the staggered grid and on the grid
198 !! points (the latter by fourth-order discretization).
199 !<------------------------------------------------------------------------------
200  subroutine topograd_2(dxi, deta, n_switch)
202  implicit none
203 
204  integer(i4b), intent(in) :: n_switch
205  real(dp), intent(in) :: dxi, deta
206 
207  integer(i4b) :: i, j
208  real(dp) :: dxi_inv, deta_inv, dxi12_inv, deta12_inv
209  real(dp), dimension(0:JMAX,0:IMAX) :: zs_aux, zm_aux, zb_aux
210 
211  dxi_inv = 1.0_dp/dxi
212  deta_inv = 1.0_dp/deta
213 
214  dxi12_inv = 1.0_dp/(12.0_dp*dxi)
215  deta12_inv = 1.0_dp/(12.0_dp*deta)
216 
217 !-------- Distinguish between old and new topography data --------
218 
219  if (n_switch == 1) then
220  zs_aux = zs
221  zm_aux = zm
222  zb_aux = zb
223  else if (n_switch == 2) then
224  zs_aux = zs_neu
225  zm_aux = zm_neu
226  zb_aux = zb_neu
227  else
228  stop ' >>> topograd_2: Wrong value for n_switch!'
229  end if
230 
231 !-------- Topography gradients on the staggered grid --------
232 
233 ! ------ x-derivatives
234 
235  do i=0, imax-1
236  do j=0, jmax
237  dzs_dxi(j,i) = (zs_aux(j,i+1)-zs_aux(j,i))*dxi_inv &
238  *insq_g11_sgx(j,i)
239  dzm_dxi(j,i) = (zm_aux(j,i+1)-zm_aux(j,i))*dxi_inv &
240  *insq_g11_sgx(j,i)
241  dzb_dxi(j,i) = (zb_aux(j,i+1)-zb_aux(j,i))*dxi_inv &
242  *insq_g11_sgx(j,i)
243  dh_c_dxi(j,i) = dzs_dxi(j,i)-dzm_dxi(j,i)
244  dh_t_dxi(j,i) = dzm_dxi(j,i)-dzb_dxi(j,i)
245  end do
246  end do
247 
248 ! ------ y-derivatives
249 
250  do i=0, imax
251  do j=0, jmax-1
252  dzs_deta(j,i) = (zs_aux(j+1,i)-zs_aux(j,i))*deta_inv &
253  *insq_g22_sgy(j,i)
254  dzm_deta(j,i) = (zm_aux(j+1,i)-zm_aux(j,i))*deta_inv &
255  *insq_g22_sgy(j,i)
256  dzb_deta(j,i) = (zb_aux(j+1,i)-zb_aux(j,i))*deta_inv &
257  *insq_g22_sgy(j,i)
258  dh_c_deta(j,i) = dzs_deta(j,i)-dzm_deta(j,i)
259  dh_t_deta(j,i) = dzm_deta(j,i)-dzb_deta(j,i)
260  end do
261  end do
262 
263 !-------- Topography gradients on the grid points --------
264 
265 ! ------ x-derivatives
266 
267  do i=2, imax-2
268  do j=0, jmax
269  dzs_dxi_g(j,i) &
270  = ( -zs_aux(j,i+2) + 8.0_dp*zs_aux(j,i+1) &
271  -8.0_dp*zs_aux(j,i-1) + zs_aux(j,i-2) ) &
272  *dxi12_inv &
273  *insq_g11_g(j,i)
274  dzm_dxi_g(j,i) &
275  = ( -zm_aux(j,i+2) + 8.0_dp*zm_aux(j,i+1) &
276  -8.0_dp*zm_aux(j,i-1) + zm_aux(j,i-2) ) &
277  *dxi12_inv &
278  *insq_g11_g(j,i)
279  dzb_dxi_g(j,i) &
280  = ( -zb_aux(j,i+2) + 8.0_dp*zb_aux(j,i+1) &
281  -8.0_dp*zb_aux(j,i-1) + zb_aux(j,i-2) ) &
282  *dxi12_inv &
283  *insq_g11_g(j,i)
284  dh_c_dxi_g(j,i) = dzs_dxi_g(j,i)-dzm_dxi_g(j,i)
285  dh_t_dxi_g(j,i) = dzm_dxi_g(j,i)-dzb_dxi_g(j,i)
286  end do
287  end do
288 
289  do j=0, jmax
290 
291  dzs_dxi_g(j,0) = (zs_aux(j,1)-zs_aux(j,0))*dxi_inv &
292  *insq_g11_g(j,0)
293  dzm_dxi_g(j,0) = (zm_aux(j,1)-zm_aux(j,0))*dxi_inv &
294  *insq_g11_g(j,0)
295  dzb_dxi_g(j,0) = (zb_aux(j,1)-zb_aux(j,0))*dxi_inv &
296  *insq_g11_g(j,0)
297  dh_c_dxi_g(j,0) = dzs_dxi_g(j,0)-dzm_dxi_g(j,0)
298  dh_t_dxi_g(j,0) = dzm_dxi_g(j,0)-dzb_dxi_g(j,0)
299 
300  dzs_dxi_g(j,1) = (zs_aux(j,2)-zs_aux(j,0)) &
301  *0.5_dp*dxi_inv &
302  *insq_g11_g(j,1)
303  dzm_dxi_g(j,1) = (zm_aux(j,2)-zm_aux(j,0)) &
304  *0.5_dp*dxi_inv &
305  *insq_g11_g(j,1)
306  dzb_dxi_g(j,1) = (zb_aux(j,2)-zb_aux(j,0)) &
307  *0.5_dp*dxi_inv &
308  *insq_g11_g(j,1)
309  dh_c_dxi_g(j,1) = dzs_dxi_g(j,1)-dzm_dxi_g(j,1)
310  dh_t_dxi_g(j,1) = dzm_dxi_g(j,1)-dzb_dxi_g(j,1)
311 
312  dzs_dxi_g(j,imax-1) = (zs_aux(j,imax)-zs_aux(j,imax-2)) &
313  *0.5_dp*dxi_inv &
314  *insq_g11_g(j,imax-1)
315  dzm_dxi_g(j,imax-1) = (zm_aux(j,imax)-zm_aux(j,imax-2)) &
316  *0.5_dp*dxi_inv &
317  *insq_g11_g(j,imax-1)
318  dzb_dxi_g(j,imax-1) = (zb_aux(j,imax)-zb_aux(j,imax-2)) &
319  *0.5_dp*dxi_inv &
320  *insq_g11_g(j,imax-1)
321  dh_c_dxi_g(j,imax-1) = dzs_dxi_g(j,imax-1) &
322  -dzm_dxi_g(j,imax-1)
323  dh_t_dxi_g(j,imax-1) = dzm_dxi_g(j,imax-1) &
324  -dzb_dxi_g(j,imax-1)
325 
326  dzs_dxi_g(j,imax) = (zs_aux(j,imax)-zs_aux(j,imax-1)) &
327  *dxi_inv &
328  *insq_g11_g(j,imax)
329  dzm_dxi_g(j,imax) = (zm_aux(j,imax)-zm_aux(j,imax-1)) &
330  *dxi_inv &
331  *insq_g11_g(j,imax)
332  dzb_dxi_g(j,imax) = (zb_aux(j,imax)-zb_aux(j,imax-1)) &
333  *dxi_inv &
334  *insq_g11_g(j,imax)
335  dh_c_dxi_g(j,imax) = dzs_dxi_g(j,imax)-dzm_dxi_g(j,imax)
336  dh_t_dxi_g(j,imax) = dzm_dxi_g(j,imax)-dzb_dxi_g(j,imax)
337 
338  end do
339 
340 ! ------ y-derivatives
341 
342  do i=0, imax
343  do j=2, jmax-2
344  dzs_deta_g(j,i) &
345  = ( -zs_aux(j+2,i) + 8.0_dp*zs_aux(j+1,i) &
346  -8.0_dp*zs_aux(j-1,i) + zs_aux(j-2,i) ) &
347  *deta12_inv &
348  *insq_g22_g(j,i)
349  dzm_deta_g(j,i) &
350  = ( -zm_aux(j+2,i) + 8.0_dp*zm_aux(j+1,i) &
351  -8.0_dp*zm_aux(j-1,i) + zm_aux(j-2,i) ) &
352  *deta12_inv &
353  *insq_g22_g(j,i)
354  dzb_deta_g(j,i) &
355  = ( -zb_aux(j+2,i) + 8.0_dp*zb_aux(j+1,i) &
356  -8.0_dp*zb_aux(j-1,i) + zb_aux(j-2,i) ) &
357  *deta12_inv &
358  *insq_g22_g(j,i)
359  dh_c_deta_g(j,i) = dzs_deta_g(j,i)-dzm_deta_g(j,i)
360  dh_t_deta_g(j,i) = dzm_deta_g(j,i)-dzb_deta_g(j,i)
361  end do
362  end do
363 
364  do i=0, imax
365 
366  dzs_deta_g(0,i) = (zs_aux(1,i)-zs_aux(0,i))*deta_inv &
367  *insq_g22_g(0,i)
368  dzm_deta_g(0,i) = (zm_aux(1,i)-zm_aux(0,i))*deta_inv &
369  *insq_g22_g(0,i)
370  dzb_deta_g(0,i) = (zb_aux(1,i)-zb_aux(0,i))*deta_inv &
371  *insq_g22_g(0,i)
372  dh_c_deta_g(0,i) = dzs_deta_g(0,i)-dzm_deta_g(0,i)
373  dh_t_deta_g(0,i) = dzm_deta_g(0,i)-dzb_deta_g(0,i)
374 
375  dzs_deta_g(1,i) = (zs_aux(2,i)-zs_aux(0,i)) &
376  *0.5_dp*deta_inv &
377  *insq_g22_g(1,i)
378  dzm_deta_g(1,i) = (zm_aux(2,i)-zm_aux(0,i)) &
379  *0.5_dp*deta_inv &
380  *insq_g22_g(1,i)
381  dzb_deta_g(1,i) = (zb_aux(2,i)-zb_aux(0,i)) &
382  *0.5_dp*deta_inv &
383  *insq_g22_g(1,i)
384  dh_c_deta_g(1,i) = dzs_deta_g(1,i)-dzm_deta_g(1,i)
385  dh_t_deta_g(1,i) = dzm_deta_g(1,i)-dzb_deta_g(1,i)
386 
387  dzs_deta_g(jmax-1,i) = (zs_aux(jmax,i)-zs_aux(jmax-2,i)) &
388  *0.5_dp*deta_inv &
389  *insq_g22_g(jmax-1,i)
390  dzm_deta_g(jmax-1,i) = (zm_aux(jmax,i)-zm_aux(jmax-2,i)) &
391  *0.5_dp*deta_inv &
392  *insq_g22_g(jmax-1,i)
393  dzb_deta_g(jmax-1,i) = (zb_aux(jmax,i)-zb_aux(jmax-2,i)) &
394  *0.5_dp*deta_inv &
395  *insq_g22_g(jmax-1,i)
396  dh_c_deta_g(jmax-1,i) = dzs_deta_g(jmax-1,i) &
397  -dzm_deta_g(jmax-1,i)
398  dh_t_deta_g(jmax-1,i) = dzm_deta_g(jmax-1,i) &
399  -dzb_deta_g(jmax-1,i)
400 
401  dzs_deta_g(jmax,i) = (zs_aux(jmax,i)-zs_aux(jmax-1,i)) &
402  *deta_inv &
403  *insq_g22_g(jmax,i)
404  dzm_deta_g(jmax,i) = (zm_aux(jmax,i)-zm_aux(jmax-1,i)) &
405  *deta_inv &
406  *insq_g22_g(jmax,i)
407  dzb_deta_g(jmax,i) = (zb_aux(jmax,i)-zb_aux(jmax-1,i)) &
408  *deta_inv &
409  *insq_g22_g(jmax,i)
410  dh_c_deta_g(jmax,i) = dzs_deta_g(jmax,i)-dzm_deta_g(jmax,i)
411  dh_t_deta_g(jmax,i) = dzm_deta_g(jmax,i)-dzb_deta_g(jmax,i)
412 
413  end do
414 
415  end subroutine topograd_2
416 
417 !-------------------------------------------------------------------------------
418 
419 end module topograd_m
420 !
real(dp), dimension(0:jmax, 0:imax) insq_g22_sgy
insq_g22_sgy(j,i): Inverse square root of g22, at (i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) dh_c_deta
dH_c_deta(j,i): Derivative of H_c by eta (at i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) insq_g11_sgx
insq_g11_sgx(j,i): Inverse square root of g11, at (i+1/2,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:jmax, 0:imax) dh_c_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dh_c_dxi
dH_c_dxi(j,i): Derivative of H_c by xi (at i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) dzs_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dzm_deta
dzm_deta(j,i): Derivative of zm by eta (at i,j+1/2)
subroutine topograd_1(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by secon...
Definition: topograd_m.F90:56
real(dp), dimension(0:jmax, 0:imax) dzs_dxi
dzs_dxi(j,i): Derivative of zs by xi (at i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) dzb_dxi
dzb_dxi(j,i): Derivative of zb by xi (at i+1/2,j)
Declarations of global variables for SICOPOLIS (for the ANT domain).
Definition: sico_vars_m.F90:35
real(dp), dimension(0:jmax, 0:imax) dh_t_deta
dH_t_deta(j,i): Derivative of H_t by eta (at i,j+1/2)
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) zs
zs(j,i): Coordinate z of the surface topography
real(dp), dimension(0:jmax, 0:imax) dh_c_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
subroutine topograd_2(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by fourt...
Definition: topograd_m.F90:201
real(dp), dimension(0:jmax, 0:imax) dzb_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) zs_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) dzs_deta
dzs_deta(j,i): Derivative of zs by eta (at i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) zm
zm(j,i): Coordinate z of the bottom of the upper (kc) ice domain = top of the lower (kt) ice domain (...
real(dp), dimension(0:jmax, 0:imax) dzb_deta
dzb_deta(j,i): Derivative of zb by eta (at i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) dh_t_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dh_t_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dzm_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dzm_dxi
dzm_dxi(j,i): Derivative of zm by xi (at i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) dzs_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
Calculation of topography gradients on the staggered grid and on the grid points (including length re...
Definition: topograd_m.F90:39
real(dp), dimension(0:jmax, 0:imax) dzm_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
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:jmax, 0:imax) zb_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) zm_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) dh_t_dxi
dH_t_dxi(j,i): Derivative of H_t by xi (at i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) zb
zb(j,i): Coordinate z of the ice base
Declarations of global variables for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) dzb_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)