32 IF (.NOT.momentum_z_eq(0))
RETURN 41 IF (discretize(5) == 0)
THEN 74 USE fun_avg, only: avg_z_t, avg_z
90 INTEGER :: IJK, K, IJKP
92 DOUBLE PRECISION :: AW, HW, VELW
101 IF(cut_w_treatment_at(ijk))
THEN 104 u(ijk) = (theta_w_be(ijk) *
u_g(ijk) + &
105 theta_w_te(ijk) *
u_g(ijkp))
111 v(ijk) = (theta_w_bn(ijk) *
v_g(ijk) + &
112 theta_w_tn(ijk) *
v_g(ijkp))
118 ww(ijk) = (theta_wt_bar(ijk) *
w_g(ijk) + &
119 theta_wt(ijk) *
w_g(ijkp))
122 ww(ijk) = ww(ijk) * aw
125 u(ijk) = avg_z(
u_g(ijk),
u_g(ijkp),k)
126 v(ijk) = avg_z(
v_g(ijk),
v_g(ijkp),k)
127 ww(ijk) = avg_z_t(
w_g(ijk),
w_g(ijkp))
144 flux_s, flux_t, flux_b, ijk)
154 USE functions, only: kp_of, im_of, jm_of, km_of
164 DOUBLE PRECISION,
INTENT(OUT) :: flux_e, flux_w
165 DOUBLE PRECISION,
INTENT(OUT) :: flux_n, flux_s
166 DOUBLE PRECISION,
INTENT(OUT) :: flux_t, flux_b
168 INTEGER,
INTENT(IN) :: ijk
173 INTEGER :: imjk, ijmk, ijkm
174 INTEGER :: ijkp, imjkp, ijmkp
177 DOUBLE PRECISION :: AW, HW, VELW
187 IF(cut_w_treatment_at(ijk))
THEN 189 flux_e = (theta_w_be(ijk) *
flux_ge(ijk) + &
190 theta_w_te(ijk) *
flux_ge(ijkp))
195 flux_w = (theta_w_be(imjk) *
flux_ge(imjk) + &
196 theta_w_te(imjk) *
flux_ge(imjkp))
203 flux_n = (theta_w_bn(ijk) *
flux_gn(ijk) + &
204 theta_w_tn(ijk) *
flux_gn(ijkp))
209 flux_s = (theta_w_bn(ijmk) *
flux_gn(ijmk) + &
210 theta_w_tn(ijmk) *
flux_gn(ijmkp))
217 flux_t = (theta_wt_bar(ijk) *
flux_gt(ijk) + &
223 flux_b = (theta_wt_bar(ijkm) *
flux_gt(ijkm) + &
260 USE functions, only: east_of, north_of, top_of
278 DOUBLE PRECISION,
INTENT(OUT) :: d_fe, d_fw
279 DOUBLE PRECISION,
INTENT(OUT) :: d_fn, d_fs
280 DOUBLE PRECISION,
INTENT(OUT) :: d_ft, d_fb
282 INTEGER,
INTENT(IN) :: ijk
287 INTEGER :: imjk, ijmk, ijkm
288 INTEGER :: i, j, k, kp, im, jm
289 INTEGER :: ijkc, ijkt, ijke, ijkte, ijkw, ijkwt
290 INTEGER :: ijkn, ijktn, ijks, ijkst
292 DOUBLE PRECISION :: C_AE, C_AW, C_AN, C_AS, C_AT, C_AB
294 DOUBLE PRECISION :: EPGA
309 IF (wall_at(ijk))
THEN 315 ijkte = east_of(ijkt)
317 ijktn = north_of(ijkt)
323 IF(cut_w_treatment_at(ijk))
THEN 383 include
'fun_avg.inc' 427 INTEGER :: IMJK, IPJK, IJMK, IJPK, IJKM, IJKP
429 DOUBLE PRECISION :: flux_e, flux_w, flux_n, flux_s
430 DOUBLE PRECISION :: flux_t, flux_b
432 DOUBLE PRECISION :: D_fe, d_fw, d_fn, d_fs, d_ft, d_fb
444 IF (flow_at_t(ijk))
THEN 448 flux_s, flux_t, flux_b, ijk)
461 IF (flux_e >=
zero)
THEN 462 a_w_g(ijk,
east,0) = d_fe
463 a_w_g(ipjk,
west,0) = d_fe + flux_e
465 a_w_g(ijk,
east,0) = d_fe - flux_e
466 a_w_g(ipjk,
west,0) = d_fe
469 IF (.NOT.flow_at_t(imjk))
THEN 470 IF (flux_w >=
zero)
THEN 471 a_w_g(ijk,
west,0) = d_fw + flux_w
473 a_w_g(ijk,
west,0) = d_fw
479 IF (flux_n >=
zero)
THEN 480 a_w_g(ijk,
north,0) = d_fn
481 a_w_g(ijpk,
south,0) = d_fn + flux_n
483 a_w_g(ijk,
north,0) = d_fn - flux_n
484 a_w_g(ijpk,
south,0) = d_fn
487 IF (.NOT.flow_at_t(ijmk))
THEN 488 IF (flux_s >=
zero)
THEN 489 a_w_g(ijk,
south,0) = d_fs + flux_s
491 a_w_g(ijk,
south,0) = d_fs
497 IF (flux_t >=
zero)
THEN 498 a_w_g(ijk,
top,0) = d_ft
499 a_w_g(ijkp,
bottom,0) = d_ft + flux_t
501 a_w_g(ijk,
top,0) = d_ft - flux_t
502 a_w_g(ijkp,
bottom,0) = d_ft
505 IF (.NOT.flow_at_t(ijkm))
THEN 506 IF (flux_b >=
zero)
THEN 507 a_w_g(ijk,
bottom,0) = d_fb + flux_b
509 a_w_g(ijk,
bottom,0) = d_fb
564 DOUBLE PRECISION,
INTENT(INOUT) :: B_m(
dimension_3)
569 INTEGER :: I, J, K, IJK
570 INTEGER :: IPJK, IMJK, IJMK, IJPK, IJKM, IJKP
571 INTEGER :: IJK4, IPPP, IPPP4, JPPP, JPPP4, KPPP, KPPP4
572 INTEGER :: IMMM, IMMM4, JMMM, JMMM4, KMMM, KMMM4
576 DOUBLE PRECISION :: MOM_HO
578 DOUBLE PRECISION :: MOM_LO
580 DOUBLE PRECISION :: flux_e, flux_w, flux_n, flux_s
581 DOUBLE PRECISION :: flux_t, flux_b
583 DOUBLE PRECISION :: EAST_DC
584 DOUBLE PRECISION :: WEST_DC
585 DOUBLE PRECISION :: NORTH_DC
586 DOUBLE PRECISION :: SOUTH_DC
587 DOUBLE PRECISION :: TOP_DC
588 DOUBLE PRECISION :: BOTTOM_DC
599 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: XSI_e, XSI_n, XSI_t
610 tmp4(ijk4) =
w_g(ijk)
628 IF (flow_at_t(ijk))
THEN 632 flux_s, flux_t, flux_b, ijk)
642 ippp = ip_of(ip_of(ipjk))
644 immm = im_of(im_of(imjk))
646 jppp = jp_of(jp_of(ijpk))
648 jmmm = jm_of(jm_of(ijmk))
650 kppp = kp_of(kp_of(ijkp))
652 kmmm = km_of(km_of(ijkm))
657 IF(u(ijk) >=
zero)
THEN 660 w_g(imjk),
w_g(im_of(imjk)))
664 w_g(ip_of(ipjk)), tmp4(ippp4))
666 IF (.NOT.
fpfoi) mom_ho = xsi_e(ijk)*
w_g(ipjk)+ &
667 (1.0-xsi_e(ijk))*
w_g(ijk)
668 east_dc = flux_e*(mom_lo-mom_ho)
672 IF(v(ijk) >=
zero)
THEN 675 w_g(ijmk),
w_g(jm_of(ijmk)))
679 w_g(jp_of(ijpk)), tmp4(jppp4))
681 IF (.NOT.
fpfoi) mom_ho = xsi_n(ijk)*
w_g(ijpk)+ &
682 (1.0-xsi_n(ijk))*
w_g(ijk)
683 north_dc = flux_n*(mom_lo-mom_ho)
687 IF(ww(ijk) >=
zero)
THEN 690 w_g(ijkm),
w_g(km_of(ijkm)))
694 w_g(kp_of(ijkp)), tmp4(kppp4))
696 IF (.NOT.
fpfoi) mom_ho = xsi_t(ijk)*
w_g(ijkp)+ &
697 (1.0-xsi_t(ijk))*
w_g(ijk)
698 top_dc = flux_t*(mom_lo-mom_ho)
702 IF(u(imjk) >=
zero)
THEN 705 w_g(im_of(imjk)), tmp4(immm4))
709 w_g(ipjk),
w_g(ip_of(ipjk)))
711 IF (.NOT.
fpfoi) mom_ho = xsi_e(imjk)*
w_g(ijk)+ &
712 (1.0-xsi_e(imjk))*
w_g(imjk)
713 west_dc = flux_w*(mom_lo-mom_ho)
717 IF(v(ijmk) >=
zero)
THEN 720 w_g(jm_of(ijmk)), tmp4(jmmm4))
724 w_g(ijpk),
w_g(jp_of(ijpk)))
726 IF (.NOT.
fpfoi) mom_ho = xsi_n(ijmk)*
w_g(ijk)+ &
727 (1.0-xsi_n(ijmk))*
w_g(ijmk)
728 south_dc = flux_s*(mom_lo-mom_ho)
732 IF(ww(ijk) >=
zero)
THEN 735 w_g(km_of(ijkm)), tmp4(kmmm4))
739 w_g(ijkp),
w_g(kp_of(ijkp)))
741 IF (.NOT.
fpfoi) mom_ho = xsi_t(ijkm)*
w_g(ijk)+ &
742 (1.0-xsi_t(ijkm))*
w_g(ijkm)
743 bottom_dc = flux_b*(mom_lo-mom_ho)
747 b_m(ijk) = b_m(ijk)+west_dc-east_dc+south_dc-north_dc&
800 INTEGER :: IJK, IPJK, IMJK, IJPK, IJMK, IJKP, IJKM
804 DOUBLE PRECISION :: d_fe, d_fw, d_fn, d_fs, d_ft, d_fb
806 DOUBLE PRECISION :: Flux_e, flux_w, flux_n, flux_s
807 DOUBLE PRECISION :: flux_t, flux_b
817 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: TMP4
818 DOUBLE PRECISION,
DIMENSION(DIMENSION_3) :: XSI_e, XSI_n, XSI_t
833 IF (flow_at_t(ijk))
THEN 837 flux_s, flux_t, flux_b, ijk)
849 a_w_g(ijk,
east,0) = d_fe - xsi_e(ijk)*flux_e
850 a_w_g(ipjk,
west,0) = d_fe + (
one - xsi_e(ijk))*flux_e
852 IF (.NOT.flow_at_t(imjk))
THEN 853 a_w_g(ijk,
west,0) = d_fw + (
one - xsi_e(imjk))*flux_w
858 a_w_g(ijk,
north,0) = d_fn - xsi_n(ijk)*flux_n
859 a_w_g(ijpk,
south,0) = d_fn + (
one - xsi_n(ijk))*flux_n
861 IF (.NOT.flow_at_t(ijmk))
THEN 862 a_w_g(ijk,
south,0) = d_fs + (
one - xsi_n(ijmk))*flux_s
867 a_w_g(ijk,
top,0) = d_ft - xsi_t(ijk)*flux_t
868 a_w_g(ijkp,
bottom,0) = d_ft + (
one - xsi_t(ijk))*flux_t
870 IF (.NOT.flow_at_t(ijkm))
THEN 871 a_w_g(ijk,
bottom,0) = d_fb + (
one - xsi_t(ijkm))*flux_b
double precision, dimension(:), allocatable flux_ge
double precision, dimension(:), allocatable theta_w_tn
subroutine get_wcell_gdiff_terms(D_FE, D_FW, D_FN, D_FS, D_FT, D_FB, IJK)
integer, dimension(:), allocatable i_of
double precision, dimension(:), allocatable oneodx_e_w
subroutine conv_dif_w_g(A_M, B_M)
double precision, dimension(:,:), allocatable df_gw
double precision, parameter one
subroutine get_interpolation_terms_g(IJK, TYPE_OF_CELL, ALPHA_CUT, AW, HW, VELW)
double precision, dimension(:), allocatable oneodz_t_w
integer, dimension(:), allocatable im1
double precision, dimension(:), allocatable epg_jfac
double precision, dimension(:), allocatable theta_w_bn
subroutine get_wcell_gvterms(U, V, WW)
logical, dimension(0:dim_m) momentum_z_eq
double precision, dimension(:), allocatable theta_wt
subroutine calc_xsi(DISCR, PHI, U, V, W, XSI_E, XSI_N, XSI_T, incr)
subroutine get_wcell_gcflux_terms(FLUX_E, FLUX_W, FLUX_N, FLUX_S, FLUX_T, FLUX_B, IJK)
subroutine store_a_w_g0(A_W_G)
subroutine store_a_w_g1(A_W_G)
double precision, dimension(:), allocatable alpha_wt_c
double precision, dimension(:), allocatable theta_wt_bar
integer, dimension(:), allocatable k_of
double precision function fpfoi_of(PHI_D, PHI_C, PHI_U, PHI_UU)
double precision, dimension(:), allocatable ody_n
double precision, dimension(:), allocatable alpha_wn_c
integer, dimension(:), allocatable j_of
double precision, dimension(:), allocatable odx_e
integer, dimension(:), allocatable jm1
double precision, dimension(:), allocatable flux_gn
double precision, dimension(:), allocatable ox
double precision, dimension(:), allocatable epmu_gt
double precision, dimension(:), allocatable alpha_we_c
double precision, dimension(:), allocatable v_g
subroutine dif_w_is(DIF, A_M, M)
integer, dimension(:), allocatable kp1
double precision, dimension(:), allocatable w_g
double precision, parameter half
double precision, dimension(:), allocatable ayz_w
logical, dimension(:), allocatable cut_w_treatment_at
double precision, dimension(:), allocatable flux_gt
double precision, dimension(:), allocatable axz_w
double precision, dimension(:), allocatable odz
double precision, dimension(:), allocatable axy_w
double precision, dimension(:), allocatable theta_w_te
double precision, dimension(:), allocatable u_g
integer, dimension(dim_eqs) discretize
double precision, dimension(:), allocatable theta_w_be
double precision, dimension(:), allocatable oneody_n_w
subroutine store_a_w_gdc(B_M)
integer function funijk3(LI3, LJ3, LK3)
double precision, parameter zero