File: N:\mfix\model\reinitialize.f
1 MODULE REINIT
2 CONTAINS
3
4
5
6
7
8
9
10
11
12 SUBROUTINE REINITIALIZE(filename)
13
14 use run, only: REINITIALIZING
15
16 use error_manager
17
18 IMPLICIT NONE
19
20 CHARACTER(LEN=*), intent(in) :: filename
21
22 INTEGER :: IER
23
24 IER = 0
25 REINITIALIZING = .TRUE.
26
27
28 CALL REINIT_RXN_DATA
29
30
31 CALL READ_NAMELIST(2, filename)
32
33 CALL REINITIALIZE0(IER)
34
35 REINITIALIZING = .FALSE.
36
37 IF(IER /=0) THEN
38 WRITE(ERR_MSG, 2000)
39 ELSE
40 WRITE(ERR_MSG, 2100)
41 ENDIF
42
43 2000 FORMAT(2/70('*'),/'Reinitialization failed!',/'Correct all ', &
44 'reported errors and reinitialize again.',/70('*'))
45
46 2100 FORMAT(2/,70('*'),/'Successfully reinitialized!'/70('*'))
47 CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
48
49 RETURN
50 END SUBROUTINE REINITIALIZE
51
52
53
54
55
56
57
58
59
60
61 SUBROUTINE REINITIALIZE0(pIER)
62
63 USE cutcell, only: CARTESIAN_GRID
64 use coeff, only: INIT_COEFF
65
66 use error_manager
67
68 IMPLICIT NONE
69
70 INTEGER, INTENT(OUT) :: pIER
71 INTEGER :: IER
72
73
74 = 1
75
76 CALL CHECK_RUN_CONTROL()
77 IF(REINIT_ERROR()) RETURN
78
79 CALL CHECK_NUMERICS()
80 IF(REINIT_ERROR()) RETURN
81
82 CALL CHECK_OUTPUT_CONTROL()
83 IF(REINIT_ERROR()) RETURN
84
85 CALL CHECK_GAS_PHASE
86 IF(REINIT_ERROR()) RETURN
87
88 CALL CHECK_SOLIDS_PHASES
89 IF(REINIT_ERROR()) RETURN
90
91 CALL CHECK_INITIAL_CONDITIONS
92 IF(REINIT_ERROR()) RETURN
93 CALL CHECK_BOUNDARY_CONDITIONS
94 IF(REINIT_ERROR()) RETURN
95 CALL CHECK_INTERNAL_SURFACES
96 IF(REINIT_ERROR()) RETURN
97 CALL CHECK_POINT_SOURCES
98
99 CALL CHECK_CHEMICAL_RXNS
100 IF(REINIT_ERROR()) RETURN
101 CALL CHECK_ODEPACK_STIFF_CHEM
102 IF(REINIT_ERROR()) RETURN
103
104
105 CALL SET_BC_FLOW
106 IF(REINIT_ERROR()) RETURN
107
108
109
110
111
112
113
114 CALL SET_CONSTPROP
115 IF(REINIT_ERROR()) RETURN
116
117
118 CALL SET_IC
119 IF(REINIT_ERROR()) RETURN
120
121
122 CALL SET_PS
123 IF(REINIT_ERROR()) RETURN
124
125
126 CALL ZERO_NORM_VEL
127 IF(REINIT_ERROR()) RETURN
128 CALL SET_BC0
129 IF(REINIT_ERROR()) RETURN
130 IF(CARTESIAN_GRID) CALL CG_SET_BC0
131 IF(REINIT_ERROR()) RETURN
132
133
134 CALL SET_MW_MIX_G
135 IF(REINIT_ERROR()) RETURN
136
137
138 CALL SET_RO_G
139 IF(REINIT_ERROR()) RETURN
140 CALL SET_RO_S
141 IF(REINIT_ERROR()) RETURN
142
143
144 CALL SET_BC1
145 IF(REINIT_ERROR()) RETURN
146
147
148 IF(.NOT.CARTESIAN_GRID) CALL CHECK_DATA_20
149 IF(REINIT_ERROR()) RETURN
150
151
152 CALL PARSE_RESID_STRING ()
153 IF(REINIT_ERROR()) RETURN
154
155 CALL RRATES_INIT(IER)
156 IF(REINIT_ERROR()) RETURN
157
158
159 CALL INIT_COEFF(IER)
160 IF(REINIT_ERROR()) RETURN
161
162
163 CALL CHECK_DATA_30()
164 IF(REINIT_ERROR()) RETURN
165
166 CALL WRITE_RES0()
167 CALL WRITE_OUT0()
168
169
170 = 0
171
172 RETURN
173 END SUBROUTINE REINITIALIZE0
174
175
176
177
178
179
180
181
182
183
184
185 SUBROUTINE REINIT_RXN_DATA
186
187 use parse, only: RXN_NAME, DES_RXN_NAME
188 use parse, only: RXN_CHEM_EQ, DES_RXN_CHEM_EQ
189 use parse, only: usrDH, DES_usrDH
190 use parse, only: usrfDH, DES_usrfDH
191
192 use rxns, only: NO_OF_RXNS
193 use rxns, only: REACTION
194 use des_rxns, only: NO_OF_DES_RXNS
195 use des_rxns, only: DES_REACTION
196
197 use error_manager
198
199 IMPLICIT NONE
200
201 INTEGER :: LC
202
203
204 IF(allocated( RXN_NAME )) deallocate(RXN_NAME)
205
206 IF(allocated( RXN_CHEM_EQ )) deallocate(RXN_CHEM_EQ)
207
208 IF(allocated( usrDH ))deallocate(usrDH)
209
210 IF(allocated( usrfDH )) deallocate(usrfDH)
211
212
213 IF(allocated(Reaction)) THEN
214 DO LC=1,NO_OF_RXNS
215 IF(allocated(Reaction(LC)%HoR)) &
216 deallocate(Reaction(LC)%HoR)
217 IF(allocated(Reaction(LC)%rPhase)) &
218 deallocate(Reaction(LC)%rPhase)
219 IF(allocated(Reaction(LC)%Species)) &
220 deallocate(Reaction(LC)%Species)
221 ENDDO
222 deallocate(Reaction)
223 ENDIF
224 NO_OF_RXNS = 0
225
226
227 IF(allocated( DES_RXN_NAME )) deallocate(DES_RXN_NAME)
228
229 IF(allocated( DES_RXN_CHEM_EQ )) deallocate(DES_RXN_CHEM_EQ)
230
231 IF(allocated( DES_usrDH )) deallocate( DES_usrDH)
232
233 IF(Allocated( DES_usrfDH )) deallocate( DES_usrfDH)
234
235 IF(allocated(DES_Reaction)) THEN
236 DO LC=1,NO_OF_DES_RXNS
237 IF(allocated(DES_Reaction(LC)%HoR)) &
238 deallocate(DES_Reaction(LC)%HoR)
239 IF(allocated(DES_Reaction(LC)%rPhase)) &
240 deallocate(DES_Reaction(LC)%rPhase)
241 IF(allocated(DES_Reaction(LC)%Species)) &
242 deallocate(DES_Reaction(LC)%Species)
243 ENDDO
244 deallocate(DES_Reaction)
245 ENDIF
246 NO_OF_DES_RXNS = 0
247
248
249 RETURN
250 END SUBROUTINE REINIT_RXN_DATA
251 END MODULE REINIT
252