File: N:\mfix\model\des\comp_mean_fields1.f
1
2
3
4 SUBROUTINE COMP_MEAN_FIELDS1
5
6
7
8
9 USE param, only: dimension_3
10 USE param1, only: zero, one
11 USE fldvar, only: u_s, v_s, w_s, rop_s, ro_s
12 USE geometry
13 USE indices
14 USE compar
15 USE parallel
16 USE sendrecv
17 USE discretelement
18 use desgrid
19 use desmpi
20 USE mfix_pic
21 USE functions
22 use particle_filter, only: DES_INTERP_ON
23 use particle_filter, only: FILTER_WEIGHT
24 use particle_filter, only: FILTER_CELL
25 use particle_filter, only: FILTER_SIZE
26 use sendrecvnode, only: DES_COLLECT_gDATA
27 use physprop, only: mmax
28 use param1, only: small_number
29
30 IMPLICIT NONE
31
32
33
34
35 INTEGER NP, LC, M, mLB, mUB
36
37 INTEGER IJK
38
39 DOUBLE PRECISION :: SOLVOLINC(DIMENSION_3,MMAX+DES_MMAX)
40
41 DOUBLE PRECISION :: OoSOLVOL
42
43 DOUBLE PRECISION :: VOL_WT, VOLxWEIGHT
44
45 INTEGER :: LP_BND
46
47
48
49
50
51 (:,:) = ZERO
52
53 mLB = MMAX+1
54 mUB = DES_MMAX+MMAX
55
56 IF(MPPIC) THEN
57
58
59 (:,mLB:mUB) = ZERO
60 V_S(:,mLB:mUB) = ZERO
61 IF(DO_K) W_S(:,mLB:mUB) = ZERO
62 ENDIF
63
64
65
66
67
68
69
70
71 do NP=1,MAX_PIP
72 IF(.NOT.IS_NORMAL(NP)) CYCLE
73
74 VOL_WT = PVOL(NP)
75 IF(MPPIC) VOL_WT = VOL_WT*DES_STAT_WT(NP)
76
77 = PIJK(NP,5)
78
79 DO LC=1,FILTER_SIZE
80 IJK = FILTER_CELL(LC,NP)
81
82 = VOL_WT*FILTER_WEIGHT(LC,NP)
83
84
85 (IJK,M) = SOLVOLINC(IJK,M) + VOLxWEIGHT
86 IF(MPPIC) THEN
87
88
89 (IJK,1) = U_S(IJK,1) + &
90 DES_VEL_NEW(NP,1)*VOLxWEIGHT
91
92 (IJK,1) = V_S(IJK,1) + &
93 DES_VEL_NEW(NP,2)*VOLxWEIGHT
94 IF(DO_K) THEN
95
96 (IJK,1) = W_S(IJK,1) + &
97 DES_VEL_NEW(NP,3)*VOLxWEIGHT
98 ENDIF
99 ENDIF
100 ENDDO
101 ENDDO
102
103
104
105
106
107
108 IF(DES_INTERP_ON) THEN
109 CALL DES_COLLECT_gDATA(SOLVOLINC(:,mLB:mUB))
110 IF(MPPIC) THEN
111 CALL DES_COLLECT_gDATA(U_s(:,1))
112 CALL DES_COLLECT_gDATA(V_s(:,1))
113 IF(DO_K) CALL DES_COLLECT_gDATA(W_s(:,1))
114 ENDIF
115 ENDIF
116
117
118
119
120
121
122
123 DO IJK = IJKSTART3, IJKEND3
124 IF(.NOT.FLUID_AT(IJK)) CYCLE
125
126
127 (IJK,mLB:mUB) = RO_S(IJK,mLB:mUB)*&
128 SOLVOLINC(IJK,mLB:mUB)/VOL(IJK)
129
130
131 IF(MPPIC) THEN
132 OoSOLVOL = sum(SOLVOLINC(IJK,:))
133 IF(OoSOLVOL > SMALL_NUMBER) THEN
134 OoSOLVOL = ONE/OoSOLVOL
135 U_s(IJK,1) = U_s(IJK,1)*OoSOLVOL
136 V_s(IJK,1) = V_s(IJK,1)*OoSOLVOL
137 IF(DO_K) W_s(IJK,1) = W_s(IJK,1)*OoSOLVOL
138 ENDIF
139 ENDIF
140 ENDDO
141
142
143
144
145 calL SEND_RECV(ROP_S,2)
146
147 end SUBROUTINE COMP_MEAN_FIELDS1
148