27 USE run, only: kt_type_enum, ghd_2007
46 INTEGER :: IJK, K, IJKT
50 DOUBLE PRECISION :: EPSA, EPStmp
52 DOUBLE PRECISION :: Sbv, Ssx, Ssy, Ssz
54 DOUBLE PRECISION :: Vxz
58 IF(kt_type_enum == ghd_2007 .AND. m /=
mmax) cycle
68 IF(wall_at(ijk)) cycle
73 IF (kt_type_enum == ghd_2007)
THEN 76 epstmp = epstmp + avg_z(
ep_s(ijk,l),
ep_s(ijkt,l),k)
80 epsa = avg_z(
ep_s(ijk,m),
ep_s(ijkt,m),k)
83 IF ( .NOT.sip_at_t(ijk) .AND. epsa>
dil_ep_s)
THEN 93 ltau_w_s(ijk,m) = sbv + ssx + ssy + ssz + vxz*
vol_w(ijk)
95 ltau_w_s(ijk,m) =
zero 134 INTEGER,
INTENT(IN) :: IJK
136 INTEGER,
INTENT(IN) :: M
138 DOUBLE PRECISION,
INTENT(OUT) :: SSX
139 DOUBLE PRECISION,
INTENT(OUT) :: SSY
140 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
141 DOUBLE PRECISION,
INTENT(OUT) :: SBV
143 DOUBLE PRECISION,
INTENT(OUT) :: VXZ
148 INTEGER :: I, J, K, IM, JM, KP
149 INTEGER :: IJKP, IMJK, IJMK, IJKM
150 INTEGER :: IJKE, IJKW, IJKN, IJKS, IJKT
151 INTEGER :: IJKNT, IJKST, IJKTE, IJKTW
152 INTEGER :: IJMKP, IMJKP
154 DOUBLE PRECISION :: duodz
177 ijkte = east_of(ijkt)
179 ijktw = west_of(ijkt)
187 sbv = (eplambda_s(ijkt,m)*
trd_s(ijkt,m)-&
188 eplambda_s(ijk,m)*
trd_s(ijk,m))*
axy(ijk)
195 ssx = avg_z_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
196 avg_x_h(epmu_s(ijkt,m),epmu_s(ijkte,m),i),k)*&
198 avg_z_h(avg_x_h(epmu_s(ijkw,m),epmu_s(ijk,m),im),&
199 avg_x_h(epmu_s(ijktw,m),epmu_s(ijkt,m),im),k)*&
206 ssy = avg_z_h(avg_y_h(epmu_s(ijk,m),epmu_s(ijkn,m),j),&
207 avg_y_h(epmu_s(ijkt,m),epmu_s(ijknt,m),j),k)*&
209 avg_z_h(avg_y_h(epmu_s(ijks,m),epmu_s(ijk,m),jm),&
210 avg_y_h(epmu_s(ijkst,m),epmu_s(ijkt,m),jm),k)*&
216 ssz = epmu_s(ijkt,m)*(
w_s(ijkp,m)-
w_s(ijk,m))*&
218 epmu_s(ijk,m)*(
w_s(ijk,m)-
w_s(ijkm,m))*&
241 vxz = avg_z(epmu_s(ijk,m),epmu_s(ijkt,m),k)*
ox(i)*
half*&
286 INTEGER,
INTENT(IN) :: IJK
288 INTEGER,
INTENT(IN) :: M
290 DOUBLE PRECISION,
INTENT(OUT) :: SSX
291 DOUBLE PRECISION,
INTENT(OUT) :: SSY
292 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
293 DOUBLE PRECISION,
INTENT(OUT) :: SBV
298 INTEGER :: I, J, K, IM, JM, KP
299 INTEGER :: IJKP, IMJK, IJMK, IJKM
300 INTEGER :: IJKE, IJKW, IJKN, IJKS, IJKT
301 INTEGER :: IJKNT, IJKST, IJKTE, IJKTW
302 INTEGER :: IJMKP, IMJKP
305 DOUBLE PRECISION :: DEL_H, Nx, Ny, Nz
306 LOGICAL :: U_NODE_AT_ET, U_NODE_AT_EB, U_NODE_AT_WT, U_NODE_AT_WB
307 LOGICAL :: V_NODE_AT_NT, V_NODE_AT_NB, V_NODE_AT_ST, V_NODE_AT_SB
308 DOUBLE PRECISION :: dudz_at_E, dudz_at_W
309 DOUBLE PRECISION :: dvdz_at_N, dvdz_at_S
310 DOUBLE PRECISION :: MU_S_CUT, SSX_CUT, SSY_CUT
311 DOUBLE PRECISION :: Xi, Yi, Zi, Ui, Vi, Sx, Sy, Sz
312 DOUBLE PRECISION :: UW_s, VW_s, WW_s
337 ijkte = east_of(ijkt)
339 ijktw = west_of(ijkt)
343 sbv = (eplambda_s(ijkt,m)*
trd_s(ijkt,m)) *
axy_w(ijk) - &
344 (eplambda_s(ijk,m) *
trd_s(ijk,m) ) *
axy_w(ijkm)
348 ssx = avg_z_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
349 avg_x_h(epmu_s(ijkt,m),epmu_s(ijkte,m),i),k)*&
416 mu_s_cut = (
vol(ijk)*epmu_s(ijk,m) + &
417 vol(ijkp)*epmu_s(ijkt,m))/(
vol(ijk) +
vol(ijkp))
432 IF(u_node_at_et.AND.u_node_at_eb)
THEN 440 CALL get_del_h(ijk,
'W_MOMENTUM', xi, yi, zi, del_h, &
443 IF(
noc_ws) dudz_at_e = dudz_at_e - ((ui-uw_s) * &
449 IF(u_node_at_wt.AND.u_node_at_wb)
THEN 454 sx =
x_u(imjkp) -
x_u(imjk)
455 sy =
y_u(imjkp) -
y_u(imjk)
456 sz =
z_u(imjkp) -
z_u(imjk)
457 CALL get_del_h(ijk,
'W_MOMENTUM', xi, yi, zi, del_h, &
460 IF(
noc_ws) dudz_at_w = dudz_at_w - ((ui-uw_s) * &
466 IF(u_node_at_eb)
THEN 468 z_u(ijk), del_h, nx, ny, nz)
469 ssx_cut = -mu_s_cut * (
u_s(ijk,m) - uw_s) / del_h * &
475 ssx = avg_z_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
476 avg_x_h(epmu_s(ijkt,m),epmu_s(ijkte,m),i),k)*&
477 dudz_at_e*
ayz_w(ijk) - &
478 avg_z_h(avg_x_h(epmu_s(ijkw,m),epmu_s(ijk,m),im),&
479 avg_x_h(epmu_s(ijktw,m),epmu_s(ijkt,m),im),k)*&
480 dudz_at_w*
ayz_w(imjk) + ssx_cut
492 IF(v_node_at_nt.AND.v_node_at_nb)
THEN 500 CALL get_del_h(ijk,
'W_MOMENTUM', xi, yi, zi, del_h, &
503 IF(
noc_ws) dvdz_at_n = dvdz_at_n - ((vi-vw_s) * &
509 IF(v_node_at_st.AND.v_node_at_sb)
THEN 514 sx =
x_v(ijmkp) -
x_v(ijmk)
515 sy =
y_v(ijmkp) -
y_v(ijmk)
516 sz =
z_v(ijmkp) -
z_v(ijmk)
517 CALL get_del_h(ijk,
'W_MOMENTUM', xi, yi, zi, del_h, &
520 IF(
noc_ws) dvdz_at_s = dvdz_at_s - ((vi-vw_s) * &
526 IF(v_node_at_nb)
THEN 528 z_v(ijk), del_h, nx, ny, nz)
529 ssy_cut = -mu_s_cut * (
v_s(ijk,m) - vw_s) / del_h * &
535 ssy = avg_z_h(avg_y_h(epmu_s(ijk,m),epmu_s(ijkn,m),j),&
536 avg_y_h(epmu_s(ijkt,m),epmu_s(ijknt,m),j),k)*&
537 dvdz_at_n*
axz_w(ijk) - &
538 avg_z_h(avg_y_h(epmu_s(ijks,m),epmu_s(ijk,m),jm),&
539 avg_y_h(epmu_s(ijkst,m),epmu_s(ijkt,m),jm),k)*&
540 dvdz_at_s*
axz_w(ijmk) + ssy_cut
544 z_w(ijk), del_h, nx, ny, nz)
545 ssz = epmu_s(ijkt,m)*(
w_s(ijkp,m)-
w_s(ijk,m))*&
547 epmu_s(ijk,m)*(
w_s(ijk,m)-
w_s(ijkm,m))*&
549 -mu_s_cut * (
w_s(ijk,m) - ww_s) / del_h * &
double precision, dimension(:,:), allocatable trd_s
double precision, dimension(dimension_bc, dim_m) bc_ww_s
double precision, dimension(:,:), allocatable v_s
double precision, dimension(:), allocatable y_v
double precision, dimension(:), allocatable vol_w
double precision, dimension(:), allocatable z_u
integer, dimension(:), allocatable i_of
logical, dimension(:), allocatable wall_u_at
double precision, dimension(dimension_bc, dim_m) bc_uw_s
double precision, dimension(:), allocatable ox_e
double precision, parameter one
subroutine calc_tau_w_s(lTAU_W_S)
double precision, dimension(:), allocatable axy
double precision, dimension(:), allocatable oneodz_t_w
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:), allocatable x_u
integer, dimension(:), allocatable im1
integer, dimension(10) cg_safe_mode
logical, dimension(:), allocatable wall_v_at
double precision, dimension(0:dim_j) dy
integer, dimension(dimension_bc) bc_type_enum
double precision, parameter undefined
double precision, dimension(:), allocatable y_w
double precision, dimension(0:dim_k) dz
double precision, dimension(:), allocatable z_v
double precision, dimension(:,:), allocatable epmu_s
double precision, dimension(:,:), allocatable u_s
integer, dimension(:), allocatable k_of
double precision, dimension(:,:), allocatable eplambda_s
double precision, dimension(:), allocatable x_w
integer, dimension(:), allocatable j_of
subroutine calc_reg_tau_w_s(IJK, M, SSX, SSY, SSZ, SBV, VXZ)
integer, dimension(:), allocatable jm1
integer, dimension(:), allocatable bc_w_id
double precision, dimension(:), allocatable ox
logical, dimension(:), allocatable blocked_u_cell_at
double precision, dimension(dimension_bc, dim_m) bc_hw_s
logical, dimension(:), allocatable cut_w_cell_at
integer, dimension(:), allocatable kp1
double precision, dimension(:), allocatable x_v
subroutine calc_cg_tau_w_s(IJK, M, SSX, SSY, SSZ, SBV)
double precision, parameter half
double precision, dimension(:), allocatable ayz_w
double precision, dimension(:), allocatable oneodz_t_u
double precision, parameter dil_ep_s
double precision, dimension(:), allocatable axz_w
double precision, dimension(:), allocatable odz
double precision, dimension(:), allocatable axy_w
double precision function ep_s(IJK, xxM)
double precision, dimension(:), allocatable area_w_cut
logical, dimension(:), allocatable blocked_v_cell_at
double precision, dimension(:), allocatable oneodz_t_v
subroutine get_del_h(IJK, TYPE_OF_CELL, X0, Y0, Z0, Del_H, Nx, Ny, Nz)
double precision, dimension(:), allocatable z_w
double precision, dimension(:), allocatable vol
double precision, dimension(:), allocatable odz_t
double precision, dimension(dimension_bc, dim_m) bc_vw_s
double precision, dimension(:), allocatable y_u
double precision, parameter zero