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

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
115