55 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t
57 integer(i4b) :: i, j, kc, kt
58 real(dp) :: avz3(0:kcmax)
59 real(dp) :: cvz00, cvz0(0:ktmax), cvz1(0:ktmax), cvz2(0:ktmax), &
60 cvz3(0:kcmax), cvz4(0:kcmax), cvz5(0:kcmax)
61 real(dp) :: dxi_inv, deta_inv
66 deta_inv = 1.0_dp/deta
70 avz3(kc) =
aa*
eaz_c(kc)/(
ea-1.0_dp)*dzeta_c
79 if (
maske(j,i)==0)
then 96 -
vx_t(kt,j,i) -
vx_t(kt,j,i-1))*0.5_dp
99 -
vy_t(kt,j,i) -
vy_t(kt,j-1,i))*0.5_dp
110 -
vx_t(kt-1,j,i)-
vx_t(kt-1,j,i-1))*0.25_dp
113 -
vy_t(kt-1,j,i)-
vy_t(kt-1,j-1,i))*0.25_dp
125 -
vx_t(kt-1,j,i)-
vx_t(kt-1,j,i-1))*0.5_dp
128 -
vy_t(kt-1,j,i)-
vy_t(kt-1,j-1,i))*0.5_dp
131 cvz3(kc) = avz3(kc)*
h_c(j,i) &
140 -
vx_c(kc,j,i) -
vx_c(kc,j,i-1))*0.5_dp
144 -
vy_c(kc,j,i) -
vy_c(kc,j-1,i))*0.5_dp
147 cvz3(kc) = avz3(kc)*
h_c(j,i) &
156 -
vx_c(kc-1,j,i)-
vx_c(kc-1,j,i-1))*0.25_dp
160 -
vy_c(kc-1,j,i)-
vy_c(kc-1,j-1,i))*0.25_dp
164 cvz3(kc) = avz3(kc)*
h_c(j,i) &
173 -
vx_c(kc-1,j,i)-
vx_c(kc-1,j,i-1))*0.5_dp
177 -
vy_c(kc-1,j,i)-
vy_c(kc-1,j-1,i))*0.5_dp
185 if ((
n_cts(j,i) == -1).or.(
n_cts(j,i) == 0))
then 195 +0.5_dp*(-cvz3(0)+cvz4(0)+cvz5(0))
199 -cvz3(kc)+cvz4(kc)+cvz5(kc)
205 +0.5_dp*(-cvz0(0)+cvz1(0)+cvz2(0))
209 -cvz0(kt)+cvz1(kt)+cvz2(kt)
213 +0.5_dp*(-cvz0(ktmax)+cvz1(ktmax)+cvz2(ktmax))
216 +0.5_dp*(-cvz3(0)+cvz4(0)+cvz5(0))
220 -cvz3(kc)+cvz4(kc)+cvz5(kc)
230 +0.5_dp*(-cvz3(kc)+cvz4(kc)+cvz5(kc))
237 vz_t(kt,j,i) = 0.0_dp
243 vz_c(kc,j,i) = 0.0_dp
262 real(dp),
intent(in) :: z_sl
263 real(dp),
intent(in) :: dxi, deta, dzeta_c
265 integer(i4b) :: i, j, kt, kc
266 real(dp),
dimension(0:JMAX,0:IMAX) :: vz_sl
267 real(dp),
dimension(0:KCMAX) :: zeta_c_sgz, eaz_c_sgz, eaz_c_quotient_sgz
268 real(dp) :: dxi_inv, deta_inv
269 real(dp) :: dvx_dxi, dvy_deta
272 deta_inv = 1.0_dp/deta
278 zeta_c_sgz(kc) = (kc+0.5_dp)*dzeta_c
281 eaz_c_sgz(kc) = exp(
aa*zeta_c_sgz(kc))
282 eaz_c_quotient_sgz(kc) = (eaz_c_sgz(kc)-1.0_dp)/(
ea-1.0_dp)
284 eaz_c_sgz(kc) = 1.0_dp
285 eaz_c_quotient_sgz(kc) = zeta_c_sgz(kc)
295 if (
maske(j,i)==3_i2b)
then 316 vz_sl(j,i) =
vz_b(j,i) - (z_sl-
zb(j,i))*(dvx_dxi+dvy_deta)
320 vz_s(j,i) = vz_sl(j,i) - (
zs(j,i)-z_sl)*(dvx_dxi+dvy_deta)
325 if ((
n_cts(j,i) == -1).or.(
n_cts(j,i) == 0))
then 332 vz_m(j,i) =
vz_b(j,i) -
h_t(j,i)*(dvx_dxi+dvy_deta)
339 vz_c(kc,j,i) = vz_sl(j,i) &
340 -(
zm(j,i)+eaz_c_quotient_sgz(kc)*
h_c(j,i)-z_sl) &
344 if ((
n_cts(j,i) == -1).or.(
n_cts(j,i) == 0))
then 354 vz_t(kt,j,i) = vz_sl(j,i) &
377 integer(i4b) :: i, j, kc, kt
404 vz_t(kt,j,i) = 0.0_dp
410 vz_c(kc,j,i) = 0.0_dp
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vx_c
vx_c(kc,j,i): Velocity in x-direction in the upper (kc) ice domain (at (i+1/2,j,kc)) ...
integer(i2b), 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:jmax, 0:imax) vz_m
vz_m(j,i): Velocity in z-direction at the position z=zm (interface between the upper (kc) and the low...
real(dp), dimension(0:kcmax) eaz_c
eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
real(dp), dimension(0:jmax, 0:imax) vx_m
vx_m(j,i): Mean (depth-averaged) velocity in x-direction, at (i+1/2,j)
subroutine, public calc_vz_floating(z_sl, dxi, deta, dzeta_c)
Computation of the vertical velocity vz for floating ice.
real(dp), dimension(0:jmax, 0:imax) vz_b
vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
real(dp), dimension(0:jmax, 0:imax) vz_s
vz_s(j,i): Velocity in z-direction at the ice surface, at (i,j)
real(dp), dimension(0:jmax, 0:imax) insq_g22_g
insq_g22_g(j,i): Inverse square root of g22 on grid point (i,j)
integer(i2b), 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) sq_g22_sgx
sq_g22_sgx(j,i): Square root of g22, at (i+1/2,j)
real(dp), dimension(0:jmax, 0:imax) dh_c_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vz_t
vz_t(kt,j,i): Velocity in z-direction in the lower (kt) ice domain (at (i,j,kt+1/2)) ...
real(dp), dimension(0:jmax, 0:imax) vy_m
vy_m(j,i): Mean (depth-averaged) velocity in y-direction, at (i,j+1/2)
Declarations of global variables for SICOPOLIS (for the ANT domain).
real(dp) ea
ea: Abbreviation for exp(aa)
logical flag_aa_nonzero
flag_aa_nonzero: Flag for the exponential stretch parameter aa. .true.: aa greater than zero (non-equ...
subroutine, public calc_vz_grounded(dxi, deta, dzeta_c, dzeta_t)
Computation of the vertical velocity vz for grounded ice.
real(dp) aa
aa: Exponential stretch parameter of the non-equidistant vertical grid in the upper (kc) 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), 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: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...
Computation of the vertical velocity vz.
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:jmax, 0:imax) dzb_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
subroutine, public calc_vz_static()
Computation of the vertical velocity vz for static ice.
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vz_c
vz_c(kc,j,i): Velocity in z-direction in the upper (kc) ice domain (at (i,j,kc+1/2)) ...
real(dp), dimension(0:jmax, 0:imax) zm
zm(j,i): Coordinate z of the bottom of the upper (kc) ice domain = top of the lower (kt) ice domain (...
real(dp), dimension(0:jmax, 0:imax) q_b_tot
Q_b_tot(j,i): Sum of Q_bm and Q_tld.
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(0:jmax, 0:imax) dh_t_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dh_t_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dzm_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0: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) dzm_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) insq_g11_g
insq_g11_g(j,i): Inverse square root of g11 on grid point (i,j)
real(dp), dimension(0: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)) ...
real(dp), dimension(0:ktmax) zeta_t
zeta_t(kt): Sigma coordinate zeta_t of grid point kt
real(dp), dimension(0:jmax, 0:imax) zb
zb(j,i): Coordinate z of the ice base
real(dp), dimension(0:jmax, 0:imax) dzb_dtau
dzb_dtau(j,i): Derivative of zb by tau (time)
real(dp), dimension(0:jmax, 0:imax) h_t
H_t(j,i): Thickness of ice in the lower (kt) domain (thickness of the temperate layer for POLY...
Declarations of global variables for SICOPOLIS.
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vx_t
vx_t(kt,j,i): Velocity in x-direction in the lower (kt) ice domain (at (i+1/2,j,kt)) ...
real(dp), dimension(0:jmax, 0:imax) dzb_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)