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