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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  SUBROUTINE: CALC_DRAG                                               !
4     !  Author: M. Syamlal                                 Date: 29-JAN-92  !
5     !                                                                      !
6     !  Purpose: Calculate the gas solids and solids-solids drag terms if   !
7     !           directed to do so by the corresponding flags               !
8     !                                                                      !
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10     
11           SUBROUTINE CALC_DRAG(DRAGD, IER)
12     
13     !-----------------------------------------------
14     ! Modules
15     !-----------------------------------------------
16           USE param
17           USE param1
18           USE parallel
19           USE fldvar
20           USE geometry
21           USE indices
22           USE physprop
23           USE run
24           USE drag
25           USE compar
26           USE qmom_kinetic_equation
27     
28           use discretelement, only: DES_EXPLICITLY_COUPLED
29           use discretelement, only: DES_CONTINUUM_COUPLED
30           use discretelement, only: DES_CONTINUUM_HYBRID
31     
32           IMPLICIT NONE
33     
34     !-----------------------------------------------
35     ! Dummy Arguments
36     !-----------------------------------------------
37     ! Error index
38           INTEGER :: IER
39     ! Flag for exchange functions
40           LOGICAL :: DRAGD(0:DIMENSION_M, 0:DIMENSION_M)
41     !-----------------------------------------------
42     ! Local variables
43     !-----------------------------------------------
44     ! Solids phase indices
45           INTEGER :: M, L
46     !-----------------------------------------------
47     
48     ! Alberto Passalacqua:  QMOMB
49           IF (QMOMK) RETURN
50     
51     
52     ! calculate drag between continuum phases (gas-solid & solids-solids)
53           IF (.NOT.DES_CONTINUUM_COUPLED .OR. DES_CONTINUUM_HYBRID) THEN
54              DO M = 1, SMAX
55                 IF (DRAGD(0,M) .AND. RO_G0/=ZERO) CALL DRAG_GS(M, IER)
56              ENDDO
57     
58              IF (GRANULAR_ENERGY) THEN
59                 SELECT CASE (KT_TYPE_ENUM)
60                    CASE(LUN_1984, SIMONIN_1996, AHMADI_1995)
61                       DO M = 1, SMAX
62                          DO L = 1, M - 1
63                             IF (DRAGD(L,M)) CALL DRAG_SS (L, M, IER)
64                          ENDDO
65                       ENDDO
66                    CASE(IA_2005)
67                       DO M= 1, SMAX
68                          DO L = 1, SMAX
69                             IF (DRAGD(L,M)) CALL DRAG_SS_IA (L,M,IER)
70                          ENDDO
71                       ENDDO
72                    CASE (GD_1999, GTSH_2012, GHD_2007)
73     ! strictly speaking gd and gtsh are monodisperse theories and so
74     ! do not have solids-solids drag. ghd theory is a polydisperse
75     ! theory but is self contained and does not invoke this routine
76     
77                    CASE DEFAULT
78     ! should never hit this
79                       WRITE (*, '(A)') 'CALC_DRAG'
80                       WRITE (*, '(A,A)') 'Unknown KT_TYPE: ', KT_TYPE
81                    call mfix_exit(myPE)
82                 END SELECT
83              ELSE
84                 DO M = 1,SMAX
85                    DO L = 1, M - 1
86                       IF (DRAGD(L,M)) CALL DRAG_SS (L, M, IER)
87                    ENDDO
88                 ENDDO
89              ENDIF
90           ENDIF
91     
92     ! calculate drag between continuum phases and discrete particles
93     ! (gas-particle & solids-particle)
94           IF (DES_CONTINUUM_COUPLED .AND. .NOT.DES_EXPLICITLY_COUPLED) &
95              CALL CALC_DRAG_DES_2FLUID
96     
97     
98           RETURN
99           END SUBROUTINE CALC_DRAG
100