MFIX  2016-1
adjust_eps.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: ADJUST_EPS C
4 ! Purpose: Eliminate the solids phases that occupy only very small C
5 ! fractions of the computational cell volume 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 ! C
11 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
12  SUBROUTINE adjust_eps
13 
14 !-----------------------------------------------
15 ! Modules
16 !-----------------------------------------------
17  USE param1, only: zero
18 ! minimum value of solids volume fraction tracked
19  USE toleranc, only: zero_ep_s
20 ! x,y,z-components of solids velocity
21  USE fldvar, only: u_s, v_s, w_s
22 ! gas void fracition, bulk density and density
23  USE fldvar, only: ep_g, rop_g, ro_g
24 ! solids phase particle bulk density and material density
25  USE fldvar, only: rop_s, ro_s
26 ! kinetic theories
27  USE run, only: kt_type_enum
28  USE run, only: ghd_2007
29 ! number of solids phases
30  USE physprop, only: mmax, smax
31 
32 ! needed for function.inc and other quantities
33  USE geometry
34  USE indices
35  USE compar
36 ! for sendrecv calls
37  USE sendrecv
38  USE functions
39  IMPLICIT NONE
40 !-----------------------------------------------
41 ! Local variables
42 !-----------------------------------------------
43 ! Indices
44  INTEGER :: I, J, K, IJK
45 ! Solids phase
46  INTEGER :: M
47 ! Sum of (very small) solids volume fractions that are set to zero
48  DOUBLE PRECISION :: EPSUM
49 ! Sum of solids volume fractions
50  DOUBLE PRECISION :: epsMix, epSolid
51 !-----------------------------------------------
52 
53 
54  DO k = kstart1, kend1
55  DO j = jstart1, jend1
56  DO i = istart1, iend1
57 
58  IF (dead_cell_at(i,j,k)) cycle ! skip dead cells
59 
60  ijk = funijk(i,j,k)
61  IF (fluid_at(ijk)) THEN
62 ! initialize
63  epsum = zero
64  epsmix = zero
65  DO m = 1, smax
66 ! why not use function ep_s?
67  epsolid = rop_s(ijk,m)/ro_s(ijk,m)
68  epsmix = epsmix + epsolid
69 
70  IF (epsolid < zero_ep_s) THEN
71 ! Remove solids in very small quantities and set solids velocity to zero
72 ! if there is outflow from the present cell.
73  epsum = epsum + epsolid
74 
75  IF(kt_type_enum == ghd_2007) &
76  rop_s(ijk,mmax) = rop_s(ijk,mmax) - rop_s(ijk,m)
77 
78  rop_s(ijk,m) = zero
79  u_s(ijk,m) = min(u_s(ijk,m),zero)
80  v_s(ijk,m) = min(v_s(ijk,m),zero)
81  w_s(ijk,m) = min(w_s(ijk,m),zero)
82  u_s(im_of(ijk),m) = max(u_s(im_of(ijk),m),zero)
83  v_s(jm_of(ijk),m) = max(v_s(jm_of(ijk),m),zero)
84  w_s(km_of(ijk),m) = max(w_s(km_of(ijk),m),zero)
85  ENDIF
86  ENDDO
87 
88  epsmix = epsmix - epsum
89  IF(kt_type_enum == ghd_2007 .AND. epsmix < zero_ep_s) THEN
90  u_s(ijk,mmax) = min(u_s(ijk,mmax),zero)
91  v_s(ijk,mmax) = min(v_s(ijk,mmax),zero)
92  w_s(ijk,mmax) = min(w_s(ijk,mmax),zero)
93  u_s(im_of(ijk),mmax) = max(u_s(im_of(ijk),mmax),zero)
94  v_s(jm_of(ijk),mmax) = max(v_s(jm_of(ijk),mmax),zero)
95  w_s(km_of(ijk),mmax) = max(w_s(km_of(ijk),mmax),zero)
96  ENDIF
97 
98  ep_g(ijk) = ep_g(ijk) + epsum
99  rop_g(ijk) = ro_g(ijk)*ep_g(ijk)
100  ENDIF
101  ENDDO
102  ENDDO
103  ENDDO
104 
105 ! Communicate field variables calculated in the do i,j,k loop
106  call send_recv(rop_s,2)
107  call send_recv(u_s,2)
108  call send_recv(v_s,2)
109  call send_recv(w_s,2)
110  call send_recv(ep_g,2)
111  call send_recv(rop_g,2)
112 
113  RETURN
114  END SUBROUTINE adjust_eps
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
integer kend1
Definition: compar_mod.f:80
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
integer istart1
Definition: compar_mod.f:80
integer iend1
Definition: compar_mod.f:80
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
subroutine adjust_eps
Definition: adjust_eps.f:13
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
integer kstart1
Definition: compar_mod.f:80
integer mmax
Definition: physprop_mod.f:19
logical, dimension(:,:,:), allocatable dead_cell_at
Definition: compar_mod.f:127
double precision, parameter zero_ep_s
Definition: toleranc_mod.f:15
Definition: run_mod.f:13
double precision, dimension(:,:), allocatable ro_s
Definition: fldvar_mod.f:45
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
integer jend1
Definition: compar_mod.f:80
integer jstart1
Definition: compar_mod.f:80