79 INTEGER :: I, J, K, IJK, IMJK, IJMK, IJKM, IJKN, &
80 IPJK, IJPK, IJKP, IMJPK, IJPKM
86 DOUBLE PRECISION :: PgN
88 DOUBLE PRECISION :: EPSA, EPStmp, epse, epsw, epsn, epss, &
89 epst, epsb, epsMix, epsMixN
90 DOUBLE PRECISION :: SUM_EPS_CP
92 DOUBLE PRECISION :: ROPSA
94 DOUBLE PRECISION :: dro1, dro2, droa
96 DOUBLE PRECISION :: Sdp, Sdps
98 DOUBLE PRECISION :: V0, Vmt, Vbf, Vmttmp
100 DOUBLE PRECISION :: Ghd_drag, avgRop
102 DOUBLE PRECISION :: HYS_drag, avgDrag
104 DOUBLE PRECISION :: ROP_MA, Vgn, Vgs, Uge, Ugw, Vge,&
105 Vgw, Wgt, Wgb, Vgt, Vgb
106 DOUBLE PRECISION :: F_vir
108 DOUBLE PRECISION :: VSH_n,VSH_s,VSH_e,VSH_w,VSH_p,Source_conv
109 DOUBLE PRECISION :: SRT
114 IF(kt_type_enum /= ghd_2007 .OR. &
115 (kt_type_enum == ghd_2007 .AND. m==
mmax))
THEN 132 IF(wall_at(ijk)) cycle
147 IF (kt_type_enum == ghd_2007)
THEN 152 epstmp = epstmp + avg_y(
ep_s(ijk,l),
ep_s(ijkn,l),j)
153 epsmix = epsmix +
ep_s(ijk,l)
154 epsmixn = epsmixn +
ep_s(ijkn,l)
155 IF(ip_at_n(ijk))
THEN 157 ELSEIF(sip_at_n(ijk))
THEN 158 isv = is_id_at_n(ijk)
164 epsa = avg_y(
ep_s(ijk,m),
ep_s(ijkn,m),j)
168 IF (ip_at_n(ijk))
THEN 179 ELSEIF (sip_at_n(ijk))
THEN 187 isv = is_id_at_n(ijk)
200 IF (kt_type_enum == ghd_2007)
THEN 208 epsw = epsw +
ep_s(west_of(ijk),l)
209 epse = epse +
ep_s(east_of(ijk),l)
210 epsn = epsn +
ep_s(north_of(ijk),l)
211 epss = epss +
ep_s(south_of(ijk),l)
213 epst = epst +
ep_s(top_of(ijk),l)
214 epsb = epsb +
ep_s(bottom_of(ijk),l)
218 epsw =
ep_s(west_of(ijk),m)
219 epse =
ep_s(east_of(ijk),m)
220 epsn =
ep_s(north_of(ijk),m)
221 epss =
ep_s(south_of(ijk),m)
223 epst =
ep_s(top_of(ijk),m)
224 epsb =
ep_s(bottom_of(ijk),m)
228 IF (epsw >
dil_ep_s .AND. .NOT.is_at_e(imjk)) a_m(ijk,
west 229 IF (epse >
dil_ep_s .AND. .NOT.is_at_e(ijk)) a_m(ijk,
east 233 IF (epsb >
dil_ep_s .AND. .NOT.is_at_t(ijkm)) a_m(ijk
234 IF (epst >
dil_ep_s .AND. .NOT.is_at_t(ijk)) a_m(ijk
238 b_m(ijk,m) = -
v_s(ijk,m)
240 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+a_m
278 IF(
smax > 1 .AND. kt_type_enum /= ghd_2007)
THEN 282 sum_eps_cp=sum_eps_cp+avg_y(
ep_s(ijk,mm),
ep_s 285 sdps = - ((
p_s(ijkn,m)-
p_s(ijk,m))+(epsa/sum_eps_cp
297 sdps = -(
p_s(ijkn,m)-
p_s(ijk,m))*
axz(ijk)
327 v0 = v0 +
cv * rop_ma *
odt 339 vgs = avg_y_n(
v_g(ijmk),
v_g(ijk))
340 vgn = avg_y_n(
v_g(ijk),
v_g(ijpk))
341 uge = avg_y(
u_g(ijk),
u_g(ijpk),j)
342 ugw = avg_y(
u_g(imjk),
u_g(imjpk),j)
344 vgw = avg_x(
v_g(imjk),
v_g(ijk),i)
346 wgt = avg_y(
w_g(ijk),
w_g(ijpk),j)
347 wgb = avg_y(
w_g(ijkm),
w_g(ijpkm),j)
349 vgb = avg_z(
v_g(ijkm),
v_g(ijk),k)
350 f_vir = f_vir + avg_z_t(wgb,wgt)*&
351 ox(i) * (vgt - vgb)*
axy(ijk)
354 f_vir = f_vir +
v_g(ijk)*(vgn - vgs)*
axz(ijk) + &
355 avg_x_e(ugw,uge,
ip1(i))*(vge - vgw)*
ayz(ijk)
356 f_vir = f_vir *
cv * rop_ma
360 IF (kt_type_enum == ghd_2007)
THEN 377 IF (kt_type_enum == ghd_2007)
THEN 379 dro2 =
rop_s(ijkn,m) -
ro_g(ijkn)*epsmixn
380 droa = avg_y(dro1,dro2,j)
381 vbf = droa*
bfy_s(ijk,m)
385 droa = avg_y(dro1,dro2,j)
386 vbf = droa*
bfy_s(ijk,m)
389 vbf = ropsa*
bfy_s(ijk,m)
394 IF (kt_type_enum == ghd_2007)
THEN 397 if(avgrop >
zero) ghd_drag = ghd_drag -&
398 avg_y(
f_gs(ijk,l),
f_gs(ijkn,l),j) * &
406 IF (drag_type_enum .EQ. hys .AND. kt_type_enum /= ghd_2007
THEN 423 source_conv=a_m(ijk,
north,m)*vsh_n+a_m(ijk,
south,m)*vsh_s
432 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+&
436 b_m(ijk,m) = b_m(ijk,m) - (sdp + sdps + &
438 source_conv + f_vir + &
439 ( (v0+zmax((-vmt)))*
v_so(ijk,m) + &
440 vbf + hys_drag)*
vol_v(ijk) )
445 IF (kt_type_enum == ia_2005)
THEN 446 b_m(ijk,m) = b_m(ijk,m) -
ktmom_v_s(ijk,m)
447 ELSEIF (kt_type_enum == ghd_2007)
THEN 448 b_m(ijk,m) = b_m(ijk,m) - ghd_drag*
vol_v(ijk)
520 INTEGER,
INTENT(IN) :: M
527 INTEGER :: I, J, K, I1, I2, J1, J2, K1, K2, IJK,&
528 IM, KM, IJKS, IJMK, IJPK
536 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
538 ijk = funijk(i1,j1,k1)
539 IF (ns_wall_at(ijk))
THEN 549 ELSEIF (fs_wall_at(ijk))
THEN 566 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
568 ijk = funijk(i1,j1,k1)
569 IF (ns_wall_at(ijk))
THEN 578 ELSEIF (fs_wall_at(ijk))
THEN 595 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
597 ijk = funijk(i1,j1,k1)
598 IF (ns_wall_at(ijk))
THEN 607 ELSEIF (fs_wall_at(ijk))
THEN 623 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
625 ijk = funijk(i1,j1,k1)
626 IF (ns_wall_at(ijk))
THEN 635 ELSEIF (fs_wall_at(ijk))
THEN 665 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
668 IF (.NOT.wall_at(ijk)) cycle
678 IF (fluid_at(east_of(ijk)))
THEN 680 ELSEIF (fluid_at(west_of(ijk)))
THEN 682 ELSEIF (fluid_at(top_of(ijk)))
THEN 684 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 691 CALL jj_bc_v_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
705 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
708 IF (.NOT.wall_at(ijk)) cycle
717 IF (fluid_at(east_of(ijk)))
THEN 719 ELSEIF (fluid_at(west_of(ijk)))
THEN 721 ELSEIF (fluid_at(top_of(ijk)))
THEN 723 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 730 CALL jj_bc_v_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
744 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
747 IF (.NOT.wall_at(ijk)) cycle
758 IF (fluid_at(east_of(ijk)))
THEN 768 ELSEIF (fluid_at(west_of(ijk)))
THEN 778 ELSEIF (fluid_at(top_of(ijk)))
THEN 790 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 807 CALL jj_bc_v_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
822 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
849 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
882 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
910 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
920 b_m(ijk,m) = -
v_s(ijk,m)
930 b_m(ijks,m) = -
v_s(ijks,m)
957 SUBROUTINE jj_bc_v_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
987 INTEGER,
INTENT(IN) :: L
989 INTEGER,
INTENT(IN) :: I1, I2, J1, J2, K1, K2
991 INTEGER,
INTENT(IN) :: M
1000 INTEGER :: I, J, K, IJK, IM, KM, IJPK
1002 DOUBLE PRECISION :: hw, gw, cw
1008 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1012 IF (.NOT.wall_at(ijk)) cycle
1024 IF (fluid_at(east_of(ijk)))
THEN 1025 ijpk = jp_of(east_of(ijk))
1026 IF (wall_at(ijpk)) cycle
1053 ELSEIF (fluid_at(west_of(ijk)))
THEN 1054 ijpk = jp_of(west_of(ijk))
1055 IF (wall_at(ijpk)) cycle
1072 a_m(ijk,0,m) = -(
half*hw +
odx_e(im)*gw)
1076 ELSEIF (fluid_at(top_of(ijk)))
THEN 1077 ijpk = jp_of(top_of(ijk))
1078 IF (wall_at(ijpk)) cycle
1099 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 1100 ijpk = jp_of(bottom_of(ijk))
1101 IF (wall_at(ijpk)) cycle
1169 INTEGER :: IJK, I, J, K
1173 DOUBLE PRECISION :: pSource
1182 if(
ps_v_s(psv,m) < 0.0d0)
then 1194 if(.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1198 if(.NOT.fluid_at(ijk)) cycle
1200 if(a_m(ijk,0,m) == -
one .AND. &
1201 b_m(ijk,m) == -
v_s(ijk,m))
then 1207 b_m(ijk,m) = b_m(ijk,m) - psource * &
integer, dimension(:), allocatable ip1
integer, dimension(dimension_bc) bc_k_b
integer, dimension(dimension_ps) ps_i_w
logical, dimension(0:dim_m) momentum_y_eq
double precision, dimension(:,:), allocatable v_s
double precision, dimension(:,:), allocatable v_so
integer, dimension(:), allocatable i_of
double precision, dimension(dimension_ps, dim_m) ps_v_s
subroutine cg_source_v_s_bc(A_M, B_M, M)
double precision, dimension(:), allocatable mms_v_s_src
double precision, parameter one
subroutine cg_source_v_s(A_M, B_M, M)
subroutine point_source_v_s(A_M, B_M)
double precision, dimension(:), allocatable a_vpg_s
double precision, dimension(:), allocatable axy
integer, dimension(dimension_bc) bc_i_w
integer, dimension(dimension_bc) bc_j_n
integer, dimension(:), allocatable im1
double precision, dimension(:,:), allocatable tau_v_s
double precision, dimension(dimension_ps, dim_m) ps_vel_mag_s
double precision, dimension(:,:), allocatable sum_r_s
integer, dimension(dimension_ps) ps_j_n
double precision, dimension(:), allocatable p_g
integer, parameter dimension_bc
integer, dimension(dimension_bc) bc_type_enum
double precision, parameter undefined
double precision, dimension(:), allocatable v_go
double precision, dimension(:), allocatable ayz
logical, dimension(dim_m) close_packed
subroutine source_v_s(A_M, B_M)
logical, dimension(dimension_ps) ps_defined
character, dimension(dimension_bc) bc_plane
double precision, dimension(:), allocatable vsh
double precision, dimension(dimension_ps) ps_volume
integer, dimension(:), allocatable k_of
integer, dimension(dimension_ps) ps_k_b
subroutine calc_grbdry(IJK1, IJK2, FCELL, COM, M, L, Gw, Hw, Cw)
double precision, dimension(:), allocatable ctau_v_g
integer, dimension(dimension_bc) bc_k_t
logical, dimension(:,:,:), allocatable dead_cell_at
subroutine source_v_s_bc(A_M, B_M, M)
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
double precision, parameter small_number
integer, dimension(dimension_bc) bc_j_s
double precision, dimension(:,:), allocatable ktmom_v_s
double precision, dimension(:), allocatable ox
double precision, dimension(dimension_is, dim_m) is_vel_s
double precision, dimension(dimension_bc, dim_m) bc_hw_s
double precision, dimension(:), allocatable v_g
logical, dimension(dimension_bc) bc_defined
double precision, dimension(:,:), allocatable joiy
integer, dimension(dimension_ps) ps_k_t
integer, dimension(:), allocatable kp1
double precision, dimension(:), allocatable w_g
double precision, parameter half
double precision, dimension(:,:), allocatable rop_so
double precision, dimension(:), allocatable axz
double precision, parameter dil_ep_s
double precision, dimension(:,:), allocatable ro_s
integer, parameter dimension_ps
integer, dimension(:), allocatable km1
double precision, dimension(:,:), allocatable p_s
double precision, dimension(:), allocatable p_star
logical, dimension(:), allocatable cut_v_treatment_at
double precision, dimension(dimension_ps, dim_m) ps_massflow_s
double precision, dimension(:), allocatable u_g
double precision function ep_s(IJK, xxM)
double precision, dimension(:,:), allocatable f_gs
subroutine jj_bc_v_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
integer, dimension(:), allocatable jmap
double precision, dimension(:,:), allocatable rop_s
integer, dimension(dimension_bc) bc_jj_ps
logical, dimension(:), allocatable blocked_v_cell_at
double precision, dimension(:), allocatable a_vpg_n
double precision, dimension(:,:,:), allocatable beta_ij
integer, dimension(dimension_ps) ps_j_s
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 ro_g
integer, dimension(dimension_ps) ps_i_e
double precision, dimension(:), allocatable rop_g
double precision function bfy_s(IJK, M)
integer, dimension(dimension_bc) bc_i_e
double precision, parameter zero
double precision, dimension(:), allocatable vol_v