File: /nfs/home/0/users/jenkins/mfix.git/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, IMAX1, IMIN1, NO_I, DX, XLENGTH, XMIN
18           use geometry, only: JMAX, JMAX1, JMIN1, NO_J, DY, YLENGTH
19           use geometry, only: KMAX, KMAX1, KMIN1, NO_K, DZ, ZLENGTH
20     
21           use bc, only: Flux_g
22     
23     ! Runtime flag specifying 2D simulations
24     !      use geometry, only: NO_K
25     
26           use geometry, only: COORDINATES, CYLINDRICAL
27           use geometry, only: CYCLIC_X, CYCLIC_X_PD, CYCLIC_X_MF
28           use geometry, only: CYCLIC_Y, CYCLIC_Y_PD, CYCLIC_Y_MF
29           use geometry, only: CYCLIC_Z, CYCLIC_Z_PD, CYCLIC_Z_MF
30     !      use geometry, only: COORDINATES
31     
32           use cutcell, only: PARTIAL_CHECK_03
33     
34     ! Global Parameters:
35     !---------------------------------------------------------------------//
36           use param1, only: ONE, ZERO, UNDEFINED_I, UNDEFINED
37     
38           use param, only: DIMENSION_I, DIMENSION_J, DIMENSION_K
39     
40     ! Use the error manager for posting error messages.
41     !---------------------------------------------------------------------//
42           use error_manager
43     
44           use toleranc
45     
46           implicit none
47     
48     ! Initialize the error manager.
49           CALL INIT_ERR_MSG("CHECK_GEOMETRY_PREREQS")
50     
51     ! Verify that the domain decomposition was specifed.
52           IF(IMAX == UNDEFINED_I .OR. JMAX == UNDEFINED_I .OR.             &
53              (.NOT.NO_K .AND. KMAX == UNDEFINED_I) ) THEN
54              WRITE(ERR_MSG,1000)
55              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
56           ENDIF
57     
58      1000 FORMAT('Error 1000: IMAX or JMAX or KMAX not specified in ',     &
59               'mfix.dat')
60     
61     ! If no variation in a direction is considered, the number of cells in
62     ! that direction should be 1
63           IF(NO_I) THEN
64              WRITE(ERR_MSG, 1100) 'I','I','east and west'
65              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
66           ENDIF
67     
68           IF(NO_J) THEN
69              WRITE(ERR_MSG, 1100) 'J','J','north and south'
70              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
71           ENDIF
72     
73      1100 FORMAT('Error 1100: Illegal geometry: NO_',A1,' is disabled. ',  &
74              'The same functionality',/'is acheived with one cell (',A1,   &
75              'MAX=1) and making the ',A,' walls',/'free-slip. Please ',    &
76              'correct the mfix.dat file.')
77     
78           IF (XMIN < ZERO) THEN
79              WRITE(ERR_MSG, 1101) 'XMIN'
80              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
81           ENDIF
82     
83      1101 FORMAT('Error 1101: Illegal geometry: ',A,' cannot be less ',    &
84              'than zero.',/'Please correct the mfix.dat file.')
85     
86     
87           SELECT CASE(trim(COORDINATES))
88           CASE ('CYLINDRICAL')
89              CYLINDRICAL = .TRUE.
90              IF(CYCLIC_X .OR. CYCLIC_X_PD) THEN
91                 WRITE(ERR_MSG, 1102)
92                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
93              ENDIF
94     
95      1102 FORMAT('Error 1102: X-axis cannot be CYCLIC in cylindrical ',    &
96              'coordinates',/'Please correct the mfix.dat file.')
97     
98           CASE ('CARTESIAN')
99              CYLINDRICAL = .FALSE.
100     
101           CASE DEFAULT
102              WRITE(ERR_MSG, 1103)
103              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
104     
105      1103 FORMAT('Error 1103: Unknown COORDINATES specified. Please ',     &
106              'correct the ',/'mfix.dat file.')
107     
108           END SELECT
109     
110     
111           IF(NO_K) THEN
112              IF(KMAX == UNDEFINED_I) THEN
113                 KMAX = 1
114              ELSEIF(KMAX /= 1) THEN
115                 WRITE(ERR_MSG, 1110) 'KMAX','NO_K'
116                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
117              ENDIF
118     
119      1110 FORMAT('Error 1110: Illegal geometry: ',A,' must remain ',       &
120              'UNDEFINED_I or 1 when',/A,' is TRUE. Please correct the ',   &
121              'mfix.dat file.')
122     
123              IF(DZ(1)==UNDEFINED) THEN
124                 IF(ZLENGTH==UNDEFINED) THEN
125                    IF(CYLINDRICAL) THEN
126                       DZ(1) = 8.*ATAN(ONE)
127                       ZLENGTH = 8.*ATAN(ONE)
128                    ELSE
129                       DZ(1) = ONE
130                       ZLENGTH = ONE
131                    ENDIF
132                 ELSE
133                    DZ(1) = ZLENGTH
134                 ENDIF
135              ELSE
136                 IF(ZLENGTH==UNDEFINED) THEN
137                    ZLENGTH = DZ(1)
138                 ELSE
139                    IF(.NOT.COMPARE(ZLENGTH,DZ(1)))THEN
140                       WRITE(ERR_MSG, 1111) 'DZ(1) and ZLENGTH'
141                       CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
142                    ENDIF
143     
144       1111 FORMAT('Error 1111: Illegal geometry: ',A,' are not equal.',/   &
145                'Please correct the mfix.dat file.')
146     
147                 ENDIF
148              ENDIF
149           ENDIF
150     
151           CALL FINL_ERR_MSG
152     
153           RETURN
154     
155     
156     
157           END SUBROUTINE CHECK_GEOMETRY_PREREQS
158