SICOPOLIS V5-dev  Revision 1420
sico_variables_m.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Module : s i c o _ v a r i a b l e s _ m
4 !
5 !> @file
6 !!
7 !! Declarations of global variables for SICOPOLIS.
8 !!
9 !! @section Copyright
10 !!
11 !! Copyright 2009-2019 Ralf Greve
12 !!
13 !! @section License
14 !!
15 !! This file is part of SICOPOLIS.
16 !!
17 !! SICOPOLIS is free software: you can redistribute it and/or modify
18 !! it under the terms of the GNU General Public License as published by
19 !! the Free Software Foundation, either version 3 of the License, or
20 !! (at your option) any later version.
21 !!
22 !! SICOPOLIS is distributed in the hope that it will be useful,
23 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
24 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 !! GNU General Public License for more details.
26 !!
27 !! You should have received a copy of the GNU General Public License
28 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
29 !<
30 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
31 
32 !-------------------------------------------------------------------------------
33 !> Declarations of global variables for SICOPOLIS.
34 !<------------------------------------------------------------------------------
36 
37 use sico_types_m
38 
39 implicit none
40 save
41 
42 !-------- Field quantities --------
43 
44 !> maske(j,i): Ice-land-ocean mask.
45 !> 0: grounded ice,
46 !> 1: ice-free land,
47 !> 2: ocean,
48 !> 3: floating ice
49  integer(i1b), dimension(0:JMAX,0:IMAX) :: maske
50 !> maske_old(j,i): Old value of maske (at the previous time step)
51  integer(i1b), dimension(0:JMAX,0:IMAX) :: maske_old
52 !> maske_neu(j,i): New value of maske computed during an integration step
53  integer(i1b), dimension(0:JMAX,0:IMAX) :: maske_neu
54 !> n_cts(j,i): Mask for thermal conditions.
55 !> -1: cold ice base,
56 !> 0: temperate ice base with cold ice above,
57 !> 1: temperate ice base with temperate ice layer above
58 !> (only for POLY)
59  integer(i1b), dimension(0:JMAX,0:IMAX) :: n_cts
60 !> (.)_neu: New value of quantity (.) computed during an integration step
61  integer(i1b), dimension(0:JMAX,0:IMAX) :: n_cts_neu
62 !> kc_cts(j,i): Position kc of the CTS (for COLD, ENTC, ENTM)
63  integer(i4b), dimension(0:JMAX,0:IMAX) :: kc_cts
64 !> (.)_neu: New value of quantity (.) computed during an integration step
65  integer(i4b), dimension(0:JMAX,0:IMAX) :: kc_cts_neu
66 !> flag_inner_point(j,i): Inner-point flag.
67 !> .true.: inner point,
68 !> .false.: margin point
69  logical, dimension(0:JMAX,0:IMAX) :: flag_inner_point
70 !> flag_grounding_line_1(j,i): Grounding line flag.
71 !> .true.: grounding line point
72 !> (grounded ice point with at least
73 !> one floating ice neighbour),
74 !> .false.: otherwise
75  logical, dimension(0:JMAX,0:IMAX) :: flag_grounding_line_1
76 !> flag_grounding_line_2(j,i): Grounding line flag.
77 !> .true.: grounding line point
78 !> (floating ice point with at least
79 !> one grounded ice neighbour),
80 !> .false.: otherwise
81  logical, dimension(0:JMAX,0:IMAX) :: flag_grounding_line_2
82 !> flag_calving_front_1(j,i): Calving front flag.
83 !> .true.: calving front point
84 !> (floating ice point with at least
85 !> one ocean neighbour),
86 !> .false.: otherwise
87  logical, dimension(0:JMAX,0:IMAX) :: flag_calving_front_1
88 !> flag_calving_front_2(j,i): Calving front flag.
89 !> .true.: calving front point
90 !> (ocean point with at least
91 !> one floating ice neighbour),
92 !> .false.: otherwise
93  logical, dimension(0:JMAX,0:IMAX) :: flag_calving_front_2
94 !> flag_grounded_front_a_1(j,i): Land-terminating grounded front flag.
95 !> .true.: grounded front point
96 !> (grounded ice point with at least
97 !> one ice-free land neighbour),
98 !> .false.: otherwise
99  logical, dimension(0:JMAX,0:IMAX) :: flag_grounded_front_a_1
100 !> flag_grounded_front_a_2(j,i): Land-terminating grounded front flag.
101 !> .true.: grounded front point
102 !> (ice-free land point with at least
103 !> one grounded ice neighbour),
104 !> .false.: otherwise
105  logical, dimension(0:JMAX,0:IMAX) :: flag_grounded_front_a_2
106 !> flag_grounded_front_b_1(j,i): Marine-terminating grounded front flag.
107 !> .true.: grounded front point
108 !> (grounded ice point with at least
109 !> one ocean neighbour),
110 !> .false.: otherwise
111  logical, dimension(0:JMAX,0:IMAX) :: flag_grounded_front_b_1
112 !> flag_grounded_front_b_2(j,i): Marine-terminating grounded front flag.
113 !> .true.: grounded front point
114 !> (ocean point with at least
115 !> one grounded ice neighbour),
116 !> .false.: otherwise
117  logical, dimension(0:JMAX,0:IMAX) :: flag_grounded_front_b_2
118 !> flag_shelfy_stream_x(j,i): Shelfy stream flag in x-direction, at (i+1/2,j).
119 !> .true.: shelfy stream point
120 !> .false.: otherwise
121  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream_x
122 !> flag_shelfy_stream_y(j,i): Shelfy stream flag in y-direction, at (i,j+1/2).
123 !> .true.: shelfy stream point
124 !> .false.: otherwise
125  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream_y
126 !> flag_shelfy_stream(j,i): Shelfy stream flag on the main grid.
127 !> .true.: grounded ice,
128 !> and at least one neighbour on the
129 !> staggered grid is a shelfy stream point
130 !> .false.: otherwise
131  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream
132 !> xi(i): Coordinate xi (= x) of grid point i
133  real(dp), dimension(0:IMAX) :: xi
134 !> eta(j): Coordinate eta (= y) of grid point j
135  real(dp), dimension(0:JMAX) :: eta
136 !> zeta_c(kc): Sigma coordinate zeta_c of grid point kc
137  real(dp), dimension(0:KCMAX) :: zeta_c
138 !> zeta_t(kt): Sigma coordinate zeta_t of grid point kt
139  real(dp), dimension(0:KTMAX) :: zeta_t
140 !> zeta_r(kr): Sigma coordinate zeta_r of grid point kr
141  real(dp), dimension(0:KRMAX) :: zeta_r
142 !> aa: Exponential stretch parameter of the non-equidistant vertical grid
143 !> in the upper (kc) ice domain
144  real(dp) :: aa
145 !> flag_aa_nonzero: Flag for the exponential stretch parameter aa.
146 !> .true.: aa greater than zero (non-equidistant grid)
147 !> .false.: aa equal to zero (equidistant grid)
148  logical :: flag_aa_nonzero
149 !> ea: Abbreviation for exp(aa)
150  real(dp) :: ea
151 !> eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
152  real(dp), dimension(0:KCMAX) :: eaz_c
153 !> eaz_c_quotient(kc): Abbreviation for (eaz_c(kc)-1.0)/(ea-1.0)
154  real(dp), dimension(0:KCMAX) :: eaz_c_quotient
155 
156 !> lambda(j,i): Geographic longitude of grid point (i,j)
157  real(dp), dimension(0:JMAX,0:IMAX) :: lambda
158 !> phi(j,i): Geographic latitude of grid point (i,j)
159  real(dp), dimension(0:JMAX,0:IMAX) :: phi
160 !> area(j,i): Area of grid cell associated with grid point (i,j)
161  real(dp), dimension(0:JMAX,0:IMAX) :: area
162 !> sq_g11_g(j,i): Square root of the coefficient g11 of the metric tensor
163 !> on grid point (i,j)
164  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_g
165 !> sq_g22_g(j,i): Square root of the coefficient g22 of the metric tensor
166 !> on grid point (i,j)
167  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_g
168 !> insq_g11_g(j,i): Inverse square root of g11 on grid point (i,j)
169  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g11_g
170 !> insq_g22_g(j,i): Inverse square root of g22 on grid point (i,j)
171  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g22_g
172 !> sq_g11_sgx(j,i): Square root of g11, at (i+1/2,j)
173  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_sgx
174 !> sq_g11_sgy(j,i): Square root of g11, at (i,j+1/2)
175  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_sgy
176 !> sq_g22_sgx(j,i): Square root of g22, at (i+1/2,j)
177  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_sgx
178 !> sq_g22_sgy(j,i): Square root of g22, at (i,j+1/2)
179  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_sgy
180 !> insq_g11_sgx(j,i): Inverse square root of g11, at (i+1/2,j)
181  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g11_sgx
182 !> insq_g22_sgy(j,i): Inverse square root of g22, at (i,j+1/2)
183  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g22_sgy
184 !> zs(j,i): Coordinate z of the surface topography
185  real(dp), dimension(0:JMAX,0:IMAX) :: zs
186 !> zm(j,i): Coordinate z of the bottom of the upper (kc) ice domain
187 !> = top of the lower (kt) ice domain
188 !> (position of the CTS for POLY,
189 !> equal to zb for ISOT, COLD, ENTC, ENTM)
190  real(dp), dimension(0:JMAX,0:IMAX) :: zm
191 !> zb(j,i): Coordinate z of the ice base
192  real(dp), dimension(0:JMAX,0:IMAX) :: zb
193 !> zl(j,i): Coordinate z of the lithosphere surface
194  real(dp), dimension(0:JMAX,0:IMAX) :: zl
195 !> zl0(j,i): zl for isostatically relaxed ice-free conditions
196  real(dp), dimension(0:JMAX,0:IMAX) :: zl0
197 !> wss(j,i): Isostatic steady-state displacement of the lithosphere
198  real(dp), dimension(0:JMAX,0:IMAX) :: wss
199 !> flex_rig_lith(j,i): Flexural rigidity of the lithosphere
200  real(dp), dimension(0:JMAX,0:IMAX) :: flex_rig_lith
201 !> time_lag_asth(j,i): Time lag of the relaxing asthenosphere
202  real(dp), dimension(0:JMAX,0:IMAX) :: time_lag_asth
203 !> H_c(j,i): Thickness of ice in the upper (kc) domain
204 !> (thickness of the cold-ice layer for POLY,
205 !> entire ice thickness for ISOT, COLD, ENTC, ENTM)
206  real(dp), dimension(0:JMAX,0:IMAX) :: h_c
207 !> H_t(j,i): Thickness of ice in the lower (kt) domain
208 !> (thickness of the temperate layer for POLY,
209 !> redundant and thus set to zero for ISOT, COLD, ENTC, ENTM)
210  real(dp), dimension(0:JMAX,0:IMAX) :: h_t
211 !> dzs_dxi(j,i): Derivative of zs by xi (at i+1/2,j)
212  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dxi
213 !> dzm_dxi(j,i): Derivative of zm by xi (at i+1/2,j)
214  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dxi
215 !> dzb_dxi(j,i): Derivative of zb by xi (at i+1/2,j)
216  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dxi
217 !> dH_c_dxi(j,i): Derivative of H_c by xi (at i+1/2,j)
218  real(dp), dimension(0:JMAX,0:IMAX) :: dh_c_dxi
219 !> dH_t_dxi(j,i): Derivative of H_t by xi (at i+1/2,j)
220  real(dp), dimension(0:JMAX,0:IMAX) :: dh_t_dxi
221 !> dzs_deta(j,i): Derivative of zs by eta (at i,j+1/2)
222  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_deta
223 !> dzm_deta(j,i): Derivative of zm by eta (at i,j+1/2)
224  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_deta
225 !> dzb_deta(j,i): Derivative of zb by eta (at i,j+1/2)
226  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_deta
227 !> dH_c_deta(j,i): Derivative of H_c by eta (at i,j+1/2)
228  real(dp), dimension(0:JMAX,0:IMAX) :: dh_c_deta
229 !> dH_t_deta(j,i): Derivative of H_t by eta (at i,j+1/2)
230  real(dp), dimension(0:JMAX,0:IMAX) :: dh_t_deta
231 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
232  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dxi_g
233 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
234  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dxi_g
235 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
236  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dxi_g
237 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
238  real(dp), dimension(0:JMAX,0:IMAX) :: dh_c_dxi_g
239 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
240  real(dp), dimension(0:JMAX,0:IMAX) :: dh_t_dxi_g
241 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
242  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_deta_g
243 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
244  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_deta_g
245 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
246  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_deta_g
247 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
248  real(dp), dimension(0:JMAX,0:IMAX) :: dh_c_deta_g
249 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
250  real(dp), dimension(0:JMAX,0:IMAX) :: dh_t_deta_g
251 !> dzs_dtau(j,i): Derivative of zs by tau (time)
252  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dtau
253 !> dzm_dtau(j,i): Derivative of zm by tau (time)
254  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dtau
255 !> dzb_dtau(j,i): Derivative of zb by tau (time)
256  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dtau
257 !> dzl_dtau(j,i): Derivative of zl by tau (time)
258  real(dp), dimension(0:JMAX,0:IMAX) :: dzl_dtau
259 !> dH_c_dtau(j,i): Derivative of H_c by tau (time)
260  real(dp), dimension(0:JMAX,0:IMAX) :: dh_c_dtau
261 !> dH_t_dtau(j,i): Derivative of H_t by tau (time)
262  real(dp), dimension(0:JMAX,0:IMAX) :: dh_t_dtau
263 !> p_weert(j,i): Weertman exponent for the basal shear stress
264  integer(i4b), dimension(0:JMAX,0:IMAX) :: p_weert
265 !> q_weert(j,i): Weertman exponent for the basal pressure
266  integer(i4b), dimension(0:JMAX,0:IMAX) :: q_weert
267 !> p_weert_inv(j,i): Inverse of p_weert
268  real(dp), dimension(0:JMAX,0:IMAX) :: p_weert_inv
269 !> c_slide(j,i): Basal sliding coefficient
270  real(dp), dimension(0:JMAX,0:IMAX) :: c_slide
271 !> d_help_b(j,i): Auxiliary quantity for the computation of vx_b and vy_b
272  real(dp), dimension(0:JMAX,0:IMAX) :: d_help_b
273 !> c_drag(j,i): Auxiliary quantity for the computation of the basal drag
274  real(dp), dimension(0:JMAX,0:IMAX) :: c_drag
275 !> p_b_w(j,i): Basal water pressure
276  real(dp), dimension(0:JMAX,0:IMAX) :: p_b_w
277 !> vx_b(j,i): Velocity in x-direction at the ice base, at (i+1/2,j)
278  real(dp), dimension(0:JMAX,0:IMAX) :: vx_b
279 !> vy_b(j,i): Velocity in y-direction at the ice base, at (i,j+1/2)
280  real(dp), dimension(0:JMAX,0:IMAX) :: vy_b
281 !> vx_m(j,i): Mean (depth-averaged) velocity in x-direction, at (i+1/2,j)
282  real(dp), dimension(0:JMAX,0:IMAX) :: vx_m
283 !> vy_m(j,i): Mean (depth-averaged) velocity in y-direction, at (i,j+1/2)
284  real(dp), dimension(0:JMAX,0:IMAX) :: vy_m
285 !> vx_m_sia(j,i): Mean (depth-averaged) SIA velocity in x-direction,
286 !> at (i+1/2,j)
287  real(dp), dimension(0:JMAX,0:IMAX) :: vx_m_sia
288 !> vy_m_sia(j,i): Mean (depth-averaged) SIA velocity in y-direction,
289 !> at (i,j+1/2)
290  real(dp), dimension(0:JMAX,0:IMAX) :: vy_m_sia
291 
292 !> vx_m_ssa(j,i): Mean (depth-averaged) SSA velocity in x-direction,
293 !> at (i+1/2,j)
294  real(dp), dimension(0:JMAX,0:IMAX) :: vx_m_ssa
295 !> vy_m_ssa(j,i): Mean (depth-averaged) SSA velocity in y-direction,
296 !> at (i,j+1/2)
297  real(dp), dimension(0:JMAX,0:IMAX) :: vy_m_ssa
298 !> ratio_sl_x(j,i): Ratio of basal to surface velocity (slip ratio)
299 !> in x-direction, at (i+1/2,j)
300  real(dp), dimension(0:JMAX,0:IMAX) :: ratio_sl_x
301 !> ratio_sl_y(j,i): Ratio of basal to surface velocity (slip ratio)
302 !> in y-direction, at (i,j+1/2)
303  real(dp), dimension(0:JMAX,0:IMAX) :: ratio_sl_y
304 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
305  real(dp), dimension(0:JMAX,0:IMAX) :: vx_b_g
306 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
307  real(dp), dimension(0:JMAX,0:IMAX) :: vy_b_g
308 !> vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
309  real(dp), dimension(0:JMAX,0:IMAX) :: vz_b
310 !> vz_m(j,i): Velocity in z-direction at the position z=zm (interface between
311 !> the upper (kc) and the lower (kt) domain), at (i,j)
312  real(dp), dimension(0:JMAX,0:IMAX) :: vz_m
313 !> vx_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
314  real(dp), dimension(0:JMAX,0:IMAX) :: vx_s_g
315 !> vy_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
316  real(dp), dimension(0:JMAX,0:IMAX) :: vy_s_g
317 !> vz_s(j,i): Velocity in z-direction at the ice surface, at (i,j)
318  real(dp), dimension(0:JMAX,0:IMAX) :: vz_s
319 !> flui_ave_sia(j,i): Depth-averaged fluidity of the SIA
320  real(dp), dimension(0:JMAX,0:IMAX) :: flui_ave_sia
321 !> h_diff(j,i): Diffusivity of the SIA evolution equation of the ice surface
322  real(dp), dimension(0:JMAX,0:IMAX) :: h_diff
323 !> qx(j,i): Volume flux in x-direction (depth-integrated vx, at (i+1/2,j))
324  real(dp), dimension(0:JMAX,0:IMAX) :: qx
325 !> qy(j,i): Volume flux in y-direction (depth-integrated vy, at (i,j+1/2))
326  real(dp), dimension(0:JMAX,0:IMAX) :: qy
327 !> q_gl_g(j,i): Volume flux across the grounding line, at (i,j)
328  real(dp), dimension(0:JMAX,0:IMAX) :: q_gl_g
329 !> q_geo(j,i): Geothermal heat flux
330  real(dp), dimension(0:JMAX,0:IMAX) :: q_geo
331 !> temp_b(j,i): Basal temperature
332  real(dp), dimension(0:JMAX,0:IMAX) :: temp_b
333 !> temph_b(j,i): Basal temperature relative to the pressure melting point
334  real(dp), dimension(0:JMAX,0:IMAX) :: temph_b
335 !> Q_bm(j,i): Basal melting rate
336  real(dp), dimension(0:JMAX,0:IMAX) :: q_bm
337 !> Q_tld(j,i): Water drainage rate from the temperate layer
338  real(dp), dimension(0:JMAX,0:IMAX) :: q_tld
339 !> Q_b_tot(j,i): Sum of Q_bm and Q_tld
340  real(dp), dimension(0:JMAX,0:IMAX) :: q_b_tot
341 !> q_w(j,i): Scalar volume flux of the basal water
342  real(dp), dimension(0:JMAX,0:IMAX) :: q_w
343 !> q_w_x(j,i): Scalar volume flux of the basal water in x-direction
344  real(dp), dimension(0:JMAX,0:IMAX) :: q_w_x
345 !> q_w_y(j,i): Scalar volume flux of the basal water in y-direction
346  real(dp), dimension(0:JMAX,0:IMAX) :: q_w_y
347 !> H_w(j,i): Thickness of the water column under the ice base
348  real(dp), dimension(0:JMAX,0:IMAX) :: h_w
349 !> accum(j,i): Accumulation rate at the ice surface
350 !> (includes liquid precipitation = rainfall!)
351  real(dp), dimension(0:JMAX,0:IMAX) :: accum
352 !> snowfall(j,i): Snowfall rate at the ice surface
353  real(dp), dimension(0:JMAX,0:IMAX) :: snowfall
354 !> rainfall(j,i): Rainfall rate at the ice surface
355  real(dp), dimension(0:JMAX,0:IMAX) :: rainfall
356 !> ET(j,i): Temperature excess at the ice surface
357 !> (positive degree days divided by time)
358  real(dp), dimension(0:JMAX,0:IMAX) :: et
359 !> melt(j,i): Melting rate at the ice surface
360  real(dp), dimension(0:JMAX,0:IMAX) :: melt
361 !> melt_star(j,i): Superimposed ice formation rate at the ice surface
362  real(dp), dimension(0:JMAX,0:IMAX) :: melt_star
363 !> evap(j,i): Evaporation rate at the ice surface
364  real(dp), dimension(0:JMAX,0:IMAX) :: evap
365 !> runoff(j,i): Runoff rate at the ice surface
366  real(dp), dimension(0:JMAX,0:IMAX) :: runoff
367 !> as_perp(j,i): Accumulation-ablation function at the ice surface (SMB)
368  real(dp), dimension(0:JMAX,0:IMAX) :: as_perp
369 !> as_perp_apl(j,i): Applied accumulation-ablation function (SMB)
370  real(dp), dimension(0:JMAX,0:IMAX) :: as_perp_apl
371 !> smb_corr_prescribed(j,i): Prescribed SMB correction
372  real(dp), dimension(0:JMAX,0:IMAX) :: smb_corr_prescribed
373 !> smb_corr(j,i): Diagnosed SMB correction
374  real(dp), dimension(0:JMAX,0:IMAX) :: smb_corr
375 !> mb_source_apl(j,i): Applied mass balance source (SMB, BMB, calving)
376  real(dp), dimension(0:JMAX,0:IMAX) :: mb_source_apl
377 !> runoff_apl(j,i): Applied runoff rate at the ice surface
378  real(dp), dimension(0:JMAX,0:IMAX) :: runoff_apl
379 !> Q_b_apl(j,i): Applied basal melting rate
380 !> + water drainage rate from the temperate layer
381  real(dp), dimension(0:JMAX,0:IMAX) :: q_b_apl
382 !> calv_grounded(j,i): Calving rate of grounded ice
383  real(dp), dimension(0:JMAX,0:IMAX) :: calv_grounded
384 !> calv_grounded_apl(j,i): Applied calving rate of grounded ice
385  real(dp), dimension(0:JMAX,0:IMAX) :: calv_grounded_apl
386 !> mask_ablation_type(j,i): Mask indicating ablation type.
387 !> 2: visible (ocean, for later developments),
388 !> 1: visible (grounded ice),
389 !> -1: hidden on land,
390 !> -2: hidden in ocean
391  integer(i1b), dimension(0:JMAX,0:IMAX) :: mask_ablation_type
392 !> temp_s(j,i): Ice surface temperature
393  real(dp), dimension(0:JMAX,0:IMAX) :: temp_s
394 !> am_perp(j,i): Ice volume flux across the z=zm interface
395  real(dp), dimension(0:JMAX,0:IMAX) :: am_perp
396 !> am_perp_st(j,i): Steady-state part of am_perp
397 !> (without contribution of dzm_dtau)
398  real(dp), dimension(0:JMAX,0:IMAX) :: am_perp_st
399 !> (.)_neu: New value of quantity (.) computed during an integration step
400  real(dp), dimension(0:JMAX,0:IMAX) :: zs_neu
401 !> (.)_neu: New value of quantity (.) computed during an integration step
402  real(dp), dimension(0:JMAX,0:IMAX) :: zm_neu
403 !> (.)_neu: New value of quantity (.) computed during an integration step
404  real(dp), dimension(0:JMAX,0:IMAX) :: zb_neu
405 !> (.)_neu: New value of quantity (.) computed during an integration step
406  real(dp), dimension(0:JMAX,0:IMAX) :: zl_neu
407 !> (.)_neu: New value of quantity (.) computed during an integration step
408  real(dp), dimension(0:JMAX,0:IMAX) :: h_c_neu
409 !> (.)_neu: New value of quantity (.) computed during an integration step
410  real(dp), dimension(0:JMAX,0:IMAX) :: h_t_neu
411 
412 !> zs_ref(j,i): Reference elevation for precip_present, temp_ma_present
413 !> and temp_mj_present
414  real(dp), dimension(0:JMAX,0:IMAX) :: zs_ref
415 
416 !> accum_present(j,i): Present-day accumulation rate at the ice surface
417 !> (for EISMINT, ISMIP HEINO and the north and south
418 !> polar caps of Mars)
419  real(dp), dimension(0:JMAX,0:IMAX) :: accum_present
420 !> precip_ma_present(j,i): Present-day mean annual precipitation rate
421 !> at the ice surface
422  real(dp), dimension(0:JMAX,0:IMAX) :: precip_ma_present
423 !> precip_ma_lgm_anom(j,i): LGM anomaly (ratio LGM/present) of the mean annual
424 !> precipitation rate at the ice surface
425  real(dp), dimension(0:JMAX,0:IMAX) :: precip_ma_lgm_anom
426 !> temp_ma_present(j,i): Present-day mean annual surface temperature
427  real(dp), dimension(0:JMAX,0:IMAX) :: temp_ma_present
428 !> temp_mj_present(j,i): Present-day mean summer (northern hemisphere: July,
429 !> southern hemisphere: January) surface temperature
430  real(dp), dimension(0:JMAX,0:IMAX) :: temp_mj_present
431 !> temp_ma_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean
432 !> annual surface temperature
433  real(dp), dimension(0:JMAX,0:IMAX) :: temp_ma_lgm_anom
434 !> temp_mj_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean
435 !> summer (northern hemisphere: July, southern
436 !> hemisphere: January) surface temperature
437  real(dp), dimension(0:JMAX,0:IMAX) :: temp_mj_lgm_anom
438 
439 !> dist_dxdy(jr,ir): Distance between grid points with delta_i=ir, delta_j=jr
440  real(dp), dimension(-JMAX:JMAX,-IMAX:IMAX) :: dist_dxdy
441 
442 !> precip_present(j,i,n): Present-day mean monthly precipitation rate
443 !> at the ice surface
444  real(dp), dimension(0:JMAX,0:IMAX,12) :: precip_present
445 !> precip_lgm_anom(j,i,n): LGM anomaly (ratio LGM/present) of the mean monthly
446 !> precipitation rate at the ice surface
447  real(dp), dimension(0:JMAX,0:IMAX,12) :: precip_lgm_anom
448 !> gamma_precip_lgm_anom(j,i,n): negative natural logarithm of
449 !> precip_lgm_anom(j,i,n)
450  real(dp), dimension(0:JMAX,0:IMAX,12) :: gamma_precip_lgm_anom
451 !> temp_mm_present(j,i,n): Present-day mean monthly surface temperature
452  real(dp), dimension(0:JMAX,0:IMAX,12) :: temp_mm_present
453 !> temp_mm_lgm_anom(j,i,n): LGM anomaly (difference LGM - present) of the mean
454 !> monthly surface temperature
455  real(dp), dimension(0:JMAX,0:IMAX,12) :: temp_mm_lgm_anom
456 
457 !> d_help_c(kc,j,i): Auxiliary quantity for the computation of vx, vy und zs
458  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: d_help_c
459 !> vx_c(kc,j,i): Velocity in x-direction in the upper (kc) ice domain
460 !> (at (i+1/2,j,kc))
461  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vx_c
462 !> vy_c(kc,j,i): Velocity in y-direction in the upper (kc) ice domain
463 !> (at (i,j+1/2,kc))
464  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vy_c
465 !> vz_c(kc,j,i): Velocity in z-direction in the upper (kc) ice domain
466 !> (at (i,j,kc+1/2))
467  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vz_c
468 !> temp_c(kc,j,i): Temperature in the upper (kc) ice domain
469  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c
470 !> (.)_neu: New value of quantity (.) computed during an integration step
471  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c_neu
472 !> temp_c_m(kc,j,i): Melting temperature in the upper (kc) ice domain
473  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c_m
474 !> age_c(kc,j,i): Age in the upper (kc) ice domain
475  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_c
476 !> (.)_neu: New value of quantity (.) computed during an integration step
477  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_c_neu
478 !> txz_c(kc,j,i): Shear stress txz in the upper (kc) ice domain
479 !> (at (i+1/2,j,kc))
480  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: txz_c
481 !> tyz_c(kc,j,i): Shear stress tyz in the upper (kc) ice domain
482 !> (at (i,j+1/2,kc))
483  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: tyz_c
484 !> sigma_c(kc,j,i): Effective stress in the upper (kc) ice domain
485  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: sigma_c
486 !> enh_c(kc,j,i): Flow enhancement factor in the upper (kc) ice domain
487  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enh_c
488 
489 !> de_ssa(j,i): Effective strain rate of the SSA, at (i,j)
490  real(dp), dimension(0:JMAX,0:IMAX) :: de_ssa
491 !> vis_ave_g(j,i): Depth-averaged viscosity of the SIA/SSA, at (i,j)
492  real(dp), dimension(0:JMAX,0:IMAX) :: vis_ave_g
493 !> vis_int_g(j,i): Depth-integrated viscosity of the SIA/SSA, at (i,j)
494  real(dp), dimension(0:JMAX,0:IMAX) :: vis_int_g
495 !> vx_g(j,i): Velocity in x-direction of the SSA, at (i,j)
496  real(dp), dimension(0:JMAX,0:IMAX) :: vx_g
497 !> vy_g(j,i): Velocity in y-direction of the SSA, at (i,j)
498  real(dp), dimension(0:JMAX,0:IMAX) :: vy_g
499 
500 !> d_help_t(kt,j,i): Auxiliary quantity for the computation of vx, vy und zs
501  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: d_help_t
502 !> vx_t(kt,j,i): Velocity in x-direction in the lower (kt) ice domain
503 !> (at (i+1/2,j,kt))
504  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vx_t
505 !> vy_t(kt,j,i): Velocity in y-direction in the lower (kt) ice domain
506 !> (at (i,j+1/2,kt))
507  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vy_t
508 !> vz_t(kt,j,i): Velocity in z-direction in the lower (kt) ice domain
509 !> (at (i,j,kt+1/2))
510  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vz_t
511 !> omega_t(kt,j,i): Water content in the lower (kt) ice domain
512  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: omega_t
513 !> (.)_neu: New value of quantity (.) computed during an integration step
514  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: omega_t_neu
515 !> temp_t_m(kt,j,i): Melting temperature in the lower (kt) ice domain
516  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: temp_t_m
517 !> age_t(kt,j,i): Age in the lower (kt) ice domain
518  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: age_t
519 !> (.)_neu: New value of quantity (.) computed during an integration step
520  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: age_t_neu
521 !> txz_t(kt,j,i): Shear stress txz in the lower (kt) ice domain
522 !> (at (i+1/2,j,kt))
523  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: txz_t
524 !> tyz_t(kt,j,i): Shear stress tyz in the lower (kt) ice domain
525 !> (at (i,j+1/2,kt))
526  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: tyz_t
527 !> sigma_t(kt,j,i): Effective stress in the lower (kt) ice domain
528  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: sigma_t
529 !> enh_t(kt,j,i): Flow enhancement factor in the lower (kt) ice domain
530  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enh_t
531 
532 !> temp_r(kr,j,i): Temperature in the bedrock
533  real(dp), dimension(0:KRMAX,0:JMAX,0:IMAX) :: temp_r
534 !> (.)_neu: New value of quantity (.) computed during an integration step
535  real(dp), dimension(0:KRMAX,0:JMAX,0:IMAX) :: temp_r_neu
536 
537 !> enth_c(kc,j,i): Enthalpy in the upper (kc) ice domain
538  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enth_c
539 !> (.)_neu: New value of quantity (.) computed during an integration step
540  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enth_c_neu
541 !> omega_c(kc,j,i): Water content in the upper (kc) ice domain
542  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: omega_c
543 !> (.)_neu: New value of quantity (.) computed during an integration step
544  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: omega_c_neu
545 
546 !> enth_t(kt,j,i): Enthalpy in the lower (kt) ice domain
547  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enth_t
548 !> (.)_neu: New value of quantity (.) computed during an integration step
549  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enth_t_neu
550 
551 !> dxx_c(kc,j,i): Strain rate dxx in the upper (kc) ice domain
552  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxx_c
553 !> dyy_c(kc,j,i): Strain rate dyy in the upper (kc) ice domain
554  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dyy_c
555 !> dxy_c(kc,j,i): Strain rate dxy in the upper (kc) ice domain
556  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxy_c
557 !> dxz_c(kc,j,i): Strain rate dxz in the upper (kc) ice domain
558  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxz_c
559 !> dyz_c(kc,j,i): Strain rate dyz in the upper (kc) ice domain
560  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dyz_c
561 !> de_c(kc,j,i): Full effective strain rate in the upper (kc) ice domain
562  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: de_c
563 !> lambda_shear_c(kc,j,i): Shear fraction in the upper (kc) ice domain
564  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: lambda_shear_c
565 
566 !> dxx_t(kt,j,i): Strain rate dxx in the lower (kt) ice domain
567  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxx_t
568 !> dyy_t(kt,j,i): Strain rate dyy in the lower (kt) ice domain
569  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dyy_t
570 !> dxy_t(kt,j,i): Strain rate dxy in the lower (kt) ice domain
571  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxy_t
572 !> dxz_t(kt,j,i): Strain rate dxz in the lower (kt) ice domain
573  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxz_t
574 !> dyz_t(kt,j,i): Strain rate dyz in the lower (kt) ice domain
575  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dyz_t
576 !> de_t(kt,j,i): Full effective strain rate in the lower (kt) ice domain
577  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: de_t
578 !> lambda_shear_t(kt,j,i): Shear fraction in the lower (kt) ice domain
579  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: lambda_shear_t
580 
581 !-------- Physical parameters --------
582 
583 !> RHO: Density of ice
584  real(dp) :: rho
585 !> RHO_W: Density of pure water
586  real(dp) :: rho_w
587 !> RHO_SW: Density of sea water
588  real(dp) :: rho_sw
589 !> L: Latent heat of ice
590  real(dp) :: l
591 !> G: Acceleration due to gravity
592  real(dp) :: g
593 !> NUE: Water diffusivity in ice
594  real(dp) :: nue
595 !> BETA: Clausius-Clapeyron gradient of ice
596  real(dp) :: beta
597 !> DELTA_TM_SW: Melting point depression of sea water due to its
598 !> average salinity
599  real(dp) :: delta_tm_sw
600 !> OMEGA_MAX: Threshold value for the water content of temperate ice
601  real(dp) :: omega_max
602 !> H_R: Thickness of the modelled lithosphere layer
603  real(dp) :: h_r
604 !> RHO_C_R: Density times specific heat of the lithosphere
605  real(dp) :: rho_c_r
606 !> KAPPA_R: Heat conductivity of the lithosphere
607  real(dp) :: kappa_r
608 !> RHO_A: Density of the asthenosphere
609  real(dp) :: rho_a
610 !> R_T: Coefficient of the water-content dependence in the rate factor
611 !> for temperate ice
612  real(dp) :: r_t
613 !> R: Radius of the planet
614  real(dp) :: r
615 !> A: Semi-major axis of the planet
616  real(dp) :: a
617 !> B: Semi-minor axis of the planet
618  real(dp) :: b
619 !> LAMBDA0: Reference longitude (central meridian) of the stereographic
620 !> projection
621  real(dp) :: lambda0
622 !> PHI0: Standard parallel of the stereographic projection
623  real(dp) :: phi0
624 !> S_STAT_0: Standard deviation of the air termperature for the
625 !> degree-day model
626  real(dp) :: s_stat_0
627 !> BETA1_0: Degree-day factor for snow
628  real(dp) :: beta1_0
629 !> BETA1_LT_0: Degree-day factor for snow at low summer temperatures
630  real(dp) :: beta1_lt_0
631 !> BETA1_HT_0: Degree-day factor for snow at high summer temperatures
632  real(dp) :: beta1_ht_0
633 !> BETA2_0: Degree-day factor for ice
634  real(dp) :: beta2_0
635 !> BETA2_LT_0: Degree-day factor for ice at low summer temperatures
636  real(dp) :: beta2_lt_0
637 !> BETA2_HT_0: Degree-day factor for ice at high summer temperatures
638  real(dp) :: beta2_ht_0
639 !> PHI_SEP_0: Separation latitude for the computation of the degree-day
640 !> factors beta1 and beta2: Equatorward of phi_sep, only the
641 !> high-temperature values are used, whereas poleward of phi_sep,
642 !> beta1 and beta2 are temperature-dependent
643  real(dp) :: phi_sep_0
644 !> PMAX_0: Saturation factor for the formation of superimposed ice
645  real(dp) :: pmax_0
646 !> MU_0: Firn-warming correction
647  real(dp) :: mu_0
648 
649 !> RF(n): Tabulated values for the rate factor of cold ice
650  real(dp), dimension(-190:10) :: rf
651 !> KAPPA(n): Tabulated values for the heat conductivity of ice
652  real(dp), dimension(-190:10) :: kappa
653 !> C(n): Tabulated values for the specific heat of ice
654  real(dp), dimension(-190:10) :: c
655 
656 !-------- Mathematical constants --------
657 
658 !> pi: Constant pi
659  real(dp), parameter :: pi = 3.141592653589793_dp
660 !> pi_inv: Inverse of pi
661  real(dp), parameter :: pi_inv = 1.0_dp/pi
662 !> pi_180: pi divided by 180 (-> deg to rad)
663  real(dp), parameter :: pi_180 = pi/180.0_dp
664 !> pi_180_inv: 180 divided by pi (-> rad to deg)
665  real(dp), parameter :: pi_180_inv = 180.0_dp/pi
666 
667 !> euler: Euler number
668  real(dp), parameter :: euler = 2.718281828459045_dp
669 
670 !> eps: Small number
671  real(dp), parameter :: eps = 1.0e-05_dp
672 !> epsi: Very small number
673  real(dp), parameter :: epsi = 1.0e-12_dp
674 
675 #if (!defined(ALLOW_GRDCHK) && !defined(ALLOW_OPENAD)) /* Normal */
676 
677 !> eps_sp: Small number to single-precision accuracy
678  real(sp), parameter :: eps_sp = epsilon(1.0_sp)
679 !> eps_sp_dp: Small number to single-precision accuracy in double precision
680  real(dp), parameter :: eps_sp_dp = eps_sp
681 !> eps_dp: Small number to double-precision accuracy
682  real(dp), parameter :: eps_dp = epsilon(1.0_dp)
683 
684 #else /* OpenAD */
685 
686  !myepsilon_sp was computed using the code below. 4 is the value of sp
687  !real(4) :: y = 1.0
688  !print *, EPSILON(y)
689  real(sp), parameter :: myepsilon_sp = 1.19209290e-07
690  real(sp), parameter :: eps_sp = myepsilon_sp
691  !myepsilon_sp_dp was computed using the code below. 4 is the value of sp,
692  !8 is the value of dp
693  !real(4) :: y = 1.0
694  !print *, REAL(EPSILON(y),8)
695  real(dp), parameter :: myepsilon_sp_dp = 1.1920928955078125e-007
696  real(dp), parameter :: eps_sp_dp = myepsilon_sp_dp
697  !myepsilon_dp was computed using the code below. 8 is the value of dp
698  !real(8) :: y = 1.0
699  !print *, EPSILON(y)
700  real(dp), parameter :: myepsilon_dp = 2.2204460492503131e-016
701  real(dp), parameter :: eps_dp = myepsilon_dp
702 
703 #endif /* Normal vs. OpenAD */
704 
705 !-------- Further quantities --------
706 
707 !> year_zero: SICOPOLIS year zero in astronomical year numbering
708 !> [ = signed year CE (AD) ]
709  real(dp) :: year_zero
710 
711 !> ch_domain_long: Long name of the computational domain
712  character(len=64) :: ch_domain_long
713 !> ch_domain_short: Short name of the computational domain
714  character(len=16) :: ch_domain_short
715 
716 !> forcing_flag: Flag for the forcing type.
717 !> 1: forcing by a spatially constant surface temperature
718 !> anomaly (delta_ts),
719 !> 2: forcing by a glacial index (glac_index),
720 !> 3: forcing by time-dependent surface temperature
721 !> and precipitation data.
722  integer(i1b) :: forcing_flag
723 
724 !> n_core: Number of positions to be considered in the time-series file
725 !> for deep boreholes
726  integer(i4b) :: n_core
727 !> lambda_core(n): Geographical longitude of the prescribed borehole positions
728  real(dp), dimension(:), allocatable :: lambda_core
729 !> phi_core(n): Geographical latitude of the prescribed borehole positions
730  real(dp), dimension(:), allocatable :: phi_core
731 !> x_core(n): Coordinate xi (= x) of the prescribed borehole positions
732  real(dp), dimension(:), allocatable :: x_core
733 !> y_core(n): Coordinate eta (= y) of the prescribed borehole positions
734  real(dp), dimension(:), allocatable :: y_core
735 !> ch_core(n): Names of the prescribed borehole positions
736  character(len=16), dimension(:), allocatable :: ch_core
737 
738 !> grip_time_min: Minimum time of the data values for the
739 !> surface temperature anomaly
740  integer(i4b) :: grip_time_min
741 !> grip_time_stp: Time step of the data values for the
742 !> surface temperature anomaly
743  integer(i4b) :: grip_time_stp
744 !> grip_time_max: Maximum time of the data values for the
745 !> surface temperature anomaly
746  integer(i4b) :: grip_time_max
747 !> ndata_grip: Number of data values for the surface temperature anomaly
748  integer(i4b) :: ndata_grip
749 !> griptemp(n): Data values for the surface temperature anomaly
750  real(dp), dimension(:), allocatable :: griptemp
751 
752 !> gi_time_min: Minimum time of the data values for the glacial index
753  integer(i4b) :: gi_time_min
754 !> gi_time_stp: Time step of the data values for the glacial index
755  integer(i4b) :: gi_time_stp
756 !> gi_time_max: Maximum time of the data values for the glacial index
757  integer(i4b) :: gi_time_max
758 !> ndata_gi: Number of data values for the glacial index
759  integer(i4b) :: ndata_gi
760 !> glacial_index(n): Data values for the glacial index
761  real(dp), dimension(:), allocatable :: glacial_index
762 
763 !> specmap_time_min: Minimum time of the data values for the sea level
764  integer(i4b) :: specmap_time_min
765 !> specmap_time_stp: Time step of the data values for the sea level
766  integer(i4b) :: specmap_time_stp
767 !> specmap_time_max: Maximum time of the data values for the sea level
768  integer(i4b) :: specmap_time_max
769 !> ndata_specmap: Number of data values for the sea level
770  integer(i4b) :: ndata_specmap
771 !> specmap_zsl(n): Data values for the sea level
772  real(dp), dimension(:), allocatable :: specmap_zsl
773 
774 !> time_target_topo_init: Initial time for target-topography adjustment
776 !> time_target_topo_final: Final time for target-topography adjustment
778 !> target_topo_tau_0: Relaxation time for target-topography adjustment
779  real(dp) :: target_topo_tau_0
780 !> maske_target(j,i): Target topography (ice-land-ocean mask)
781  integer(i1b), dimension(0:JMAX,0:IMAX) :: maske_target
782 !> zs_target(j,i): Target topography (ice surface)
783  real(dp), dimension(0:JMAX,0:IMAX) :: zs_target
784 !> zb_target(j,i): Target topography (ice base)
785  real(dp), dimension(0:JMAX,0:IMAX) :: zb_target
786 !> zl_target(j,i): Target topography (lithosphere surface)
787  real(dp), dimension(0:JMAX,0:IMAX) :: zl_target
788 !> H_target(j,i): Target topography (ice thickness)
789  real(dp), dimension(0:JMAX,0:IMAX) :: h_target
790 
791 !> maske_maxextent(j,i): Maximum ice extent mask.
792 !> 0: not allowed to glaciate,
793 !> 1: allowed to glaciate.
794  integer(i1b), dimension(0:JMAX,0:IMAX) :: maske_maxextent
795 
796 !> ncid_ser: ID of the NetCDF time-series output file
797  integer(i4b) :: ncid_ser
798 !> ncid_core: ID of the NetCDF time-series output file for the deep ice cores
799  integer(i4b) :: ncid_core
800 
801 !> ncid_temp_precip: ID of the NetCDF file containing the
802 !> surface-temperature and precipitation data
803 !> as functions of time
804  integer(i4b) :: ncid_temp_precip
805 !> ndata_temp_precip: Number of surface-temperature
806 !> and precipitation data
807  integer(i4b) :: ndata_temp_precip
808 !> temp_precip_time_min: Minimum time of the surface-temperature
809 !> and precipitation data
811 !> temp_precip_time_stp: Time step of the surface-temperature
812 !> and precipitation data
814 !> temp_precip_time_max: Maximum time of the surface-temperature
815 !> and precipitation data
817 !> temp_precip_time(n): Times of the surface-temperature
818 !> and precipitation data
819  real(dp), dimension(:), allocatable :: temp_precip_time
820 
821 !> kei(n): Tabulated values of the kei function (Kelvin function of zero order)
822  real(dp), dimension(-10000:10000) :: kei
823 !> n_data_kei: Number of tabulated values of the kei function
824  integer(i4b):: n_data_kei
825 !> kei_r_max: Maximum value of the argument r of the tabulated kei function
826  real(dp) :: kei_r_max
827 !> kei_r_incr: Increment of the argument r of the tabulated kei function
828  real(dp) :: kei_r_incr
829 
830 !> rcl1: Maximum length of record for input files
831 !> (with factor 3 safety margin)
832  integer(i4b), parameter :: rcl1 = 3*8*(imax+1)
833 !> rcl2: Maximum length of record for input mask files
834 !> (with factor 3 safety margin)
835  integer(i4b), parameter :: rcl2 = 3 *(imax+1)
836 
837 !> ij2n: Conversion from 2d index pair (i,j) to linear index n
838  integer(i4b), dimension(0:JMAX,0:IMAX) :: ij2n
839 !> n2i: Conversion from linear index n to 2d index i
840  integer(i4b), dimension((IMAX+1)*(JMAX+1)) :: n2i
841 !> n2j: Conversion from linear index n to 2d index j
842  integer(i4b), dimension((IMAX+1)*(JMAX+1)) :: n2j
843 
844 !> no_value_pos_1: Positive no-value parameter
845  real(dp), parameter :: no_value_pos_1 = 1.11e+11_dp
846 !> no_value_pos_2: Positive no-value parameter
847  real(dp), parameter :: no_value_pos_2 = 9.999e+03_dp
848 !> no_value_neg_1: Negative no-value parameter
849  real(dp), parameter :: no_value_neg_1 = -1.11e+11_dp
850 !> no_value_neg_2: Negative no-value parameter
851  real(dp), parameter :: no_value_neg_2 = -9.999e+03_dp
852 
853 !> errormsg: Error-message string
854  character(len=256) :: errormsg
855 !> end_of_line: End-of-line string
856  character, parameter :: end_of_line = char(10)
857 
858 #if (defined(ALLOW_GRDCHK) || defined(ALLOW_OPENAD)) /* OpenAD */
859 !> fc: scalar cost function
860  real(dp) :: fc
861 !> objf_test: cost function
862  real(dp) :: objf_test
863 !> mult_test: cost function
864  real(dp) :: mult_test
865 #if (defined(AGE_COST))
866 !> Note: for the age cost, CALCMOD!=1 is recommended because
867 ! the gridded ages of the GRL ice sheet are only 25 z-levels.
868 !> age_data: array of gridded ages to be used in adjoint mode
869  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_data
870 !> age_unc: array of gridded ages to be used in adjoint mode
871  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_unc
872 !> acc_fact
873 #endif /* No age cost used */
874  real(dp), dimension(0:JMAX,0:IMAX) :: acc_fact
875 #endif /* OpenAD */
876 
877 end module sico_variables_m
878 !
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) temp_c
temp_c(kc,j,i): Temperature in the upper (kc) ice domain
real(dp) kappa_r
KAPPA_R: Heat conductivity of the lithosphere.
real(dp), dimension(0:jmax, 0:imax) c_slide
c_slide(j,i): Basal sliding coefficient
real(dp) delta_tm_sw
DELTA_TM_SW: Melting point depression of sea water due to its average salinity.
real(dp), dimension(0:jmax, 0:imax) calv_grounded_apl
calv_grounded_apl(j,i): Applied calving rate of grounded ice
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:krmax, 0:jmax, 0:imax) temp_r_neu
(.)_neu: New value of quantity (.) computed during an integration step
integer(i4b), dimension((imax+1)*(jmax+1)) n2j
n2j: Conversion from linear index n to 2d index j
real(dp), dimension(0:jmax, 0:imax) phi
phi(j,i): Geographic latitude of grid point (i,j)
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) phi_sep_0
PHI_SEP_0: Separation latitude for the computation of the degree-day factors beta1 and beta2: Equator...
real(dp), dimension(:), allocatable phi_core
phi_core(n): Geographical latitude of the prescribed borehole positions
logical, dimension(0:jmax, 0:imax) flag_inner_point
flag_inner_point(j,i): Inner-point flag. .true.: inner point, .false.: margin point ...
integer(i4b) grip_time_stp
grip_time_stp: Time step of the data values for the surface temperature anomaly
integer(i4b) ncid_ser
ncid_ser: ID of the NetCDF time-series output file
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) age_c
age_c(kc,j,i): Age 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:kcmax, 0:jmax, 0:imax) d_help_c
d_help_c(kc,j,i): Auxiliary quantity for the computation of vx, vy und zs
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:jmax, 0:imax) runoff_apl
runoff_apl(j,i): Applied runoff rate at the ice surface
integer(i4b) ndata_specmap
ndata_specmap: Number of data values for the sea level
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), 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:kcmax, 0:jmax, 0:imax) enth_c_neu
(.)_neu: New value of quantity (.) computed during an integration step
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) beta2_ht_0
BETA2_HT_0: Degree-day factor for ice at high summer temperatures.
real(dp), dimension(0:kcmax) eaz_c
eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
real(dp), dimension(0:jmax, 0:imax) q_geo
q_geo(j,i): Geothermal heat flux
real(dp), dimension(0:jmax, 0:imax, 12) temp_mm_present
temp_mm_present(j,i,n): Present-day mean monthly surface temperature
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) beta1_ht_0
BETA1_HT_0: Degree-day factor for snow at high summer temperatures.
real(dp), dimension(0:jmax, 0:imax) vx_b_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) age_t
age_t(kt,j,i): Age in the lower (kt) ice domain
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) enh_c
enh_c(kc,j,i): Flow enhancement factor in the upper (kc) ice domain
real(dp) rho_w
RHO_W: Density of pure water.
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:krmax, 0:jmax, 0:imax) temp_r
temp_r(kr,j,i): Temperature in the bedrock
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) age_t_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) mb_source_apl
mb_source_apl(j,i): Applied mass balance source (SMB, BMB, calving)
real(dp) h_r
H_R: Thickness of the modelled lithosphere layer.
real(dp) a
A: Semi-major axis of the planet.
real(dp), dimension(0:jmax, 0:imax) vz_b
vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
integer(i4b) specmap_time_max
specmap_time_max: Maximum time of the data values for the sea level
real(dp) temp_precip_time_stp
temp_precip_time_stp: Time step of the surface-temperature and precipitation data ...
real(dp) mu_0
MU_0: Firn-warming correction.
real(dp), dimension(0:jmax, 0:imax) vy_g
vy_g(j,i): Velocity in y-direction of the SSA, at (i,j)
real(dp), parameter eps
eps: Small number
real(dp), dimension(0:jmax, 0:imax) vx_s_g
vx_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
real(dp) temp_precip_time_max
temp_precip_time_max: Maximum time of the surface-temperature and precipitation data ...
real(dp) omega_max
OMEGA_MAX: Threshold value for the water content of temperate ice.
real(dp), dimension(0:jmax, 0:imax) calv_grounded
calv_grounded(j,i): Calving rate of grounded ice
real(dp), dimension(0:jmax, 0:imax) rainfall
rainfall(j,i): Rainfall rate at the ice surface
logical, dimension(0:jmax, 0:imax) flag_grounding_line_1
flag_grounding_line_1(j,i): Grounding line flag. .true.: grounding line point (grounded ice point wit...
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) vis_ave_g
vis_ave_g(j,i): Depth-averaged viscosity of the SIA/SSA, at (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) enth_t
enth_t(kt,j,i): Enthalpy in the lower (kt) ice domain
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) temp_mj_present
temp_mj_present(j,i): Present-day mean summer (northern hemisphere: July, southern hemisphere: Januar...
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_t_dtau
dH_t_dtau(j,i): Derivative of H_t by tau (time)
real(dp), dimension(0:jmax, 0:imax) lambda
lambda(j,i): Geographic longitude of 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
real(dp), dimension(0:jmax, 0:imax) dh_c_dtau
dH_c_dtau(j,i): Derivative of H_c by tau (time)
real(dp), dimension(0:jmax, 0:imax) p_b_w
p_b_w(j,i): Basal water pressure
integer(i4b) specmap_time_min
specmap_time_min: Minimum time of the data values for the sea level
real(dp), dimension(0:jmax, 0:imax) sq_g22_sgx
sq_g22_sgx(j,i): Square root of g22, at (i+1/2,j)
integer(i1b), dimension(0:jmax, 0:imax) maske_old
maske_old(j,i): Old value of maske (at the previous time step)
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) vx_m_ssa
vx_m_ssa(j,i): Mean (depth-averaged) SSA velocity in x-direction, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) vy_b
vy_b(j,i): Velocity in y-direction at the ice base, at (i,j+1/2)
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)
integer(i1b), dimension(0:jmax, 0:imax) maske_neu
maske_neu(j,i): New value of maske computed during an integration step
real(dp), dimension(0:jmax, 0:imax) as_perp
as_perp(j,i): Accumulation-ablation function at the ice surface (SMB)
real(dp), dimension(0:jmax, 0:imax) area
area(j,i): Area of grid cell associated with grid point (i,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(:), allocatable glacial_index
glacial_index(n): Data values for the glacial index
real(dp) s_stat_0
S_STAT_0: Standard deviation of the air termperature for the degree-day model.
real(dp), dimension(0:jmax, 0:imax) zl_target
zl_target(j,i): Target topography (lithosphere surface)
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream_x
flag_shelfy_stream_x(j,i): Shelfy stream flag in x-direction, at (i+1/2,j). .true.: shelfy stream point .false.: otherwise
logical, dimension(0:jmax, 0:imax) flag_grounded_front_b_1
flag_grounded_front_b_1(j,i): Marine-terminating grounded front flag. .true.: grounded front point (g...
real(dp) beta2_lt_0
BETA2_LT_0: Degree-day factor for ice at low summer temperatures.
real(dp), dimension(0:jmax, 0:imax) dzm_deta
dzm_deta(j,i): Derivative of zm by eta (at i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) runoff
runoff(j,i): Runoff rate at the ice surface
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) temp_t_m
temp_t_m(kt,j,i): Melting temperature in the lower (kt) ice domain
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:kcmax, 0:jmax, 0:imax) txz_c
txz_c(kc,j,i): Shear stress txz in the upper (kc) ice domain (at (i+1/2,j,kc))
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) melt_star
melt_star(j,i): Superimposed ice formation rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) h_t_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(sp), parameter eps_sp
eps_sp: Small number to single-precision accuracy
real(dp), dimension(0:jmax, 0:imax) zs_ref
zs_ref(j,i): Reference elevation for precip_present, temp_ma_present and temp_mj_present ...
real(dp), dimension(0:jmax, 0:imax) sq_g22_sgy
sq_g22_sgy(j,i): Square root of g22, at (i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) snowfall
snowfall(j,i): Snowfall rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) zs_target
zs_target(j,i): Target topography (ice surface)
real(dp), parameter pi_180_inv
pi_180_inv: 180 divided by pi (-> rad to deg)
real(dp) b
B: Semi-minor axis of the planet.
real(dp), dimension(0:jmax, 0:imax) temp_s
temp_s(j,i): Ice surface temperature
real(dp), dimension(0:jmax, 0:imax) melt
melt(j,i): Melting rate at the ice surface
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) zl
zl(j,i): Coordinate z of the lithosphere surface
real(dp) g
G: Acceleration due to gravity.
real(dp), dimension(0:jmax, 0:imax) dzb_dxi
dzb_dxi(j,i): Derivative of zb by xi (at i+1/2,j)
real(dp) r
R: Radius of the planet.
integer(i1b), dimension(0:jmax, 0:imax) maske_target
maske_target(j,i): Target topography (ice-land-ocean mask)
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)
integer(i4b) grip_time_max
grip_time_max: Maximum time of the data values for the surface temperature anomaly ...
real(dp), dimension(0:jmax, 0:imax) q_tld
Q_tld(j,i): Water drainage rate from the temperate layer.
real(dp), dimension(0:jmax, 0:imax) zl_neu
(.)_neu: New value of quantity (.) computed during an integration step
integer(i1b), dimension(0:jmax, 0:imax) mask_ablation_type
mask_ablation_type(j,i): Mask indicating ablation type. 2: visible (ocean, for later developments)...
integer(i4b), parameter rcl1
rcl1: Maximum length of record for input files (with factor 3 safety margin)
real(dp), dimension(0:jmax, 0:imax) vis_int_g
vis_int_g(j,i): Depth-integrated viscosity of the SIA/SSA, at (i,j)
real(dp), parameter pi_inv
pi_inv: Inverse of pi
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)
integer(i4b) ndata_gi
ndata_gi: Number of data values for the glacial index
real(dp), dimension(0:jmax, 0:imax) ratio_sl_y
ratio_sl_y(j,i): Ratio of basal to surface velocity (slip ratio) in y-direction, at (i...
real(dp), dimension(0:jmax, 0:imax) temp_b
temp_b(j,i): Basal temperature
integer(i4b) ndata_grip
ndata_grip: Number of data values for the surface temperature anomaly
integer(i4b), dimension(0:jmax, 0:imax) q_weert
q_weert(j,i): Weertman exponent for the basal pressure
real(dp) beta1_0
BETA1_0: Degree-day factor for snow.
real(dp), dimension(0:jmax, 0:imax) d_help_b
d_help_b(j,i): Auxiliary quantity for the computation of vx_b and vy_b
real(dp), dimension(0:jmax, 0:imax) vy_m_ssa
vy_m_ssa(j,i): Mean (depth-averaged) SSA velocity in y-direction, at (i,j+1/2)
real(dp), dimension(0:jmax, 0:imax) et
ET(j,i): Temperature excess at the ice surface (positive degree days divided by time) ...
real(dp) ea
ea: Abbreviation for exp(aa)
real(dp), parameter pi_180
pi_180: pi divided by 180 (-> deg to rad)
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
real(dp), parameter no_value_neg_2
no_value_neg_2: Negative no-value parameter
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) enth_c
enth_c(kc,j,i): Enthalpy 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:jmax, 0:imax) h_diff
h_diff(j,i): Diffusivity of the SIA evolution equation of the ice surface
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), dimension(0:ktmax, 0:jmax, 0:imax) d_help_t
d_help_t(kt,j,i): Auxiliary quantity for the computation of vx, vy und zs
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) age_c_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp) aa
aa: Exponential stretch parameter of the non-equidistant vertical grid in the upper (kc) ice domain ...
real(dp) rho_c_r
RHO_C_R: Density times specific heat of the lithosphere.
real(dp), dimension(0:jmax, 0:imax) wss
wss(j,i): Isostatic steady-state displacement of the lithosphere
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) zs
zs(j,i): Coordinate z of the surface topography
real(dp) pmax_0
PMAX_0: Saturation factor for the formation of superimposed ice.
real(dp), dimension(0:jmax, 0:imax) evap
evap(j,i): Evaporation rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) flui_ave_sia
flui_ave_sia(j,i): Depth-averaged fluidity of the SIA
real(dp), dimension(0:jmax, 0:imax) accum
accum(j,i): Accumulation rate at the ice surface (includes liquid precipitation = rainfall!) ...
integer(i4b), dimension(0:jmax, 0:imax) kc_cts
kc_cts(j,i): Position kc of the CTS (for COLD, ENTC, ENTM)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) txz_t
txz_t(kt,j,i): Shear stress txz in the lower (kt) ice domain (at (i+1/2,j,kt))
real(dp), dimension(0:jmax, 0:imax) dh_c_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) enh_t
enh_t(kt,j,i): Flow enhancement factor in the lower (kt) ice domain
real(dp), dimension(0:jmax, 0:imax) precip_ma_present
precip_ma_present(j,i): Present-day mean annual precipitation rate at the ice surface ...
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c_neu
(.)_neu: New value of quantity (.) computed during an integration step
integer(i4b) gi_time_min
gi_time_min: Minimum time of the data values for the glacial index
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:jmax, 0:imax) zb_target
zb_target(j,i): Target topography (ice base)
real(dp) temp_precip_time_min
temp_precip_time_min: Minimum time of the surface-temperature and precipitation data ...
real(dp), dimension(0:jmax, 0:imax) smb_corr
smb_corr(j,i): Diagnosed SMB correction
real(dp) kei_r_max
kei_r_max: Maximum value of the argument r of the tabulated kei function
real(dp), dimension(0:jmax, 0:imax) q_b_apl
Q_b_apl(j,i): Applied basal melting rate.
real(dp) year_zero
year_zero: SICOPOLIS year zero in astronomical year numbering [ = signed year CE (AD) ] ...
real(dp), parameter no_value_neg_1
no_value_neg_1: Negative no-value parameter
real(dp), dimension(:), allocatable specmap_zsl
specmap_zsl(n): Data values for the sea level
real(dp), dimension(0:jmax, 0:imax) vy_b_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
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), parameter euler
euler: Euler number
integer(i4b) ncid_core
ncid_core: ID of the NetCDF time-series output file for the deep ice cores
real(dp) beta2_0
BETA2_0: Degree-day factor for ice.
real(dp) target_topo_tau_0
target_topo_tau_0: Relaxation time for target-topography adjustment
real(dp), dimension(-190:10) kappa
KAPPA(n): Tabulated values for the heat conductivity of ice.
integer(i1b), dimension(0:jmax, 0:imax) n_cts_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) omega_t_neu
(.)_neu: New value of quantity (.) computed during an integration step
integer(i4b) gi_time_stp
gi_time_stp: Time step of the data values for the glacial index
integer(i4b) ndata_temp_precip
ndata_temp_precip: Number of surface-temperature and precipitation data
real(dp), dimension(0:jmax, 0:imax) dzm_dtau
dzm_dtau(j,i): Derivative of zm by tau (time)
real(dp), dimension(0:krmax) zeta_r
zeta_r(kr): Sigma coordinate zeta_r of grid point kr
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) omega_c
omega_c(kc,j,i): Water content in the upper (kc) ice domain
real(dp), dimension(:), allocatable y_core
y_core(n): Coordinate eta (= y) of the prescribed borehole positions
real(dp), dimension(:), allocatable temp_precip_time
temp_precip_time(n): Times of the surface-temperature and precipitation data
real(dp), dimension(0:jmax, 0:imax) sq_g11_sgy
sq_g11_sgy(j,i): Square root of g11, at (i,j+1/2)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c_m
temp_c_m(kc,j,i): Melting temperature in the upper (kc) ice domain
real(dp), dimension(0:jmax, 0:imax) qx
qx(j,i): Volume flux in x-direction (depth-integrated vx, at (i+1/2,j))
character(len=64) ch_domain_long
ch_domain_long: Long name of the computational domain
real(dp), dimension(0:jmax, 0:imax) accum_present
accum_present(j,i): Present-day accumulation rate at the ice surface (for EISMINT, ISMIP HEINO and the north and south polar caps of Mars)
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:jmax, 0:imax) dzb_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) enth_t_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) temp_ma_present
temp_ma_present(j,i): Present-day mean annual surface temperature
real(dp) nue
NUE: Water diffusivity in ice.
real(dp), dimension(0:jmax, 0:imax) precip_ma_lgm_anom
precip_ma_lgm_anom(j,i): LGM anomaly (ratio LGM/present) of the mean annual precipitation rate at the...
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) zl0
zl0(j,i): zl for isostatically relaxed ice-free conditions
real(dp), dimension(0:jmax, 0:imax) p_weert_inv
p_weert_inv(j,i): Inverse of p_weert
integer(i4b) gi_time_max
gi_time_max: Maximum time of the data values for the glacial index
real(dp) beta1_lt_0
BETA1_LT_0: Degree-day factor for snow at low summer temperatures.
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream
flag_shelfy_stream(j,i): Shelfy stream flag on the main grid. .true.: grounded ice, and at least one neighbour on the staggered grid is a shelfy stream point .false.: otherwise
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:kcmax, 0:jmax, 0:imax) tyz_c
tyz_c(kc,j,i): Shear stress tyz in the upper (kc) ice domain (at (i,j+1/2,kc))
real(dp), dimension(0:jmax, 0:imax) q_gl_g
q_gl_g(j,i): Volume flux across the grounding line, at (i,j)
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) phi0
PHI0: Standard parallel of the stereographic projection.
real(dp), dimension(0:jmax, 0:imax) vy_s_g
vy_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
character, parameter end_of_line
end_of_line: End-of-line string
real(dp), parameter no_value_pos_2
no_value_pos_2: Positive no-value parameter
integer(i4b), dimension(0:jmax, 0:imax) kc_cts_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp), dimension(0:jmax, 0:imax) sq_g11_sgx
sq_g11_sgx(j,i): Square root of g11, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax, 12) gamma_precip_lgm_anom
gamma_precip_lgm_anom(j,i,n): negative natural logarithm of precip_lgm_anom(j,i,n) ...
real(dp), dimension(0:jmax, 0:imax) vy_m_sia
vy_m_sia(j,i): Mean (depth-averaged) SIA velocity in y-direction, at (i,j+1/2)
integer(i1b), dimension(0:jmax, 0:imax) maske_maxextent
maske_maxextent(j,i): Maximum ice extent mask. 0: not allowed to glaciate, 1: allowed to glaciate...
real(dp) time_target_topo_final
time_target_topo_final: Final time for target-topography adjustment
real(dp), dimension(0:jmax, 0:imax) h_c_neu
(.)_neu: New value of quantity (.) computed during an integration step
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: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:jmax, 0:imax) temp_mj_lgm_anom
temp_mj_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean summer (northern hemisphere...
real(dp), dimension(-190:10) rf
RF(n): Tabulated values for the rate factor of cold ice.
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:jmax, 0:imax) q_b_tot
Q_b_tot(j,i): Sum of Q_bm and Q_tld.
real(dp), dimension(0:jmax, 0:imax) q_bm
Q_bm(j,i): Basal melting rate.
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:jmax, 0:imax) vx_g
vx_g(j,i): Velocity in x-direction of the SSA, at (i,j)
logical, dimension(0:jmax, 0:imax) flag_grounded_front_b_2
flag_grounded_front_b_2(j,i): Marine-terminating grounded front flag. .true.: grounded front point (o...
real(dp), dimension(0:jmax, 0:imax) q_w
q_w(j,i): Scalar volume flux of the basal water
real(dp), dimension(-190:10) c
C(n): Tabulated values for the specific heat of ice.
real(dp), dimension(0:jmax, 0:imax) q_w_y
q_w_y(j,i): Scalar volume flux of the basal water in y-direction
real(dp), dimension(0:kcmax) eaz_c_quotient
eaz_c_quotient(kc): Abbreviation for (eaz_c(kc)-1.0)/(ea-1.0)
real(dp), dimension(-10000:10000) kei
kei(n): Tabulated values of the kei function (Kelvin function of zero order)
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) time_target_topo_init
time_target_topo_init: Initial time for target-topography adjustment
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)
integer(i4b) specmap_time_stp
specmap_time_stp: Time step of the data values for the sea level
integer(i4b), parameter rcl2
rcl2: Maximum length of record for input mask files (with factor 3 safety margin) ...
real(dp), dimension(0:jmax, 0:imax) dzm_dxi
dzm_dxi(j,i): Derivative of zm by xi (at i+1/2,j)
integer(i4b), dimension(0:jmax, 0:imax) ij2n
ij2n: Conversion from 2d index pair (i,j) to linear index n
real(dp), dimension(0:jmax, 0:imax) temp_ma_lgm_anom
temp_ma_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean annual surface temperature ...
integer(i1b) forcing_flag
forcing_flag: Flag for the forcing type. 1: forcing by a spatially constant surface temperature anoma...
real(dp), dimension(0:jmax, 0:imax) temph_b
temph_b(j,i): Basal temperature relative to the pressure melting point
logical, dimension(0:jmax, 0:imax) flag_grounded_front_a_2
flag_grounded_front_a_2(j,i): Land-terminating grounded front flag. .true.: grounded front point (ice...
real(dp), dimension(0:jmax, 0:imax) dzs_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
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) am_perp
am_perp(j,i): Ice volume flux across the z=zm interface
real(dp) beta
BETA: Clausius-Clapeyron gradient of ice.
real(dp), dimension(-jmax:jmax,-imax:imax) dist_dxdy
dist_dxdy(jr,ir): Distance between grid points with delta_i=ir, delta_j=jr
real(dp), parameter pi
pi: Constant pi
real(dp), dimension(0:jmax, 0:imax) dzm_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
integer(i4b) ncid_temp_precip
ncid_temp_precip: ID of the NetCDF file containing the surface-temperature and precipitation data as ...
character(len=16), dimension(:), allocatable ch_core
ch_core(n): Names of the prescribed borehole positions
real(dp), dimension(0:jmax, 0:imax) sq_g11_g
sq_g11_g(j,i): Square root of the coefficient g11 of the metric tensor on grid point (i...
real(dp), parameter no_value_pos_1
no_value_pos_1: Positive no-value parameter
real(dp), dimension(0:jmax, 0:imax) as_perp_apl
as_perp_apl(j,i): Applied accumulation-ablation function (SMB)
logical, dimension(0:jmax, 0:imax) flag_calving_front_1
flag_calving_front_1(j,i): Calving front flag. .true.: calving front point (floating ice point with a...
real(dp), dimension(0:jmax, 0:imax) ratio_sl_x
ratio_sl_x(j,i): Ratio of basal to surface velocity (slip ratio) in x-direction, at (i+1/2...
integer(i4b) grip_time_min
grip_time_min: Minimum time of the data values for the surface temperature anomaly ...
real(dp), dimension(0:jmax, 0:imax) time_lag_asth
time_lag_asth(j,i): Time lag of the relaxing asthenosphere
real(dp), dimension(0:jmax) eta
eta(j): Coordinate eta (= y) of grid point j
real(dp), dimension(:), allocatable x_core
x_core(n): Coordinate xi (= x) of the prescribed borehole positions
integer(i4b), dimension((imax+1)*(jmax+1)) n2i
n2i: Conversion from linear index n to 2d index i
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) c_drag
c_drag(j,i): Auxiliary quantity for the computation of the basal drag
real(dp), dimension(0:imax) xi
xi(i): Coordinate xi (= x) of grid point i
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)) ...
character(len=16) ch_domain_short
ch_domain_short: Short name of the computational domain
real(dp) r_t
R_T: Coefficient of the water-content dependence in the rate factor for temperate ice...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) omega_t
omega_t(kt,j,i): Water content in the lower (kt) ice domain
real(dp) kei_r_incr
kei_r_incr: Increment of the argument r of the tabulated kei function
real(dp), dimension(0:ktmax) zeta_t
zeta_t(kt): Sigma coordinate zeta_t of grid point kt
real(dp) rho_sw
RHO_SW: Density of sea water.
logical, dimension(0:jmax, 0:imax) flag_calving_front_2
flag_calving_front_2(j,i): Calving front flag. .true.: calving front point (ocean point with at least...
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream_y
flag_shelfy_stream_y(j,i): Shelfy stream flag in y-direction, at (i,j+1/2). .true.: shelfy stream point .false.: otherwise
real(dp), dimension(0:jmax, 0:imax) zb_neu
(.)_neu: New value of quantity (.) computed during an integration step
real(dp) l
L: Latent heat of ice.
real(dp), parameter eps_sp_dp
eps_sp_dp: Small number to single-precision accuracy in double precision
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)
integer(i4b) n_data_kei
n_data_kei: Number of tabulated values of the kei function
real(dp), dimension(0:jmax, 0:imax) q_w_x
q_w_x(j,i): Scalar volume flux of the basal water in x-direction
character(len=256) errormsg
errormsg: Error-message string
real(dp) rho
RHO: Density of ice.
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) sigma_c
sigma_c(kc,j,i): Effective stress in the upper (kc) ice domain
real(dp), dimension(0:jmax, 0:imax) vx_b
vx_b(j,i): Velocity in x-direction at the ice base, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) smb_corr_prescribed
smb_corr_prescribed(j,i): Prescribed SMB correction
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) sigma_t
sigma_t(kt,j,i): Effective stress in the lower (kt) ice domain
real(dp) rho_a
RHO_A: Density of the asthenosphere.
integer(i4b), dimension(0:jmax, 0:imax) p_weert
p_weert(j,i): Weertman exponent for the basal shear stress
real(dp), dimension(0:jmax, 0:imax) h_target
H_target(j,i): Target topography (ice thickness)
real(dp), dimension(:), allocatable lambda_core
lambda_core(n): Geographical longitude of the prescribed borehole positions
integer(i4b) n_core
n_core: Number of positions to be considered in the time-series file for deep boreholes ...
real(dp), dimension(0:jmax, 0:imax) zb
zb(j,i): Coordinate z of the ice base
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) omega_c_neu
(.)_neu: New value of quantity (.) computed during an integration step
logical, dimension(0:jmax, 0:imax) flag_grounding_line_2
flag_grounding_line_2(j,i): Grounding line flag. .true.: grounding line point (floating ice point wit...
real(dp), dimension(0:jmax, 0:imax, 12) precip_present
precip_present(j,i,n): Present-day mean monthly precipitation rate at the ice surface ...
real(dp), dimension(0:jmax, 0:imax) am_perp_st
am_perp_st(j,i): Steady-state part of am_perp (without contribution of dzm_dtau)
real(dp), dimension(0:jmax, 0:imax) vx_m_sia
vx_m_sia(j,i): Mean (depth-averaged) SIA velocity in x-direction, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) dzb_dtau
dzb_dtau(j,i): Derivative of zb by tau (time)
real(dp), dimension(0:kcmax) zeta_c
zeta_c(kc): Sigma coordinate zeta_c of grid point kc
real(dp) lambda0
LAMBDA0: Reference longitude (central meridian) of the stereographic projection.
real(dp), dimension(0:jmax, 0:imax, 12) precip_lgm_anom
precip_lgm_anom(j,i,n): LGM anomaly (ratio LGM/present) of the mean monthly precipitation rate at the...
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...
real(dp), dimension(0:jmax, 0:imax, 12) temp_mm_lgm_anom
temp_mm_lgm_anom(j,i,n): LGM anomaly (difference LGM - present) of the mean monthly surface temperatu...
real(dp), dimension(0:jmax, 0:imax) h_w
H_w(j,i): Thickness of the water column under the ice base.
logical, dimension(0:jmax, 0:imax) flag_grounded_front_a_1
flag_grounded_front_a_1(j,i): Land-terminating grounded front flag. .true.: grounded front point (gro...
Declarations of global variables for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) dzs_dtau
dzs_dtau(j,i): Derivative of zs by tau (time)
real(dp), dimension(0:jmax, 0:imax) flex_rig_lith
flex_rig_lith(j,i): Flexural rigidity of the lithosphere
real(dp), dimension(:), allocatable griptemp
griptemp(n): Data values for the surface temperature anomaly
real(dp), dimension(0:jmax, 0:imax) dzl_dtau
dzl_dtau(j,i): Derivative of zl by tau (time)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) tyz_t
tyz_t(kt,j,i): Shear stress tyz in the lower (kt) ice domain (at (i,j+1/2,kt))
real(dp), dimension(0:jmax, 0:imax) sq_g22_g
sq_g22_g(j,i): Square root of the coefficient g22 of the metric tensor on grid point (i...
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)) ...
real(dp), dimension(0:jmax, 0:imax) dzb_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) qy
qy(j,i): Volume flux in y-direction (depth-integrated vy, at (i,j+1/2))