43 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t
45 integer(i4b) :: i, j, kc, kt
46 real(dp) :: avz3(0:kcmax)
47 real(dp) :: cvz00, cvz0(0:ktmax), cvz1(0:ktmax), cvz2(0:ktmax), &
48 cvz3(0:kcmax), cvz4(0:kcmax), cvz5(0:kcmax)
49 real(dp) :: dxi_inv, deta_inv
54 deta_inv = 1.0_dp/deta
57 if (flag_aa_nonzero)
then
58 avz3(kc) = aa*eaz_c(kc)/(ea-1.0_dp)*dzeta_c
67 if (maske(j,i) == 0)
then
71 cvz00 = 0.5_dp*(vx_t(0,j,i)+vx_t(0,j,i-1))*dzb_dxi_g(j,i) &
72 +0.5_dp*(vy_t(0,j,i)+vy_t(0,j-1,i))*dzb_deta_g(j,i) &
73 +dzb_dtau(j,i)-q_b_tot(j,i)
76 cvz0(kt) = h_t(j,i)*insq_g11_g(j,i)*insq_g22_g(j,i) &
77 *( (vx_t(kt,j,i)*sq_g22_sgx(j,i) &
78 -vx_t(kt,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
79 +(vy_t(kt,j,i)*sq_g11_sgy(j,i) &
80 -vy_t(kt,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv ) &
82 cvz1(kt) = (dzb_dxi_g(j,i)+zeta_t(kt)*dh_t_dxi_g(j,i)) &
83 *(vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1) &
84 -vx_t(kt,j,i) -vx_t(kt,j,i-1))*0.5_dp
85 cvz2(kt) = (dzb_deta_g(j,i)+zeta_t(kt)*dh_t_deta_g(j,i)) &
86 *(vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i) &
87 -vy_t(kt,j,i) -vy_t(kt,j-1,i))*0.5_dp
90 cvz0(kt) = h_t(j,i)*insq_g11_g(j,i)*insq_g22_g(j,i) &
91 *( (vx_t(kt,j,i)*sq_g22_sgx(j,i) &
92 -vx_t(kt,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
93 +(vy_t(kt,j,i)*sq_g11_sgy(j,i) &
94 -vy_t(kt,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv ) &
96 cvz1(kt) = (dzb_dxi_g(j,i)+zeta_t(kt)*dh_t_dxi_g(j,i)) &
97 *(vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1) &
98 -vx_t(kt-1,j,i)-vx_t(kt-1,j,i-1))*0.25_dp
99 cvz2(kt) = (dzb_deta_g(j,i)+zeta_t(kt)*dh_t_deta_g(j,i)) &
100 *(vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i) &
101 -vy_t(kt-1,j,i)-vy_t(kt-1,j-1,i))*0.25_dp
105 cvz0(kt) = h_t(j,i)*insq_g11_g(j,i)*insq_g22_g(j,i) &
106 *( (vx_t(kt,j,i)*sq_g22_sgx(j,i) &
107 -vx_t(kt,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
108 +(vy_t(kt,j,i)*sq_g11_sgy(j,i) &
109 -vy_t(kt,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv ) &
111 cvz1(kt) = (dzb_dxi_g(j,i)+zeta_t(kt)*dh_t_dxi_g(j,i)) &
112 *(vx_t(kt,j,i) +vx_t(kt,j,i-1) &
113 -vx_t(kt-1,j,i)-vx_t(kt-1,j,i-1))*0.5_dp
114 cvz2(kt) = (dzb_deta_g(j,i)+zeta_t(kt)*dh_t_deta_g(j,i)) &
115 *(vy_t(kt,j,i) +vy_t(kt,j-1,i) &
116 -vy_t(kt-1,j,i)-vy_t(kt-1,j-1,i))*0.5_dp
119 cvz3(kc) = avz3(kc)*h_c(j,i) &
120 *insq_g11_g(j,i)*insq_g22_g(j,i) &
121 *( (vx_c(kc,j,i)*sq_g22_sgx(j,i) &
122 -vx_c(kc,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
123 +(vy_c(kc,j,i)*sq_g11_sgy(j,i) &
124 -vy_c(kc,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv )
125 cvz4(kc) = (dzm_dxi_g(j,i) &
126 +eaz_c_quotient(kc)*dh_c_dxi_g(j,i)) &
127 *(vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1) &
128 -vx_c(kc,j,i) -vx_c(kc,j,i-1))*0.5_dp
129 cvz5(kc) = (dzm_deta_g(j,i) &
130 +eaz_c_quotient(kc)*dh_c_deta_g(j,i)) &
131 *(vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i) &
132 -vy_c(kc,j,i) -vy_c(kc,j-1,i))*0.5_dp
135 cvz3(kc) = avz3(kc)*h_c(j,i) &
136 *insq_g11_g(j,i)*insq_g22_g(j,i) &
137 *( (vx_c(kc,j,i)*sq_g22_sgx(j,i) &
138 -vx_c(kc,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
139 +(vy_c(kc,j,i)*sq_g11_sgy(j,i) &
140 -vy_c(kc,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv )
141 cvz4(kc) = (dzm_dxi_g(j,i) &
142 +eaz_c_quotient(kc)*dh_c_dxi_g(j,i)) &
143 *(vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1) &
144 -vx_c(kc-1,j,i)-vx_c(kc-1,j,i-1))*0.25_dp
145 cvz5(kc) = (dzm_deta_g(j,i) &
146 +eaz_c_quotient(kc)*dh_c_deta_g(j,i)) &
147 *(vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i) &
148 -vy_c(kc-1,j,i)-vy_c(kc-1,j-1,i))*0.25_dp
152 cvz3(kc) = avz3(kc)*h_c(j,i) &
153 *insq_g11_g(j,i)*insq_g22_g(j,i) &
154 *( (vx_c(kc,j,i)*sq_g22_sgx(j,i) &
155 -vx_c(kc,j,i-1)*sq_g22_sgx(j,i-1))*dxi_inv &
156 +(vy_c(kc,j,i)*sq_g11_sgy(j,i) &
157 -vy_c(kc,j-1,i)*sq_g11_sgy(j-1,i))*deta_inv )
158 cvz4(kc) = (dzm_dxi_g(j,i) &
159 +eaz_c_quotient(kc)*dh_c_dxi_g(j,i)) &
160 *(vx_c(kc,j,i) +vx_c(kc,j,i-1) &
161 -vx_c(kc-1,j,i)-vx_c(kc-1,j,i-1))*0.5_dp
162 cvz5(kc) = (dzm_deta_g(j,i) &
163 +eaz_c_quotient(kc)*dh_c_deta_g(j,i)) &
164 *(vy_c(kc,j,i) +vy_c(kc,j-1,i) &
165 -vy_c(kc-1,j,i)-vy_c(kc-1,j-1,i))*0.5_dp
173 if ((n_cts(j,i) == -1).or.(n_cts(j,i) == 0))
then
177 vz_t(kt,j,i) = vz_b(j,i)
180 vz_m(j,i) = vz_b(j,i)
182 vz_c(0,j,i) = vz_m(j,i) &
183 +0.5_dp*(-cvz3(0)+cvz4(0)+cvz5(0))
186 vz_c(kc,j,i) = vz_c(kc-1,j,i) &
187 -cvz3(kc)+cvz4(kc)+cvz5(kc)
192 vz_t(0,j,i) = vz_b(j,i) &
193 +0.5_dp*(-cvz0(0)+cvz1(0)+cvz2(0))
196 vz_t(kt,j,i) = vz_t(kt-1,j,i) &
197 -cvz0(kt)+cvz1(kt)+cvz2(kt)
200 vz_m(j,i) = vz_t(ktmax-1,j,i) &
201 +0.5_dp*(-cvz0(ktmax)+cvz1(ktmax)+cvz2(ktmax))
203 vz_c(0,j,i) = vz_m(j,i) &
204 +0.5_dp*(-cvz3(0)+cvz4(0)+cvz5(0))
207 vz_c(kc,j,i) = vz_c(kc-1,j,i) &
208 -cvz3(kc)+cvz4(kc)+cvz5(kc)
217 vz_s(j,i) = vz_c(kc-1,j,i) &
218 +0.5_dp*(-cvz3(kc)+cvz4(kc)+cvz5(kc))
225 vz_t(kt,j,i) = 0.0_dp
231 vz_c(kc,j,i) = 0.0_dp
Declarations of kind types for SICOPOLIS.
Declarations of global variables for SICOPOLIS (for the ANT domain).
Declarations of global variables for SICOPOLIS.
subroutine calc_vz_sia(dxi, deta, dzeta_c, dzeta_t)
Computation of the vertical velocity vz in the shallow ice approximation.