30 USE run, only: kt_type_enum, ghd_2007
51 INTEGER :: IJK, I, IJKE
55 DOUBLE PRECISION :: EPSA, EPStmp
57 DOUBLE PRECISION :: Sbv, Ssx, Ssy, Ssz
59 DOUBLE PRECISION :: Vtzb
64 IF(kt_type_enum == ghd_2007 .AND. m /=
mmax) cycle
69 IF (fluid_at(ijk))
THEN 70 v_s(ijk,m)=v_s(ijk,m)+
vsh(ijk)
82 IF(wall_at(ijk)) cycle
86 IF (kt_type_enum == ghd_2007)
THEN 89 epstmp = epstmp + avg_x(
ep_s(ijk,l),
ep_s(ijke,l),i)
93 epsa = avg_x(
ep_s(ijk,m),
ep_s(ijke,m),i)
96 IF ( .NOT.sip_at_e(ijk) .AND. epsa>
dil_ep_s)
THEN 106 ltau_u_s(ijk,m) = sbv + ssx + ssy + ssz + vtzb*
vol_u(ijk)
108 ltau_u_s(ijk,m) =
zero 116 IF (fluid_at(ijk))
THEN 117 v_s(ijk,m)=v_s(ijk,m)-
vsh(ijk)
156 INTEGER,
INTENT(IN) :: IJK
158 INTEGER,
INTENT(IN) :: M
160 DOUBLE PRECISION,
INTENT(OUT) :: SSX
161 DOUBLE PRECISION,
INTENT(OUT) :: SSY
162 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
163 DOUBLE PRECISION,
INTENT(OUT) :: SBV
165 DOUBLE PRECISION,
INTENT(OUT) :: VTZB
170 INTEGER :: I, J, K, JM, KM, IP
171 INTEGER :: IJKE, IJKN, IJKS, IJKT, IJKB
172 INTEGER :: IJKNE, IJKSE, IJKTE, IJKBE
173 INTEGER :: IPJK, IMJK, IJKM, IJMK
174 INTEGER :: IPJMK, IPJKM
176 DOUBLE PRECISION :: MU_ste, MU_sbe, MUSA
178 DOUBLE PRECISION :: dWoXdz
197 ijkne = east_of(ijkn)
199 ijkse = east_of(ijks)
201 ijkte = east_of(ijkt)
202 ijkb = bottom_of(ijk)
203 ijkbe = east_of(ijkb)
211 sbv = (eplambda_s(ijke,m)*
trd_s(ijke,m)-&
212 eplambda_s(ijk,m)*
trd_s(ijk,m))*
ayz(ijk)
218 ssx = epmu_s(ijke,m)*(
u_s(ipjk,m)-
u_s(ijk,m))*&
220 epmu_s(ijk,m)*(
u_s(ijk,m)-
u_s(imjk,m))*&
226 ssy = avg_x_h(avg_y_h(epmu_s(ijk,m),epmu_s(ijkn,m),j),&
227 avg_y_h(epmu_s(ijke,m),epmu_s(ijkne,m),j),i)*&
229 avg_x_h(avg_y_h(epmu_s(ijks,m),epmu_s(ijk,m),jm),&
230 avg_y_h(epmu_s(ijkse,m),epmu_s(ijke,m),jm),i)*&
236 mu_ste = avg_x_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
237 avg_z_h(epmu_s(ijke,m),epmu_s(ijkte,m),k),i)
238 mu_sbe = avg_x_h(avg_z_h(epmu_s(ijkb,m),epmu_s(ijk,m),km),&
239 avg_z_h(epmu_s(ijkbe,m),epmu_s(ijke,m),km),i)
260 musa = avg_x(epmu_s(ijk,m),epmu_s(ijke,m),i)
264 vtzb = -2.d0*musa*
ox_e(i)*dwoxdz
300 USE bc, only:
bc_hw_s,
bc_uw_s,
bc_vw_s,
bc_ww_s, cg_nsw, cg_fsw, cg_psw, cg_mi, none,
bc_type_enum 307 INTEGER,
INTENT(IN) :: IJK
309 INTEGER,
INTENT(IN) :: M
311 DOUBLE PRECISION,
INTENT(OUT) :: SSX
312 DOUBLE PRECISION,
INTENT(OUT) :: SSY
313 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
314 DOUBLE PRECISION,
INTENT(OUT) :: SBV
319 INTEGER :: I, J, K, JM, KM, IP
320 INTEGER :: IJKE, IJKN, IJKS, IJKT, IJKB
321 INTEGER :: IJKNE, IJKSE, IJKTE, IJKBE
322 INTEGER :: IPJK, IMJK, IJKM, IJMK
323 INTEGER :: IPJMK, IPJKM
325 DOUBLE PRECISION :: MU_ste, MU_sbe
328 DOUBLE PRECISION :: DEL_H,Nx,Ny,Nz
329 LOGICAL :: V_NODE_AT_NE, V_NODE_AT_NW, V_NODE_AT_SE, V_NODE_AT_SW
330 LOGICAL :: W_NODE_AT_TE, W_NODE_AT_TW, W_NODE_AT_BE, W_NODE_AT_BW
331 DOUBLE PRECISION :: dvdx_at_N, dvdx_at_S
332 DOUBLE PRECISION :: dwdx_at_T, dwdx_at_B
333 DOUBLE PRECISION :: Xi, Yi, Zi, Vi, Wi, Sx, Sy, Sz
334 DOUBLE PRECISION :: MU_S_CUT, SSY_CUT, SSZ_CUT
335 DOUBLE PRECISION :: UW_s, VW_s, WW_s
356 ijkne = east_of(ijkn)
358 ijkse = east_of(ijks)
360 ijkte = east_of(ijkt)
361 ijkb = bottom_of(ijk)
362 ijkbe = east_of(ijkb)
366 sbv = (eplambda_s(ijke,m)*
trd_s(ijke,m)) *
ayz_u(ijk) - &
367 (eplambda_s(ijk,m) *
trd_s(ijk,m) ) *
ayz_u(imjk)
371 ssx = epmu_s(ijke,m)*(
u_s(ipjk,m)-
u_s(ijk,m))*&
373 epmu_s(ijk,m)*(
u_s(ijk,m)-
u_s(imjk,m))*&
375 ssy = avg_x_h(avg_y_h(epmu_s(ijk,m),epmu_s(ijkn,m),j),&
376 avg_y_h(epmu_s(ijke,m),epmu_s(ijkne,m),j),i)*&
377 (
v_s(ipjk,m)-
v_s(ijk,m))*&
379 avg_x_h(avg_y_h(epmu_s(ijks,m),epmu_s(ijk,m),jm),&
380 avg_y_h(epmu_s(ijkse,m),epmu_s(ijke,m),jm),i)*&
381 (
v_s(ipjmk,m)-
v_s(ijmk,m))*&
384 mu_ste = avg_x_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
385 avg_z_h(epmu_s(ijke,m),epmu_s(ijkte,m),k),i
447 mu_s_cut = (
vol(ijk)*epmu_s(ijk,m) + &
448 vol(ipjk)*epmu_s(ijke,m))/&
457 y_u(ijk),
z_u(ijk), del_h, nx, ny, nz)
458 ssx = epmu_s(ijke,m)*(
u_s(ipjk,m)-
u_s(ijk,m))*&
460 epmu_s(ijk,m)*(
u_s(ijk,m)-
u_s(imjk,m))*&
462 mu_s_cut * (
u_s(ijk,m) - uw_s) / del_h * &
475 IF(v_node_at_ne.AND.v_node_at_nw)
THEN 483 CALL get_del_h(ijk,
'U_MOMENTUM', xi, yi, zi, &
485 dvdx_at_n = (
v_s(ipjk,m) -
v_s(ijk,m)) * &
487 IF(
noc_us) dvdx_at_n = dvdx_at_n - ((vi-vw_s) *&
493 IF(v_node_at_se.AND.v_node_at_sw)
THEN 498 sx =
x_v(ipjmk) -
x_v(ijmk)
499 sy =
y_v(ipjmk) -
y_v(ijmk)
500 sz =
z_v(ipjmk) -
z_v(ijmk)
501 CALL get_del_h(ijk,
'U_MOMENTUM', xi, yi, zi, &
504 IF(
noc_us) dvdx_at_s = dvdx_at_s - ((vi-vw_s) * &
510 IF(v_node_at_nw)
THEN 512 y_v(ijk),
z_v(ijk), del_h, nx, ny, nz)
513 ssy_cut = -mu_s_cut * (
v_s(ijk,m) - vw_s)/del_h*&
519 ssy = avg_x_h(avg_y_h(epmu_s(ijk,m),epmu_s(ijkn,m),j),&
520 avg_y_h(epmu_s(ijke,m),epmu_s(ijkne,m),j),i)*&
521 dvdx_at_n*
axz_u(ijk) - &
522 avg_x_h(avg_y_h(epmu_s(ijks,m),epmu_s(ijk,m),jm),&
523 avg_y_h(epmu_s(ijkse,m),epmu_s(ijke,m),jm),i)*&
524 dvdx_at_s*
axz_u(ijmk) + ssy_cut
537 IF(w_node_at_te.AND.w_node_at_tw)
THEN 545 CALL get_del_h(ijk,
'U_MOMENTUM', xi, yi, zi, &
547 dwdx_at_t = (
w_s(ipjk,m) -
w_s(ijk,m)) * &
549 IF(
noc_us) dwdx_at_t = dwdx_at_t - ((wi-ww_s)*&
555 IF(w_node_at_be.AND.w_node_at_bw)
THEN 560 sx =
x_w(ipjkm) -
x_w(ijkm)
561 sy =
y_w(ipjkm) -
y_w(ijkm)
562 sz =
z_w(ipjkm) -
z_w(ijkm)
563 CALL get_del_h(ijk,
'U_MOMENTUM', xi, yi, &
564 zi, del_h, nx, ny, nz)
565 dwdx_at_b = (
w_s(ipjkm,m) -
w_s(ijkm,m)) * &
567 IF(
noc_us) dwdx_at_b = dwdx_at_b - ((wi-ww_s)*&
573 IF(w_node_at_tw)
THEN 575 y_w(ijk),
z_w(ijk), del_h, nx, ny, nz)
576 ssz_cut = -mu_s_cut * (
w_s(ijk,m) - ww_s) / &
582 mu_ste = avg_x_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
583 avg_z_h(epmu_s(ijke,m),epmu_s(ijkte,m),k),i
integer, dimension(:), allocatable ip1
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 z_u
integer, dimension(:), allocatable i_of
logical, dimension(:), allocatable cut_u_cell_at
double precision, dimension(:), allocatable oneodx_e_w
double precision, dimension(dimension_bc, dim_m) bc_uw_s
subroutine calc_tau_u_s(lTAU_U_S)
subroutine calc_cg_tau_u_s(IJK, M, SSX, SSY, SSZ, SBV)
double precision, dimension(:), allocatable ox_e
double precision, dimension(:), allocatable oneodx_e_v
double precision, dimension(:), allocatable odx
subroutine calc_reg_tau_u_s(IJK, M, SSX, SSY, SSZ, SBV, VTZB)
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:), allocatable x_u
integer, dimension(10) cg_safe_mode
logical, dimension(:), allocatable wall_v_at
integer, dimension(dimension_bc) bc_type_enum
double precision, dimension(:), allocatable ayz_u
double precision, parameter undefined
double precision, dimension(:), allocatable y_w
double precision, dimension(:), allocatable ayz
double precision, dimension(:), allocatable z_v
double precision, dimension(:,:), allocatable epmu_s
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:), allocatable axz_u
double precision, dimension(:), allocatable vsh
double precision, dimension(:), allocatable oneodx_e_u
integer, dimension(:), allocatable k_of
double precision, dimension(:,:), allocatable eplambda_s
logical, dimension(:), allocatable blocked_w_cell_at
integer, dimension(:), allocatable bc_u_id
double precision, dimension(:), allocatable x_w
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
integer, dimension(:), allocatable jm1
logical, dimension(:), allocatable wall_w_at
double precision, dimension(:), allocatable ox
double precision, dimension(dimension_bc, dim_m) bc_hw_s
double precision, dimension(:), allocatable x_v
double precision, parameter half
double precision, parameter dil_ep_s
integer, dimension(:), allocatable km1
double precision, dimension(:), allocatable odz
double precision function ep_s(IJK, xxM)
double precision, dimension(:), allocatable vol_u
double precision, dimension(:), allocatable area_u_cut
logical, dimension(:), allocatable blocked_v_cell_at
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 axy_u
double precision, dimension(dimension_bc, dim_m) bc_vw_s
double precision, dimension(:), allocatable y_u
double precision, parameter zero