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