File: /nfs/home/0/users/jenkins/mfix.git/model/check_data/check_geometry.f
1
2
3
4
5
6
7
8
9
10 SUBROUTINE CHECK_GEOMETRY(SHIFT)
11
12
13
14
15
16 use geometry, only: DX, XLENGTH, XMIN
17 use geometry, only: DY, YLENGTH
18 use geometry, only: DZ, ZLENGTH
19
20 use geometry, only: NO_I, IMIN1, IMAX, IMAX1, IMAX3
21 use geometry, only: NO_J, JMIN1, JMAX, JMAX1, JMAX3
22 use geometry, only: NO_K, KMIN1, KMAX, KMAX1, KMAX3
23
24 use bc, only: Flux_g
25
26
27
28
29 use geometry, only: COORDINATES, CYLINDRICAL
30 use geometry, only: CYCLIC_X, CYCLIC_X_PD, CYCLIC_X_MF
31 use geometry, only: CYCLIC_Y, CYCLIC_Y_PD, CYCLIC_Y_MF
32 use geometry, only: CYCLIC_Z, CYCLIC_Z_PD, CYCLIC_Z_MF
33
34
35 use cutcell, only: PARTIAL_CHECK_03
36
37
38
39 use param1, only: ONE, ZERO, UNDEFINED_I, UNDEFINED
40
41 use param, only: DIMENSION_I, DIMENSION_J, DIMENSION_K
42
43
44
45 use error_manager
46
47 implicit none
48
49
50 LOGICAL, intent(IN) :: SHIFT
51 LOGICAL, external :: COMPARE
52
53
54
55
56
57
58 CALL INIT_ERR_MSG("CHECK_GEOMETRY")
59
60 CALL GET_DXYZ_FROM_CONTROL_POINTS
61
62 CALL CHECK_AXIS(IMAX, IMAX3, XLENGTH, DX, 'X', 'I', NO_I, SHIFT)
63 CALL CHECK_AXIS(JMAX, JMAX3, YLENGTH, DY, 'Y', 'J', NO_J, SHIFT)
64 CALL CHECK_AXIS(KMAX, KMAX3, ZLENGTH, DZ, 'Z', 'K', NO_K, SHIFT)
65
66 IF(SHIFT) CALL SHIFT_DXYZ
67
68
69 IF(CYCLIC_X .OR. CYCLIC_X_PD) THEN
70 IF(DX(IMIN1) /= DX(IMAX1)) THEN
71 WRITE(ERR_MSG,1100) 'DX(IMIN1)',DX(IMIN1),'DX(IMAX1)',DX(IMAX1)
72 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
73 ENDIF
74 ENDIF
75
76 IF(CYCLIC_Y .OR. CYCLIC_Y_PD) THEN
77 IF(DY(JMIN1) /= DY(JMAX1)) THEN
78 WRITE(ERR_MSG,1100) 'DY(JMIN1)',DY(JMIN1),'DY(JMAX1)',DY(JMAX1)
79 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
80 ENDIF
81 ENDIF
82
83 IF(CYCLIC_Z .OR. CYCLIC_Z_PD .OR. CYLINDRICAL) THEN
84 IF (DZ(KMIN1) /= DZ(KMAX1)) THEN
85 WRITE(ERR_MSG,1100) 'DZ(KMIN1)',DZ(KMIN1),'DZ(KMAX1)',DZ(KMAX1)
86 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
87 ENDIF
88 ENDIF
89
90 1100 FORMAT('Error 1100: Cells adjacent to cyclic boundaries must ', &
91 'be of same size:',/2X,A,' = ',G12.5,/2x,A,' = ',G12.5,/ &
92 'Please correct the mfix.dat file.')
93
94
95 CALL FINL_ERR_MSG
96
97 RETURN
98
99 END SUBROUTINE CHECK_GEOMETRY
100
101
102
103
104
105
106
107
108
109
110 SUBROUTINE CHECK_GEOMETRY_DES
111
112
113
114
115 use discretelement, only: DESGRIDSEARCH_IMAX
116 use discretelement, only: DESGRIDSEARCH_JMAX
117 use discretelement, only: DESGRIDSEARCH_KMAX
118
119 use geometry, only: XLENGTH, YLENGTH, ZLENGTH, NO_K
120
121 use discretelement, only: MAX_RADIUS
122
123
124
125
126 use param1, only: UNDEFINED_I
127
128
129
130 use error_manager
131
132
133 implicit none
134
135
136
137
138
139 DOUBLE PRECISION :: MAX_DIAM
140
141 DOUBLE PRECISION :: WIDTH
142
143
144
145 CALL INIT_ERR_MSG("CHECK_GEOMETRY_DES")
146
147
148 = 2.0d0*MAX_RADIUS
149 WIDTH = 3.0d0*(max_diam)
150
151
152 IF(DESGRIDSEARCH_IMAX == UNDEFINED_I) THEN
153 DESGRIDSEARCH_IMAX = max(int(XLENGTH/WIDTH), 1)
154 ELSEIF((XLENGTH/dble(DESGRIDSEARCH_IMAX)) < MAX_DIAM) THEN
155 WRITE(ERR_MSG, 1100) 'X', MAX_DIAM, &
156 XLENGTH/dble(DESGRIDSEARCH_IMAX)
157 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
158 ENDIF
159
160
161 IF(DESGRIDSEARCH_JMAX == UNDEFINED_I) THEN
162 DESGRIDSEARCH_JMAX = max(int(YLENGTH/WIDTH), 1)
163 ELSEIF((YLENGTH/dble(DESGRIDSEARCH_JMAX)) < MAX_DIAM) THEN
164 WRITE(ERR_MSG, 1100) 'Y', MAX_DIAM, &
165 YLENGTH/dble(DESGRIDSEARCH_JMAX)
166 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
167 ENDIF
168
169
170 IF(NO_K) THEN
171 DESGRIDSEARCH_KMAX = 1
172 ELSEIF(DESGRIDSEARCH_KMAX == UNDEFINED_I) THEN
173 DESGRIDSEARCH_KMAX = max(int(ZLENGTH/WIDTH), 1)
174 ELSEIF((ZLENGTH/dble(DESGRIDSEARCH_KMAX)) < MAX_DIAM) THEN
175 WRITE(ERR_MSG, 1100) 'Z', MAX_DIAM, &
176 ZLENGTH/dble(DESGRIDSEARCH_KMAX)
177 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
178 ENDIF
179
180 CALL FINL_ERR_MSG
181
182 1100 FORMAT('Error 1100: The des search grid is too fine in the ',A1, &
183 '-direction. The',/'maximum particle diameter is larger than',&
184 ' the cell width:',/2x,'MAX DIAM: ',g12.5,/2x,'CELL ', &
185 'WIDTH: ',g12.5,/'Decrease the values for DESGRIDSEARCH in ', &
186 'the mfix.dat file.')
187
188 RETURN
189 END SUBROUTINE CHECK_GEOMETRY_DES
190