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