File: /nfs/home/0/users/jenkins/mfix.git/model/check_data/check_internal_surfaces.f
1
2
3
4
5
6
7
8
9
10 SUBROUTINE CHECK_INTERNAL_SURFACES
11
12
13
14
15
16 use is, only: IS_TYPE
17
18 use is, only: IS_DEFINED
19
20
21
22
23 USE param, only: DIMENSION_IS
24
25
26
27 use error_manager
28
29 IMPLICIT NONE
30
31
32
33
34 INTEGER :: ISV
35
36
37 CALL INIT_ERR_MSG("CHECK_INTERNAL_SURFACES")
38
39 CALL CHECK_IS_GEOMETRY
40
41 DO ISV=1, DIMENSION_IS
42
43
44 IF(IS_DEFINED(ISV)) THEN
45
46 CALL GET_IS(ISV)
47
48 SELECT CASE(IS_TYPE(ISV))
49 CASE('SEMIPERMEABLE')
50 CALL CHECK_IS_SEMIPERMEABLE(ISV)
51 CASE('X_SEMIPERMEABLE', &
52 'Y_SEMIPERMEABLE', &
53 'Z_SEMIPERMEABLE')
54 CALL CHECK_IS_SEMIPERMEABLE(ISV)
55 END SELECT
56
57 ELSE
58 CALL CHECK_IS_OVERFLOW(ISV)
59 ENDIF
60 ENDDO
61
62 CALL FINL_ERR_MSG
63
64 RETURN
65 END SUBROUTINE CHECK_INTERNAL_SURFACES
66
67
68
69
70
71
72
73
74
75
76
77 SUBROUTINE CHECK_IS_GEOMETRY
78
79 USE compar
80 USE fldvar
81 USE funits
82 USE geometry
83 USE indices
84 USE is
85 USE param
86 USE param1
87 USE physprop
88 USE run
89
90
91
92 use error_manager
93
94 IMPLICIT NONE
95
96
97
98
99
100
101
102 INTEGER :: ISV, I
103
104 INTEGER, PARAMETER :: DIM_ISTYPE = 4
105
106 CHARACTER(LEN=16), DIMENSION(1:DIM_ISTYPE) :: VALID_IS_TYPE = (/&
107 'IMPERMEABLE ', 'IP ',&
108 'SEMIPERMEABLE ', 'SP '/)
109
110
111 CALL INIT_ERR_MSG("CHECK_IS_GEOMETRY")
112
113
114 = .FALSE.
115
116
117 L50: DO ISV = 1, DIMENSION_IS
118
119 IS_DEFINED(ISV) = .FALSE.
120 IF (IS_X_W(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
121 IF (IS_X_E(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
122 IF (IS_Y_S(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
123 IF (IS_Y_N(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
124 IF (IS_Z_B(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
125 IF (IS_Z_T(ISV) /= UNDEFINED) IS_DEFINED(ISV) = .TRUE.
126 IF (IS_I_W(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
127 IF (IS_I_E(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
128 IF (IS_J_S(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
129 IF (IS_J_N(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
130 IF (IS_K_B(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
131 IF (IS_K_T(ISV) /= UNDEFINED_I) IS_DEFINED(ISV) = .TRUE.
132
133
134 IF(.NOT.IS_DEFINED(ISV)) CYCLE L50
135
136 ANY_IS_DEFINED = .TRUE.
137
138 IF (IS_X_W(ISV)==UNDEFINED .AND. IS_I_W(ISV)==UNDEFINED_I) THEN
139 IF (NO_I) THEN
140 IS_X_W(ISV) = ZERO
141 ELSE
142 WRITE(ERR_MSG,1101) ISV, 'IS_X_w and IS_I_w '
143 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
144 ENDIF
145 ENDIF
146
147 IF(IS_X_E(ISV)==UNDEFINED .AND. IS_I_E(ISV)==UNDEFINED_I) THEN
148 IF(NO_I) THEN
149 IS_X_E(ISV) = XLENGTH
150 ELSE
151 WRITE(ERR_MSG,1101) ISV, 'IS_X_e and IS_I_e '
152 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
153 ENDIF
154 ENDIF
155 IF(IS_Y_S(ISV)==UNDEFINED .AND. IS_J_S(ISV)==UNDEFINED_I) THEN
156 IF(NO_J) THEN
157 IS_Y_S(ISV) = ZERO
158 ELSE
159 WRITE(ERR_MSG,1101) ISV, 'IS_Y_s and IS_J_s '
160 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
161 ENDIF
162 ENDIF
163 IF(IS_Y_N(ISV)==UNDEFINED .AND. IS_J_N(ISV)==UNDEFINED_I) THEN
164 IF(NO_J) THEN
165 IS_Y_N(ISV) = YLENGTH
166 ELSE
167 WRITE(ERR_MSG,1101) ISV, 'IS_Y_n and IS_J_n '
168 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
169 ENDIF
170 ENDIF
171 IF(IS_Z_B(ISV)==UNDEFINED .AND. IS_K_B(ISV)==UNDEFINED_I) THEN
172 IF(NO_K) THEN
173 IS_Z_B(ISV) = ZERO
174 ELSE
175 WRITE(ERR_MSG,1101) ISV, 'IS_Z_b and IS_K_b '
176 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
177 ENDIF
178 ENDIF
179 IF(IS_Z_T(ISV)==UNDEFINED .AND. IS_K_T(ISV)==UNDEFINED_I) THEN
180 IF(NO_K) THEN
181 IS_Z_T(ISV) = ZLENGTH
182 ELSE
183 WRITE(ERR_MSG,1101) ISV, 'IS_Z_t and IS_K_t '
184 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
185 ENDIF
186 ENDIF
187
188 1101 FORMAT('Error 1101: Internal surface ',I3,' is ill-defined.',/ &
189 A,' are not specified.',/'Please correct the mfix.dat file.')
190
191
192 DO I = 1, DIM_ISTYPE
193 IF(VALID_IS_TYPE(I) == IS_TYPE(ISV)) THEN
194 IF(MOD(I,2) == 0) IS_TYPE(ISV) = VALID_IS_TYPE(I-1)
195 CYCLE L50
196 ENDIF
197 IF(VALID_IS_TYPE(I) == IS_TYPE(ISV)(3:16)) THEN
198 IF(MOD(I,2) == 0) IS_TYPE(ISV)(3:16) = VALID_IS_TYPE(I-1)
199
200 SELECT CASE(IS_TYPE(ISV)(1:1))
201 CASE('X', 'Y', 'Z'); CYCLE L50
202 CASE DEFAULT
203 WRITE(ERR_MSG, 1102) ISV, IS_TYPE(ISV)(1:1)
204 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
205 END SELECT
206
207 1102 FORMAT('Error 1102: Internal surface ',I3,' has an invalid ',&
208 'prefix: ',A,/'Please correct the mfix.dat file.')
209
210 ENDIF
211 END DO
212 WRITE(ERR_MSG, 1103) trim(iVar('IS_TYPE',ISV)), &
213 trim(IS_TYPE(ISV)), VALID_IS_TYPE
214 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
215
216 1103 FORMAT('Error 1103: Illegal entry: ',A,' = ',A,/'Valid entries:',&
217 ' ',4(/5X,A,2x,A))
218
219 ENDDO L50
220
221 CALL FINL_ERR_MSG
222
223 RETURN
224 END SUBROUTINE CHECK_IS_GEOMETRY
225
226
227
228
229
230
231
232
233
234
235
236
237 SUBROUTINE CHECK_IS_SEMIPERMEABLE(ISV)
238
239
240
241
242
243 USE is, only: IS_PC
244
245
246
247 USE param1, only: ZERO, UNDEFINED
248
249
250
251 use error_manager
252
253
254 IMPLICIT NONE
255
256
257
258
259
260 INTEGER, INTENT(in) :: ISV
261
262
263 CALL INIT_ERR_MSG("CHECK_IS_SEMIPERMEABLE")
264
265
266
267 IF(IS_PC(ISV,1) == UNDEFINED) THEN
268 WRITE(ERR_MSG, 1000) trim(iVar('IS_PC',ISV,1))
269 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
270 ENDIF
271
272 IF(IS_PC(ISV,1) == ZERO) THEN
273 WRITE(ERR_MSG, 1001) trim(iVar('IS_PC',ISV,1)), '0.0'
274 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
275 ENDIF
276
277
278 IF(IS_PC(ISV,2) == UNDEFINED) THEN
279 WRITE(ERR_MSG, 1000) trim(iVar('IS_PC',ISV,2))
280 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
281 ENDIF
282
283 CALL FINL_ERR_MSG
284
285 RETURN
286
287 1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
288 'correct the mfix.dat file.')
289
290 1001 FORMAT('Error 1001: Illegal or unknown input: ',A,' = ',A,/ &
291 'Please correct the mfix.dat file.')
292
293 END SUBROUTINE CHECK_IS_SEMIPERMEABLE
294
295
296
297
298
299
300
301
302
303
304
305
306
307 SUBROUTINE CHECK_IS_OVERFLOW(ISV)
308
309
310
311
312
313 USE is, only: IS_PC
314
315
316
317 USE param1, only: ZERO, UNDEFINED
318
319
320
321 use error_manager
322
323 IMPLICIT NONE
324
325
326
327
328 INTEGER, INTENT(in) :: ISV
329
330
331
332 CALL INIT_ERR_MSG("CHECK_IS_OVERFLOW")
333
334
335 IF(IS_PC(ISV,1) /= UNDEFINED) THEN
336 WRITE(ERR_MSG, 1100) trim(iVar('IS_PC',ISV,1))
337 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
338 ENDIF
339
340
341 IF(IS_PC(ISV,2) /= ZERO) THEN
342 WRITE(ERR_MSG, 1100) trim(iVar('IS_PC',ISV,2))
343 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
344 ENDIF
345
346 CALL FINL_ERR_MSG
347
348 RETURN
349
350 1100 FORMAT('Error 1100: ',A,' specified in an undefined IS region')
351
352 END SUBROUTINE CHECK_IS_OVERFLOW
353
354