77 INTEGER :: I, J, K, IJK, IJKT, IMJK, IJMK, IJKM, IJKP, IMJKP
78 INTEGER :: IJKE, IJKW, IJKTE, IJKTW, IM, IPJK, IJPK, IJMKP
84 DOUBLE PRECISION :: PgT
86 DOUBLE PRECISION :: EPSA, EPStmp, epse, epsw, epsn, epss, &
87 epst, epsb, epsMix, epsMixT
88 DOUBLE PRECISION :: SUM_EPS_CP
90 DOUBLE PRECISION :: ROPSA
92 DOUBLE PRECISION :: dro1, dro2, droa
94 DOUBLE PRECISION :: ugt, Cte, Ctw, cpe, cpw, MUoX
96 DOUBLE PRECISION :: Sdp, Sdps
98 DOUBLE PRECISION :: V0, Vmt, Vbf, Vcoa, Vcob, Vmttmp, vxza
100 DOUBLE PRECISION :: Ghd_drag, avgRop
102 DOUBLE PRECISION :: HYS_drag, avgDrag
104 DOUBLE PRECISION :: F_vir, ROP_MA, Uge, Ugw, Vgb, Vgt, Wge, &
105 Wgw, Wgn, Wgs, Wgt, Wgb
109 IF(kt_type_enum /= ghd_2007 .OR. &
110 (kt_type_enum == ghd_2007 .AND. m==
mmax))
THEN 128 IF(wall_at(ijk)) cycle
143 IF (kt_type_enum == ghd_2007)
THEN 149 epstmp = epstmp + avg_z(
ep_s(ijk,l),
ep_s(ijkt,l),k
151 epsmixt = epsmixt +
ep_s(ijkt,l)
152 IF(ip_at_t(ijk))
THEN 154 ELSEIF(sip_at_t(ijk))
THEN 155 isv = is_id_at_t(ijk)
161 epsa = avg_z(
ep_s(ijk,m),
ep_s(ijkt,m),k)
165 IF (ip_at_t(ijk))
THEN 176 ELSEIF (sip_at_t(ijk))
THEN 184 isv = is_id_at_t(ijk)
197 IF (kt_type_enum == ghd_2007)
THEN 205 epsw = epsw +
ep_s(west_of(ijk),l)
206 epse = epse +
ep_s(east_of(ijk),l)
207 epsn = epsn +
ep_s(north_of(ijk),l)
208 epss = epss +
ep_s(south_of(ijk),l)
209 epst = epst +
ep_s(top_of(ijk),l)
210 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)
217 epst =
ep_s(top_of(ijk),m)
218 epsb =
ep_s(bottom_of(ijk),m)
221 IF (epsw >
dil_ep_s .AND. .NOT.is_at_e(imjk)) a_m(ijk,
west 222 IF (epse >
dil_ep_s .AND. .NOT.is_at_e(ijk)) a_m(ijk,
east 226 IF (epst >
dil_ep_s .AND. .NOT.is_at_t(ijk)) a_m(ijk,
top 229 b_m(ijk,m) = -
w_s(ijk,m)
231 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+a_m
269 IF(
smax > 1 .AND. kt_type_enum /= ghd_2007)
THEN 273 sum_eps_cp=sum_eps_cp+avg_z(
ep_s(ijk,mm),
ep_s 276 sdps = -((
p_s(ijkt,m)-
p_s(ijk,m))+(epsa/sum_eps_cp
288 sdps = -(
p_s(ijkt,m)-
p_s(ijk,m))*
axy(ijk)
304 v0 = v0 +
cv * rop_ma *
odt 319 v0 = v0 +
cv * rop_ma *
odt 331 wgb = avg_z_t(
w_g(ijkm),
w_g(ijk))
332 wgt = avg_z_t(
w_g(ijk),
w_g(ijkp))
333 uge = avg_z(
u_g(ijk),
u_g(ijkp),k)
334 ugw = avg_z(
u_g(imjk),
u_g(imjkp),k)
335 ugt = avg_x_e(ugw,uge,
ip1(i))
337 wgw = avg_x(
w_g(imjk),
w_g(ijk),i)
338 vgb = avg_y_n(
v_g(ijmk),
v_g(ijk))
339 vgt = avg_y_n(
v_g(ijmkp),
v_g(ijkp))
341 wgn = avg_y(
w_g(ijk),
w_g(ijpk),j)
348 f_vir = f_vir +
w_g(ijk)*
ox(i) * &
349 (wgt - wgb)*
axy(ijk) + ugt*(wge - wgw)*
ayz(ijk)
355 IF (kt_type_enum == ghd_2007)
THEN 372 IF (kt_type_enum == ghd_2007)
THEN 374 dro2 =
rop_s(ijkt,m) -
ro_g(ijkt)*epsmixt
375 droa = avg_z(dro1,dro2,k)
376 vbf = droa*
bfz_s(ijk,m)
380 droa = avg_z(dro1,dro2,k)
381 vbf = droa*
bfz_s(ijk,m)
384 vbf = ropsa*
bfz_s(ijk,m)
389 IF (kt_type_enum == ghd_2007)
THEN 392 if(avgrop >
zero) ghd_drag = ghd_drag -&
399 IF (drag_type_enum .EQ. hys .AND. &
400 kt_type_enum /= ghd_2007)
THEN 425 vcoa = ropsa*ugt*
ox(i)
428 vcoa = vcoa +
cv*rop_ma*ugt*
ox(i)
431 vcob = -ropsa*ugt*
w_s(ijk,m)*
ox(i)
433 vcob = vcob -
cv*rop_ma*ugt*
w_s(ijk,m)*
ox(i)
462 a_m(ijk,
east,m) = a_m(ijk,
east,m) + cpe
463 a_m(ijk,
west,m) = a_m(ijk,
west,m) - cpw
465 a_m(ijk,0,m) = -(a_m(ijk,
east,m)+a_m(ijk,
west,m)+&
467 a_m(ijk,
bottom,m)+(v0+zmax(vmt)+vcoa+vxza)*&
468 vol_w(ijk)+ cte - ctw)
470 a_m(ijk,
east,m) = a_m(ijk,
east,m) - cte
471 a_m(ijk,
west,m) = a_m(ijk,
west,m) + ctw
473 b_m(ijk,m) = b_m(ijk, m) - (sdp + sdps + &
475 ( (v0+zmax((-vmt)))*
w_so(ijk,m)+ &
476 vbf + vcob + hys_drag)*
vol_w(ijk) )
481 IF (kt_type_enum == ia_2005)
THEN 482 b_m(ijk,m) = b_m(ijk,m) -
ktmom_w_s(ijk,m)
483 ELSEIF (kt_type_enum == ghd_2007)
THEN 484 b_m(ijk,m) = b_m(ijk,m) - ghd_drag*
vol_w(ijk)
558 INTEGER,
INTENT(IN) :: M
565 INTEGER :: I, J, K, I1, I2, J1, J2, K1, K2, IJK,&
566 IM, JM, IJKB, IJKM, IJKP
573 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
575 ijk = funijk(i1,j1,k1)
576 IF (ns_wall_at(ijk))
THEN 586 ELSEIF (fs_wall_at(ijk))
THEN 603 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
605 ijk = funijk(i1,j1,k1)
606 IF (ns_wall_at(ijk))
THEN 615 ELSEIF (fs_wall_at(ijk))
THEN 631 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
633 ijk = funijk(i1,j1,k1)
634 IF (ns_wall_at(ijk))
THEN 643 ELSEIF (fs_wall_at(ijk))
THEN 659 IF (.NOT.is_on_mype_plus2layers(i1,j1,k1)) cycle
661 ijk = funijk(i1,j1,k1)
662 IF (ns_wall_at(ijk))
THEN 671 ELSEIF (fs_wall_at(ijk))
THEN 702 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
705 IF (.NOT.wall_at(ijk)) cycle
714 IF (fluid_at(east_of(ijk)))
THEN 716 ELSEIF (fluid_at(west_of(ijk)))
THEN 718 ELSEIF (fluid_at(north_of(ijk)))
THEN 720 ELSEIF (fluid_at(south_of(ijk)))
THEN 727 CALL jj_bc_w_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
741 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
744 IF (.NOT.wall_at(ijk)) cycle
753 IF (fluid_at(east_of(ijk)))
THEN 755 ELSEIF (fluid_at(west_of(ijk)))
THEN 757 ELSEIF (fluid_at(north_of(ijk)))
THEN 759 ELSEIF (fluid_at(south_of(ijk)))
THEN 766 CALL jj_bc_w_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
780 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
783 IF (.NOT.wall_at(ijk)) cycle
794 IF (fluid_at(east_of(ijk)))
THEN 811 ELSEIF (fluid_at(west_of(ijk)))
THEN 830 ELSEIF (fluid_at(north_of(ijk)))
THEN 840 ELSEIF (fluid_at(south_of(ijk)))
THEN 855 CALL jj_bc_w_s (i1, i2, j1, j2, k1, k2, l, m, a_m, b_m
870 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
897 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
930 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
958 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
968 b_m(ijk,m) = -
w_s(ijk,m)
970 ijkb = bottom_of(ijk)
978 b_m(ijkb,m) = -
w_s(ijkb,m)
1004 SUBROUTINE jj_bc_w_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
1035 INTEGER,
INTENT(IN) :: L
1037 INTEGER,
INTENT(IN) :: I1, I2, J1, J2, K1, K2
1039 INTEGER,
INTENT(IN) :: M
1048 INTEGER :: I, J, K, IJK, JM, IM, IJKP
1050 DOUBLE PRECISION :: hw, gw, cw
1056 IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1059 IF (.NOT.wall_at(ijk)) cycle
1071 IF (fluid_at(east_of(ijk)))
THEN 1072 ijkp = kp_of(east_of(ijk))
1073 IF (wall_at(ijkp)) cycle
1099 ELSEIF (fluid_at(west_of(ijk)))
THEN 1100 ijkp = kp_of(west_of(ijk))
1101 IF (wall_at(ijkp)) cycle
1122 a_m(ijk,0,m) = -(
half*hw +
odx_e(im)*gw)
1127 ELSEIF (fluid_at(north_of(ijk)))
THEN 1128 ijkp = kp_of(north_of(ijk))
1129 IF (wall_at(ijkp)) cycle
1150 ELSEIF (fluid_at(south_of(ijk)))
THEN 1151 ijkp = kp_of(south_of(ijk))
1152 IF (wall_at(ijkp)) cycle
1169 a_m(ijk,0,m) = -(
half*hw +
ody_n(jm)*gw)
1219 INTEGER :: IJK, I, J, K
1223 DOUBLE PRECISION :: pSource
1243 if(.NOT.is_on_mype_plus2layers(i,j,k)) cycle
1247 if(.NOT.fluid_at(ijk)) cycle
1250 if(a_m(ijk,0,m) == -
one .AND. &
1251 b_m(ijk,m) == -
w_s(ijk,m))
then 1257 b_m(ijk,m) = b_m(ijk,m) - psource * &
integer, dimension(:), allocatable ip1
double precision, dimension(dimension_bc, dim_m) bc_ww_s
integer, dimension(dimension_bc) bc_k_b
integer, dimension(dimension_ps) ps_i_w
double precision, dimension(:), allocatable vol_w
integer, dimension(:), allocatable i_of
double precision, dimension(:), allocatable mms_w_s_src
double precision, dimension(:,:), allocatable tau_w_s
double precision, dimension(:), allocatable ox_e
double precision, parameter one
double precision, dimension(:), allocatable a_wpg_t
double precision, dimension(:), allocatable axy
integer, dimension(dimension_bc) bc_i_w
double precision, dimension(:,:), allocatable w_s
integer, dimension(dimension_bc) bc_j_n
integer, dimension(:), allocatable im1
subroutine cg_source_w_s_bc(A_M, B_M, M)
logical, dimension(0:dim_m) momentum_z_eq
double precision, dimension(0:dim_j) dy
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(0:dim_k) dz
double precision, dimension(:), allocatable ayz
logical, dimension(dim_m) close_packed
logical, dimension(dimension_ps) ps_defined
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
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)
logical, dimension(:), allocatable blocked_w_cell_at
integer, dimension(dimension_bc) bc_k_t
logical, dimension(:,:,:), allocatable dead_cell_at
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
integer, dimension(:), allocatable jm1
double precision, parameter small_number
integer, dimension(dimension_bc) bc_j_s
double precision, dimension(:), allocatable ox
double precision, dimension(dimension_is, dim_m) is_vel_s
double precision, dimension(:,:), allocatable ktmom_w_s
double precision, dimension(dimension_bc, dim_m) bc_hw_s
double precision, dimension(:), allocatable v_g
subroutine source_w_s_bc(A_M, B_M, M)
logical, dimension(dimension_bc) bc_defined
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, dimension(:), allocatable ayz_w
double precision, dimension(:,:), allocatable w_so
double precision, dimension(:), allocatable w_go
double precision, parameter dil_ep_s
double precision, dimension(:,:), allocatable ro_s
double precision, dimension(:), allocatable ctau_w_g
integer, parameter dimension_ps
logical, dimension(:), allocatable cut_w_treatment_at
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 f_gs
double precision, dimension(dimension_ps, dim_m) ps_w_s
double precision, dimension(:,:), allocatable rop_s
integer, dimension(dimension_bc) bc_jj_ps
double precision function bfz_s(IJK, M)
subroutine cg_source_w_s(A_M, B_M, M)
double precision, dimension(:,:,:), allocatable beta_ij
integer, dimension(dimension_ps) ps_j_s
double precision, dimension(:), allocatable vol
double precision, dimension(:), allocatable a_wpg_b
subroutine source_w_s(A_M, B_M)
double precision, dimension(:), allocatable ro_g
integer, dimension(dimension_ps) ps_i_e
double precision, dimension(:), allocatable rop_g
integer, dimension(:), allocatable kmap
subroutine jj_bc_w_s(I1, I2, J1, J2, K1, K2, L, M, A_M, B_M)
integer, dimension(dimension_bc) bc_i_e
double precision, parameter zero
double precision, dimension(:,:), allocatable joiz
subroutine point_source_w_s(A_M, B_M)