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