File: N:\mfix\model\check_data\check_geometry_prereqs.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  SUBROUTINE: CHECK_GEOMETRY_PREREQS                                  !
4     !  Purpose: Check the distributed parallel namelist variables.         !
5     !                                                                      !
6     !  Author: P. Nicoletti                               Date: 14-DEC-99  !
7     !  Reviewer: J.Musser                                 Date: 16-Jan-14  !
8     !                                                                      !
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10           SUBROUTINE CHECK_GEOMETRY_PREREQS
11     
12     
13     
14     ! Global Variables:
15     !---------------------------------------------------------------------//
16     ! Domain partitions in various directions.
17           use geometry, only: IMAX, NO_I, XMIN
18           use geometry, only: JMAX, NO_J
19           use geometry, only: KMAX, NO_K, DZ, ZLENGTH
20     
21     ! Runtime flag specifying 2D simulations
22     !      use geometry, only: NO_K
23     
24           use geometry, only: COORDINATES, CYLINDRICAL
25           use geometry, only: CYCLIC_X, CYCLIC_X_PD
26     !      use geometry, only: COORDINATES
27     
28     ! Global Parameters:
29     !---------------------------------------------------------------------//
30           use param1, only: ONE, ZERO, UNDEFINED_I, UNDEFINED
31     
32     ! Use the error manager for posting error messages.
33     !---------------------------------------------------------------------//
34           use error_manager
35     
36           use toleranc
37     
38           implicit none
39     
40     ! Initialize the error manager.
41           CALL INIT_ERR_MSG("CHECK_GEOMETRY_PREREQS")
42     
43     ! Verify that the domain decomposition was specified.
44           IF(IMAX == UNDEFINED_I .OR. JMAX == UNDEFINED_I .OR.             &
45              (.NOT.NO_K .AND. KMAX == UNDEFINED_I) ) THEN
46              WRITE(ERR_MSG,1000)
47              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
48           ENDIF
49     
50      1000 FORMAT('Error 1000: IMAX or JMAX or KMAX not specified in ',     &
51               'mfix.dat')
52     
53     ! If no variation in a direction is considered, the number of cells in
54     ! that direction should be 1
55           IF(NO_I) THEN
56              WRITE(ERR_MSG, 1100) 'I','I','east and west'
57              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
58           ENDIF
59     
60           IF(NO_J) THEN
61              WRITE(ERR_MSG, 1100) 'J','J','north and south'
62              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
63           ENDIF
64     
65      1100 FORMAT('Error 1100: Illegal geometry: NO_',A1,' is disabled. ',  &
66              'The same functionality',/'is achieved with one cell (',A1,   &
67              'MAX=1) and making the ',A,' walls',/'free-slip. Please ',    &
68              'correct the mfix.dat file.')
69     
70           IF (XMIN < ZERO) THEN
71              WRITE(ERR_MSG, 1101) 'XMIN'
72              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
73           ENDIF
74     
75      1101 FORMAT('Error 1101: Illegal geometry: ',A,' cannot be less ',    &
76              'than zero.',/'Please correct the mfix.dat file.')
77     
78     
79           SELECT CASE(trim(COORDINATES))
80           CASE ('CYLINDRICAL')
81              CYLINDRICAL = .TRUE.
82              IF(CYCLIC_X .OR. CYCLIC_X_PD) THEN
83                 WRITE(ERR_MSG, 1102)
84                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
85              ENDIF
86     
87      1102 FORMAT('Error 1102: X-axis cannot be CYCLIC in cylindrical ',    &
88              'coordinates',/'Please correct the mfix.dat file.')
89     
90           CASE ('CARTESIAN')
91              CYLINDRICAL = .FALSE.
92     
93           CASE DEFAULT
94              WRITE(ERR_MSG, 1103)
95              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
96     
97      1103 FORMAT('Error 1103: Unknown COORDINATES specified. Please ',     &
98              'correct the ',/'mfix.dat file.')
99     
100           END SELECT
101     
102     
103           IF(NO_K) THEN
104              IF(KMAX == UNDEFINED_I) THEN
105                 KMAX = 1
106              ELSEIF(KMAX /= 1) THEN
107                 WRITE(ERR_MSG, 1110) 'KMAX','NO_K'
108                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
109              ENDIF
110     
111      1110 FORMAT('Error 1110: Illegal geometry: ',A,' must remain ',       &
112              'UNDEFINED_I or 1 when',/A,' is TRUE. Please correct the ',   &
113              'mfix.dat file.')
114     
115              IF(DZ(1)==UNDEFINED) THEN
116                 IF(ZLENGTH==UNDEFINED) THEN
117                    IF(CYLINDRICAL) THEN
118                       DZ(1) = 8.*ATAN(ONE)
119                       ZLENGTH = 8.*ATAN(ONE)
120                    ELSE
121                       DZ(1) = ONE
122                       ZLENGTH = ONE
123                    ENDIF
124                 ELSE
125                    DZ(1) = ZLENGTH
126                 ENDIF
127              ELSE
128                 IF(ZLENGTH==UNDEFINED) THEN
129                    ZLENGTH = DZ(1)
130                 ELSE
131                    IF(.NOT.COMPARE(ZLENGTH,DZ(1)))THEN
132                       WRITE(ERR_MSG, 1111) 'DZ(1) and ZLENGTH'
133                       CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
134                    ENDIF
135     
136       1111 FORMAT('Error 1111: Illegal geometry: ',A,' are not equal.',/   &
137                'Please correct the mfix.dat file.')
138     
139                 ENDIF
140              ENDIF
141           ENDIF
142     
143           CALL FINL_ERR_MSG
144     
145           RETURN
146     
147     
148     
149           END SUBROUTINE CHECK_GEOMETRY_PREREQS
150