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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: COMP_MEAN_FIELDS                                        !
4     !  Author: J.Musser                                   Date: 11-NOV-14  !
5     !                                                                      !
6     !  Purpose: Driver routine for calculating field variables (DES_ROP_s, !
7     !   DES_U_S, DES_V_S, DES_W_S) from particle data.                     !
8     !                                                                      !
9     !  o The diffusion filter is only applied to the the solids bulk       !
10     !    density because DEM simulations do not utilize the other field    !
11     !    variables within a time loop.                                     !
12     !                                                                      !
13     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
14           SUBROUTINE COMP_MEAN_FIELDS
15     
16           use particle_filter, only: DES_INTERP_MEAN_FIELDS
17           use particle_filter, only: DES_INTERP_SCHEME_ENUM
18           use particle_filter, only: DES_INTERP_NONE
19           use particle_filter, only: DES_INTERP_GARG
20     
21           use discretelement, only: DES_MMAX
22           use discretelement, only: DES_ROP_S
23     
24     ! Flag: Diffuse DES field variables.
25           use particle_filter, only: DES_DIFFUSE_MEAN_FIELDS
26     
27           IMPLICIT NONE
28     
29     ! Loop counter.
30           INTEGER :: M
31     
32     !......................................................................!
33     
34     ! Calculate field variables from particle data:
35           IF(DES_INTERP_MEAN_FIELDS) THEN
36              SELECT CASE(DES_INTERP_SCHEME_ENUM)
37              CASE(DES_INTERP_NONE) ; CALL COMP_MEAN_FIELDS_ZERO_ORDER
38              CASE(DES_INTERP_GARG) ; CALL COMP_MEAN_FIELDS0
39              CASE DEFAULT; CALL COMP_MEAN_FIELDS1
40              END SELECT
41           ELSE
42              CALL COMP_MEAN_FIELDS_ZERO_ORDER
43           ENDIF
44     
45     ! Apply the diffusion filter.
46           IF(DES_DIFFUSE_MEAN_FIELDS) THEN
47              DO M=1, DES_MMAX
48                 CALL DIFFUSE_MEAN_FIELD(DES_ROP_S(:,M),'DES_ROP_S')
49              ENDDO
50           ENDIF
51     
52     ! Calculate the gas phase volume fraction from DES_ROP_s.
53           CALL CALC_EPG_DES
54     
55           RETURN
56           END SUBROUTINE COMP_MEAN_FIELDS
57     
58     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
59     !                                                                      !
60     !                                                                      !
61     !                                                                      !
62     !                                                                      !
63     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
64           SUBROUTINE COMP_MEAN_FIELDS_ZERO_ORDER
65     
66     !-----------------------------------------------
67     ! Modules
68     !-----------------------------------------------
69           USE param
70           USE param1
71           USE fldvar
72           USE geometry
73           USE indices
74           USE compar
75           USE parallel
76           USE sendrecv
77           USE discretelement
78           use desgrid
79           use desmpi
80           USE mfix_pic
81           USE functions
82     
83           IMPLICIT NONE
84     
85     !-----------------------------------------------
86     ! Local variables
87     !-----------------------------------------------
88     ! Loop counters: partciles, filter cells, phases
89           INTEGER NP, M
90     ! Fluid cell index
91           INTEGER IJK
92     ! Total Mth solids phase volume in IJK
93           DOUBLE PRECISION :: SOLVOLINC(DIMENSION_3,DES_MMAX)
94     ! One divided by the total solids volume.
95           DOUBLE PRECISION :: OoSOLVOL
96     ! PVOL times statistical weight
97           DOUBLE PRECISION :: VOL_WT
98     
99           SOLVOLINC(:,:) = ZERO
100     
101           DES_U_s(:,:) = ZERO
102           DES_V_s(:,:) = ZERO
103           DES_W_s(:,:) = ZERO
104     
105     ! Calculate the gas phae forces acting on each particle.
106           DO NP=1,MAX_PIP
107              IF(.NOT.PEA(NP,1)) CYCLE
108              IF(PEA(NP,4)) CYCLE
109     
110              VOL_WT = PVOL(NP)
111              IF(MPPIC) VOL_WT = VOL_WT*DES_STAT_WT(NP)
112     ! Fluid cell containing the particle
113              IJK = PIJK(NP,4)
114     ! Particle phase for data binning.
115              M = PIJK(NP,5)
116     ! Accumulate total solids volume (by phase)
117              SOLVOLINC(IJK,M) = SOLVOLINC(IJK,M) + VOL_WT
118     ! Accumulate total solids momenum-ish (by phase)
119              DES_U_S(IJK,M) = DES_U_S(IJK,M) +                             &
120                 DES_VEL_NEW(1,NP)*VOL_WT
121              DES_V_S(IJK,M) = DES_V_S(IJK,M) +                             &
122                 DES_VEL_NEW(2,NP)*VOL_WT
123              IF(DO_K) DES_W_S(IJK,M) = DES_W_S(IJK,M) +                    &
124                 DES_VEL_NEW(3,NP)*VOL_WT
125           ENDDO
126     
127     ! Calculate the cell average solids velocity, the bulk density,
128     ! and the void fraction.
129     !----------------------------------------------------------------//
130           DO IJK = IJKSTART3, IJKEND3
131              IF(.NOT.FLUID_AT(IJK)) CYCLE
132     
133     ! calculating the cell average solids velocity for each solids phase
134              DO M = 1, DES_MMAX
135                 IF(SOLVOLINC(IJK,M).GT.ZERO) THEN
136                    OoSOLVOL = ONE/SOLVOLINC(IJK,M)
137                    DES_U_s(IJK,M) = DES_U_s(IJK,M)*OoSOLVOL
138                    DES_V_s(IJK,M) = DES_V_s(IJK,M)*OoSOLVOL
139                    IF(DO_K) DES_W_s(IJK,M) = DES_W_s(IJK,M)*OoSOLVOL
140                 ENDIF
141     
142     ! calculating the bulk density of solids phase m based on the total
143     ! number of particles having their center in the cell
144                 DES_ROP_S(IJK,M) = DES_RO_S(M)*SOLVOLINC(IJK,M)/VOL(IJK)
145     
146              ENDDO   ! end loop over M=1,DES_MMAX
147     
148           ENDDO     ! end loop over IJK=ijkstart3,ijkend3
149     
150     ! Halo exchange of solids volume fraction data.
151           CALL SEND_RECV(DES_ROP_S,2)
152     
153           RETURN
154           END SUBROUTINE COMP_MEAN_FIELDS_ZERO_ORDER
155