File: RELATIVE:/../../../mfix.git/model/reinitialize.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  SUBROUTINE: REINITIALIZE                                            !
4     !  Purpose: read and verify input data, open files                     !
5     !                                                                      !
6     !  Author: P. Nicoletti                               Date: 04-DEC-91  !
7     !  Reviewer: M.SYAMLAL, W.ROGERS, P.NICOLETTI         Date: 24-JAN-92  !
8     !                                                                      !
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10           SUBROUTINE REINITIALIZE
11     
12           use run, only: REINITIALIZING
13     
14           use error_manager
15     
16           IMPLICIT NONE
17     
18           INTEGER :: IER
19     
20           IER = 0
21           REINITIALIZING = .TRUE.
22     
23     ! Clean up reaction data if needed
24           CALL REINIT_RXN_DATA
25     
26     ! Read in the namelist variables from the ascii input file.
27           CALL READ_NAMELIST(2)
28     
29           CALL REINITIALIZE0(IER)
30     
31           REINITIALIZING = .FALSE.
32     
33           IF(IER /=0) THEN
34              WRITE(ERR_MSG, 2000)
35           ELSE
36              WRITE(ERR_MSG, 2100)
37           ENDIF
38     
39      2000 FORMAT(2/70('*'),/'Reinitialization failed!',/'Correct all ',    &
40              'reported errors and reinitialize again.',/70('*'))
41     
42      2100 FORMAT(2/,70('*'),/'Successfully reinitialized!'/70('*'))
43           CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
44     
45           RETURN
46           END SUBROUTINE REINITIALIZE
47     
48     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
49     !                                                                      !
50     !  SUBROUTINE: REINITIALIZE0                                           !
51     !  Purpose: read and verify input data, open files                     !
52     !                                                                      !
53     !  Author: P. Nicoletti                               Date: 04-DEC-91  !
54     !  Reviewer: M.SYAMLAL, W.ROGERS, P.NICOLETTI         Date: 24-JAN-92  !
55     !                                                                      !
56     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
57           SUBROUTINE REINITIALIZE0(pIER)
58     
59           USE cutcell, only: CARTESIAN_GRID
60           use coeff, only: INIT_COEFF
61     
62           use error_manager
63     
64           IMPLICIT NONE
65     
66           INTEGER, INTENT(OUT) :: pIER
67           INTEGER :: IER
68     
69     ! Set the default error flag to ERROR state.
70           pIER = 1
71     
72           CALL CHECK_RUN_CONTROL()
73           IF(REINIT_ERROR()) RETURN
74     
75           CALL CHECK_NUMERICS()
76           IF(REINIT_ERROR()) RETURN
77     
78           CALL CHECK_OUTPUT_CONTROL()
79           IF(REINIT_ERROR()) RETURN
80     
81           CALL CHECK_GAS_PHASE
82           IF(REINIT_ERROR()) RETURN
83     
84           CALL CHECK_SOLIDS_PHASES
85           IF(REINIT_ERROR()) RETURN
86     
87           CALL CHECK_INITIAL_CONDITIONS
88           IF(REINIT_ERROR()) RETURN
89           CALL CHECK_BOUNDARY_CONDITIONS
90           IF(REINIT_ERROR()) RETURN
91           CALL CHECK_INTERNAL_SURFACES
92           IF(REINIT_ERROR()) RETURN
93           CALL CHECK_POINT_SOURCES
94     
95           CALL CHECK_CHEMICAL_RXNS
96           IF(REINIT_ERROR()) RETURN
97           CALL CHECK_ODEPACK_STIFF_CHEM
98           IF(REINIT_ERROR()) RETURN
99     
100     ! Convert (mass, volume) flows to velocities.
101           CALL SET_BC_FLOW
102           IF(REINIT_ERROR()) RETURN
103     
104     ! This is all that happens in SET_L_SCALE so it needs moved, maybe
105     ! this should go in int_fluid_var.?
106     !     CALL SET_L_SCALE
107     !      L_SCALE(:) = L_SCALE0
108     
109     ! Set constant physical properties
110           CALL SET_CONSTPROP
111           IF(REINIT_ERROR()) RETURN
112     
113     ! Set initial conditions
114           CALL SET_IC
115           IF(REINIT_ERROR()) RETURN
116     
117     ! Set point sources.
118           CALL SET_PS
119           IF(REINIT_ERROR()) RETURN
120     
121     ! Set boundary conditions
122           CALL ZERO_NORM_VEL
123           IF(REINIT_ERROR()) RETURN
124           CALL SET_BC0
125           IF(REINIT_ERROR()) RETURN
126           IF(CARTESIAN_GRID) CALL CG_SET_BC0
127           IF(REINIT_ERROR()) RETURN
128     
129     ! Set gas mixture molecular weight
130           CALL SET_MW_MIX_G
131           IF(REINIT_ERROR()) RETURN
132     
133     ! Initialize densities.
134           CALL SET_RO_G
135           IF(REINIT_ERROR()) RETURN
136           CALL SET_RO_S
137           IF(REINIT_ERROR()) RETURN
138     
139     ! Initialize time dependent boundary conditions
140           CALL SET_BC1
141           IF(REINIT_ERROR()) RETURN
142     
143     ! Check the field variable data and report errors.
144           IF(.NOT.CARTESIAN_GRID) CALL CHECK_DATA_20
145           IF(REINIT_ERROR()) RETURN
146     
147     ! Parse residual strings
148           CALL PARSE_RESID_STRING ()
149           IF(REINIT_ERROR()) RETURN
150     
151           CALL RRATES_INIT(IER)
152           IF(REINIT_ERROR()) RETURN
153     
154     ! Calculate all the coefficients once before entering the time loop
155           CALL INIT_COEFF(IER)
156           IF(REINIT_ERROR()) RETURN
157     
158     ! After reinitialization, the field vars should pass these checks too
159           CALL CHECK_DATA_30()
160           IF(REINIT_ERROR()) RETURN
161     
162           CALL WRITE_RES0()
163           CALL WRITE_OUT0()
164     
165     ! Made it here without error.
166           pIER = 0
167     
168           RETURN
169           END SUBROUTINE REINITIALIZE0
170     
171     
172     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
173     !                                                                      !
174     !  SUBROUTINE: REINIT_RXN_DATA                                         !
175     !  Purpose: read and verify input data, open files                     !
176     !                                                                      !
177     !  Author: P. Nicoletti                               Date: 04-DEC-91  !
178     !  Reviewer: M.SYAMLAL, W.ROGERS, P.NICOLETTI         Date: 24-JAN-92  !
179     !                                                                      !
180     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
181           SUBROUTINE REINIT_RXN_DATA
182     
183           use parse, only: RXN_NAME, DES_RXN_NAME
184           use parse, only: RXN_CHEM_EQ, DES_RXN_CHEM_EQ
185           use parse, only: usrDH, DES_usrDH
186           use parse, only: usrfDH, DES_usrfDH
187     
188           use rxns, only: NO_OF_RXNS
189           use rxns, only: REACTION
190           use des_rxns, only: NO_OF_DES_RXNS
191           use des_rxns, only: DES_REACTION
192     
193           use error_manager
194     
195           IMPLICIT NONE
196     
197           INTEGER :: LC
198     
199     ! Reaction Names: Allocate/Initialize
200           IF(allocated( RXN_NAME )) deallocate(RXN_NAME)
201     ! Chemical Equations: Allocate/Initialize
202           IF(allocated( RXN_CHEM_EQ )) deallocate(RXN_CHEM_EQ)
203     ! User defined heat of reaction: Allocate/Initialize
204           IF(allocated( usrDH ))deallocate(usrDH)
205     ! User defined heat of reaction partitions: Allocate/Initialize
206           IF(allocated( usrfDH )) deallocate(usrfDH)
207     
208     
209           IF(allocated(Reaction)) THEN
210              DO LC=1,NO_OF_RXNS
211                 IF(allocated(Reaction(LC)%HoR)) &
212                    deallocate(Reaction(LC)%HoR)
213                 IF(allocated(Reaction(LC)%rPhase)) &
214                    deallocate(Reaction(LC)%rPhase)
215                 IF(allocated(Reaction(LC)%Species)) &
216                    deallocate(Reaction(LC)%Species)
217              ENDDO
218              deallocate(Reaction)
219           ENDIF
220           NO_OF_RXNS = 0
221     
222     ! Reaction Names: Allocate/Initialize
223           IF(allocated( DES_RXN_NAME )) deallocate(DES_RXN_NAME)
224     ! Chemical Equations: Allocate/Initialize
225           IF(allocated( DES_RXN_CHEM_EQ )) deallocate(DES_RXN_CHEM_EQ)
226     ! User defined heat of reaction: Allocate/Initialize
227           IF(allocated( DES_usrDH )) deallocate( DES_usrDH)
228     ! User defined heat of reaction partitions: Allocate/Initialize
229           IF(Allocated( DES_usrfDH )) deallocate( DES_usrfDH)
230     
231           IF(allocated(DES_Reaction)) THEN
232              DO LC=1,NO_OF_DES_RXNS
233                 IF(allocated(DES_Reaction(LC)%HoR)) &
234                    deallocate(DES_Reaction(LC)%HoR)
235                 IF(allocated(DES_Reaction(LC)%rPhase)) &
236                    deallocate(DES_Reaction(LC)%rPhase)
237                 IF(allocated(DES_Reaction(LC)%Species)) &
238                    deallocate(DES_Reaction(LC)%Species)
239              ENDDO
240              deallocate(DES_Reaction)
241           ENDIF
242           NO_OF_DES_RXNS = 0
243     
244     
245           RETURN
246           END SUBROUTINE REINIT_RXN_DATA
247