45 real(dp),
intent(in) :: dxi, deta, dzeta_c, dzeta_t
47 integer(i4b) :: i, j, kc, kt
48 real(dp) :: dxi_inv, deta_inv
49 real(dp),
dimension(0:JMAX,0:IMAX) :: fact_x, fact_y
50 real(dp),
dimension(0:KCMAX) :: fact_z_c
52 real(dp) :: h_c_inv, h_t_inv
53 real(dp),
dimension(0:KCMAX) :: lxy_c, lyx_c, lxz_c, lzx_c, lyz_c, lzy_c
54 real(dp),
dimension(0:KTMAX) :: lxy_t, lyx_t, lxz_t, lzx_t, lyz_t, lzy_t
55 real(dp),
dimension(0:KCMAX) :: shear_c_squared
56 real(dp),
dimension(0:KTMAX) :: shear_t_squared
57 real(dp) :: abs_v_ssa_inv, nx, ny
58 real(dp) :: shear_x_help, shear_y_help
59 real(dp) :: lambda_shear_help
64 deta_inv = 1.0_dp/deta
66 fact_x = dxi_inv *insq_g11_g
67 fact_y = deta_inv*insq_g22_g
70 if (flag_aa_nonzero)
then
71 fact_z_c(kc) = (ea-1.0_dp)/(aa*eaz_c(kc)*dzeta_c)
73 fact_z_c(kc) = 1.0_dp/dzeta_c
77 fact_z_t = 1.0_dp/dzeta_t
87 lambda_shear_c = 0.0_dp
95 lambda_shear_t = 0.0_dp
102 if ((maske(j,i) == 0).or.(maske(j,i) == 3))
then
104 h_c_inv = 1.0_dp/(abs(h_c(j,i))+epsi)
108 dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
109 dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
111 lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
112 - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
115 lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
116 - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
119 lzx_c(kc) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
120 lzy_c(kc) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
122 lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
123 - (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) ) &
124 *0.5_dp*fact_z_c(kc)*h_c_inv
126 lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
127 - (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) ) &
128 *0.5_dp*fact_z_c(kc)*h_c_inv
134 dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
135 dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
137 lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
138 - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
141 lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
142 - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
145 lzx_c(kc) = ( (vz_c(kc,j,i+1)+vz_c(kc-1,j,i+1)) &
146 - (vz_c(kc,j,i-1)+vz_c(kc-1,j,i-1)) ) &
149 lzy_c(kc) = ( (vz_c(kc,j+1,i)+vz_c(kc-1,j+1,i)) &
150 - (vz_c(kc,j-1,i)+vz_c(kc-1,j-1,i)) ) &
153 lxz_c(kc) = ( (vx_c(kc+1,j,i)+vx_c(kc+1,j,i-1)) &
154 - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
155 *0.25_dp*fact_z_c(kc)*h_c_inv
157 lyz_c(kc) = ( (vy_c(kc+1,j,i)+vy_c(kc+1,j-1,i)) &
158 - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
159 *0.25_dp*fact_z_c(kc)*h_c_inv
165 dxx_c(kc,j,i) = (vx_c(kc,j,i)-vx_c(kc,j,i-1))*fact_x(j,i)
166 dyy_c(kc,j,i) = (vy_c(kc,j,i)-vy_c(kc,j-1,i))*fact_y(j,i)
168 lxy_c(kc) = ( (vx_c(kc,j+1,i)+vx_c(kc,j+1,i-1)) &
169 - (vx_c(kc,j-1,i)+vx_c(kc,j-1,i-1)) ) &
172 lyx_c(kc) = ( (vy_c(kc,j,i+1)+vy_c(kc,j-1,i+1)) &
173 - (vy_c(kc,j,i-1)+vy_c(kc,j-1,i-1)) ) &
176 lzx_c(kc) = (vz_s(j,i+1)-vz_s(j,i-1))*0.5_dp*fact_x(j,i)
177 lzy_c(kc) = (vz_s(j+1,i)-vz_s(j-1,i))*0.5_dp*fact_y(j,i)
179 lxz_c(kc) = ( (vx_c(kc ,j,i)+vx_c(kc ,j,i-1)) &
180 - (vx_c(kc-1,j,i)+vx_c(kc-1,j,i-1)) ) &
181 *0.5_dp*fact_z_c(kc)*h_c_inv
183 lyz_c(kc) = ( (vy_c(kc ,j,i)+vy_c(kc ,j-1,i)) &
184 - (vy_c(kc-1,j,i)+vy_c(kc-1,j-1,i)) ) &
185 *0.5_dp*fact_z_c(kc)*h_c_inv
189 dxy_c(:,j,i) = 0.5_dp*(lxy_c+lyx_c)
190 dxz_c(:,j,i) = 0.5_dp*(lxz_c+lzx_c)
191 dyz_c(:,j,i) = 0.5_dp*(lyz_c+lzy_c)
195 shear_c_squared(kc) = dxz_c(kc,j,i)*dxz_c(kc,j,i) &
196 + dyz_c(kc,j,i)*dyz_c(kc,j,i)
198 de_c(kc,j,i) = sqrt( dxx_c(kc,j,i)*dxx_c(kc,j,i) &
199 + dyy_c(kc,j,i)*dyy_c(kc,j,i) &
200 + dxx_c(kc,j,i)*dyy_c(kc,j,i) &
201 + dxy_c(kc,j,i)*dxy_c(kc,j,i) &
202 + shear_c_squared(kc) )
204 lambda_shear_c(kc,j,i) = sqrt(shear_c_squared(kc))/de_c(kc,j,i)
210 if ((n_cts(j,i) == -1).or.(n_cts(j,i) == 0))
then
213 dxx_t(:,j,i) = dxx_c(0,j,i)
214 dyy_t(:,j,i) = dyy_c(0,j,i)
215 dxy_t(:,j,i) = dxy_c(0,j,i)
216 dxz_t(:,j,i) = dxz_c(0,j,i)
217 dyz_t(:,j,i) = dyz_c(0,j,i)
218 de_t(:,j,i) = de_c(0,j,i)
219 lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
223 h_t_inv = 1.0_dp/(abs(h_t(j,i))+epsi)
227 dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
228 dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
230 lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
231 - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
234 lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
235 - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
238 lzx_t(kt) = (vz_b(j,i+1)-vz_b(j,i-1))*0.5_dp*fact_x(j,i)
239 lzy_t(kt) = (vz_b(j+1,i)-vz_b(j-1,i))*0.5_dp*fact_y(j,i)
241 lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
242 - (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) ) &
243 *0.5_dp*fact_z_t*h_t_inv
245 lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
246 - (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) ) &
247 *0.5_dp*fact_z_t*h_t_inv
253 dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
254 dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
256 lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
257 - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
260 lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
261 - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
264 lzx_t(kt) = ( (vz_t(kt,j,i+1)+vz_t(kt-1,j,i+1)) &
265 - (vz_t(kt,j,i-1)+vz_t(kt-1,j,i-1)) ) &
268 lzy_t(kt) = ( (vz_t(kt,j+1,i)+vz_t(kt-1,j+1,i)) &
269 - (vz_t(kt,j-1,i)+vz_t(kt-1,j-1,i)) ) &
272 lxz_t(kt) = ( (vx_t(kt+1,j,i)+vx_t(kt+1,j,i-1)) &
273 - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
274 *0.25_dp*fact_z_t*h_t_inv
276 lyz_t(kt) = ( (vy_t(kt+1,j,i)+vy_t(kt+1,j-1,i)) &
277 - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
278 *0.25_dp*fact_z_t*h_t_inv
284 dxx_t(kt,j,i) = (vx_t(kt,j,i)-vx_t(kt,j,i-1))*fact_x(j,i)
285 dyy_t(kt,j,i) = (vy_t(kt,j,i)-vy_t(kt,j-1,i))*fact_y(j,i)
287 lxy_t(kt) = ( (vx_t(kt,j+1,i)+vx_t(kt,j+1,i-1)) &
288 - (vx_t(kt,j-1,i)+vx_t(kt,j-1,i-1)) ) &
291 lyx_t(kt) = ( (vy_t(kt,j,i+1)+vy_t(kt,j-1,i+1)) &
292 - (vy_t(kt,j,i-1)+vy_t(kt,j-1,i-1)) ) &
295 lzx_t(kt) = (vz_m(j,i+1)-vz_m(j,i-1))*0.5_dp*fact_x(j,i)
296 lzy_t(kt) = (vz_m(j+1,i)-vz_m(j-1,i))*0.5_dp*fact_y(j,i)
298 lxz_t(kt) = ( (vx_t(kt ,j,i)+vx_t(kt ,j,i-1)) &
299 - (vx_t(kt-1,j,i)+vx_t(kt-1,j,i-1)) ) &
300 *0.5_dp*fact_z_t*h_t_inv
302 lyz_t(kt) = ( (vy_t(kt ,j,i)+vy_t(kt ,j-1,i)) &
303 - (vy_t(kt-1,j,i)+vy_t(kt-1,j-1,i)) ) &
304 *0.5_dp*fact_z_t*h_t_inv
308 dxy_t(:,j,i) = 0.5_dp*(lxy_t+lyx_t)
309 dxz_t(:,j,i) = 0.5_dp*(lxz_t+lzx_t)
310 dyz_t(:,j,i) = 0.5_dp*(lyz_t+lzy_t)
314 shear_t_squared(kt) = dxz_t(kt,j,i)*dxz_t(kt,j,i) &
315 + dyz_t(kt,j,i)*dyz_t(kt,j,i)
317 de_t(kt,j,i) = sqrt( dxx_t(kt,j,i)*dxx_t(kt,j,i) &
318 + dyy_t(kt,j,i)*dyy_t(kt,j,i) &
319 + dxx_t(kt,j,i)*dyy_t(kt,j,i) &
320 + dxy_t(kt,j,i)*dxy_t(kt,j,i) &
321 + shear_t_squared(kt) )
323 lambda_shear_t(kt,j,i) = sqrt(shear_t_squared(kt))/de_t(kt,j,i)
329 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1)
331 dxx_t(:,j,i) = dxx_c(0,j,i)
332 dyy_t(:,j,i) = dyy_c(0,j,i)
333 dxy_t(:,j,i) = dxy_c(0,j,i)
334 dxz_t(:,j,i) = dxz_c(0,j,i)
335 dyz_t(:,j,i) = dyz_c(0,j,i)
336 de_t(:,j,i) = de_c(0,j,i)
337 lambda_shear_t(:,j,i) = lambda_shear_c(0,j,i)
340 stop
' calc_dxyz: Parameter CALCMOD must be either -1, 0, 1, 2 or 3!'
345 if (maske(j,i) == 3)
then
347 abs_v_ssa_inv = 1.0_dp / &
348 sqrt( 0.25_dp*(vx_m(j,i)+vx_m(j,i-1))**2 &
349 +0.25_dp*(vy_m(j,i)+vy_m(j-1,i))**2 )
351 nx = -0.5_dp*(vy_m(j,i)+vy_m(j-1,i)) * abs_v_ssa_inv
352 ny = 0.5_dp*(vx_m(j,i)+vx_m(j,i-1)) * abs_v_ssa_inv
354 shear_x_help = dxx_c(kcmax,j,i)*nx &
355 + dxy_c(kcmax,j,i)*ny &
356 - dxx_c(kcmax,j,i)*nx**3 &
357 - 2.0_dp*dxy_c(kcmax,j,i)*nx**2*ny &
358 - dyy_c(kcmax,j,i)*nx*ny**2
362 shear_y_help = dxy_c(kcmax,j,i)*nx &
363 + dyy_c(kcmax,j,i)*ny &
364 - dxx_c(kcmax,j,i)*nx**2*ny &
365 - 2.0_dp*dxy_c(kcmax,j,i)*nx*ny**2 &
366 - dyy_c(kcmax,j,i)*ny**3
370 lambda_shear_help = sqrt(shear_x_help**2 + shear_y_help**2) &
373 lambda_shear_c(:,j,i) = lambda_shear_help
374 lambda_shear_t(:,j,i) = lambda_shear_help
380 lambda_shear_c(:,j,i) = min(max(lambda_shear_c(:,j,i), 0.0_dp), 1.0_dp)
381 lambda_shear_t(:,j,i) = min(max(lambda_shear_t(:,j,i), 0.0_dp), 1.0_dp)
385 dxx_c(:,j,i) = 0.0_dp
386 dyy_c(:,j,i) = 0.0_dp
387 dxy_c(:,j,i) = 0.0_dp
388 dxz_c(:,j,i) = 0.0_dp
389 dyz_c(:,j,i) = 0.0_dp
391 lambda_shear_c(:,j,i) = 0.0_dp
393 dxx_t(:,j,i) = 0.0_dp
394 dyy_t(:,j,i) = 0.0_dp
395 dxy_t(:,j,i) = 0.0_dp
396 dxz_t(:,j,i) = 0.0_dp
397 dyz_t(:,j,i) = 0.0_dp
399 lambda_shear_t(:,j,i) = 0.0_dp
Declarations of kind types for SICOPOLIS.
Declarations of global variables for SICOPOLIS (for the ANT domain).
subroutine calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
Computation of all components of the strain-rate tensor, the full effective strain rate and the shear...
Declarations of global variables for SICOPOLIS.