29 USE run, only: kt_type_enum, ghd_2007
49 INTEGER :: IJK, J, IJKN
51 INTEGER :: I, IJKE, IJKW, IJKNE, IJKNW
55 DOUBLE PRECISION :: EPSA, EPStmp
57 DOUBLE PRECISION :: Sbv, Ssx, Ssy, Ssz
59 DOUBLE PRECISION :: Source_diff, Diffco_e, Diffco_w
63 IF(kt_type_enum == ghd_2007 .AND. m /=
mmax) cycle
73 IF(wall_at(ijk)) cycle
77 IF (kt_type_enum == ghd_2007)
THEN 80 epstmp = epstmp + avg_y(
ep_s(ijk,l),
ep_s(ijkn,l),j)
84 epsa = avg_y(
ep_s(ijk,m),
ep_s(ijkn,m),j)
87 IF ( .NOT.sip_at_n(ijk) .AND. epsa>
dil_ep_s)
THEN 101 ijkne = east_of(ijkn)
103 ijknw = north_of(ijkw)
114 ltau_v_s(ijk,m) = sbv + ssx + ssy + ssz + source_diff
116 ltau_v_s(ijk,m) =
zero 153 INTEGER,
INTENT(IN) :: IJK
155 INTEGER,
INTENT(IN) :: M
157 DOUBLE PRECISION,
INTENT(OUT) :: SSX
158 DOUBLE PRECISION,
INTENT(OUT) :: SSY
159 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
160 DOUBLE PRECISION,
INTENT(OUT) :: SBV
165 INTEGER :: I, J, K, IM, KM, JP
166 INTEGER :: IJKE, IJKW, IJKN, IJKT, IJKB
167 INTEGER :: IJKNE, IJKNW, IJKTN, IJKBN
168 INTEGER :: IJPK, IJMK, IMJK, IJKM
169 INTEGER :: IMJPK, IJPKM
188 ijkne = east_of(ijkn)
190 ijknw = north_of(ijkw)
192 ijktn = north_of(ijkt)
193 ijkb = bottom_of(ijk)
194 ijkbn = north_of(ijkb)
202 sbv = (eplambda_s(ijkn,m)*
trd_s(ijkn,m)-&
203 eplambda_s(ijk,m)*
trd_s(ijk,m))*
axz(ijk)
209 ssx = avg_y_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
210 avg_x_h(epmu_s(ijkn,m),epmu_s(ijkne,m),i),j)*&
212 avg_y_h(avg_x_h(epmu_s(ijkw,m),epmu_s(ijk,m),im),&
213 avg_x_h(epmu_s(ijknw,m),epmu_s(ijkn,m),im),j)*&
219 ssy = epmu_s(ijkn,m)*(
v_s(ijpk,m)-
v_s(ijk,m))*
ody(jp)*
axz_v(ijk) -
225 ssz = avg_y_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
226 avg_z_h(epmu_s(ijkn,m),epmu_s(ijktn,m),k),j)*&
228 avg_y_h(avg_z_h(epmu_s(ijkb,m),epmu_s(ijk,m),km),&
229 avg_z_h(epmu_s(ijkbn,m),epmu_s(ijkn,m),km),j)*&
272 INTEGER,
INTENT(IN) :: IJK
274 INTEGER,
INTENT(IN) :: M
276 DOUBLE PRECISION,
INTENT(OUT) :: SSX
277 DOUBLE PRECISION,
INTENT(OUT) :: SSY
278 DOUBLE PRECISION,
INTENT(OUT) :: SSZ
279 DOUBLE PRECISION,
INTENT(OUT) :: SBV
284 INTEGER :: I, J, K, IM, KM, JP
285 INTEGER :: IJKE, IJKW, IJKN, IJKT, IJKB
286 INTEGER :: IJKNE, IJKNW, IJKTN, IJKBN
287 INTEGER :: IJPK, IJMK, IMJK, IJKM
288 INTEGER :: IMJPK, IJPKM
291 DOUBLE PRECISION :: DEL_H,Nx,Ny,Nz
292 LOGICAL :: U_NODE_AT_NE,U_NODE_AT_NW,U_NODE_AT_SE,U_NODE_AT_SW
293 LOGICAL :: W_NODE_AT_TN,W_NODE_AT_TS,W_NODE_AT_BN,W_NODE_AT_BS
294 DOUBLE PRECISION :: dudy_at_E,dudy_at_W
295 DOUBLE PRECISION :: dwdy_at_T,dwdy_at_B
296 DOUBLE PRECISION :: Xi,Yi,Zi,Ui,Wi,Sx,Sy,Sz
297 DOUBLE PRECISION :: MU_S_CUT,SSX_CUT,SSZ_CUT
298 DOUBLE PRECISION :: UW_s,VW_s,WW_s
319 ijkne = east_of(ijkn)
321 ijknw = north_of(ijkw)
323 ijktn = north_of(ijkt)
324 ijkb = bottom_of(ijk)
325 ijkbn = north_of(ijkb)
329 sbv = (eplambda_s(ijkn,m)*
trd_s(ijkn,m)) *
axz_v(ijk) - &
330 (eplambda_s(ijk,m) *
trd_s(ijk,m) ) *
axz_v(ijmk)
334 ssx = avg_y_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
335 avg_x_h(epmu_s(ijkn,m),epmu_s(ijkne,m),i),j)*&
345 ssz = avg_y_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
346 avg_z_h(epmu_s(ijkn,m),epmu_s(ijktn,m),k),j)*&
405 mu_s_cut = (
vol(ijk)*epmu_s(ijk,m) + &
406 vol(ijpk)*epmu_s(ijkn,m))/&
422 IF(u_node_at_ne.AND.u_node_at_se)
THEN 430 CALL get_del_h(ijk,
'V_MOMENTUM', xi, yi, zi, del_h, &
433 IF(
noc_vs) dudy_at_e = dudy_at_e - ((ui-uw_s) * &
439 IF(u_node_at_nw.AND.u_node_at_sw)
THEN 444 sx =
x_u(imjpk) -
x_u(imjk)
445 sy =
y_u(imjpk) -
y_u(imjk)
446 sz =
z_u(imjpk) -
z_u(imjk)
447 CALL get_del_h(ijk,
'V_MOMENTUM', xi, yi, zi, del_h, &
450 IF(
noc_vs) dudy_at_w = dudy_at_w - ((ui-uw_s) * &
456 IF(u_node_at_se)
THEN 458 z_u(ijk), del_h, nx, ny, nz)
459 ssx_cut = -mu_s_cut * (
u_s(ijk,m) - uw_s) / &
465 ssx = avg_y_h(avg_x_h(epmu_s(ijk,m),epmu_s(ijke,m),i),&
466 avg_x_h(epmu_s(ijkn,m),epmu_s(ijkne,m),i),j)*&
467 dudy_at_e*
ayz_v(ijk) - &
468 avg_y_h(avg_x_h(epmu_s(ijkw,m),epmu_s(ijk,m),im),&
469 avg_x_h(epmu_s(ijknw,m),epmu_s(ijkn,m),im),j)*&
470 dudy_at_w*
ayz_v(imjk) + ssx_cut
474 z_v(ijk), del_h, nx, ny, nz)
475 ssy = epmu_s(ijkn,m)*(
v_s(ijpk,m)-
v_s(ijk,m))*&
477 epmu_s(ijk,m)*(
v_s(ijk,m)-
v_s(ijmk,m))*&
479 mu_s_cut * (
v_s(ijk,m) - vw_s)/del_h * &
493 IF(w_node_at_tn.AND.w_node_at_ts)
THEN 501 CALL get_del_h(ijk,
'V_MOMENTUM', xi, yi, zi, del_h, &
504 IF(
noc_vs) dwdy_at_t = dwdy_at_t - ((wi-ww_s) * &
510 IF(w_node_at_bn.AND.w_node_at_bs)
THEN 515 sx =
x_w(ijpkm) -
x_w(ijkm)
516 sy =
y_w(ijpkm) -
y_w(ijkm)
517 sz =
z_w(ijpkm) -
z_w(ijkm)
518 CALL get_del_h(ijk,
'V_MOMENTUM', xi, yi, zi, del_h, &
521 IF(
noc_vs) dwdy_at_b = dwdy_at_b - ((wi-ww_s) * &
527 IF(w_node_at_ts)
THEN 529 z_w(ijk), del_h, nx, ny, nz)
530 ssz_cut = -mu_s_cut * (
w_s(ijk,m) - ww_s) / &
536 ssz = avg_y_h(avg_z_h(epmu_s(ijk,m),epmu_s(ijkt,m),k),&
537 avg_z_h(epmu_s(ijkn,m),epmu_s(ijktn,m),k),j)*&
538 dwdy_at_t*
axy_v(ijk) - &
539 avg_y_h(avg_z_h(epmu_s(ijkb,m),epmu_s(ijk,m),km),&
540 avg_z_h(epmu_s(ijkbn,m),epmu_s(ijkn,m),km),j)*
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 wall_u_at
double precision, dimension(dimension_bc, dim_m) bc_uw_s
double precision, dimension(:), allocatable ody
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:), allocatable x_u
integer, dimension(:), allocatable im1
integer, dimension(10) cg_safe_mode
integer, dimension(dimension_bc) bc_type_enum
double precision, parameter undefined
double precision, dimension(:), allocatable y_w
double precision, dimension(:), allocatable z_v
double precision, dimension(:), allocatable oneody_n_u
double precision, dimension(:,:), allocatable epmu_s
double precision, dimension(:,:), allocatable u_s
double precision, dimension(:), allocatable ayz_v
integer, dimension(:), allocatable k_of
double precision, dimension(:,:), allocatable eplambda_s
double precision, dimension(:), allocatable ody_n
logical, dimension(:), allocatable blocked_w_cell_at
subroutine calc_cg_tau_v_s(IJK, M, SSX, SSY, SSZ, SBV)
double precision, dimension(:), allocatable x_w
double precision, dimension(:), allocatable area_v_cut
integer, dimension(:), allocatable j_of
logical, dimension(:), allocatable wall_w_at
double precision, dimension(:), allocatable axy_v
integer, dimension(:), allocatable jp1
double precision, dimension(:), allocatable oneody_n_v
logical, dimension(:), allocatable blocked_u_cell_at
double precision, dimension(dimension_bc, dim_m) bc_hw_s
double precision, dimension(:), allocatable x_v
double precision, parameter half
double precision, dimension(:), allocatable axz
integer, dimension(:), allocatable bc_v_id
subroutine calc_reg_tau_v_s(IJK, M, SSX, SSY, SSZ, SBV)
double precision, parameter dil_ep_s
logical, dimension(:), allocatable cut_v_cell_at
integer, dimension(:), allocatable km1
double precision function ep_s(IJK, xxM)
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 oneody_n_w
double precision, dimension(:), allocatable vol
double precision, dimension(dimension_bc, dim_m) bc_vw_s
double precision, dimension(:), allocatable axz_v
double precision, dimension(:), allocatable y_u
double precision, parameter zero
subroutine calc_tau_v_s(lTAU_V_S)