SICOPOLIS V3.2
 All Classes Files Functions Variables Macros
sico_variables.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
4 !
5 !> @file
6 !!
7 !! Declarations of global variables for SICOPOLIS.
8 !!
9 !! @section Copyright
10 !!
11 !! Copyright 2009-2016 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
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(i2b), dimension(0:JMAX,0:IMAX) :: maske
50 !> maske_help(j,i): Present-day ice-land-ocean mask
51  integer(i2b), dimension(0:JMAX,0:IMAX) :: maske_help
52 !> (.)_neu: New value of quantity (.) computed during an integration step
53  integer(i2b), 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(i2b), dimension(0:JMAX,0:IMAX) :: n_cts
60 !> (.)_neu: New value of quantity (.) computed during an integration step
61  integer(i2b), dimension(0:JMAX,0:IMAX) :: n_cts_neu
62 !> kc_cts(j,i): Position kc of the CTS (for COLD, ENTC, ENTM)
63  integer(i2b), dimension(0:JMAX,0:IMAX) :: kc_cts
64 !> (.)_neu: New value of quantity (.) computed during an integration step
65  integer(i2b), dimension(0:JMAX,0:IMAX) :: kc_cts_neu
66 !> flag_grounding_line_1(j,i): Grounding line flag.
67 !> .true.: grounding line point
68 !> (grounded ice point with at least
69 !> one floating ice neighbour),
70 !> .false.: otherwise
71  logical, dimension(0:JMAX,0:IMAX) :: flag_grounding_line_1
72 !> flag_grounding_line_2(j,i): Grounding line flag.
73 !> .true.: grounding line point
74 !> (floating ice point with at least
75 !> one grounded ice neighbour),
76 !> .false.: otherwise
77  logical, dimension(0:JMAX,0:IMAX) :: flag_grounding_line_2
78 !> flag_calving_front_1(j,i): Calving front flag.
79 !> .true.: calving front point
80 !> (floating ice point with at least
81 !> one ocean neighbour),
82 !> .false.: otherwise
83  logical, dimension(0:JMAX,0:IMAX) :: flag_calving_front_1
84 !> flag_calving_front_2(j,i): Calving front flag.
85 !> .true.: calving front point
86 !> (ocean point with at least
87 !> one floating ice neighbour),
88 !> .false.: otherwise
89  logical, dimension(0:JMAX,0:IMAX) :: flag_calving_front_2
90 !> flag_shelfy_stream_x(j,i): Shelfy stream flag in x-direction, at (i+1/2,j).
91 !> .true.: shelfy stream point
92 !> .false.: otherwise
93  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream_x
94 !> flag_shelfy_stream_y(j,i): Shelfy stream flag in y-direction, at (i,j+1/2).
95 !> .true.: shelfy stream point
96 !> .false.: otherwise
97  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream_y
98 !> flag_shelfy_stream(j,i): Shelfy stream flag on the main grid.
99 !> .true.: grounded ice,
100 !> and at least one neighbour on the
101 !> staggered grid is a shelfy stream point
102 !> .false.: otherwise
103  logical, dimension(0:JMAX,0:IMAX) :: flag_shelfy_stream
104 !> xi(i): Coordinate xi (= x) of grid point i
105  real(dp), dimension(0:IMAX) :: xi
106 !> eta(j): Coordinate eta (= y) of grid point j
107  real(dp), dimension(0:JMAX) :: eta
108 !> zeta_c(kc): Sigma coordinate zeta_c of grid point kc
109  real(dp), dimension(0:KCMAX) :: zeta_c
110 !> zeta_t(kt): Sigma coordinate zeta_t of grid point kt
111  real(dp), dimension(0:KTMAX) :: zeta_t
112 !> zeta_r(kr): Sigma coordinate zeta_r of grid point kr
113  real(dp), dimension(0:KRMAX) :: zeta_r
114 !> aa: Exponential stretch parameter of the non-equidistant vertical grid
115 !> in the upper (kc) ice domain
116  real(dp) :: aa
117 !> flag_aa_nonzero: Flag for the exponential stretch parameter aa.
118 !> .true.: aa greater than zero (non-equidistant grid)
119 !> .false.: aa equal to zero (equidistant grid)
120  logical :: flag_aa_nonzero
121 !> ea: Abbreviation for exp(aa)
122  real(dp) :: ea
123 !> eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
124  real(dp), dimension(0:KCMAX) :: eaz_c
125 !> eaz_c_quotient(kc): Abbreviation for (eaz_c(kc)-1.0)/(ea-1.0)
126  real(dp), dimension(0:KCMAX) :: eaz_c_quotient
127 
128 !> lambda(j,i): Geographic longitude of grid point (i,j)
129  real(dp), dimension(0:JMAX,0:IMAX) :: lambda
130 !> phi(j,i): Geographic latitude of grid point (i,j)
131  real(dp), dimension(0:JMAX,0:IMAX) :: phi
132 !> area(j,i): Area of grid cell associated with grid point (i,j)
133  real(dp), dimension(0:JMAX,0:IMAX) :: area
134 !> sq_g11_g(j,i): Square root of the coefficient g11 of the metric tensor
135 !> on grid point (i,j)
136  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_g
137 !> sq_g22_g(j,i): Square root of the coefficient g22 of the metric tensor
138 !> on grid point (i,j)
139  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_g
140 !> insq_g11_g(j,i): Inverse square root of g11 on grid point (i,j)
141  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g11_g
142 !> insq_g22_g(j,i): Inverse square root of g22 on grid point (i,j)
143  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g22_g
144 !> sq_g11_sgx(j,i): Square root of g11, at (i+1/2,j)
145  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_sgx
146 !> sq_g11_sgy(j,i): Square root of g11, at (i,j+1/2)
147  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g11_sgy
148 !> sq_g22_sgx(j,i): Square root of g22, at (i+1/2,j)
149  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_sgx
150 !> sq_g22_sgy(j,i): Square root of g22, at (i,j+1/2)
151  real(dp), dimension(0:JMAX,0:IMAX) :: sq_g22_sgy
152 !> insq_g11_sgx(j,i): Inverse square root of g11, at (i+1/2,j)
153  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g11_sgx
154 !> insq_g22_sgy(j,i): Inverse square root of g22, at (i,j+1/2)
155  real(dp), dimension(0:JMAX,0:IMAX) :: insq_g22_sgy
156 !> zs(j,i): Coordinate z of the surface topography
157  real(dp), dimension(0:JMAX,0:IMAX) :: zs
158 !> zm(j,i): Coordinate z of the bottom of the upper (kc) ice domain
159 !> = top of the lower (kt) ice domain
160 !> (position of the CTS for POLY,
161 !> equal to zb for ISOT, COLD, ENTC, ENTM)
162  real(dp), dimension(0:JMAX,0:IMAX) :: zm
163 !> zb(j,i): Coordinate z of the ice base
164  real(dp), dimension(0:JMAX,0:IMAX) :: zb
165 !> zl(j,i): Coordinate z of the lithosphere surface
166  real(dp), dimension(0:JMAX,0:IMAX) :: zl
167 !> zl0(j,i): zl for isostatically relaxed ice-free conditions
168  real(dp), dimension(0:JMAX,0:IMAX) :: zl0
169 !> wss(j,i): Isostatic steady-state displacement of the lithosphere
170  real(dp), dimension(0:JMAX,0:IMAX) :: wss
171 !> flex_rig_lith(j,i): Flexural rigidity of the lithosphere
172  real(dp), dimension(0:JMAX,0:IMAX) :: flex_rig_lith
173 !> time_lag_asth(j,i): Time lag of the relaxing asthenosphere
174  real(dp), dimension(0:JMAX,0:IMAX) :: time_lag_asth
175 !> H_c(j,i): Thickness of ice in the upper (kc) domain
176 !> (thickness of the cold-ice layer for POLY,
177 !> entire ice thickness for ISOT, COLD, ENTC, ENTM)
178  real(dp), dimension(0:JMAX,0:IMAX) :: H_c
179 !> H_t(j,i): Thickness of ice in the lower (kt) domain
180 !> (thickness of the temperate layer for POLY,
181 !> redundant and thus set to zero for ISOT, COLD, ENTC, ENTM)
182  real(dp), dimension(0:JMAX,0:IMAX) :: H_t
183 !> dzs_dxi(j,i): Derivative of zs by xi (at i+1/2,j)
184  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dxi
185 !> dzm_dxi(j,i): Derivative of zm by xi (at i+1/2,j)
186  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dxi
187 !> dzb_dxi(j,i): Derivative of zb by xi (at i+1/2,j)
188  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dxi
189 !> dH_c_dxi(j,i): Derivative of H_c by xi (at i+1/2,j)
190  real(dp), dimension(0:JMAX,0:IMAX) :: dH_c_dxi
191 !> dH_t_dxi(j,i): Derivative of H_t by xi (at i+1/2,j)
192  real(dp), dimension(0:JMAX,0:IMAX) :: dH_t_dxi
193 !> dzs_deta(j,i): Derivative of zs by eta (at i,j+1/2)
194  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_deta
195 !> dzm_deta(j,i): Derivative of zm by eta (at i,j+1/2)
196  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_deta
197 !> dzb_deta(j,i): Derivative of zb by eta (at i,j+1/2)
198  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_deta
199 !> dH_c_deta(j,i): Derivative of H_c by eta (at i,j+1/2)
200  real(dp), dimension(0:JMAX,0:IMAX) :: dH_c_deta
201 !> dH_t_deta(j,i): Derivative of H_t by eta (at i,j+1/2)
202  real(dp), dimension(0:JMAX,0:IMAX) :: dH_t_deta
203 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
204  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dxi_g
205 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
206  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dxi_g
207 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
208  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dxi_g
209 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
210  real(dp), dimension(0:JMAX,0:IMAX) :: dH_c_dxi_g
211 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
212  real(dp), dimension(0:JMAX,0:IMAX) :: dH_t_dxi_g
213 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
214  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_deta_g
215 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
216  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_deta_g
217 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
218  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_deta_g
219 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
220  real(dp), dimension(0:JMAX,0:IMAX) :: dH_c_deta_g
221 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
222  real(dp), dimension(0:JMAX,0:IMAX) :: dH_t_deta_g
223 !> dzs_dtau(j,i): Derivative of zs by tau (time)
224  real(dp), dimension(0:JMAX,0:IMAX) :: dzs_dtau
225 !> dzm_dtau(j,i): Derivative of zm by tau (time)
226  real(dp), dimension(0:JMAX,0:IMAX) :: dzm_dtau
227 !> dzb_dtau(j,i): Derivative of zb by tau (time)
228  real(dp), dimension(0:JMAX,0:IMAX) :: dzb_dtau
229 !> dzl_dtau(j,i): Derivative of zl by tau (time)
230  real(dp), dimension(0:JMAX,0:IMAX) :: dzl_dtau
231 !> dH_c_dtau(j,i): Derivative of H_c by tau (time)
232  real(dp), dimension(0:JMAX,0:IMAX) :: dH_c_dtau
233 !> dH_t_dtau(j,i): Derivative of H_t by tau (time)
234  real(dp), dimension(0:JMAX,0:IMAX) :: dH_t_dtau
235 !> p_weert(j,i): Weertman exponent for the basal shear stress
236  integer(i4b), dimension(0:JMAX,0:IMAX) :: p_weert
237 !> q_weert(j,i): Weertman exponent for the basal pressure
238  integer(i4b), dimension(0:JMAX,0:IMAX) :: q_weert
239 !> p_weert_inv(j,i): Inverse of p_weert
240  real(dp), dimension(0:JMAX,0:IMAX) :: p_weert_inv
241 !> c_slide(j,i): Basal sliding coefficient
242  real(dp), dimension(0:JMAX,0:IMAX) :: c_slide
243 !> d_help_b(j,i): Auxiliary quantity for the computation of vx_b and vy_b
244  real(dp), dimension(0:JMAX,0:IMAX) :: d_help_b
245 !> c_drag(j,i): Auxiliary quantity for the computation of the basal drag
246  real(dp), dimension(0:JMAX,0:IMAX) :: c_drag
247 !> p_b_w(j,i): Basal water pressure
248  real(dp), dimension(0:JMAX,0:IMAX) :: p_b_w
249 !> vx_b(j,i): Velocity in x-direction at the ice base, at (i+1/2,j)
250  real(dp), dimension(0:JMAX,0:IMAX) :: vx_b
251 !> vy_b(j,i): Velocity in y-direction at the ice base, at (i,j+1/2)
252  real(dp), dimension(0:JMAX,0:IMAX) :: vy_b
253 !> vx_m(j,i): Mean (depth-averaged) velocity in x-direction, at (i+1/2,j)
254  real(dp), dimension(0:JMAX,0:IMAX) :: vx_m
255 !> vy_m(j,i): Mean (depth-averaged) velocity in y-direction, at (i,j+1/2)
256  real(dp), dimension(0:JMAX,0:IMAX) :: vy_m
257 !> ratio_sl_x(j,i): Ratio of basal to surface velocity (slip ratio)
258 !> in x-direction, at (i+1/2,j)
259  real(dp), dimension(0:JMAX,0:IMAX) :: ratio_sl_x
260 !> ratio_sl_y(j,i): Ratio of basal to surface velocity (slip ratio)
261 !> in y-direction, at (i,j+1/2)
262  real(dp), dimension(0:JMAX,0:IMAX) :: ratio_sl_y
263 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
264  real(dp), dimension(0:JMAX,0:IMAX) :: vx_b_g
265 !> (.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
266  real(dp), dimension(0:JMAX,0:IMAX) :: vy_b_g
267 !> vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
268  real(dp), dimension(0:JMAX,0:IMAX) :: vz_b
269 !> vz_m(j,i): Velocity in z-direction at the position z=zm (interface between
270 !> the upper (kc) and the lower (kt) domain), at (i,j)
271  real(dp), dimension(0:JMAX,0:IMAX) :: vz_m
272 !> vx_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
273  real(dp), dimension(0:JMAX,0:IMAX) :: vx_s_g
274 !> vy_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
275  real(dp), dimension(0:JMAX,0:IMAX) :: vy_s_g
276 !> vz_s(j,i): Velocity in z-direction at the ice surface, at (i,j)
277  real(dp), dimension(0:JMAX,0:IMAX) :: vz_s
278 !> flui_ave_sia(j,i): Depth-averaged fluidity of the SIA
279  real(dp), dimension(0:JMAX,0:IMAX) :: flui_ave_sia
280 !> h_diff(j,i): Diffusivity of the SIA evolution equation of the ice surface
281  real(dp), dimension(0:JMAX,0:IMAX) :: h_diff
282 !> qx(j,i): Volume flux in x-direction (depth-integrated vx, at (i+1/2,j))
283  real(dp), dimension(0:JMAX,0:IMAX) :: qx
284 !> qy(j,i): Volume flux in y-direction (depth-integrated vy, at (i,j+1/2))
285  real(dp), dimension(0:JMAX,0:IMAX) :: qy
286 !> q_gl_g(j,i): Volume flux across the grounding line, at (i,j)
287  real(dp), dimension(0:JMAX,0:IMAX) :: q_gl_g
288 !> q_geo(j,i): Geothermal heat flux
289  real(dp), dimension(0:JMAX,0:IMAX) :: q_geo
290 !> temp_b(j,i): Basal temperature
291  real(dp), dimension(0:JMAX,0:IMAX) :: temp_b
292 !> temph_b(j,i): Basal temperature relative to the pressure melting point
293  real(dp), dimension(0:JMAX,0:IMAX) :: temph_b
294 !> Q_bm(j,i): Basal melting rate
295  real(dp), dimension(0:JMAX,0:IMAX) :: Q_bm
296 !> Q_tld(j,i): Water drainage rate from the temperate layer
297  real(dp), dimension(0:JMAX,0:IMAX) :: Q_tld
298 !> Q_b_tot(j,i): Sum of Q_bm and Q_tld
299  real(dp), dimension(0:JMAX,0:IMAX) :: Q_b_tot
300 !> H_w(j,i): Thickness of the water column under the ice base
301  real(dp), dimension(0:JMAX,0:IMAX) :: H_w
302 !> accum(j,i): Accumulation rate at the ice surface
303 !> (includes liquid precipitation = rainfall!)
304  real(dp), dimension(0:JMAX,0:IMAX) :: accum
305 !> evap(j,i): Evaporation rate at the ice surface
306  real(dp), dimension(0:JMAX,0:IMAX) :: evap
307 !> runoff(j,i): Runoff rate at the ice surface
308  real(dp), dimension(0:JMAX,0:IMAX) :: runoff
309 !> as_perp(j,i): Accumulation-ablation function at the ice surface
310  real(dp), dimension(0:JMAX,0:IMAX) :: as_perp
311 !> temp_s(j,i): Ice surface temperature
312  real(dp), dimension(0:JMAX,0:IMAX) :: temp_s
313 !> am_perp(j,i): Ice volume flux across the z=zm interface
314  real(dp), dimension(0:JMAX,0:IMAX) :: am_perp
315 !> am_perp_st(j,i): Steady-state part of am_perp
316 !> (without contribution of dzm_dtau)
317  real(dp), dimension(0:JMAX,0:IMAX) :: am_perp_st
318 !> (.)_neu: New value of quantity (.) computed during an integration step
319  real(dp), dimension(0:JMAX,0:IMAX) :: zs_neu
320 !> (.)_neu: New value of quantity (.) computed during an integration step
321  real(dp), dimension(0:JMAX,0:IMAX) :: zm_neu
322 !> (.)_neu: New value of quantity (.) computed during an integration step
323  real(dp), dimension(0:JMAX,0:IMAX) :: zb_neu
324 !> (.)_neu: New value of quantity (.) computed during an integration step
325  real(dp), dimension(0:JMAX,0:IMAX) :: zl_neu
326 !> (.)_neu: New value of quantity (.) computed during an integration step
327  real(dp), dimension(0:JMAX,0:IMAX) :: H_c_neu
328 !> (.)_neu: New value of quantity (.) computed during an integration step
329  real(dp), dimension(0:JMAX,0:IMAX) :: H_t_neu
330 
331 !> zs_ref(j,i): Reference elevation for precip_present, temp_ma_present
332 !> and temp_mj_present
333  real(dp), dimension(0:JMAX,0:IMAX) :: zs_ref
334 
335 !> accum_present(j,i): Present-day accumulation rate at the ice surface
336 !> (for EISMINT, ISMIP HEINO and the north and south
337 !> polar caps of Mars)
338  real(dp), dimension(0:JMAX,0:IMAX) :: accum_present
339 !> precip_ma_present(j,i): Present-day mean annual precipitation rate
340 !> at the ice surface
341  real(dp), dimension(0:JMAX,0:IMAX) :: precip_ma_present
342 !> precip_ma_lgm_anom(j,i): LGM anomaly (ratio LGM/present) of the mean annual
343 !> precipitation rate at the ice surface
344  real(dp), dimension(0:JMAX,0:IMAX) :: precip_ma_lgm_anom
345 !> temp_ma_present(j,i): Present-day mean annual surface temperature
346  real(dp), dimension(0:JMAX,0:IMAX) :: temp_ma_present
347 !> temp_mj_present(j,i): Present-day mean summer (northern hemisphere: July,
348 !> southern hemisphere: January) surface temperature
349  real(dp), dimension(0:JMAX,0:IMAX) :: temp_mj_present
350 !> temp_ma_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean
351 !> annual surface temperature
352  real(dp), dimension(0:JMAX,0:IMAX) :: temp_ma_lgm_anom
353 !> temp_mj_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean
354 !> summer (northern hemisphere: July, southern
355 !> hemisphere: January) surface temperature
356  real(dp), dimension(0:JMAX,0:IMAX) :: temp_mj_lgm_anom
357 
358 !> dist_dxdy(jr,ir): Distance between grid points with delta_i=ir, delta_j=jr
359  real(dp), dimension(-JMAX:JMAX,-IMAX:IMAX) :: dist_dxdy
360 
361 !> precip_present(j,i,n): Present-day mean monthly precipitation rate
362 !> at the ice surface
363  real(dp), dimension(0:JMAX,0:IMAX,12) :: precip_present
364 !> precip_lgm_anom(j,i,n): LGM anomaly (ratio LGM/present) of the mean monthly
365 !> precipitation rate at the ice surface
366  real(dp), dimension(0:JMAX,0:IMAX,12) :: precip_lgm_anom
367 !> gamma_precip_lgm_anom(j,i,n): negative natural logarithm of
368 !> precip_lgm_anom(j,i,n)
369  real(dp), dimension(0:JMAX,0:IMAX,12) :: gamma_precip_lgm_anom
370 !> temp_mm_present(j,i,n): Present-day mean monthly surface temperature
371  real(dp), dimension(0:JMAX,0:IMAX,12) :: temp_mm_present
372 !> temp_mm_lgm_anom(j,i,n): LGM anomaly (difference LGM - present) of the mean
373 !> monthly surface temperature
374  real(dp), dimension(0:JMAX,0:IMAX,12) :: temp_mm_lgm_anom
375 
376 !> d_help_c(kc,j,i): Auxiliary quantity for the computation of vx, vy und zs
377  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: d_help_c
378 !> vx_c(kc,j,i): Velocity in x-direction in the upper (kc) ice domain
379 !> (at (i+1/2,j,kc))
380  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vx_c
381 !> vy_c(kc,j,i): Velocity in y-direction in the upper (kc) ice domain
382 !> (at (i,j+1/2,kc))
383  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vy_c
384 !> vz_c(kc,j,i): Velocity in z-direction in the upper (kc) ice domain
385 !> (at (i,j,kc+1/2))
386  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: vz_c
387 !> temp_c(kc,j,i): Temperature in the upper (kc) ice domain
388  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c
389 !> (.)_neu: New value of quantity (.) computed during an integration step
390  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c_neu
391 !> temp_c_m(kc,j,i): Melting temperature in the upper (kc) ice domain
392  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: temp_c_m
393 !> age_c(kc,j,i): Age in the upper (kc) ice domain
394  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_c
395 !> (.)_neu: New value of quantity (.) computed during an integration step
396  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: age_c_neu
397 !> txz_c(kc,j,i): Shear stress txz in the upper (kc) ice domain
398 !> (at (i+1/2,j,kc))
399  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: txz_c
400 !> tyz_c(kc,j,i): Shear stress tyz in the upper (kc) ice domain
401 !> (at (i,j+1/2,kc))
402  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: tyz_c
403 !> sigma_c(kc,j,i): Effective stress in the upper (kc) ice domain
404  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: sigma_c
405 !> enh_c(kc,j,i): Flow enhancement factor in the upper (kc) ice domain
406  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enh_c
407 
408 !> de_ssa(j,i): Effective strain rate of the SSA, at (i,j)
409  real(dp), dimension(0:JMAX,0:IMAX) :: de_ssa
410 !> vis_int_g(j,i): Depth-integrated viscosity of the SSA, at (i,j)
411  real(dp), dimension(0:JMAX,0:IMAX) :: vis_int_g
412 !> vx_g(j,i): Velocity in x-direction of the SSA, at (i,j)
413  real(dp), dimension(0:JMAX,0:IMAX) :: vx_g
414 !> vy_g(j,i): Velocity in y-direction of the SSA, at (i,j)
415  real(dp), dimension(0:JMAX,0:IMAX) :: vy_g
416 
417 !> d_help_t(kt,j,i): Auxiliary quantity for the computation of vx, vy und zs
418  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: d_help_t
419 !> vx_t(kt,j,i): Velocity in x-direction in the lower (kt) ice domain
420 !> (at (i+1/2,j,kt))
421  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vx_t
422 !> vy_t(kt,j,i): Velocity in y-direction in the lower (kt) ice domain
423 !> (at (i,j+1/2,kt))
424  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vy_t
425 !> vz_t(kt,j,i): Velocity in z-direction in the lower (kt) ice domain
426 !> (at (i,j,kt+1/2))
427  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: vz_t
428 !> omega_t(kt,j,i): Water content in the lower (kt) ice domain
429  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: omega_t
430 !> (.)_neu: New value of quantity (.) computed during an integration step
431  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: omega_t_neu
432 !> temp_t_m(kt,j,i): Melting temperature in the lower (kt) ice domain
433  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: temp_t_m
434 !> age_t(kt,j,i): Age in the lower (kt) ice domain
435  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: age_t
436 !> (.)_neu: New value of quantity (.) computed during an integration step
437  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: age_t_neu
438 !> txz_t(kt,j,i): Shear stress txz in the lower (kt) ice domain
439 !> (at (i+1/2,j,kt))
440  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: txz_t
441 !> tyz_t(kt,j,i): Shear stress tyz in the lower (kt) ice domain
442 !> (at (i,j+1/2,kt))
443  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: tyz_t
444 !> sigma_t(kt,j,i): Effective stress in the lower (kt) ice domain
445  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: sigma_t
446 !> enh_t(kt,j,i): Flow enhancement factor in the lower (kt) ice domain
447  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enh_t
448 
449 !> temp_r(kr,j,i): Temperature in the bedrock
450  real(dp), dimension(0:KRMAX,0:JMAX,0:IMAX) :: temp_r
451 !> (.)_neu: New value of quantity (.) computed during an integration step
452  real(dp), dimension(0:KRMAX,0:JMAX,0:IMAX) :: temp_r_neu
453 
454 !> enth_c(kc,j,i): Enthalpy in the upper (kc) ice domain
455  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enth_c
456 !> (.)_neu: New value of quantity (.) computed during an integration step
457  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: enth_c_neu
458 !> omega_c(kc,j,i): Water content in the upper (kc) ice domain
459  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: omega_c
460 !> (.)_neu: New value of quantity (.) computed during an integration step
461  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: omega_c_neu
462 
463 !> enth_t(kt,j,i): Enthalpy in the lower (kt) ice domain
464  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enth_t
465 !> (.)_neu: New value of quantity (.) computed during an integration step
466  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: enth_t_neu
467 
468 !> dxx_c(kc,j,i): Strain rate dxx in the upper (kc) ice domain
469  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxx_c
470 !> dyy_c(kc,j,i): Strain rate dyy in the upper (kc) ice domain
471  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dyy_c
472 !> dxy_c(kc,j,i): Strain rate dxy in the upper (kc) ice domain
473  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxy_c
474 !> dxz_c(kc,j,i): Strain rate dxz in the upper (kc) ice domain
475  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dxz_c
476 !> dyz_c(kc,j,i): Strain rate dyz in the upper (kc) ice domain
477  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: dyz_c
478 !> de_c(kc,j,i): Full effective strain rate in the upper (kc) ice domain
479  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: de_c
480 !> lambda_shear_c(kc,j,i): Shear fraction in the upper (kc) ice domain
481  real(dp), dimension(0:KCMAX,0:JMAX,0:IMAX) :: lambda_shear_c
482 
483 !> dxx_t(kt,j,i): Strain rate dxx in the lower (kt) ice domain
484  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxx_t
485 !> dyy_t(kt,j,i): Strain rate dyy in the lower (kt) ice domain
486  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dyy_t
487 !> dxy_t(kt,j,i): Strain rate dxy in the lower (kt) ice domain
488  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxy_t
489 !> dxz_t(kt,j,i): Strain rate dxz in the lower (kt) ice domain
490  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dxz_t
491 !> dyz_t(kt,j,i): Strain rate dyz in the lower (kt) ice domain
492  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: dyz_t
493 !> de_t(kt,j,i): Full effective strain rate in the lower (kt) ice domain
494  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: de_t
495 !> lambda_shear_t(kt,j,i): Shear fraction in the lower (kt) ice domain
496  real(dp), dimension(0:KTMAX,0:JMAX,0:IMAX) :: lambda_shear_t
497 
498 !-------- Physical parameters --------
499 
500 !> RHO: Density of ice
501  real(dp) :: RHO
502 !> RHO_W: Density of pure water
503  real(dp) :: RHO_W
504 !> RHO_SW: Density of sea water
505  real(dp) :: RHO_SW
506 !> L: Latent heat of ice
507  real(dp) :: L
508 !> G: Acceleration due to gravity
509  real(dp) :: G
510 !> NUE: Water diffusivity in ice
511  real(dp) :: NUE
512 !> BETA: Clausius-Clapeyron gradient of ice
513  real(dp) :: BETA
514 !> DELTA_TM_SW: Melting point depression of sea water due to its
515 !> average salinity
516  real(dp) :: DELTA_TM_SW
517 !> OMEGA_MAX: Threshold value for the water content of temperate ice
518  real(dp) :: OMEGA_MAX
519 !> H_R: Thickness of the modelled lithosphere layer
520  real(dp) :: H_R
521 !> RHO_C_R: Density times specific heat of the lithosphere
522  real(dp) :: RHO_C_R
523 !> KAPPA_R: Heat conductivity of the lithosphere
524  real(dp) :: KAPPA_R
525 !> RHO_A: Density of the asthenosphere
526  real(dp) :: RHO_A
527 !> R_T: Coefficient of the water-content dependence in the rate factor
528 !> for temperate ice
529  real(dp) :: R_T
530 !> R: Radius of the planet
531  real(dp) :: R
532 !> A: Semi-major axis of the planet
533  real(dp) :: A
534 !> B: Semi-minor axis of the planet
535  real(dp) :: B
536 !> LAMBDA0: Reference longitude (central meridian) of the stereographic
537 !> projection
538  real(dp) :: LAMBDA0
539 !> PHI0: Standard parallel of the stereographic projection
540  real(dp) :: PHI0
541 !> S_STAT_0: Standard deviation of the air termperature for the
542 !> degree-day model
543  real(dp) :: S_STAT_0
544 !> BETA1_0: Degree-day factor for snow
545  real(dp) :: BETA1_0
546 !> BETA1_LT_0: Degree-day factor for snow at low summer temperatures
547  real(dp) :: BETA1_LT_0
548 !> BETA1_HT_0: Degree-day factor for snow at high summer temperatures
549  real(dp) :: BETA1_HT_0
550 !> BETA2_0: Degree-day factor for ice
551  real(dp) :: BETA2_0
552 !> BETA2_LT_0: Degree-day factor for ice at low summer temperatures
553  real(dp) :: BETA2_LT_0
554 !> BETA2_HT_0: Degree-day factor for ice at high summer temperatures
555  real(dp) :: BETA2_HT_0
556 !> PHI_SEP_0: Separation latitude for the computation of the degree-day
557 !> factors beta1 and beta2: Equatorward of phi_sep, only the
558 !> high-temperature values are used, whereas poleward of phi_sep,
559 !> beta1 and beta2 are temperature-dependent
560  real(dp) :: PHI_SEP_0
561 !> PMAX_0: Saturation factor for the formation of superimposed ice
562  real(dp) :: PMAX_0
563 !> MU_0: Firn-warming correction
564  real(dp) :: MU_0
565 
566 !> RF(n): Tabulated values for the rate factor of cold ice
567  real(dp), dimension(-190:10) :: RF
568 !> KAPPA(n): Tabulated values for the heat conductivity of ice
569  real(dp), dimension(-190:10) :: KAPPA
570 !> C(n): Tabulated values for the specific heat of ice
571  real(dp), dimension(-190:10) :: C
572 
573 !-------- Mathematical constants --------
574 
575 !> pi: Constant pi
576  real(dp), parameter :: pi = 3.141592653589793_dp
577 !> pi_inv: Inverse of pi
578  real(dp), parameter :: pi_inv = 1.0_dp/pi
579 !> pi_180: pi divided by 180 (-> deg to rad)
580  real(dp), parameter :: pi_180 = pi/180.0_dp
581 !> pi_180_inv: 180 divided by pi (-> rad to deg)
582  real(dp), parameter :: pi_180_inv = 180.0_dp/pi
583 !> eps: Small number
584  real(dp), parameter :: eps = 1.0e-05_dp
585 !> epsi: Very small number
586  real(dp), parameter :: epsi = 1.0e-12_dp
587 
588 !-------- Further quantities --------
589 
590 !> year_zero: SICOPOLIS year zero in astronomical year numbering
591 !> [ = signed year CE (AD) ]
592  real(dp) :: year_zero
593 
594 !> ch_domain_long: Long name of the computational domain
595  character(len=64) :: ch_domain_long
596 !> ch_domain_short: Short name of the computational domain
597  character(len=16) :: ch_domain_short
598 
599 !> forcing_flag: Flag for the forcing type.
600 !> 1: forcing by a spatially constant surface temperature
601 !> anomaly (delta_ts),
602 !> 2: forcing by a glacial index (glac_index),
603 !> 3: forcing by time-dependent surface temperature
604 !> and precipitation data.
605  integer(i2b) :: forcing_flag
606 
607 !> n_core: Number of positions to be considered in the time-series file
608 !> for deep boreholes
609  integer(i4b) :: n_core
610 !> lambda_core(n): Geographical longitude of the prescribed borehole positions
611  real(dp), dimension(:), allocatable :: lambda_core
612 !> phi_core(n): Geographical latitude of the prescribed borehole positions
613  real(dp), dimension(:), allocatable :: phi_core
614 !> x_core(n): Coordinate xi (= x) of the prescribed borehole positions
615  real(dp), dimension(:), allocatable :: x_core
616 !> y_core(n): Coordinate eta (= y) of the prescribed borehole positions
617  real(dp), dimension(:), allocatable :: y_core
618 
619 !> grip_time_min: Minimum time of the data values for the
620 !> surface temperature anomaly
621  integer(i4b) :: grip_time_min
622 !> grip_time_stp: Time step of the data values for the
623 !> surface temperature anomaly
624  integer(i4b) :: grip_time_stp
625 !> grip_time_max: Maximum time of the data values for the
626 !> surface temperature anomaly
627  integer(i4b) :: grip_time_max
628 !> ndata_grip: Number of data values for the surface temperature anomaly
629  integer(i4b) :: ndata_grip
630 !> griptemp(n): Data values for the surface temperature anomaly
631  real(dp), dimension(:), allocatable :: griptemp
632 
633 !> gi_time_min: Minimum time of the data values for the glacial index
634  integer(i4b) :: gi_time_min
635 !> gi_time_stp: Time step of the data values for the glacial index
636  integer(i4b) :: gi_time_stp
637 !> gi_time_max: Maximum time of the data values for the glacial index
638  integer(i4b) :: gi_time_max
639 !> ndata_gi: Number of data values for the glacial index
640  integer(i4b) :: ndata_gi
641 !> glacial_index(n): Data values for the glacial index
642  real(dp), dimension(:), allocatable :: glacial_index
643 
644 !> specmap_time_min: Minimum time of the data values for the sea level
645  integer(i4b) :: specmap_time_min
646 !> specmap_time_stp: Time step of the data values for the sea level
647  integer(i4b) :: specmap_time_stp
648 !> specmap_time_max: Maximum time of the data values for the sea level
649  integer(i4b) :: specmap_time_max
650 !> ndata_specmap: Number of data values for the sea level
651  integer(i4b) :: ndata_specmap
652 !> specmap_zsl(n): Data values for the sea level
653  real(dp), dimension(:), allocatable :: specmap_zsl
654 
655 !> time_target_topo_init: Initial time for target-topography adjustment
656  real(dp) :: time_target_topo_init
657 !> time_target_topo_final: Final time for target-topography adjustment
658  real(dp) :: time_target_topo_final
659 !> maske_target(j,i): Target topography (ice-land-ocean mask)
660  integer(i2b), dimension(0:JMAX,0:IMAX) :: maske_target
661 !> zs_target(j,i): Target topography (ice surface)
662  real(dp), dimension(0:JMAX,0:IMAX) :: zs_target
663 !> zb_target(j,i): Target topography (ice base)
664  real(dp), dimension(0:JMAX,0:IMAX) :: zb_target
665 !> zl_target(j,i): Target topography (lithosphere surface)
666  real(dp), dimension(0:JMAX,0:IMAX) :: zl_target
667 !> H_target(j,i): Target topography (ice thickness)
668  real(dp), dimension(0:JMAX,0:IMAX) :: H_target
669 
670 !> maske_maxextent(j,i): Maximum ice extent mask.
671 !> 0: not allowed to glaciate,
672 !> 1: allowed to glaciate.
673  integer(i2b), dimension(0:JMAX,0:IMAX) :: maske_maxextent
674 
675 !> ncid_temp_precip: ID of the NetCDF file containing the
676 !> surface-temperature and precipitation data
677 !> as functions of time
678  integer(i4b) :: ncid_temp_precip
679 !> ndata_temp_precip: Number of surface-temperature
680 !> and precipitation data
681  integer(i4b) :: ndata_temp_precip
682 !> temp_precip_time_min: Minimum time of the surface-temperature
683 !> and precipitation data
684  real(dp) :: temp_precip_time_min
685 !> temp_precip_time_stp: Time step of the surface-temperature
686 !> and precipitation data
687  real(dp) :: temp_precip_time_stp
688 !> temp_precip_time_max: Maximum time of the surface-temperature
689 !> and precipitation data
690  real(dp) :: temp_precip_time_max
691 !> temp_precip_time(n): Times of the surface-temperature
692 !> and precipitation data
693  real(dp), dimension(:), allocatable :: temp_precip_time
694 
695 !> kei(n): Tabulated values of the kei function (Kelvin function of zero order)
696  real(dp), dimension(-10000:10000) :: kei
697 !> n_data_kei: Number of tabulated values of the kei function
698  integer(i4b):: n_data_kei
699 !> kei_r_max: Maximum value of the argument r of the tabulated kei function
700  real(dp) :: kei_r_max
701 !> kei_r_incr: Increment of the argument r of the tabulated kei function
702  real(dp) :: kei_r_incr
703 
704 end module sico_variables
705 !
Declarations of kind types for SICOPOLIS.
Definition: sico_types.F90:35
Declarations of global variables for SICOPOLIS.