75 INTEGER :: I, IJK,IMJK, IJMK, IJKE, IJKM, IPJK, IPJKM, &
76 J, K, IJPK, IPJMK, IJKP
82 DOUBLE PRECISION :: PgE
84 DOUBLE PRECISION :: EPSA, EPStmp, epse, epsw, epsn, epss, &
85 epst, epsb, epsMix, epsMixE
86 DOUBLE PRECISION :: SUM_EPS_CP
88 DOUBLE PRECISION :: ROPSA
90 DOUBLE PRECISION :: dro1, dro2, droa
92 DOUBLE PRECISION :: wse, MUSA
94 DOUBLE PRECISION :: Sdp, Sdps
96 DOUBLE PRECISION :: V0, Vmt, Vbf, Vcf, Vtza, Vmttmp
98 DOUBLE PRECISION :: Ghd_drag, avgRop
100 DOUBLE PRECISION :: HYS_drag, avgDrag
102 DOUBLE PRECISION :: ROP_MA, Uge, Ugw, Vgw, Vge, Ugn,&
103 Ugs, Wgb, Wgt, Wge, Ugb, Ugt
104 DOUBLE PRECISION :: F_vir
108 IF(kt_type_enum /= ghd_2007 .OR. &
109 (kt_type_enum == ghd_2007 .AND. m==
mmax))
THEN 126 IF(wall_at(ijk)) cycle
141 IF (kt_type_enum == ghd_2007)
THEN 147 epstmp = epstmp + avg_x(
ep_s(ijk,l),
ep_s(ijke,l),i)
148 epsmix = epsmix +
ep_s(ijk,l)
149 epsmixe = epsmixe +
ep_s(ijke,l)
150 IF(ip_at_e(ijk))
THEN 152 ELSEIF(sip_at_e(ijk))
THEN 153 isv = is_id_at_e(ijk)
159 epsa = avg_x(
ep_s(ijk,m),
ep_s(ijke,m),i)
163 IF (ip_at_e(ijk))
THEN 174 ELSEIF (sip_at_e(ijk))
THEN 182 isv = is_id_at_e(ijk)
195 IF (kt_type_enum == ghd_2007)
THEN 203 epsw = epsw +
ep_s(west_of(ijk),l)
204 epse = epse +
ep_s(east_of(ijk),l)
205 epsn = epsn +
ep_s(north_of(ijk),l)
206 epss = epss +
ep_s(south_of(ijk),l)
208 epst = epst +
ep_s(top_of(ijk),l)
209 epsb = epsb +
ep_s(bottom_of(ijk),l)
213 epsw =
ep_s(west_of(ijk),m)
214 epse =
ep_s(east_of(ijk),m)
215 epsn =
ep_s(north_of(ijk),m)
216 epss =
ep_s(south_of(ijk),m)
218 epst =
ep_s(top_of(ijk),m)
219 epsb =
ep_s(bottom_of(ijk),m)
223 IF (epsw >
dil_ep_s .AND. .NOT.is_at_e(imjk)) a_m(ijk,
west 224 IF (epse >
dil_ep_s .AND. .NOT.is_at_e(ijk)) a_m(ijk,
east 228 IF (epsb >
dil_ep_s .AND. .NOT.is_at_t(ijkm)) a_m(ijk
229 IF (epst >
dil_ep_s .AND. .NOT.is_at_t(ijk)) a_m(ijk
233 b_m(ijk,m) = -
u_s(ijk,m)
235 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+a_m
273 IF(
smax > 1 .AND. kt_type_enum /= ghd_2007)
THEN 277 sum_eps_cp=sum_eps_cp+avg_x(
ep_s(ijk,mm),
ep_s 280 sdps = -( (
p_s(ijke,m)-
p_s(ijk,m))+(epsa/sum_eps_cp
292 sdps = -(
p_s(ijke,m)-
p_s(ijk,m))*
ayz(ijk)
324 v0 = v0 +
cv * rop_ma *
odt 336 ugw = avg_x_e(
u_g(imjk),
u_g(ijk),i)
338 vgw = avg_y_n(
v_g(ijmk),
v_g(ijk))
339 vge = avg_y_n(
v_g(ipjmk),
v_g(ipjk))
341 ugn = avg_y(
u_g(ijk),
u_g(ijpk),j)
343 wgb = avg_z_t(
w_g(ijkm),
w_g(ijk))
344 wgt = avg_z_t(
w_g(ipjkm),
w_g(ipjk))
345 wge = avg_x(wgb,wgt,i)
347 ugt = avg_z(
u_g(ijk),
u_g(ijkp),k)
348 f_vir = f_vir + wge*
ox_e(i) * &
349 (ugt - ugb) *
axy(ijk)
355 f_vir = f_vir +
u_g(ijk)*(uge - ugw) *
ayz(ijk) + &
356 avg_x(vgw,vge,i) * (ugn - ugs) *
axz(ijk)
357 f_vir = f_vir *
cv * rop_ma
362 IF (kt_type_enum == ghd_2007)
THEN 381 IF (kt_type_enum == ghd_2007)
THEN 383 dro2 =
rop_s(ijke,m) -
ro_g(ijke)*epsmixe
384 droa = avg_x(dro1,dro2,i)
385 vbf = droa*
bfx_s(ijk,m)
389 droa = avg_x(dro1,dro2,i)
390 vbf = droa*
bfx_s(ijk,m)
393 vbf = ropsa*
bfx_s(ijk,m)
398 IF (kt_type_enum == ghd_2007)
THEN 401 if(avgrop >
zero) ghd_drag = ghd_drag - &
402 avg_x(
f_gs(ijk,l),
f_gs(ijke,l),i) * &
409 IF (drag_type_enum .EQ. hys .AND. &
410 kt_type_enum /= ghd_2007)
THEN 426 vcf = ropsa*wse**2*
ox_e(i)
428 vcf = vcf +
cv*rop_ma*wse**2*
ox_e(i)
438 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+&
442 b_m(ijk,m) = b_m(ijk,m) - (sdp + sdps + &
444 ( (v0+zmax((-vmt)))*
u_so(ijk,m)+&
445 vbf + vcf + hys_drag)*
vol_u(ijk) )
450 IF (kt_type_enum == ia_2005)
THEN 451 b_m(ijk,m) = b_m(ijk,m) -
ktmom_u_s(ijk,m)
452 ELSEIF (kt_type_enum == ghd_2007)
THEN 453 b_m(ijk,m) = b_m(ijk,m) - ghd_drag*
vol_u(ijk)
525 INTEGER,
INTENT(IN) :: M
532 INTEGER :: I, J, K, I1, I2, J1, J2, K1, K2, IJK,&
533 IM, JM, KM, IJKW, IMJK, IPJK, IP
541 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
543 ijk = funijk(i1,j1,k1)
544 IF (ns_wall_at(ijk))
THEN 554 ELSEIF (fs_wall_at(ijk))
THEN 571 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
573 ijk = funijk(i1,j1,k1)
574 IF (ns_wall_at(ijk))
THEN 583 ELSEIF (fs_wall_at(ijk))
THEN 600 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
602 ijk = funijk(i1,j1,k1)
603 IF (ns_wall_at(ijk))
THEN 612 ELSEIF (fs_wall_at(ijk))
THEN 628 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
630 ijk = funijk(i1,j1,k1)
631 IF (ns_wall_at(ijk))
THEN 640 ELSEIF (fs_wall_at(ijk))
THEN 671 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
674 IF (.NOT.wall_at(ijk)) cycle
683 IF (fluid_at(north_of(ijk)))
THEN 685 ELSEIF (fluid_at(south_of(ijk)))
THEN 687 ELSEIF (fluid_at(top_of(ijk)))
THEN 689 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 696 CALL jj_bc_u_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
710 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
713 IF (.NOT.wall_at(ijk)) cycle
722 IF (fluid_at(north_of(ijk)))
THEN 724 ELSEIF (fluid_at(south_of(ijk)))
THEN 726 ELSEIF (fluid_at(top_of(ijk)))
THEN 728 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 735 CALL jj_bc_u_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
749 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
752 IF (.NOT.wall_at(ijk)) cycle
763 IF (fluid_at(north_of(ijk)))
THEN 773 ELSEIF (fluid_at(south_of(ijk)))
THEN 783 ELSEIF (fluid_at(top_of(ijk)))
THEN 795 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 812 CALL jj_bc_u_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
827 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
854 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
888 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
917 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
928 b_m(ijk,m) = -
u_s(ijk,m)
938 b_m(ijkw,m) = -
u_s(ijkw,m)
965 SUBROUTINE jj_bc_u_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
995 INTEGER,
INTENT(IN) :: L
997 INTEGER,
INTENT(IN) :: I1, I2, J1, J2, K1, K2
999 INTEGER,
INTENT(IN) :: M
1008 INTEGER :: I, J, K, IJK, JM, KM, IPJK
1010 DOUBLE PRECISION :: hw, gw, cw
1016 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1020 IF (.NOT.wall_at(ijk)) cycle
1032 IF (fluid_at(north_of(ijk)))
THEN 1033 ipjk = ip_of(north_of(ijk))
1034 IF (wall_at(ipjk)) cycle
1061 ELSEIF (fluid_at(south_of(ijk)))
THEN 1062 ipjk = ip_of(south_of(ijk))
1063 IF (wall_at(ipjk)) cycle
1080 a_m(ijk,0,m) = -(
half*hw +
ody_n(jm)*gw)
1084 ELSEIF (fluid_at(top_of(ijk)))
THEN 1085 ipjk = ip_of(top_of(ijk))
1086 IF (wall_at(ipjk)) cycle
1107 ELSEIF (fluid_at(bottom_of(ijk)))
THEN 1108 ipjk = ip_of(bottom_of(ijk))
1109 IF (wall_at(ipjk)) cycle
1177 INTEGER :: IJK, I, J, K
1182 DOUBLE PRECISION :: pSource
1193 if(
ps_u_s(psv,m) < 0.0d0)
then 1205 if(.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1209 if(.NOT.fluid_at(ijk)) cycle
1211 if(a_m(ijk,0,m) == -
one .AND. &
1212 b_m(ijk,m) == -
u_s(ijk,m))
then 1218 b_m(ijk,m) = b_m(ijk,m) - psource * &
integer, dimension(:), allocatable ip1
double precision, dimension(:,:), allocatable tau_u_s
integer, dimension(dimension_bc) bc_k_b
integer, dimension(:), allocatable imap
integer, dimension(dimension_ps) ps_i_w
subroutine cg_source_u_s(A_M, B_M, M)
double precision, dimension(:,:), allocatable joix
integer, dimension(:), allocatable i_of
double precision, dimension(:), allocatable ctau_u_g
double precision, dimension(dimension_bc, dim_m) bc_uw_s
double precision, dimension(:), allocatable ox_e
double precision, parameter one
double precision, dimension(:), allocatable axy
integer, dimension(dimension_bc) bc_i_w
subroutine cg_source_u_s_bc(A_M, B_M, M)
double precision, dimension(:,:), allocatable w_s
double precision, dimension(:), allocatable x_e
logical, dimension(0:dim_m) momentum_x_eq
integer, dimension(dimension_bc) bc_j_n
integer, dimension(:), allocatable im1
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 ayz
logical, dimension(dim_m) close_packed
logical, dimension(:), allocatable cut_u_treatment_at
logical, dimension(dimension_ps) ps_defined
double precision, dimension(:), allocatable u_go
double precision, dimension(:,:), allocatable epmu_s
double precision, dimension(:,:), allocatable u_s
character, dimension(dimension_bc) bc_plane
double precision, dimension(dimension_ps) ps_volume
integer, dimension(:), allocatable k_of
double precision function bfx_s(IJK, M)
integer, dimension(dimension_ps) ps_k_b
double precision, dimension(:), allocatable ody_n
subroutine calc_grbdry(IJK1, IJK2, FCELL, COM, M, L, Gw, Hw, Cw)
double precision, dimension(dimension_ps, dim_m) ps_u_s
integer, dimension(dimension_bc) bc_k_t
logical, dimension(:,:,:), allocatable dead_cell_at
integer, dimension(:), allocatable j_of
integer, dimension(:), allocatable jm1
double precision, parameter small_number
integer, dimension(dimension_bc) bc_j_s
double precision, dimension(:), allocatable mms_u_s_src
double precision, dimension(dimension_is, dim_m) is_vel_s
logical, dimension(:), allocatable blocked_u_cell_at
double precision, dimension(dimension_bc, dim_m) bc_hw_s
double precision, dimension(:), allocatable v_g
logical, dimension(dimension_bc) bc_defined
integer, dimension(dimension_ps) ps_k_t
double precision, dimension(:), allocatable w_g
double precision, dimension(:,:), allocatable u_so
double precision, parameter half
subroutine source_u_s(A_M, B_M)
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
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 a_upg_w
double precision, dimension(:,:), allocatable f_gs
double precision, dimension(:), allocatable vol_u
subroutine point_source_u_s(A_M, B_M)
subroutine source_u_s_bc(A_M, B_M, M)
double precision, dimension(:,:), allocatable rop_s
integer, dimension(dimension_bc) bc_jj_ps
double precision, dimension(:,:,:), allocatable beta_ij
integer, dimension(dimension_ps) ps_j_s
double precision, dimension(:), allocatable vol
double precision, dimension(:), allocatable odz_t
subroutine jj_bc_u_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
double precision, dimension(:), allocatable ro_g
integer, dimension(dimension_ps) ps_i_e
double precision, dimension(:), allocatable rop_g
double precision, dimension(:,:), allocatable ktmom_u_s
integer, dimension(dimension_bc) bc_i_e
double precision, parameter zero
double precision, dimension(:), allocatable a_upg_e