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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  SUBROUTINE: GET_DATA                                                C
4     !  Purpose: read and verify input data, open files                     C
5     !                                                                      C
6     !  Author: P. Nicoletti                               Date: 04-DEC-91  C
7     !  Reviewer: M.SYAMLAL, W.ROGERS, P.NICOLETTI         Date: 24-JAN-92  C
8     !                                                                      C
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
10           SUBROUTINE GET_DATA
11     
12     !-----------------------------------------------
13     ! Modules
14     !-----------------------------------------------
15           USE compar
16           USE constant, only: L_SCALE0
17           USE cutcell
18           USE dashboard
19           USE des_allocate
20           USE des_rxns
21           USE des_thermo
22           USE discretelement
23           USE error_manager
24           USE funits
25           USE gridmap
26           USE leqsol
27           USE mfix_pic
28           USE parallel
29           USE param
30           USE param1
31           USE qmom_kinetic_equation
32           USE run
33           USE visc_g, only: L_SCALE
34           use desgrid, only: DESGRID_INIT
35           use mpi_init_des, only: DESMPI_INIT
36           use stl_preproc_des, only: DES_STL_PREPROCESSING
37     
38           IMPLICIT NONE
39     !-----------------------------------------------
40     ! Local variables
41     !-----------------------------------------------
42     ! shift DX, DY and DZ values
43           LOGICAL, PARAMETER :: SHIFT = .TRUE.
44     
45     
46     ! This module call routines to initialize the namelist variables.
47           CALL INIT_NAMELIST
48     ! Read in the namelist variables from the ascii input file.
49           CALL READ_NAMELIST(0)
50     
51     ! Initialize the error manager. This call occurs after the mfix.dat
52     ! is read so that message verbosity can be set and the .LOG file
53     ! can be opened.
54           CALL INIT_ERROR_MANAGER
55     
56     ! Write header in the .LOG file and to screen.
57     ! Not sure if the values are correct or useful
58           CALL WRITE_HEADER
59     
60     ! Open files
61           CALL OPEN_FILES(RUN_NAME, RUN_TYPE, N_SPX)
62     
63     ! These checks verify that sufficient information was provided
64     ! to setup the domain indices and DMP gridmap.
65           CALL CHECK_GEOMETRY_PREREQS
66           CALL CHECK_DMP_PREREQS
67     
68     ! Set up the physical domain indicies (cell index max/min values).
69           CALL SET_MAX2
70     
71     ! Set constants
72           CALL SET_CONSTANTS
73     
74     ! Adjust partition for better load balance (done when RE_INDEXING is .TRUE.)
75           CALL ADJUST_IJK_SIZE
76     
77     ! Partition the domain and set indices
78           CALL GRIDMAP_INIT
79     
80     ! Check the minimum solids phase requirements.
81           CALL CHECK_SOLIDS_MODEL_PREREQS
82     
83           CALL CHECK_RUN_CONTROL
84           CALL CHECK_NUMERICS
85           CALL CHECK_OUTPUT_CONTROL
86     
87           CALL CHECK_GAS_PHASE
88           CALL CHECK_SOLIDS_PHASES
89           CALL SET_PARAMETERS
90     
91     ! Basic geometry checks.
92           CALL CHECK_GEOMETRY(SHIFT)
93           IF(DISCRETE_ELEMENT) CALL CHECK_GEOMETRY_DES
94     
95     ! Set grid spacing variables.
96           CALL SET_GEOMETRY
97           IF(DISCRETE_ELEMENT) CALL SET_GEOMETRY_DES
98     
99           CALL CHECK_INITIAL_CONDITIONS
100           CALL CHECK_BOUNDARY_CONDITIONS
101           CALL CHECK_INTERNAL_SURFACES
102           CALL CHECK_POINT_SOURCES
103     
104           CALL CHECK_CHEMICAL_RXNS
105           CALL CHECK_ODEPACK_STIFF_CHEM
106     
107     
108     
109     !----------------------  DOMAIN SPECIFIC CHECKS  --------------------!
110     
111     
112     ! This call needs to occur before any of the IC/BC checks.
113           CALL SET_ICBC_FLAG
114     
115     ! Compute area of boundary surfaces.
116           CALL GET_BC_AREA
117     
118     ! Convert (mass, volume) flows to velocities.
119           CALL SET_BC_FLOW
120     
121     ! Set the flags for identifying computational cells
122           CALL SET_FLAGS
123     ! Set arrays for computing indices
124           CALL SET_INCREMENTS
125           CALL SET_INCREMENTS3
126     
127     ! Cartesian grid implementation
128           CALL CHECK_DATA_CARTESIAN
129           IF(CARTESIAN_GRID) THEN
130              CALL CUT_CELL_PREPROCESSING
131           ELSE
132              CALL ALLOCATE_DUMMY_CUT_CELL_ARRAYS
133           ENDIF
134     
135           IF(DISCRETE_ELEMENT) THEN
136              CALL DESGRID_INIT
137              CALL DESMPI_INIT
138              CALL DES_STL_PREPROCESSING
139              IF(RUN_TYPE == 'NEW' .AND. PARTICLES /= 0) THEN
140                 IF(GENER_PART_CONFIG) CALL GENERATE_PARTICLE_CONFIG
141              ENDIF
142           ENDIF
143     
144     
145     !--------------------------  ARRAY ALLOCATION -----------------------!
146     
147     ! Allocate array storage.
148           CALL ALLOCATE_ARRAYS
149           IF(DISCRETE_ELEMENT) CALL DES_ALLOCATE_ARRAYS
150           IF(QMOMK) CALL QMOMK_ALLOCATE_ARRAYS
151     
152     ! Initialize arrays.
153           CALL INIT_FVARS
154           IF(DISCRETE_ELEMENT) CALL DES_INIT_ARRAYS
155     
156     ! This is all that happens in SET_L_SCALE so it needs moved, maybe
157     ! this should go in int_fluid_var.?
158     !     CALL SET_L_SCALE
159           L_SCALE(:) = L_SCALE0
160     
161     
162     !======================================================================
163     ! Data initialization for Dashboard
164     !======================================================================
165           INIT_TIME = TIME
166           SMMIN =  LARGE_NUMBER
167           SMMAX = -LARGE_NUMBER
168     
169           DTMIN =  LARGE_NUMBER
170           DTMAX = -LARGE_NUMBER
171     
172           NIT_MIN = MAX_NIT
173           NIT_MAX = 0
174     
175           N_DASHBOARD = 0
176     
177     
178           RETURN
179     
180           END SUBROUTINE GET_DATA
181