MFIX  2016-1
calc_nflux.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! C
4 ! Module name: CALC_NFLUX(IER) C
5 ! Purpose: Calculate the convection fluxes based on total species C
6 ! number density for use with GHD theory only. C
7 ! Adapted from routine calc_mflux. C
8 ! C
9 ! Author: S. Benyahia Date: 31-DEC-08 C
10 ! Reviewer: Date: C
11 ! C
12 ! C
13 ! Literature/Document References: C
14 ! Christine Hrenya handnotes and my own derivation C
15 ! C
16 ! Variables referenced: C
17 ! Variables modified: C
18 ! C
19 ! Local variables: C
20 ! C
21 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
22 !
23  SUBROUTINE calc_nflux()
24 !...Translated by Pacific-Sierra Research VAST-90 2.06G5 12:17:31 12/09/98
25 !...Switches: -xf
26 !
27 ! Include param.inc file to specify parameter values
28 !
29 !-----------------------------------------------
30 ! M o d u l e s
31 !-----------------------------------------------
32  USE param
33  USE param1
34  USE parallel
35  USE fldvar
36  USE geometry
37  USE physprop
38  USE constant
39  USE indices
40  USE mflux
41  USE compar
42  USE functions
43  IMPLICIT NONE
44 !-----------------------------------------------
45 ! G l o b a l P a r a m e t e r s
46 !-----------------------------------------------
47 !-----------------------------------------------
48 ! D u m m y A r g u m e n t s
49 !-----------------------------------------------
50 !
51 !
52 !
53 ! Total Number density
54  DOUBLE PRECISION Ni_E(dimension_3), Ni_N(dimension_3), Ni_T(dimension_3)
55 !
56 ! Indices
57  INTEGER IJK, IMJK, IJMK, IJKM, L
58 !
59 ! Particle mass
60  DOUBLE PRECISION Mp_L
61 !
62 ! First compute total number density at faces
63 !!!$omp parallel do private( IJK, IMJK, IJMK, IJKM) &
64 !!!$omp& schedule(static)
65  DO ijk = ijkstart3, ijkend3
66  ni_e(ijk) = zero
67  ni_n(ijk) = zero
68  ni_t(ijk) = zero
69 !
70  IF (fluid_at(ijk)) THEN
71  DO l = 1, smax
72  mp_l = ro_s(ijk,l) * pi*d_p(ijk,l)**3/6d0
73  ni_e(ijk) = ni_e(ijk) + rop_se(ijk,l) / mp_l
74  imjk = im_of(ijk)
75  IF (.NOT.fluid_at(imjk)) THEN
76  ni_e(imjk) = ni_e(imjk) + rop_se(imjk,l) / mp_l
77  ENDIF
78  ni_n(ijk) = ni_n(ijk) + rop_sn(ijk,l) / mp_l
79  ijmk = jm_of(ijk)
80  IF (.NOT.fluid_at(ijmk)) THEN
81  ni_n(ijmk) = ni_n(ijmk) + rop_sn(ijmk,l) / mp_l
82  ENDIF
83 !
84  IF (do_k) THEN
85  ni_t(ijk) = ni_t(ijk) + rop_st(ijk,l) / mp_l
86  ijkm = km_of(ijk)
87  IF (.NOT.fluid_at(ijkm)) THEN
88  ni_t(ijkm) = ni_t(ijkm) + rop_st(ijkm,l) / mp_l
89  ENDIF
90  ENDIF
91  ENDDO
92  ENDIF
93  ENDDO
94 
95 !
96 ! Interpolate the face value of density for calculating the convection fluxes
97 !!!$omp parallel do private( IJK, IMJK, IJMK, IJKM) &
98 !!!$omp& schedule(static)
99  DO ijk = ijkstart3, ijkend3
100 !
101  IF (fluid_at(ijk)) THEN
102 !
103 ! East face (i+1/2, j, k)
104  flux_ne(ijk) = ni_e(ijk)*ayz(ijk)*u_s(ijk,mmax)
105 !
106 ! North face (i, j+1/2, k)
107  flux_nn(ijk) = ni_n(ijk)*axz(ijk)*v_s(ijk,mmax)
108 !
109 ! Top face (i, j, k+1/2)
110  IF (do_k) THEN
111  flux_nt(ijk) = ni_t(ijk)*axy(ijk)*w_s(ijk,mmax)
112  ENDIF
113 !
114 ! West face (i-1/2, j, k)
115  imjk = im_of(ijk)
116  IF (.NOT.fluid_at(imjk)) THEN
117  flux_ne(imjk) = ni_e(imjk)*ayz(imjk)*u_s(imjk,mmax)
118  ENDIF
119 !
120 ! South face (i, j-1/2, k)
121  ijmk = jm_of(ijk)
122  IF (.NOT.fluid_at(ijmk)) THEN
123  flux_nn(ijmk) = ni_n(ijmk)*axz(ijmk)*v_s(ijmk,mmax)
124  ENDIF
125 !
126 ! Bottom face (i, j, k-1/2)
127  IF (do_k) THEN
128  ijkm = km_of(ijk)
129  IF (.NOT.fluid_at(ijkm)) THEN
130  flux_nt(ijkm) = ni_t(ijkm)*axy(ijkm)*w_s(ijkm,mmax)
131  ENDIF
132  ENDIF
133  ENDIF
134  END DO
135 
136  RETURN
137  END SUBROUTINE calc_nflux
138 
139 !// Comments on the modifications for DMP version implementation
140 !// 001 Include header file and common declarations for parallelization
141 !// 350 Changed do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
double precision, dimension(:,:), allocatable rop_st
Definition: mflux_mod.f:46
double precision, dimension(:), allocatable flux_ne
Definition: mflux_mod.f:51
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
integer ijkend3
Definition: compar_mod.f:80
integer dimension_3
Definition: param_mod.f:11
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
double precision, dimension(:,:), allocatable d_p
Definition: fldvar_mod.f:57
integer mmax
Definition: physprop_mod.f:19
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
double precision, dimension(:,:), allocatable ro_s
Definition: fldvar_mod.f:45
subroutine calc_nflux()
Definition: calc_nflux.f:24
logical do_k
Definition: geometry_mod.f:30
double precision, dimension(:), allocatable flux_nt
Definition: mflux_mod.f:55
double precision, dimension(:,:), allocatable rop_se
Definition: mflux_mod.f:44
integer ijkstart3
Definition: compar_mod.f:80
integer smax
Definition: physprop_mod.f:22
double precision, dimension(:,:), allocatable rop_sn
Definition: mflux_mod.f:42
double precision, parameter pi
Definition: constant_mod.f:158
double precision, dimension(:), allocatable flux_nn
Definition: mflux_mod.f:53
double precision, parameter zero
Definition: param1_mod.f:27