File: /nfs/home/0/users/jenkins/mfix.git/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 matrix
17           USE geometry
18           USE physprop
19           USE indices
20           USE compar
21           USE discretelement
22           USE fun_avg
23           USE functions
24     
25           IMPLICIT NONE
26     !-----------------------------------------------
27     ! Dummy Arguments
28     !-----------------------------------------------
29     ! Septadiagonal matrix A_m
30           DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M)
31     ! Vector b_m
32           DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M)
33     !-----------------------------------------------
34     ! Local Variables
35     !-----------------------------------------------
36     ! Indices
37           INTEGER :: IJK, IJKE, I
38     ! Solids phase indices
39           INTEGER :: M
40     !-----------------------------------------------
41     
42     ! currently no difference between interpolated and non-interpolated
43     ! implementation of solid-solid drag
44     
45           DO M = 1, MMAX
46              DO IJK = IJKSTART3, IJKEND3
47                 IF(FLUID_AT(IJK)) THEN
48     
49                    I = I_OF(IJK)
50                    IJKE = EAST_OF(IJK)
51     
52                    A_M(IJK,0,M) = A_M(IJK,0,M) - VOL_U(IJK) *              &
53                       AVG_X(SDRAG_AM(IJK,M), SDRAG_AM(IJKE,M), I)
54     
55                    B_M(IJK,M) = B_M(IJK,M) - VOL_U(IJK) *                  &
56                       AVG_X(SDRAG_BM(IJK,1,M), SDRAG_BM(IJKE,1,M), I)
57     
58                    ENDIF   ! end if (fluid_at(ijk))
59              ENDDO   ! end do (ijk=ijkstart3,ijkend3)
60           ENDDO   ! end do (cm=1,mmax)
61     
62     
63           RETURN
64           END SUBROUTINE SOLID_DRAG_U
65     
66     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
67     !                                                                      C
68     !  Subroutine: SOLID_DRAG                                              C
69     !  Purpose: Accounting for the equal and opposite drag force on a      C
70     !  continuous solids phase due to discrete solid particles by          C
71     !  introducing the drag as a source term. Face centered.               C
72     !                                                                      C
73     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
74     
75           SUBROUTINE SOLID_DRAG_V(A_M, B_M)
76     
77     !-----------------------------------------------
78     ! Modules
79     !-----------------------------------------------
80           USE param
81           USE param1
82           USE matrix
83           USE geometry
84           USE physprop
85           USE indices
86           USE compar
87           USE discretelement
88           USE fun_avg
89           USE functions
90     
91           IMPLICIT NONE
92     !-----------------------------------------------
93     ! Dummy Arguments
94     !-----------------------------------------------
95     ! Septadiagonal matrix A_m
96           DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M)
97     ! Vector b_m
98           DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M)
99     !-----------------------------------------------
100     ! Local Variables
101     !-----------------------------------------------
102     ! Indices
103           INTEGER :: IJK, IJKN, J
104     ! Solids phase indices
105           INTEGER :: M
106     
107           DO M = 1, MMAX
108              DO IJK = IJKSTART3, IJKEND3
109                 IF(FLUID_AT(IJK)) THEN
110                       J = J_OF(IJK)
111                       IJKN = NORTH_OF(IJK)
112     
113                       A_M(IJK,0,M) = A_M(IJK,0,M) - VOL_V(IJK) *           &
114                          AVG_Y(SDRAG_AM(IJK,M), SDRAG_AM(IJKN,M), J)
115     
116                       B_M(IJK,M) = B_M(IJK,M) - VOL_V(IJK) *               &
117                          AVG_Y(SDRAG_BM(IJK,2,M), SDRAG_BM(IJKN,2,M), J)
118     
119                 ENDIF   ! end if (fluid_at(ijk))
120              ENDDO   ! end do (ijk=ijkstart3,ijkend3)
121           ENDDO   ! end do (cm=1,mmax)
122     
123     
124           RETURN
125           END SUBROUTINE SOLID_DRAG_V
126     
127     
128     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
129     !                                                                      C
130     !  Subroutine: SOLID_DRAG_W                                            C
131     !  Purpose: Accounting for the equal and opposite drag force on a      C
132     !  continuous solids phase due to discrete solid particles by          C
133     !  introducing the drag as a source term. Face centered.               C
134     !                                                                      C
135     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
136     
137           SUBROUTINE SOLID_DRAG_W(A_M, B_M)
138     
139     !-----------------------------------------------
140     ! Modules
141     !-----------------------------------------------
142           USE param
143           USE param1
144           USE matrix
145           USE geometry
146           USE physprop
147           USE indices
148           USE compar
149           USE discretelement
150           USE fun_avg
151           USE functions
152     
153           IMPLICIT NONE
154     !-----------------------------------------------
155     ! Dummy Arguments
156     !-----------------------------------------------
157     ! Septadiagonal matrix A_m
158           DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M)
159     ! Vector b_m
160           DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M)
161     !-----------------------------------------------
162     ! Local Variables
163     !-----------------------------------------------
164     ! Indices
165           INTEGER :: IJK, IJKT, K
166     ! Solids phase indices
167           INTEGER :: M
168     
169     
170           DO M = 1, MMAX
171              DO IJK = IJKSTART3, IJKEND3
172                 IF(FLUID_AT(IJK)) THEN
173                    IJKT = TOP_OF(IJK)
174                    K = K_OF(IJK)
175     
176                    A_M(IJK,0,M) = A_M(IJK,0,M) + VOL_W(IJK) *              &
177                       AVG_Z(SDRAG_AM(IJK,M), SDRAG_AM(IJKT,M), K)
178                    B_M(IJK,M) = B_M(IJK,M) + VOL_W(IJK) *                  &
179                       AVG_Z(SDRAG_BM(IJK,3,M), SDRAG_BM(IJKT,3,M), K)
180     
181                 ENDIF   ! end if (fluid_at(ijk))
182              ENDDO   ! end do (ijk=ijkstart3,ijkend3)
183           ENDDO   ! end do (cm=1,mmax)
184     
185     
186           RETURN
187           END SUBROUTINE SOLID_DRAG_W
188