File: /nfs/home/0/users/jenkins/mfix.git/model/des/comp_mean_fields.f
1
2
3
4
5
6
7
8
9
10
11
12
13
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
25 use particle_filter, only: DES_DIFFUSE_MEAN_FIELDS
26
27 IMPLICIT NONE
28
29
30 INTEGER :: M
31
32
33
34
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
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
53 CALL CALC_EPG_DES
54
55 RETURN
56 END SUBROUTINE COMP_MEAN_FIELDS
57
58
59
60
61
62
63
64 SUBROUTINE COMP_MEAN_FIELDS_ZERO_ORDER
65
66
67
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
87
88
89 INTEGER NP, M
90
91 INTEGER IJK
92
93 DOUBLE PRECISION :: SOLVOLINC(DIMENSION_3,DES_MMAX)
94
95 DOUBLE PRECISION :: OoSOLVOL
96
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
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
113 = PIJK(NP,4)
114
115 = PIJK(NP,5)
116
117 (IJK,M) = SOLVOLINC(IJK,M) + VOL_WT
118
119 (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
128
129
130 DO IJK = IJKSTART3, IJKEND3
131 IF(.NOT.FLUID_AT(IJK)) CYCLE
132
133
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
143
144 (IJK,M) = DES_RO_S(M)*SOLVOLINC(IJK,M)/VOL(IJK)
145
146 ENDDO
147
148 ENDDO
149
150
151 CALL SEND_RECV(DES_ROP_S,2)
152
153 RETURN
154 END SUBROUTINE COMP_MEAN_FIELDS_ZERO_ORDER
155