MFIX  2016-1
qmomk_gas_drag.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: QMOMK_GAS_DRAG(A_M, B_M, IER, UV, VV, WV) C
4 ! Purpose: QMOMK - Accounting for the equal and opposite drag force C
5 ! on gas due to particles by introducing the drag C
6 ! as a source term. Face centered C
7 ! C
8 ! Author: Jay Boyalakuntla Date: 12-Jun-04 C
9 ! Reviewer: Alberto Passalacqua Date: C
10 ! Re-used to develop QMOMK_GAS_DRAG from the C
11 ! original DES_GAS_DRAG C
12 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
13 
14  SUBROUTINE qmomk_gas_drag(A_M, B_M, IER, UV, VV, WV)
15 !-----------------------------------------------
16 ! M o d u l e s
17 !-----------------------------------------------
18 
19  USE compar, only: ijkstart3, ijkend3
20  USE discretelement, only: dimn
21  USE fun_avg, only: avg_x, avg_y, avg_z
22  USE functions, only: fluid_at, east_of, north_of, top_of
23  USE indices, only: i_of, j_of, k_of
24  USE geometry, only: vol_u, vol_v, vol_w
25  USE param
26  USE param1
27  USE physprop, only: mmax
28  USE qmom_kinetic_equation, only: qmomk_nn
30 
31  IMPLICIT NONE
32 !-----------------------------------------------
33 ! G l o b a l P a r a m e t e r s
34 !-----------------------------------------------
35 !-----------------------------------------------
36 ! D u m m y A r g u m e n t s
37 !-----------------------------------------------
38 !
39 ! Error index
40  INTEGER IER
41 !
42 ! Indices
43  INTEGER IJK
44 !
45 ! Phase index
46  INTEGER M, UV, VV, WV
47 ! Averaging Factor
48  DOUBLE PRECISION :: AVG_FACTOR
49 ! Grid indices
50  INTEGER I,J,K,IN
51 !
52  DOUBLE PRECISION USFCM, VSFCM, WSFCM
53  DOUBLE PRECISION A_M(dimension_3, -3:3, 0:dimension_m)
54  DOUBLE PRECISION B_M(dimension_3, 0:dimension_m)
55  DOUBLE PRECISION tmp_A, tmp_B
56 
57 !-----------------------------------------------
58  avg_factor = 0.25d0*(dimn-2) + 0.5d0*(3-dimn)
59  IF(uv.EQ.1) THEN
60  DO m = 1, mmax
61  DO ijk = ijkstart3, ijkend3
62  IF(fluid_at(ijk)) THEN
63  i = i_of(ijk)
64  j = j_of(ijk)
65  k = k_of(ijk)
66 
67  DO in = 1, qmomk_nn
68  usfcm = avg_x(qmomk_u1(in,ijk,m),qmomk_u1(in,east_of(ijk),m),i_of(ijk))
69  tmp_a = -avg_x(qmomk_f_gs(in,ijk,m),qmomk_f_gs(in,east_of(ijk),m),i)*vol_u(ijk)
70  tmp_b = tmp_a*usfcm
71 
72  a_m(ijk,0,0) = a_m(ijk,0,0) + tmp_a
73  b_m(ijk,0) = b_m(ijk,0) + tmp_b
74  END DO
75  END IF
76  END DO
77  END DO
78 
79  ELSE IF(vv.EQ.1) THEN
80 
81  DO m = 1, mmax
82  DO ijk = ijkstart3, ijkend3
83  IF(fluid_at(ijk)) THEN
84  i = i_of(ijk)
85  j = j_of(ijk)
86  k = k_of(ijk)
87 
88  DO in = 1, qmomk_nn
89  vsfcm = avg_y(qmomk_v1(in,ijk,m), qmomk_v1(in,north_of(ijk),m),j_of(ijk))
90  tmp_a = -avg_y(qmomk_f_gs(in,ijk,m),qmomk_f_gs(in,north_of(ijk),m),j)*vol_v(ijk)
91  tmp_b = tmp_a*vsfcm
92 
93  a_m(ijk,0,0) = a_m(ijk,0,0) + tmp_a
94  b_m(ijk,0) = b_m(ijk,0) + tmp_b
95  END DO
96  END IF
97 
98  END DO
99  END DO
100  close(900)
101 
102  ELSE IF(wv.EQ.1) THEN
103  DO m = 1, mmax
104  DO ijk = ijkstart3, ijkend3
105  IF(fluid_at(ijk)) THEN
106  i = i_of(ijk)
107  j = j_of(ijk)
108  k = k_of(ijk)
109 
110  DO in = 1, qmomk_nn
111  wsfcm = avg_z(qmomk_w1(in,ijk,m),qmomk_w1(in,top_of(ijk),m),k_of(ijk))
112  tmp_a = -avg_z(qmomk_f_gs(in,ijk,m),qmomk_f_gs(in,top_of(ijk),m),k)*vol_w(ijk)
113  tmp_b = tmp_a*wsfcm
114 
115  a_m(ijk,0,0) = a_m(ijk,0,0) + tmp_a
116  b_m(ijk,0) = b_m(ijk,0) + tmp_b
117  END DO
118  END IF
119  END DO
120  END DO
121 
122  END IF
123 
124  RETURN
125  END SUBROUTINE qmomk_gas_drag
double precision, dimension(:), allocatable vol_w
Definition: geometry_mod.f:242
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
integer dimension_3
Definition: param_mod.f:11
double precision, dimension(:,:,:), allocatable qmomk_w1
subroutine qmomk_gas_drag(A_M, B_M, IER, UV, VV, WV)
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
integer mmax
Definition: physprop_mod.f:19
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, dimension(:,:,:), allocatable qmomk_u1
Definition: param_mod.f:2
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable vol_u
Definition: geometry_mod.f:224
double precision, dimension(:,:,:), allocatable qmomk_v1
integer dimension_m
Definition: param_mod.f:18
double precision, dimension(:,:,:), allocatable qmomk_f_gs
double precision, dimension(:), allocatable vol_v
Definition: geometry_mod.f:233