File: /nfs/home/0/users/jenkins/mfix.git/model/check_data/check_geometry.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  SUBROUTINE: CHECK_GEOMETRY                                          !
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(SHIFT)
11     
12     
13     ! Global Variables:
14     !---------------------------------------------------------------------//
15     ! Domain partitions in various directions.
16           use geometry, only: DX, XLENGTH, XMIN
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           use bc, only: Flux_g
25     
26     ! Runtime flag specifying 2D simulations
27     !      use geometry, only: NO_K
28     
29           use geometry, only: COORDINATES, CYLINDRICAL
30           use geometry, only: CYCLIC_X, CYCLIC_X_PD, CYCLIC_X_MF
31           use geometry, only: CYCLIC_Y, CYCLIC_Y_PD, CYCLIC_Y_MF
32           use geometry, only: CYCLIC_Z, CYCLIC_Z_PD, CYCLIC_Z_MF
33     !      use geometry, only: COORDINATES
34     
35           use cutcell, only: PARTIAL_CHECK_03
36     
37     ! Global Parameters:
38     !---------------------------------------------------------------------//
39           use param1, only: ONE, ZERO, UNDEFINED_I, UNDEFINED
40     
41           use param, only: DIMENSION_I, DIMENSION_J, DIMENSION_K
42     
43     ! Use the error manager for posting error messages.
44     !---------------------------------------------------------------------//
45           use error_manager
46     
47           implicit none
48     
49     
50           LOGICAL, intent(IN) :: SHIFT
51           LOGICAL, external :: COMPARE
52     
53     ! Local Variables:
54     !---------------------------------------------------------------------//
55     
56     
57     ! Initialize the error manager.
58           CALL INIT_ERR_MSG("CHECK_GEOMETRY")
59     
60           CALL GET_DXYZ_FROM_CONTROL_POINTS
61     
62           CALL CHECK_AXIS(IMAX, IMAX3, XLENGTH, DX, 'X', 'I', NO_I, SHIFT)
63           CALL CHECK_AXIS(JMAX, JMAX3, YLENGTH, DY, 'Y', 'J', NO_J, SHIFT)
64           CALL CHECK_AXIS(KMAX, KMAX3, ZLENGTH, DZ, 'Z', 'K', NO_K, SHIFT)
65     
66           IF(SHIFT) CALL SHIFT_DXYZ
67     
68     !  Ensure that the cell sizes across cyclic boundaries are comparable
69           IF(CYCLIC_X .OR. CYCLIC_X_PD) THEN
70              IF(DX(IMIN1) /= DX(IMAX1)) THEN
71                 WRITE(ERR_MSG,1100) 'DX(IMIN1)',DX(IMIN1),'DX(IMAX1)',DX(IMAX1)
72                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
73              ENDIF
74           ENDIF
75     
76           IF(CYCLIC_Y .OR. CYCLIC_Y_PD) THEN
77              IF(DY(JMIN1) /= DY(JMAX1)) THEN
78                 WRITE(ERR_MSG,1100) 'DY(JMIN1)',DY(JMIN1),'DY(JMAX1)',DY(JMAX1)
79                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
80              ENDIF
81           ENDIF
82     
83           IF(CYCLIC_Z .OR. CYCLIC_Z_PD .OR. CYLINDRICAL) THEN
84              IF (DZ(KMIN1) /= DZ(KMAX1)) THEN
85                 WRITE(ERR_MSG,1100) 'DZ(KMIN1)',DZ(KMIN1),'DZ(KMAX1)',DZ(KMAX1)
86                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
87              ENDIF
88           ENDIF
89     
90      1100 FORMAT('Error 1100: Cells adjacent to cyclic boundaries must ',  &
91              'be of same size:',/2X,A,' = ',G12.5,/2x,A,' = ',G12.5,/      &
92              'Please correct the mfix.dat file.')
93     
94     
95           CALL FINL_ERR_MSG
96     
97           RETURN
98     
99           END SUBROUTINE CHECK_GEOMETRY
100     
101     
102     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
103     !                                                                      !
104     !  SUBROUTINE: CHECK_GEOMETRY_DES                                      !
105     !  Author: Pradeep Gopalakrishnan                     Date:    Nov-11  !
106     !                                                                      !
107     !  Purpose: Checks the des grid input parameters.                      !
108     !                                                                      !
109     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
110           SUBROUTINE CHECK_GEOMETRY_DES
111     
112     ! Global Variables:
113     !---------------------------------------------------------------------//
114     ! Domain partition for DEM background mesh.
115           use discretelement, only: DESGRIDSEARCH_IMAX
116           use discretelement, only: DESGRIDSEARCH_JMAX
117           use discretelement, only: DESGRIDSEARCH_KMAX
118     ! Domain size specifed by the user.
119           use geometry, only: XLENGTH, YLENGTH, ZLENGTH, NO_K
120     ! Maximum particle size.
121           use discretelement, only: MAX_RADIUS
122     
123     
124     ! Global Parameters:
125     !---------------------------------------------------------------------//
126           use param1, only: UNDEFINED_I
127     
128     ! Use the error manager for posting error messages.
129     !---------------------------------------------------------------------//
130           use error_manager
131     
132     
133           implicit none
134     
135     
136     ! Local Variables:
137     !---------------------------------------------------------------------//
138     ! Maximum particle diameter.
139           DOUBLE PRECISION :: MAX_DIAM
140     ! Calculated cell dimension based on particle size
141           DOUBLE PRECISION :: WIDTH
142     !......................................................................!
143     
144     ! Initialize the error manager.
145           CALL INIT_ERR_MSG("CHECK_GEOMETRY_DES")
146     
147     ! Calculate the max particle diamter and cell width.
148           MAX_DIAM = 2.0d0*MAX_RADIUS
149           WIDTH = 3.0d0*(max_diam)
150     
151     ! Calculate and/or verify the grid in the X-axial direction.
152           IF(DESGRIDSEARCH_IMAX == UNDEFINED_I) THEN
153              DESGRIDSEARCH_IMAX = max(int(XLENGTH/WIDTH), 1)
154           ELSEIF((XLENGTH/dble(DESGRIDSEARCH_IMAX)) < MAX_DIAM) THEN
155              WRITE(ERR_MSG, 1100) 'X', MAX_DIAM,                           &
156                 XLENGTH/dble(DESGRIDSEARCH_IMAX)
157              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
158           ENDIF
159     
160     ! Calculate and/or verify the grid in the Y-axial direction.
161           IF(DESGRIDSEARCH_JMAX == UNDEFINED_I) THEN
162              DESGRIDSEARCH_JMAX = max(int(YLENGTH/WIDTH), 1)
163           ELSEIF((YLENGTH/dble(DESGRIDSEARCH_JMAX)) < MAX_DIAM) THEN
164              WRITE(ERR_MSG, 1100) 'Y', MAX_DIAM,                           &
165                 YLENGTH/dble(DESGRIDSEARCH_JMAX)
166              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
167           ENDIF
168     
169     ! Calculate and/or verify the grid in the Z-axial direction.
170           IF(NO_K) THEN
171              DESGRIDSEARCH_KMAX = 1
172           ELSEIF(DESGRIDSEARCH_KMAX == UNDEFINED_I) THEN
173              DESGRIDSEARCH_KMAX = max(int(ZLENGTH/WIDTH), 1)
174           ELSEIF((ZLENGTH/dble(DESGRIDSEARCH_KMAX)) < MAX_DIAM) THEN
175              WRITE(ERR_MSG, 1100) 'Z', MAX_DIAM,                           &
176                 ZLENGTH/dble(DESGRIDSEARCH_KMAX)
177              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
178           ENDIF
179     
180           CALL FINL_ERR_MSG
181     
182      1100 FORMAT('Error 1100: The des search grid is too fine in the ',A1, &
183              '-direction. The',/'maximum particle diameter is larger than',&
184              ' the cell width:',/2x,'MAX DIAM:   ',g12.5,/2x,'CELL ',      &
185              'WIDTH: ',g12.5,/'Decrease the values for DESGRIDSEARCH in ', &
186              'the mfix.dat file.')
187     
188           RETURN
189           END SUBROUTINE CHECK_GEOMETRY_DES
190