File: N:\mfix\model\des\solid_drag.f

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)
136     
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
185