File: /nfs/home/0/users/jenkins/mfix.git/model/qmomk/qmomk_gas_drag.f

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           USE param
19           USE param1
20           USE parallel
21           USE matrix
22           USE scales
23           USE constant
24           USE physprop
25           USE fldvar
26           USE visc_g
27           USE rxns
28           USE run
29           USE toleranc
30           USE geometry
31           USE indices
32           USE is
33           USE tau_g
34           USE bc
35           USE compar
36           USE sendrecv
37           USE discretelement
38           USE qmom_kinetic_equation
39           USE drag
40           USE fun_avg
41           USE functions
42     
43           IMPLICIT NONE
44     !-----------------------------------------------
45     !     G l o b a l   P a r a m e t e r s
46     !-----------------------------------------------
47     !-----------------------------------------------
48     !     D u m m y   A r g u m e n t s
49     !-----------------------------------------------
50     !
51     !
52     !     Error index
53           INTEGER          IER
54     !
55     !     Indices
56           INTEGER          IJK
57     !
58     !     Phase index
59           INTEGER          M, UV, VV, WV
60     !     Averaging Factor
61           DOUBLE PRECISION :: AVG_FACTOR
62     !     Grid indices
63           INTEGER          I,J,K,IN
64     !
65           DOUBLE PRECISION USFCM, VSFCM, WSFCM
66           DOUBLE PRECISION A_M(DIMENSION_3, -3:3, 0:DIMENSION_M)
67           DOUBLE PRECISION B_M(DIMENSION_3, 0:DIMENSION_M)
68           DOUBLE PRECISION VXF_GS(DIMENSION_3, DIMENSION_M)
69           DOUBLE PRECISION tmp_A, tmp_B
70     
71     !-----------------------------------------------
72           AVG_FACTOR = 0.25D0*(DIMN-2) + 0.5D0*(3-DIMN)
73           IF(UV.EQ.1) THEN
74              DO M = 1, MMAX
75                 DO IJK = IJKSTART3, IJKEND3
76                    IF(FLUID_AT(IJK)) THEN
77                       I = I_OF(IJK)
78                       J = J_OF(IJK)
79                       K = K_OF(IJK)
80     
81                       DO IN = 1, QMOMK_NN
82                         USFCM = AVG_X(QMOMK_U1(IN,IJK,M),QMOMK_U1(IN,EAST_OF(IJK),M),I_OF(IJK))
83                         tmp_A = -AVG_X(QMOMK_F_GS(IN,IJK,M),QMOMK_F_GS(IN,EAST_OF(IJK),M),I)*VOL_U(IJK)
84                         tmp_B = tmp_A*USFCM
85     
86                         A_M(IJK,0,0) = A_M(IJK,0,0) + tmp_A
87                         B_M(IJK,0) = B_M(IJK,0) + tmp_B
88                       END DO
89                    END IF
90                 END DO
91              END DO
92     
93     
94           ELSE IF(VV.EQ.1) THEN
95     
96              DO M = 1, MMAX
97                 DO IJK = IJKSTART3, IJKEND3
98                    IF(FLUID_AT(IJK)) THEN
99                       I = I_OF(IJK)
100                       J = J_OF(IJK)
101                       K = K_OF(IJK)
102     
103                       DO IN = 1, QMOMK_NN
104                          VSFCM = AVG_Y(QMOMK_V1(IN,IJK,M), QMOMK_V1(IN,NORTH_OF(IJK),M),J_OF(IJK))
105                          tmp_A = -AVG_Y(QMOMK_F_GS(IN,IJK,M),QMOMK_F_GS(IN,NORTH_OF(IJK),M),J)*VOL_V(IJK)
106                          tmp_B = tmp_A*VSFCM
107     
108                          A_M(IJK,0,0) = A_M(IJK,0,0) + tmp_A
109                          B_M(IJK,0) = B_M(IJK,0) + tmp_B
110                       END DO
111                    END IF
112     
113                 END DO
114              END DO
115     90       FORMAT(3(1x,i2),10(2x,E12.5))
116              close(900)
117     
118           ELSE IF(WV.EQ.1) THEN
119              DO M = 1, MMAX
120                 DO IJK = IJKSTART3, IJKEND3
121                    IF(FLUID_AT(IJK)) THEN
122                       I = I_OF(IJK)
123                       J = J_OF(IJK)
124                       K = K_OF(IJK)
125     
126                       DO IN = 1, QMOMK_NN
127                          WSFCM = AVG_Z(QMOMK_W1(IN,IJK,M),QMOMK_W1(IN,TOP_OF(IJK),M),K_OF(IJK))
128                          tmp_A = -AVG_Z(QMOMK_F_GS(IN,IJK,M),QMOMK_F_GS(IN,TOP_OF(IJK),M),K)*VOL_W(IJK)
129                          tmp_B = tmp_A*WSFCM
130     
131                          A_M(IJK,0,0) = A_M(IJK,0,0) + tmp_A
132                          B_M(IJK,0) = B_M(IJK,0) + tmp_B
133                       END DO
134                    END IF
135                 END DO
136              END DO
137     
138           END IF
139     
140           RETURN
141           END SUBROUTINE QMOMK_GAS_DRAG
142