File: N:\mfix\model\des\set_phase_index.f
1
2
3
4
5
6
7
8
9 SUBROUTINE SET_PHASE_INDEX
10
11
12
13 use discretelement, only: PIJK
14 USE discretelement, only: DES_RADIUS, RO_SOL
15 USE discretelement, only: DES_MMAX
16 USE discretelement, only: MAX_PIP
17 USE functions, only: IS_NONEXISTENT, IS_GHOST, IS_ENTERING_GHOST
18 USE functions, only: IS_EXITING_GHOST
19 USE error_manager
20 use mpi_funs_des, only: des_par_exchange
21 use mpi_utility
22 use param1, only: small_number
23 USE physprop, only: MMAX, D_p0, RO_s0
24 USE run, only: RUN_TYPE, solids_model
25 USE run, only: ANY_SPECIES_EQ
26 use sendrecv
27 IMPLICIT NONE
28
29
30
31
32 INTEGER :: L
33
34 INTEGER :: M
35
36 INTEGER :: DM
37
38 INTEGER :: IER
39
40
41 DOUBLE PRECISION dDp, dRho
42
43
44
45
46
47 IF(RUN_TYPE /= 'NEW' .AND. ANY_SPECIES_EQ) RETURN
48
49
50 = 0
51
52
53
54 DO L = 1, MAX_PIP
55 IF(IS_NONEXISTENT(L)) CYCLE
56 IF(IS_GHOST(L) .OR. IS_ENTERING_GHOST(L) .OR. IS_EXITING_GHOST(L)) CYCLE
57
58
59
60 M_LP: DO M = MMAX+1, MMAX+DES_MMAX
61 dDp = ABS(2.0d0*DES_RADIUS(L)-D_P0(M))
62 dRho = ABS( RO_Sol(L)-RO_S0(M))
63 IF( dDp < SMALL_NUMBER .AND. dRho < SMALL_NUMBER) THEN
64 PIJK(L,5) = M
65 EXIT M_LP
66 ENDIF
67 ENDDO M_LP
68
69 IF(PIJK(L,5).EQ.0) IER = 1
70 ENDDO
71
72
73 CALL GLOBAL_ALL_SUM(IER)
74 IF(IER == 0) RETURN
75
76
77
78 CALL INIT_ERR_MSG("SET_PHASE_INDEX")
79
80 CALL OPEN_PE_LOG(IER)
81
82 WRITE(ERR_MSG, 1100)
83 CALL FLUSH_ERR_MSG(FOOTER=.FALSE.)
84
85 1100 FORMAT('Error 1100: Unable to determine the phase of one or ',&
86 'more particles.',/8x,'ID',4X,'Diameter',6x,'Density',/)
87
88 DO L = 1, MAX_PIP
89
90 IF(IS_NONEXISTENT(L)) CYCLE
91 IF(IS_GHOST(L) .OR. IS_ENTERING_GHOST(L) .OR. IS_EXITING_GHOST(L)) CYCLE
92
93
94 IF(PIJK(L,5).EQ.0) THEN
95 WRITE(ERR_MSG,9000) L, 2.0*DES_RADIUS(L), Ro_Sol(L)
96 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
97 ENDIF
98 ENDDO
99
100 WRITE(ERR_MSG, 1101)
101 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
102
103 1101 FORMAT(' ',/'Defined phase parameters from mfix.dat:',/3x,'ID',&
104 5X,'Diameter',5x,'Density')
105
106 DO M = MMAX+1, DES_MMAX+MMAX
107 WRITE(ERR_MSG, 9000) M, D_P0(M), RO_S0(M)
108 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
109 ENDDO
110
111 WRITE(ERR_MSG, 1102)
112 CALL FLUSH_ERR_MSG(HEADER=.FALSE., ABORT=.TRUE.)
113
114 1102 FORMAT('Please correct the mfix.dat or particle_input.dat files.')
115
116 9000 FORMAT(I10,2(2x,g12.5))
117
118 END SUBROUTINE SET_PHASE_INDEX
119