MFIX  2016-1
adjust_eps_ghd.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: ADJUST_EPS_GHD C
4 ! Purpose: Eliminate the solids phases that occupy only very small C
5 ! fractions of the computational cell volume for GHD theory C
6 ! C
7 ! Author: M. Syamlal Date: 28-JAN-92 C
8 ! Reviewer: P. Nicoletti, W. Rogers, S. Venkatesan Date: 29-JAN-92 C
9 ! C
10 ! Revision Number: 1 C
11 ! Purpose: Include CONSTANTS.INC C
12 ! Author: M. Syamlal Date: 7-FEB-92 C
13 ! Reviewer: P. Nicoletti Date: 11-DEC-92 C
14 ! C
15 ! Literature/Document References: None C
16 ! C
17 ! Variables referenced: FLAG, RO_s, ROP_s, U_s, V_s, W_s, EP_g C
18 ! IMAX1, JMAX1, KMAX1, MMAX, IMIN1, JMIN1, KMIN1C
19 ! Variables modified: ROP_s, U_s, V_s, W_s, EP_g, ROP_g, I, J, K, IJK,C
20 ! RO_s C
21 ! C
22 ! Local variables: EPSUM C
23 ! C
24 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
25 !
26  SUBROUTINE adjust_eps_ghd
27 !...Translated by Pacific-Sierra Research VAST-90 2.06G5 12:17:31 12/09/98
28 !...Switches: -xf
29 !
30 !-----------------------------------------------
31 ! M o d u l e s
32 !-----------------------------------------------
33  USE param
34  USE param1
35  USE toleranc
36  USE constant
37  USE fldvar
38  USE geometry
39  USE indices
40  USE physprop
41  USE run
42  USE compar
43  USE sendrecv
44  USE ghdtheory
45  USE fun_avg
46  USE functions
47  IMPLICIT NONE
48 !-----------------------------------------------
49 ! G l o b a l P a r a m e t e r s
50 !-----------------------------------------------
51 !-----------------------------------------------
52 ! L o c a l P a r a m e t e r s
53 !-----------------------------------------------
54 !-----------------------------------------------
55 ! L o c a l V a r i a b l e s
56 !-----------------------------------------------
57 !
58 ! Indices
59  INTEGER I, J, K, IJK, IJKE, IJKN, IJKT
60 !
61 ! Solids phase
62  INTEGER M
63 ! Sum of (very small) solids volume fractions that
64 ! are set to zero.
65  DOUBLE PRECISION epsMixE, epsMixN, epsMixT, epSolid, epSolidE(smax), epSolidN(smax), epSolidT(smax)
66  LOGICAL DiluteCellE, DiluteCellN, DiluteCellT
67 !
68 ! First set solids cell-center density in very dilute cells to zero
69 !
70  DO ijk = ijkstart3, ijkend3
71  IF (fluid_at(ijk)) THEN
72  DO m = 1, smax
73  epsolid = rop_s(ijk,m)/ro_s(ijk,m)
74  IF (epsolid < zero_ep_s) THEN
75 
76 ! Remove solids in very small quantities and set solids velocity to zero
77 ! if there is outflow from the present cell.
78 
79  rop_s(ijk,mmax) = rop_s(ijk,mmax) - rop_s(ijk,m) ! mmax = mixture phase
80  ep_g(ijk) = ep_g(ijk) + epsolid
81  rop_g(ijk) = ro_g(ijk)*ep_g(ijk)
82  rop_s(ijk,m) = zero
83  ENDIF
84  END DO
85  ENDIF
86  END DO
87 !
88 ! now set velocities at cell faces to zero
89 !
90  DO ijk = ijkstart3, ijkend3
91  i = i_of(ijk)
92  j = j_of(ijk)
93  k = k_of(ijk)
94  ijke = east_of(ijk)
95  ijkn = north_of(ijk)
96  ijkt = top_of(ijk)
97  IF (fluid_at(ijk)) THEN
98  epsmixe = zero
99  epsmixn = zero
100  epsmixt = zero
101  dilutecelle = .false.
102  dilutecelln = .false.
103  dilutecellt = .false.
104  DO m = 1, smax
105  epsolide(m) = avg_x(ep_s(ijk,m),ep_s(ijke,m),i)
106  epsolidn(m) = avg_y(ep_s(ijk,m),ep_s(ijkn,m),j)
107  epsolidt(m) = avg_z(ep_s(ijk,m),ep_s(ijkt,m),k)
108 
109  epsmixe = epsmixe + epsolide(m)*ro_s(ijk,m)
110  epsmixn = epsmixn + epsolidn(m)*ro_s(ijk,m)
111  epsmixt = epsmixt + epsolidt(m)*ro_s(ijk,m)
112 
113  IF (epsolide(m) < zero_ep_s) THEN
114  epsmixe = epsmixe - epsolide(m)*ro_s(ijk,m)
115  epsolide(m) = zero
116  u_s(ijk,m) = zero
117  joix(ijk,m) = zero
118  dilutecelle = .true. ! to make sure at least one species is very dilute before
119  ! re-calculating mixture velocity
120  ENDIF
121 
122  IF (epsolidn(m) < zero_ep_s) THEN
123  epsmixn = epsmixn - epsolidn(m)*ro_s(ijk,m)
124  epsolidn(m) = zero
125  v_s(ijk,m) = zero
126  joiy(ijk,m) = zero
127  dilutecelln = .true.
128  ENDIF
129 
130  IF (epsolidt(m) < zero_ep_s) THEN
131  epsmixt = epsmixt - epsolidt(m)*ro_s(ijk,m)
132  epsolidt(m) = zero
133  w_s(ijk,m) = zero
134  joiz(ijk,m) = zero
135  dilutecellt = .true.
136  ENDIF
137  END DO
138 !
139 ! compute corrected mixture velcoity and species mass fluxes based on their definition.
140 !
141  IF (epsmixe > zero .AND. dilutecelle) THEN
142  u_s(ijk,mmax) = zero
143  DO m = 1, smax
144  u_s(ijk,mmax) = u_s(ijk,mmax) + u_s(ijk,m)*epsolide(m)*ro_s(ijk,m)
145  ENDDO
146  u_s(ijk,mmax) = u_s(ijk,mmax)/epsmixe
147  DO m = 1, smax
148  joix(ijk,m) = epsolide(m)*ro_s(ijk,m)*(u_s(ijk,m)-u_s(ijk,mmax))
149  ENDDO
150  ELSEIF(epsmixe == zero) THEN
151  u_s(ijk,mmax) = zero
152  ENDIF
153 
154  IF (epsmixn > zero .AND. dilutecelln) THEN
155  v_s(ijk,mmax) = zero
156  DO m = 1, smax
157  v_s(ijk,mmax) = v_s(ijk,mmax) + v_s(ijk,m)*epsolidn(m)*ro_s(ijk,m)
158  ENDDO
159  v_s(ijk,mmax) = v_s(ijk,mmax)/epsmixn
160  DO m = 1, smax
161  joiy(ijk,m) = epsolidn(m)*ro_s(ijk,m)*(v_s(ijk,m)-v_s(ijk,mmax))
162  ENDDO
163  ELSEIF(epsmixn == zero) THEN
164  v_s(ijk,mmax) = zero
165  ENDIF
166 
167  IF(.NOT.no_k) THEN ! for 3D cases only
168  IF (epsmixt > zero .AND. dilutecellt) THEN
169  w_s(ijk,mmax) = zero
170  DO m = 1, smax
171  w_s(ijk,mmax) = w_s(ijk,mmax) + w_s(ijk,m)*epsolidt(m)*ro_s(ijk,m)
172  ENDDO
173  w_s(ijk,mmax) = w_s(ijk,mmax)/epsmixt
174  DO m = 1, smax
175  joiz(ijk,m) = epsolidt(m)*ro_s(ijk,m)*(w_s(ijk,m)-w_s(ijk,mmax))
176  ENDDO
177  ELSEIF(epsmixt == zero) THEN
178  w_s(ijk,mmax) = zero
179  ENDIF
180  ENDIF
181  ENDIF
182  END DO
183 
184  RETURN
185  END SUBROUTINE adjust_eps_ghd
186 
187 !// Comments on the modifications for DMP version implementation
188 !// 001 Include header file and common declarations for parallelization
189 !// 200 1119 Changed the limits for the triple loop, do k=kmin1,kmax1=>kstart1,kend1
190 !// 400 Added sendrecv module and send_recv calls for COMMunication
double precision, dimension(:,:), allocatable joix
Definition: ghdtheory_mod.f:30
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
subroutine adjust_eps_ghd
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
integer mmax
Definition: physprop_mod.f:19
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, parameter zero_ep_s
Definition: toleranc_mod.f:15
double precision, dimension(:,:), allocatable joiy
Definition: ghdtheory_mod.f:33
Definition: run_mod.f:13
Definition: param_mod.f:2
double precision, dimension(:,:), allocatable ro_s
Definition: fldvar_mod.f:45
logical no_k
Definition: geometry_mod.f:28
integer ijkstart3
Definition: compar_mod.f:80
double precision function ep_s(IJK, xxM)
Definition: fldvar_mod.f:178
double precision, dimension(:,:), allocatable rop_s
Definition: fldvar_mod.f:51
integer smax
Definition: physprop_mod.f:22
double precision, dimension(:), allocatable ro_g
Definition: fldvar_mod.f:32
double precision, dimension(:), allocatable rop_g
Definition: fldvar_mod.f:38
double precision, parameter zero
Definition: param1_mod.f:27
double precision, dimension(:,:), allocatable joiz
Definition: ghdtheory_mod.f:36