31 INTEGER,
INTENT(INOUT) :: IER
34 IF (.NOT.momentum_y_eq(0))
RETURN 43 IF (discretize(4) == 0)
THEN 76 USE fun_avg, only: avg_y_n, avg_y
93 INTEGER :: IJK, J, IJPK
95 DOUBLE PRECISION :: AW, HW, VELW
103 IF(cut_v_treatment_at(ijk))
THEN 106 u(ijk) = (theta_v_se(ijk) *
u_g(ijk) + &
107 theta_v_ne(ijk) *
u_g(ijpk))
113 v(ijk) = (theta_vn_bar(ijk) *
v_g(ijk) + &
114 theta_vn(ijk) *
v_g(ijpk))
121 ww(ijk) = (theta_v_nt(ijk) *
w_g(ijk) + &
122 theta_v_st(ijk) *
w_g(ijpk))
125 ww(ijk) = ww(ijk) * aw
129 u(ijk) = avg_y(
u_g(ijk),
u_g(ijpk),j)
130 v(ijk) = avg_y_n(
v_g(ijk),
v_g(ijpk))
131 IF (
do_k) ww(ijk) = avg_y(
w_g(ijk),
w_g(ijpk),j)
149 flux_s, flux_t, flux_b, ijk)
159 USE functions, only: jp_of, im_of, jm_of, km_of
171 DOUBLE PRECISION,
INTENT(OUT) :: flux_e, flux_w
172 DOUBLE PRECISION,
INTENT(OUT) :: flux_n, flux_s
173 DOUBLE PRECISION,
INTENT(OUT) :: flux_t, flux_b
175 INTEGER,
INTENT(IN) :: ijk
179 INTEGER :: imjk, ijmk, ijkm
180 INTEGER :: ijpk, imjpk, ijpkm
183 DOUBLE PRECISION :: AW, HW, VELW
193 IF(cut_v_treatment_at(ijk))
THEN 195 flux_e = (theta_v_se(ijk) *
flux_ge(ijk) + &
196 theta_v_ne(ijk) *
flux_ge(ijpk))
201 flux_w = (theta_v_se(imjk) *
flux_ge(imjk) + &
202 theta_v_ne(imjk) *
flux_ge(imjpk))
208 flux_n = (theta_vn_bar(ijk) *
flux_gn(ijk) + &
214 flux_s = (theta_vn_bar(ijmk) *
flux_gn(ijmk) + &
222 flux_t = (theta_v_nt(ijk) *
flux_gt(ijk) + &
223 theta_v_st(ijk) *
flux_gt(ijpk))
228 flux_b = (theta_v_nt(ijkm) *
flux_gt(ijkm) + &
229 theta_v_st(ijkm) *
flux_gt(ijpkm))
270 USE functions, only: east_of, north_of, top_of
290 DOUBLE PRECISION,
INTENT(OUT) :: d_fe, d_fw
291 DOUBLE PRECISION,
INTENT(OUT) :: d_fn, d_fs
292 DOUBLE PRECISION,
INTENT(OUT) :: d_ft, d_fb
294 INTEGER,
INTENT(IN) :: ijk
299 INTEGER :: imjk, ijmk, ijkm
300 INTEGER :: i, j, k, jp, im, km
301 INTEGER :: ijkc, ijkn, ijke, ijkne, ijkw, ijknw
302 INTEGER :: ijkt, ijktn, ijkb, ijkbn
304 DOUBLE PRECISION :: C_AE, C_AW, C_AN, C_AS, C_AT, C_AB
306 DOUBLE PRECISION :: EPGA
321 IF (wall_at(ijk))
THEN 327 ijkne = east_of(ijkn)
329 ijknw = north_of(ijkw)
331 IF(cut_v_treatment_at(ijk))
THEN 365 ijktn = north_of(ijkt)
366 ijkb = bottom_of(ijk)
367 ijkbn = north_of(ijkb)
372 ox(i)*c_at*
axy_v(ijk)
376 ox(i)*c_ab*
axy_v(ijkm)
400 include
'fun_avg.inc' 447 INTEGER :: IMJK, IPJK, IJMK, IJPK, IJKM, IJKP
449 DOUBLE PRECISION :: flux_e, flux_w, flux_n, flux_s
450 DOUBLE PRECISION :: flux_t, flux_b
452 DOUBLE PRECISION :: D_fe, d_fw, d_fn, d_fs, d_ft, d_fb
464 IF (flow_at_n(ijk))
THEN 468 flux_s, flux_t, flux_b, ijk)
478 IF (flux_e >=
zero)
THEN 479 a_v_g(ijk,
east,0) = d_fe
480 a_v_g(ipjk,
west,0) = d_fe + flux_e
482 a_v_g(ijk,
east,0) = d_fe - flux_e
483 a_v_g(ipjk,
west,0) = d_fe
486 IF (.NOT.flow_at_n(imjk))
THEN 487 IF (flux_w >=
zero)
THEN 488 a_v_g(ijk,
west,0) = d_fw + flux_w
490 a_v_g(ijk,
west,0) = d_fw
496 IF (flux_n >=
zero)
THEN 497 a_v_g(ijk,
north,0) = d_fn
498 a_v_g(ijpk,
south,0) = d_fn + flux_n
500 a_v_g(ijk,
north,0) = d_fn - flux_n
501 a_v_g(ijpk,
south,0) = d_fn
504 IF (.NOT.flow_at_n(ijmk))
THEN 505 IF (flux_s >=
zero)
THEN 506 a_v_g(ijk,
south,0) = d_fs + flux_s
508 a_v_g(ijk,
south,0) = d_fs
518 IF (flux_t >=
zero)
THEN 519 a_v_g(ijk,
top,0) = d_ft
520 a_v_g(ijkp,
bottom,0) = d_ft + flux_t
522 a_v_g(ijk,
top,0) = d_ft - flux_t
523 a_v_g(ijkp,
bottom,0) = d_ft
526 IF (.NOT.flow_at_n(ijkm))
THEN 527 IF (flux_b >=
zero)
THEN 528 a_v_g(ijk,
bottom,0) = d_fb + flux_b
530 a_v_g(ijk,
bottom,0) = d_fb
588 DOUBLE PRECISION,
INTENT(INOUT) :: B_m(
dimension_3)
593 INTEGER :: I, J, K, IJK
594 INTEGER :: IPJK, IMJK, IJMK, IJPK, IJKM, IJKP
595 INTEGER :: IJK4, IPPP, IPPP4, JPPP, JPPP4, KPPP, KPPP4
596 INTEGER :: IMMM, IMMM4, JMMM, JMMM4, KMMM, KMMM4
600 DOUBLE PRECISION :: MOM_HO
602 DOUBLE PRECISION :: MOM_LO
604 DOUBLE PRECISION :: flux_e, flux_w, flux_n, flux_s
605 DOUBLE PRECISION :: flux_t, flux_b
607 DOUBLE PRECISION :: EAST_DC
608 DOUBLE PRECISION :: WEST_DC
609 DOUBLE PRECISION :: NORTH_DC
610 DOUBLE PRECISION :: SOUTH_DC
611 DOUBLE PRECISION :: TOP_DC
612 DOUBLE PRECISION :: BOTTOM_DC
623 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: XSI_e, XSI_n, XSI_t
634 tmp4(ijk4) =
v_g(ijk)
651 IF (flow_at_n(ijk))
THEN 655 flux_s, flux_t, flux_b, ijk)
665 ippp = ip_of(ip_of(ipjk))
667 immm = im_of(im_of(imjk))
669 jppp = jp_of(jp_of(ijpk))
671 jmmm = jm_of(jm_of(ijmk))
673 kppp = kp_of(kp_of(ijkp))
675 kmmm = km_of(km_of(ijkm))
680 IF(u(ijk) >=
zero)
THEN 683 v_g(imjk),
v_g(im_of(imjk)))
687 v_g(ip_of(ipjk)), tmp4(ippp4))
689 IF (.NOT.
fpfoi) mom_ho = xsi_e(ijk)*
v_g(ipjk)+&
690 (1.0-xsi_e(ijk))*
v_g(ijk)
691 east_dc = flux_e*(mom_lo-mom_ho)
695 IF(v(ijk) >=
zero)
THEN 698 v_g(ijmk),
v_g(jm_of(ijmk)))
702 v_g(jp_of(ijpk)), tmp4(jppp4))
704 IF (.NOT.
fpfoi) mom_ho = xsi_n(ijk)*
v_g(ijpk)+&
705 (1.0-xsi_n(ijk))*
v_g(ijk)
706 north_dc = flux_n*(mom_lo-mom_ho)
711 IF(ww(ijk) >=
zero)
THEN 714 v_g(ijkm),
v_g(km_of(ijkm)))
718 v_g(kp_of(ijkp)), tmp4(kppp4))
720 IF (.NOT.
fpfoi) mom_ho = xsi_t(ijk)*
v_g(ijkp)+&
721 (1.0-xsi_t(ijk))*
v_g(ijk)
722 top_dc = flux_t*(mom_lo-mom_ho)
729 IF(u(imjk) >=
zero)
THEN 732 v_g(im_of(imjk)), tmp4(immm4))
736 v_g(ipjk),
v_g(ip_of(ipjk)))
738 IF (.NOT.
fpfoi)mom_ho = xsi_e(imjk)*
v_g(ijk)+&
739 (1.0-xsi_e(imjk))*
v_g(imjk)
740 west_dc = flux_w*(mom_lo-mom_ho)
744 IF(v(ijmk) >=
zero)
THEN 747 v_g(jm_of(ijmk)), tmp4(jmmm4))
751 v_g(ijpk),
v_g(jp_of(ijpk)))
753 IF (.NOT.
fpfoi) mom_ho = xsi_n(ijmk)*
v_g(ijk)+&
754 (1.0-xsi_n(ijmk))*
v_g(ijmk)
755 south_dc = flux_s*(mom_lo-mom_ho)
760 IF(ww(ijk) >=
zero)
THEN 763 v_g(km_of(ijkm)), tmp4(kmmm4))
767 v_g(ijkp),
v_g(kp_of(ijkp)))
769 IF (.NOT.
fpfoi) mom_ho = xsi_t(ijkm)*
v_g(ijk)+&
770 (1.0-xsi_t(ijkm))*
v_g(ijkm)
771 bottom_dc = flux_b*(mom_lo-mom_ho)
778 b_m(ijk) = b_m(ijk)+west_dc-east_dc+south_dc-north_dc&
824 DOUBLE PRECISION,
INTENT(INOUT) :: A_V_g(
dimension_3, -3:3)
829 INTEGER :: IJK, IPJK, IMJK, IJPK, IJMK, IJKP, IJKM
833 DOUBLE PRECISION :: d_fe, d_fw, d_fn, d_fs, d_ft, d_fb
835 DOUBLE PRECISION :: Flux_e, flux_w, flux_n, flux_s
836 DOUBLE PRECISION :: flux_t, flux_b
846 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: TMP4
847 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: XSI_e, XSI_n, XSI_t
862 IF (flow_at_n(ijk))
THEN 866 flux_s, flux_t, flux_b, ijk)
876 a_v_g(ijk,
east) = d_fe - xsi_e(ijk)*flux_e
877 a_v_g(ipjk,
west) = d_fe + (
one - xsi_e(ijk))*flux_e
879 IF (.NOT.flow_at_n(imjk))
THEN 880 a_v_g(ijk,
west) = d_fw + (
one - xsi_e(imjk))*flux_w
885 a_v_g(ijk,
north) = d_fn - xsi_n(ijk)*flux_n
886 a_v_g(ijpk,
south) = d_fn + (
one - xsi_n(ijk))*flux_n
888 IF (.NOT.flow_at_n(ijmk))
THEN 889 a_v_g(ijk,
south) = d_fs + (
one - xsi_n(ijmk))*flux_s
897 a_v_g(ijk,
top) = d_ft - xsi_t(ijk)*flux_t
898 a_v_g(ijkp,
bottom) = d_ft + (
one - xsi_t(ijk))*flux_t
900 IF (.NOT.flow_at_n(ijkm))
THEN 901 a_v_g(ijk,
bottom) = d_fb + (
one - xsi_t(ijkm))*flux_b
double precision, dimension(:), allocatable flux_ge
logical, dimension(0:dim_m) momentum_y_eq
subroutine get_vcell_gdiff_terms(D_FE, D_FW, D_FN, D_FS, D_FT, D_FB, IJK)
integer, dimension(:), allocatable i_of
subroutine store_a_v_g0(A_V_G)
double precision, dimension(:), allocatable alpha_vt_c
double precision, dimension(:), allocatable oneodx_e_v
double precision, dimension(:), allocatable ody
subroutine store_a_v_gdc(B_M)
double precision, parameter one
subroutine store_a_v_g1(A_V_G)
subroutine get_interpolation_terms_g(IJK, TYPE_OF_CELL, ALPHA_CUT, AW, HW, VELW)
subroutine conv_dif_v_g(A_M, B_M, IER)
integer, dimension(:), allocatable im1
double precision, dimension(:), allocatable alpha_ve_c
double precision, dimension(:,:), allocatable df_gv
double precision, dimension(:), allocatable epg_jfac
subroutine calc_xsi(DISCR, PHI, U, V, W, XSI_E, XSI_N, XSI_T, incr)
double precision, dimension(:), allocatable ayz_v
subroutine get_vcell_gvterms(U, V, WW)
integer, dimension(:), allocatable k_of
double precision function fpfoi_of(PHI_D, PHI_C, PHI_U, PHI_UU)
double precision, dimension(:), allocatable theta_vn_bar
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
subroutine get_vcell_gcflux_terms(FLUX_E, FLUX_W, FLUX_N, FLUX_S, FLUX_T, FLUX_B, IJK)
double precision, dimension(:), allocatable flux_gn
double precision, dimension(:), allocatable theta_v_ne
double precision, dimension(:), allocatable axy_v
double precision, dimension(:), allocatable ox
integer, dimension(:), allocatable jp1
double precision, dimension(:), allocatable oneody_n_v
double precision, dimension(:), allocatable epmu_gt
double precision, dimension(:), allocatable theta_vn
double precision, dimension(:), allocatable v_g
double precision, dimension(:), allocatable w_g
double precision, parameter half
double precision, dimension(:), allocatable theta_v_nt
double precision, dimension(:), allocatable theta_v_se
double precision, dimension(:), allocatable flux_gt
subroutine dif_v_is(DIF, A_M, M)
integer, dimension(:), allocatable km1
logical, dimension(:), allocatable cut_v_treatment_at
double precision, dimension(:), allocatable u_g
integer, dimension(dim_eqs) discretize
double precision, dimension(:), allocatable oneodz_t_v
double precision, dimension(:), allocatable theta_v_st
double precision, dimension(:), allocatable odz_t
integer function funijk3(LI3, LJ3, LK3)
double precision, dimension(:), allocatable axz_v
double precision, parameter zero
double precision, dimension(:), allocatable alpha_vn_c