MFIX  2016-1
solid_drag.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: SOLID_DRAG C
4 ! Purpose: Accounting for the equal and opposite drag force on a C
5 ! continuous solids phase due to discrete solid particles by C
6 ! introducing the drag as a source term. Face centered. C
7 ! C
8 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
9  SUBROUTINE solid_drag_u(A_M, B_M)
10 
11 !-----------------------------------------------
12 ! Modules
13 !-----------------------------------------------
14  USE param
15  USE param1
16  USE geometry
17  USE physprop
18  USE indices
19  USE compar
20  USE discretelement
21  USE fun_avg
22  USE functions
23 
24  IMPLICIT NONE
25 !-----------------------------------------------
26 ! Dummy Arguments
27 !-----------------------------------------------
28 ! Septadiagonal matrix A_m
29  DOUBLE PRECISION :: A_M(dimension_3, -3:3, 0:dimension_m)
30 ! Vector b_m
31  DOUBLE PRECISION :: B_M(dimension_3, 0:dimension_m)
32 !-----------------------------------------------
33 ! Local Variables
34 !-----------------------------------------------
35 ! Indices
36  INTEGER :: IJK, IJKE, I
37 ! Solids phase indices
38  INTEGER :: M
39 !-----------------------------------------------
40 
41 ! currently no difference between interpolated and non-interpolated
42 ! implementation of solid-solid drag
43 
44  DO m = 1, mmax
45  DO ijk = ijkstart3, ijkend3
46  IF(fluid_at(ijk)) THEN
47 
48  i = i_of(ijk)
49  ijke = east_of(ijk)
50 
51  a_m(ijk,0,m) = a_m(ijk,0,m) - vol_u(ijk) * &
52  avg_x(sdrag_am(ijk,m), sdrag_am(ijke,m), i)
53 
54  b_m(ijk,m) = b_m(ijk,m) - vol_u(ijk) * &
55  avg_x(sdrag_bm(ijk,1,m), sdrag_bm(ijke,1,m), i)
56 
57  ENDIF ! end if (fluid_at(ijk))
58  ENDDO ! end do (ijk=ijkstart3,ijkend3)
59  ENDDO ! end do (cm=1,mmax)
60 
61 
62  RETURN
63  END SUBROUTINE solid_drag_u
64 
65 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
66 ! C
67 ! Subroutine: SOLID_DRAG C
68 ! Purpose: Accounting for the equal and opposite drag force on a C
69 ! continuous solids phase due to discrete solid particles by C
70 ! introducing the drag as a source term. Face centered. C
71 ! C
72 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
73 
74  SUBROUTINE solid_drag_v(A_M, B_M)
75 
76 !-----------------------------------------------
77 ! Modules
78 !-----------------------------------------------
79  USE param
80  USE param1
81  USE geometry
82  USE physprop
83  USE indices
84  USE compar
85  USE discretelement
86  USE fun_avg
87  USE functions
88 
89  IMPLICIT NONE
90 !-----------------------------------------------
91 ! Dummy Arguments
92 !-----------------------------------------------
93 ! Septadiagonal matrix A_m
94  DOUBLE PRECISION :: A_M(dimension_3, -3:3, 0:dimension_m)
95 ! Vector b_m
96  DOUBLE PRECISION :: B_M(dimension_3, 0:dimension_m)
97 !-----------------------------------------------
98 ! Local Variables
99 !-----------------------------------------------
100 ! Indices
101  INTEGER :: IJK, IJKN, J
102 ! Solids phase indices
103  INTEGER :: M
104 
105  DO m = 1, mmax
106  DO ijk = ijkstart3, ijkend3
107  IF(fluid_at(ijk)) THEN
108  j = j_of(ijk)
109  ijkn = north_of(ijk)
110 
111  a_m(ijk,0,m) = a_m(ijk,0,m) - vol_v(ijk) * &
112  avg_y(sdrag_am(ijk,m), sdrag_am(ijkn,m), j)
113 
114  b_m(ijk,m) = b_m(ijk,m) - vol_v(ijk) * &
115  avg_y(sdrag_bm(ijk,2,m), sdrag_bm(ijkn,2,m), j)
116 
117  ENDIF ! end if (fluid_at(ijk))
118  ENDDO ! end do (ijk=ijkstart3,ijkend3)
119  ENDDO ! end do (cm=1,mmax)
120 
121 
122  RETURN
123  END SUBROUTINE solid_drag_v
124 
125 
126 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
127 ! C
128 ! Subroutine: SOLID_DRAG_W C
129 ! Purpose: Accounting for the equal and opposite drag force on a C
130 ! continuous solids phase due to discrete solid particles by C
131 ! introducing the drag as a source term. Face centered. C
132 ! C
133 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
134 
135  SUBROUTINE solid_drag_w(A_M, B_M)
137 !-----------------------------------------------
138 ! Modules
139 !-----------------------------------------------
140  USE param
141  USE param1
142  USE geometry
143  USE physprop
144  USE indices
145  USE compar
146  USE discretelement
147  USE fun_avg
148  USE functions
149 
150  IMPLICIT NONE
151 !-----------------------------------------------
152 ! Dummy Arguments
153 !-----------------------------------------------
154 ! Septadiagonal matrix A_m
155  DOUBLE PRECISION :: A_M(dimension_3, -3:3, 0:dimension_m)
156 ! Vector b_m
157  DOUBLE PRECISION :: B_M(dimension_3, 0:dimension_m)
158 !-----------------------------------------------
159 ! Local Variables
160 !-----------------------------------------------
161 ! Indices
162  INTEGER :: IJK, IJKT, K
163 ! Solids phase indices
164  INTEGER :: M
165 
166 
167  DO m = 1, mmax
168  DO ijk = ijkstart3, ijkend3
169  IF(fluid_at(ijk)) THEN
170  ijkt = top_of(ijk)
171  k = k_of(ijk)
172 
173  a_m(ijk,0,m) = a_m(ijk,0,m) + vol_w(ijk) * &
174  avg_z(sdrag_am(ijk,m), sdrag_am(ijkt,m), k)
175  b_m(ijk,m) = b_m(ijk,m) + vol_w(ijk) * &
176  avg_z(sdrag_bm(ijk,3,m), sdrag_bm(ijkt,3,m), k)
177 
178  ENDIF ! end if (fluid_at(ijk))
179  ENDDO ! end do (ijk=ijkstart3,ijkend3)
180  ENDDO ! end do (cm=1,mmax)
181 
182 
183  RETURN
184  END SUBROUTINE solid_drag_w
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
subroutine solid_drag_w(A_M, B_M)
Definition: solid_drag.f:136
integer dimension_3
Definition: param_mod.f:11
subroutine solid_drag_u(A_M, B_M)
Definition: solid_drag.f:10
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
subroutine solid_drag_v(A_M, B_M)
Definition: solid_drag.f:75
Definition: param_mod.f:2
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable vol_u
Definition: geometry_mod.f:224
integer dimension_m
Definition: param_mod.f:18
double precision, dimension(:), allocatable vol_v
Definition: geometry_mod.f:233