MFIX  2016-1
calc_outflow.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: calc_outflow C
4 ! Purpose: Calculate mass and volumetric out flow rates from an C
5 ! outflow boundary C
6 ! C
7 ! Author: M. Syamlal Date: 28-OCT-92 C
8 ! C
9 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
10 
11  SUBROUTINE calc_outflow(L)
12 
13 ! Modules
14 !--------------------------------------------------------------------//
15  use bc, only: bc_plane
16  use bc, only: bc_k_b, bc_k_t
17  use bc, only: bc_j_s, bc_j_n
18  use bc, only: bc_i_w, bc_i_e
19  use bc, only: bc_out_n
20  use bc, only: bc_mout_g, bc_vout_g
21  use bc, only: bc_mout_s, bc_vout_s
22  use geometry, only: dx, dy, dz
23  use geometry, only: x_e, x
24  use physprop, only: smax
25  use fldvar, only: u_g, v_g, w_g, u_s, v_s, w_s
26  use fldvar, only: rop_g, ep_g
27  use fldvar, only: rop_s, ep_s
28  use functions, only: im_of, ip_of, jm_of, jp_of, km_of, kp_of
29  use functions, only: fluid_at
30  use functions, only: is_on_mype_plus2layers
31  use functions, only: funijk
32  use compar, only: dead_cell_at
33  IMPLICIT NONE
34 
35 ! Dummy arguments
36 !--------------------------------------------------------------------//
37 ! Boundary condition number
38  INTEGER, INTENT(IN) :: L
39 
40 ! Local variables
41 !--------------------------------------------------------------------//
42 ! Indices
43  INTEGER :: I, J, K, IJK
44 ! Solids phase
45  INTEGER :: M
46 ! ijk index of fluid cell adjacent to boundary cell
47  INTEGER :: IJK2
48 !--------------------------------------------------------------------//
49 
50  bc_out_n(l) = bc_out_n(l) + 1
51  DO k = bc_k_b(l), bc_k_t(l)
52  DO j = bc_j_s(l), bc_j_n(l)
53  DO i = bc_i_w(l), bc_i_e(l)
54 ! Check if current i,j,k resides on this PE
55  IF (.NOT.is_on_mype_plus2layers(i,j,k)) cycle
56  IF (dead_cell_at(i,j,k)) cycle ! skip dead cells
57  ijk = funijk(i,j,k)
58  SELECT CASE (trim(bc_plane(l)))
59  CASE ('W')
60  ijk2 = im_of(ijk)
61  bc_mout_g(l) = bc_mout_g(l) + dy(j)*x_e(i-1)*dz(k)*&
62  u_g(ijk2)*rop_g(ijk2)
63  bc_vout_g(l) = bc_vout_g(l) + dy(j)*x_e(i-1)*dz(k)*&
64  u_g(ijk2)*ep_g(ijk2)
65  CASE ('E')
66  ijk2 = ip_of(ijk)
67  bc_mout_g(l) = bc_mout_g(l) + dy(j)*x_e(i)*dz(k)*&
68  u_g(ijk)*rop_g(ijk2)
69  bc_vout_g(l) = bc_vout_g(l) + dy(j)*x_e(i)*dz(k)*&
70  u_g(ijk)*ep_g(ijk2)
71  CASE ('S')
72  ijk2 = jm_of(ijk)
73  bc_mout_g(l) = bc_mout_g(l) + dx(i)*x(i)*dz(k)*&
74  v_g(ijk2)*rop_g(ijk2)
75  bc_vout_g(l) = bc_vout_g(l) + dx(i)*x(i)*dz(k)*&
76  v_g(ijk2)*ep_g(ijk2)
77  CASE ('N')
78  ijk2 = jp_of(ijk)
79  bc_mout_g(l) = bc_mout_g(l) + dx(i)*x(i)*dz(k)*&
80  v_g(ijk)*rop_g(ijk2)
81  bc_vout_g(l) = bc_vout_g(l) + dx(i)*x(i)*dz(k)*&
82  v_g(ijk)*ep_g(ijk2)
83  CASE ('B')
84  ijk2 = km_of(ijk)
85  bc_mout_g(l) = bc_mout_g(l) + dx(i)*dy(j)*&
86  w_g(ijk2)*rop_g(ijk2)
87  bc_vout_g(l)=bc_vout_g(l)+dx(i)*dy(j)*&
88  w_g(ijk2)*ep_g(ijk2)
89  CASE ('T')
90  ijk2 = kp_of(ijk)
91  bc_mout_g(l)=bc_mout_g(l)+dx(i)*dy(j)*&
92  w_g(ijk)*rop_g(ijk2)
93  bc_vout_g(l) = bc_vout_g(l) + dx(i)*dy(j)*&
94  w_g(ijk)*ep_g(ijk2)
95  END SELECT
96 
97  DO m = 1, smax
98  SELECT CASE (trim(bc_plane(l)))
99  CASE ('W')
100  ijk2 = im_of(ijk)
101  bc_mout_s(l,m) = bc_mout_s(l,m) + dy(j)*x_e(i-1)*&
102  dz(k)*u_s(ijk2,m)*rop_s(ijk2,m)
103  bc_vout_s(l,m) = bc_vout_s(l,m) + dy(j)*x_e(i-1)*&
104  dz(k)*u_s(ijk2,m)*ep_s(ijk2,m)
105  CASE ('E')
106  ijk2 = ip_of(ijk)
107  bc_mout_s(l,m) = bc_mout_s(l,m) + dy(j)*x_e(i)*&
108  dz(k)*u_s(ijk,m)*rop_s(ijk2,m)
109  bc_vout_s(l,m) = bc_vout_s(l,m) + dy(j)*x_e(i)*&
110  dz(k)*u_s(ijk,m)*ep_s(ijk2,m)
111  CASE ('S')
112  ijk2 = jm_of(ijk)
113  bc_mout_s(l,m) = bc_mout_s(l,m) + dx(i)*x(i)*&
114  dz(k)*v_s(ijk2,m)*rop_s(ijk2,m)
115  bc_vout_s(l,m) = bc_vout_s(l,m) + dx(i)*x(i)*&
116  dz(k)*v_s(ijk2,m)*ep_s(ijk2,m)
117  CASE ('N')
118  ijk2 = jp_of(ijk)
119  bc_mout_s(l,m) = bc_mout_s(l,m) + dx(i)*x(i)*&
120  dz(k)*v_s(ijk,m)*rop_s(ijk2,m)
121  bc_vout_s(l,m) = bc_vout_s(l,m) + dx(i)*x(i)*&
122  dz(k)*v_s(ijk,m)*ep_s(ijk2,m)
123  CASE ('B')
124  ijk2 = km_of(ijk)
125  bc_mout_s(l,m) = bc_mout_s(l,m) + dx(i)*dy(j)*&
126  w_s(ijk2,m)*rop_s(ijk2,m)
127  bc_vout_s(l,m) = bc_vout_s(l,m) + dx(i)*dy(j)*&
128  w_s(ijk2,m)*ep_s(ijk2,m)
129  CASE ('T')
130  ijk2 = kp_of(ijk)
131  bc_mout_s(l,m) = bc_mout_s(l,m) + dx(i)*dy(j)*&
132  w_s(ijk,m)*rop_s(ijk2,m)
133  bc_vout_s(l,m) = bc_vout_s(l,m) + dx(i)*dy(j)*&
134  w_s(ijk,m)*ep_s(ijk2,m)
135  END SELECT
136  ENDDO ! end do loop m = 1,smax
137 
138  ENDDO ! end do loop (i=bc_i_w(l), bc_i_e(l))
139  ENDDO ! end do loop (j=bc_j_s(l), bc_j_n(l))
140  ENDDO ! end do loop (k=bc_k_b(l), bc_k_t(l))
141 
142  RETURN
143  END SUBROUTINE calc_outflow
integer, dimension(dimension_bc) bc_k_b
Definition: bc_mod.f:70
double precision, dimension(dimension_bc) bc_mout_g
Definition: bc_mod.f:257
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
double precision, dimension(dimension_bc, dim_m) bc_mout_s
Definition: bc_mod.f:260
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
integer, dimension(dimension_bc) bc_i_w
Definition: bc_mod.f:54
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
double precision, dimension(:), allocatable x_e
Definition: geometry_mod.f:134
integer, dimension(dimension_bc) bc_j_n
Definition: bc_mod.f:66
double precision, dimension(0:dim_j) dy
Definition: geometry_mod.f:70
double precision, dimension(0:dim_k) dz
Definition: geometry_mod.f:72
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
character, dimension(dimension_bc) bc_plane
Definition: bc_mod.f:217
integer, dimension(dimension_bc) bc_k_t
Definition: bc_mod.f:74
logical, dimension(:,:,:), allocatable dead_cell_at
Definition: compar_mod.f:127
double precision, dimension(dimension_bc, dim_m) bc_vout_s
Definition: bc_mod.f:266
integer, dimension(dimension_bc) bc_j_s
Definition: bc_mod.f:62
double precision, dimension(:), allocatable v_g
Definition: fldvar_mod.f:99
double precision, dimension(0:dim_i) dx
Definition: geometry_mod.f:68
double precision, dimension(:), allocatable w_g
Definition: fldvar_mod.f:111
integer, dimension(dimension_bc) bc_out_n
Definition: bc_mod.f:269
double precision, dimension(:), allocatable u_g
Definition: fldvar_mod.f:87
double precision function ep_s(IJK, xxM)
Definition: fldvar_mod.f:178
double precision, dimension(dimension_bc) bc_vout_g
Definition: bc_mod.f:263
double precision, dimension(:,:), allocatable rop_s
Definition: fldvar_mod.f:51
integer smax
Definition: physprop_mod.f:22
double precision, dimension(:), allocatable rop_g
Definition: fldvar_mod.f:38
subroutine calc_outflow(L)
Definition: calc_outflow.f:12
integer, dimension(dimension_bc) bc_i_e
Definition: bc_mod.f:58
double precision, dimension(:), allocatable x
Definition: geometry_mod.f:129
Definition: bc_mod.f:23