File: N:\mfix\model\write_res0.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SUBROUTINE WRITE_RES0
23
24
25
26
27 USE bc
28 USE cdist
29 USE compar
30 USE constant
31 USE funits
32 USE geometry
33 USE ic
34 USE in_binary_512i
35 USE is
36 USE leqsol
37 USE machine
38 USE mpi_utility
39 USE output
40 USE param
41 USE param1
42 USE physprop
43 USE run
44 USE rxns
45 USE scalars
46 USE scales
47 USE sendrecv
48 USE stiff_chem
49 USE toleranc
50 USE ur_facs
51
52 IMPLICIT NONE
53
54
55
56 integer, allocatable :: arr1(:)
57 integer, allocatable :: arr2(:)
58 integer :: work_around(100)
59
60 INTEGER :: LC, L, NN, IDX
61
62 INTEGER :: NEXT_RECA
63
64
65
66 LOGICAL, PARAMETER :: lCALL_ISAT = .FALSE.
67
68 CHARACTER(LEN=512) :: VERSION
69
70
71 = 5
72
73
74
75
76
77
78
79
80
81 = 'RES = 01.8'
82
83
84
85 if (myPE.eq.PE_IO) then
86 allocate (arr1(ijkmax3))
87 allocate (arr2(ijkmax2))
88 else
89 allocate (arr1(1))
90 allocate (arr2(1))
91 goto 1100
92 end if
93
94
95 WRITE (UNIT_RES, REC=1) VERSION
96 WRITE (UNIT_RES, REC=2) RUN_NAME, ID_MONTH, ID_DAY, ID_YEAR, ID_HOUR, &
97 ID_MINUTE, ID_SECOND
98 WRITE (UNIT_RES, REC=3) NEXT_RECA
99 WRITE (UNIT_RES, REC=4) IMIN1, JMIN1, KMIN1, IMAX, JMAX, KMAX, IMAX1, &
100 JMAX1, KMAX1, IMAX2, JMAX2, KMAX2, IJMAX2, IJKMAX2, MMAX, DIMENSION_IC&
101 , DIMENSION_BC, DIMENSION_C, DIMENSION_IS, DT, XMIN, XLENGTH, YLENGTH&
102 , ZLENGTH, C_E, C_F, PHI, PHI_W
103 CALL OUT_BIN_512 (UNIT_RES, C, DIMENSION_C, NEXT_RECA)
104 NEXT_RECA = 1 + NEXT_RECA
105 = NEXT_RECA - 1
106 DO LC = 1, DIMENSION_C
107 WRITE (UNIT_RES, REC=NEXT_RECA) C_NAME(LC)
108 NEXT_RECA = NEXT_RECA + 1
109 END DO
110 write (*,*) 'next_reca = ' , next_reca
111 do l = 0,mmax
112 write (*,*) L,nmax(l)
113 work_around(L+1) = nmax(L)
114 end do
115
116
117
118
119
120 WRITE (UNIT_RES, REC=NEXT_RECA) (NMAX(L),L=0,MMAX)
121
122
123
124
125
126
127
128 = NEXT_RECA + 1
129 write (*,*) ' next_reca = ' , next_reca
130
131 CALL OUT_BIN_512 (UNIT_RES, DX(1), IMAX2, NEXT_RECA)
132 CALL OUT_BIN_512 (UNIT_RES, DY(1), JMAX2, NEXT_RECA)
133 CALL OUT_BIN_512 (UNIT_RES, DZ(1), KMAX2, NEXT_RECA)
134 WRITE (UNIT_RES, REC=NEXT_RECA) RUN_NAME, DESCRIPTION, UNITS, RUN_TYPE, &
135 COORDINATES
136 NEXT_RECA = NEXT_RECA + 1
137 WRITE (UNIT_RES, REC=NEXT_RECA) (D_P0(L),L=1,MMAX), (RO_S0(L),L=1,MMAX), &
138 EP_STAR, RO_G0, MU_G0, MW_AVG
139 NEXT_RECA = NEXT_RECA + 1
140 CALL OUT_BIN_512 (UNIT_RES, MW_G, NMAX(0), NEXT_RECA)
141 DO LC = 1, MMAX
142 WRITE (UNIT_RES, REC=NEXT_RECA) (MW_S(LC,NN),NN=1,NMAX(LC))
143 NEXT_RECA = NEXT_RECA + 1
144 END DO
145 CALL OUT_BIN_512 (UNIT_RES, IC_X_W, DIMENSION_IC, NEXT_RECA)
146 CALL OUT_BIN_512 (UNIT_RES, IC_X_E, DIMENSION_IC, NEXT_RECA)
147 CALL OUT_BIN_512 (UNIT_RES, IC_Y_S, DIMENSION_IC, NEXT_RECA)
148 CALL OUT_BIN_512 (UNIT_RES, IC_Y_N, DIMENSION_IC, NEXT_RECA)
149 CALL OUT_BIN_512 (UNIT_RES, IC_Z_B, DIMENSION_IC, NEXT_RECA)
150 CALL OUT_BIN_512 (UNIT_RES, IC_Z_T, DIMENSION_IC, NEXT_RECA)
151 CALL OUT_BIN_512I (UNIT_RES, IC_I_W, DIMENSION_IC, NEXT_RECA)
152 CALL OUT_BIN_512I (UNIT_RES, IC_I_E, DIMENSION_IC, NEXT_RECA)
153 CALL OUT_BIN_512I (UNIT_RES, IC_J_S, DIMENSION_IC, NEXT_RECA)
154 CALL OUT_BIN_512I (UNIT_RES, IC_J_N, DIMENSION_IC, NEXT_RECA)
155 CALL OUT_BIN_512I (UNIT_RES, IC_K_B, DIMENSION_IC, NEXT_RECA)
156 CALL OUT_BIN_512I (UNIT_RES, IC_K_T, DIMENSION_IC, NEXT_RECA)
157 CALL OUT_BIN_512 (UNIT_RES, IC_EP_G, DIMENSION_IC, NEXT_RECA)
158 CALL OUT_BIN_512 (UNIT_RES, IC_P_G, DIMENSION_IC, NEXT_RECA)
159 CALL OUT_BIN_512 (UNIT_RES, IC_T_G, DIMENSION_IC, NEXT_RECA)
160 DO NN = 1, NMAX(0)
161 CALL OUT_BIN_512 (UNIT_RES, IC_X_G(1,NN), DIMENSION_IC, NEXT_RECA)
162 END DO
163 CALL OUT_BIN_512 (UNIT_RES, IC_U_G, DIMENSION_IC, NEXT_RECA)
164 CALL OUT_BIN_512 (UNIT_RES, IC_V_G, DIMENSION_IC, NEXT_RECA)
165 CALL OUT_BIN_512 (UNIT_RES, IC_W_G, DIMENSION_IC, NEXT_RECA)
166
167 DO LC = 1, MMAX
168 CALL OUT_BIN_512 (UNIT_RES, IC_ROP_S(1,LC), DIMENSION_IC, NEXT_RECA)
169 CALL OUT_BIN_512 (UNIT_RES, IC_U_S(1,LC), DIMENSION_IC, NEXT_RECA)
170 CALL OUT_BIN_512 (UNIT_RES, IC_V_S(1,LC), DIMENSION_IC, NEXT_RECA)
171 CALL OUT_BIN_512 (UNIT_RES, IC_W_S(1,LC), DIMENSION_IC, NEXT_RECA)
172 CALL OUT_BIN_512 (UNIT_RES, IC_T_S(1,LC), DIMENSION_IC, NEXT_RECA)
173 DO NN = 1, NMAX(LC)
174 CALL OUT_BIN_512(UNIT_RES,IC_X_S(1,LC,NN),DIMENSION_IC,NEXT_RECA)
175 END DO
176 END DO
177 CALL OUT_BIN_512 (UNIT_RES, BC_X_W, DIMENSION_BC, NEXT_RECA)
178 CALL OUT_BIN_512 (UNIT_RES, BC_X_E, DIMENSION_BC, NEXT_RECA)
179 CALL OUT_BIN_512 (UNIT_RES, BC_Y_S, DIMENSION_BC, NEXT_RECA)
180 CALL OUT_BIN_512 (UNIT_RES, BC_Y_N, DIMENSION_BC, NEXT_RECA)
181 CALL OUT_BIN_512 (UNIT_RES, BC_Z_B, DIMENSION_BC, NEXT_RECA)
182 CALL OUT_BIN_512 (UNIT_RES, BC_Z_T, DIMENSION_BC, NEXT_RECA)
183
184 CALL OUT_BIN_512I (UNIT_RES, BC_I_W, DIMENSION_BC, NEXT_RECA)
185 CALL OUT_BIN_512I (UNIT_RES, BC_I_E, DIMENSION_BC, NEXT_RECA)
186 CALL OUT_BIN_512I (UNIT_RES, BC_J_S, DIMENSION_BC, NEXT_RECA)
187 CALL OUT_BIN_512I (UNIT_RES, BC_J_N, DIMENSION_BC, NEXT_RECA)
188 CALL OUT_BIN_512I (UNIT_RES, BC_K_B, DIMENSION_BC, NEXT_RECA)
189 CALL OUT_BIN_512I (UNIT_RES, BC_K_T, DIMENSION_BC, NEXT_RECA)
190 CALL OUT_BIN_512 (UNIT_RES, BC_EP_G, DIMENSION_BC, NEXT_RECA)
191 CALL OUT_BIN_512 (UNIT_RES, BC_P_G, DIMENSION_BC, NEXT_RECA)
192 CALL OUT_BIN_512 (UNIT_RES, BC_T_G, DIMENSION_BC, NEXT_RECA)
193 DO NN = 1, NMAX(0)
194 CALL OUT_BIN_512 (UNIT_RES, BC_X_G(1,NN), DIMENSION_BC, NEXT_RECA)
195 END DO
196 CALL OUT_BIN_512 (UNIT_RES, BC_U_G, DIMENSION_BC, NEXT_RECA)
197 CALL OUT_BIN_512 (UNIT_RES, BC_V_G, DIMENSION_BC, NEXT_RECA)
198 CALL OUT_BIN_512 (UNIT_RES, BC_W_G, DIMENSION_BC, NEXT_RECA)
199 CALL OUT_BIN_512 (UNIT_RES, BC_RO_G, DIMENSION_BC, NEXT_RECA)
200 CALL OUT_BIN_512 (UNIT_RES, BC_ROP_G, DIMENSION_BC, NEXT_RECA)
201 CALL OUT_BIN_512 (UNIT_RES, BC_VOLFLOW_G, DIMENSION_BC, NEXT_RECA)
202 CALL OUT_BIN_512 (UNIT_RES, BC_MASSFLOW_G, DIMENSION_BC, NEXT_RECA)
203 DO LC = 1, MMAX
204 CALL OUT_BIN_512 (UNIT_RES, BC_ROP_S(1,LC), DIMENSION_BC, NEXT_RECA)
205 CALL OUT_BIN_512 (UNIT_RES, BC_U_S(1,LC), DIMENSION_BC, NEXT_RECA)
206 CALL OUT_BIN_512 (UNIT_RES, BC_V_S(1,LC), DIMENSION_BC, NEXT_RECA)
207 CALL OUT_BIN_512 (UNIT_RES, BC_W_S(1,LC), DIMENSION_BC, NEXT_RECA)
208 CALL OUT_BIN_512 (UNIT_RES, BC_T_S(1,LC), DIMENSION_BC, NEXT_RECA)
209 DO NN = 1, NMAX(LC)
210 CALL OUT_BIN_512(UNIT_RES,BC_X_S(1,LC,NN),DIMENSION_BC,NEXT_RECA)
211 END DO
212 CALL OUT_BIN_512 (UNIT_RES, BC_VOLFLOW_S(1,LC), DIMENSION_BC, &
213 NEXT_RECA)
214 CALL OUT_BIN_512 (UNIT_RES, BC_MASSFLOW_S(1,LC), DIMENSION_BC, &
215 NEXT_RECA)
216 END DO
217 DO LC = 1, DIMENSION_BC
218 WRITE (UNIT_RES, REC=NEXT_RECA) BC_TYPE(LC)
219 NEXT_RECA = NEXT_RECA + 1
220 END DO
221
222
223 1100 continue
224
225
226
227 call gather (flag,arr1,root)
228
229 call scatter (flag,arr1,root)
230
231 if (myPE .ne. PE_IO) goto 1200
232 call convert_to_io_i(arr1,arr2,ijkmax2)
233 CALL OUT_BIN_512I (UNIT_RES, arr2, IJKMAX2, NEXT_RECA)
234
235 CALL OUT_BIN_512 (UNIT_RES, IS_X_W, DIMENSION_IS, NEXT_RECA)
236 CALL OUT_BIN_512 (UNIT_RES, IS_X_E, DIMENSION_IS, NEXT_RECA)
237 CALL OUT_BIN_512 (UNIT_RES, IS_Y_S, DIMENSION_IS, NEXT_RECA)
238 CALL OUT_BIN_512 (UNIT_RES, IS_Y_N, DIMENSION_IS, NEXT_RECA)
239 CALL OUT_BIN_512 (UNIT_RES, IS_Z_B, DIMENSION_IS, NEXT_RECA)
240 CALL OUT_BIN_512 (UNIT_RES, IS_Z_T, DIMENSION_IS, NEXT_RECA)
241 CALL OUT_BIN_512I (UNIT_RES, IS_I_W, DIMENSION_IS, NEXT_RECA)
242 CALL OUT_BIN_512I (UNIT_RES, IS_I_E, DIMENSION_IS, NEXT_RECA)
243 CALL OUT_BIN_512I (UNIT_RES, IS_J_S, DIMENSION_IS, NEXT_RECA)
244 CALL OUT_BIN_512I (UNIT_RES, IS_J_N, DIMENSION_IS, NEXT_RECA)
245 CALL OUT_BIN_512I (UNIT_RES, IS_K_B, DIMENSION_IS, NEXT_RECA)
246 CALL OUT_BIN_512I (UNIT_RES, IS_K_T, DIMENSION_IS, NEXT_RECA)
247 CALL OUT_BIN_512 (UNIT_RES, IS_PC(1,1), DIMENSION_IS, NEXT_RECA)
248 CALL OUT_BIN_512 (UNIT_RES, IS_PC(1,2), DIMENSION_IS, NEXT_RECA)
249 DO LC = 1, MMAX
250 CALL OUT_BIN_512 (UNIT_RES, IS_VEL_S(1,LC), DIMENSION_IS, NEXT_RECA)
251 END DO
252 DO LC = 1, DIMENSION_IS
253 WRITE (UNIT_RES, REC=NEXT_RECA) IS_TYPE(LC)
254 NEXT_RECA = NEXT_RECA + 1
255 END DO
256 WRITE (UNIT_RES, REC=NEXT_RECA) CYCLIC_X, CYCLIC_Y, CYCLIC_Z, CYCLIC_X_PD&
257 , CYCLIC_Y_PD, CYCLIC_Z_PD, DELP_X, DELP_Y, DELP_Z, U_G0, U_S0, V_G0, &
258 V_S0, W_G0, W_S0
259 NEXT_RECA = NEXT_RECA + 1
260
261
262
263 WRITE (UNIT_RES, REC=NEXT_RECA) TIME, TSTOP, ENERGY_EQ, RES_DT, OUT_DT, &
264 NLOG, L_SCALE0, NO_I, NO_J, NO_K, CALL_USR
265 NEXT_RECA = NEXT_RECA + 1
266 write (unit_res,rec=next_reca) n_spx
267 NEXT_RECA = NEXT_RECA + 1
268 DO LC = 1, N_SPX
269 WRITE (UNIT_RES, REC=NEXT_RECA) SPX_DT(LC)
270 NEXT_RECA = NEXT_RECA + 1
271 END DO
272 DO LC = 0, MMAX
273 WRITE (UNIT_RES, REC=NEXT_RECA) SPECIES_EQ(LC)
274 NEXT_RECA = NEXT_RECA + 1
275 END DO
276 CALL OUT_BIN_512 (UNIT_RES, USR_DT, DIMENSION_USR, NEXT_RECA)
277 CALL OUT_BIN_512 (UNIT_RES, USR_X_W, DIMENSION_USR, NEXT_RECA)
278 CALL OUT_BIN_512 (UNIT_RES, USR_X_E, DIMENSION_USR, NEXT_RECA)
279 CALL OUT_BIN_512 (UNIT_RES, USR_Y_S, DIMENSION_USR, NEXT_RECA)
280 CALL OUT_BIN_512 (UNIT_RES, USR_Y_N, DIMENSION_USR, NEXT_RECA)
281 CALL OUT_BIN_512 (UNIT_RES, USR_Z_B, DIMENSION_USR, NEXT_RECA)
282 CALL OUT_BIN_512 (UNIT_RES, USR_Z_T, DIMENSION_USR, NEXT_RECA)
283 DO LC = 1, DIMENSION_USR
284 WRITE (UNIT_RES, REC=NEXT_RECA) USR_FORMAT(LC), USR_EXT(LC), USR_TYPE(&
285 LC), USR_VAR(LC)
286 NEXT_RECA = NEXT_RECA + 1
287 END DO
288 CALL OUT_BIN_512 (UNIT_RES, IC_P_STAR, DIMENSION_IC, NEXT_RECA)
289 CALL OUT_BIN_512 (UNIT_RES, IC_L_SCALE, DIMENSION_IC, NEXT_RECA)
290 DO LC = 1, DIMENSION_IC
291 WRITE (UNIT_RES, REC=NEXT_RECA) IC_TYPE(LC)
292 NEXT_RECA = NEXT_RECA + 1
293 END DO
294 CALL OUT_BIN_512 (UNIT_RES, BC_DT_0, DIMENSION_BC, NEXT_RECA)
295 CALL OUT_BIN_512 (UNIT_RES, BC_JET_G0, DIMENSION_BC, NEXT_RECA)
296 CALL OUT_BIN_512 (UNIT_RES, BC_DT_H, DIMENSION_BC, NEXT_RECA)
297 CALL OUT_BIN_512 (UNIT_RES, BC_JET_GH, DIMENSION_BC, NEXT_RECA)
298 CALL OUT_BIN_512 (UNIT_RES, BC_DT_L, DIMENSION_BC, NEXT_RECA)
299 CALL OUT_BIN_512 (UNIT_RES, BC_JET_GL, DIMENSION_BC, NEXT_RECA)
300
301
302
303
304 WRITE (UNIT_RES, REC=NEXT_RECA) MU_GMAX
305 NEXT_RECA = NEXT_RECA + 1
306
307
308
309 WRITE (UNIT_RES, REC=NEXT_RECA) V_EX, MODEL_B
310 NEXT_RECA = NEXT_RECA + 1
311
312
313
314 WRITE (UNIT_RES, REC=NEXT_RECA) P_REF, P_SCALE, UR_FAC, TOL_RESID, DT_MAX&
315 , DT_MIN, DT_FAC, CLOSE_PACKED, GRAVITY, MU_S0(1)
316 NEXT_RECA = NEXT_RECA + 1
317 WRITE (UNIT_RES, REC=NEXT_RECA) LEQ_IT, LEQ_METHOD
318 NEXT_RECA = NEXT_RECA + 1
319 CALL OUT_BIN_512 (UNIT_RES, BC_HW_G, DIMENSION_BC, NEXT_RECA)
320 CALL OUT_BIN_512 (UNIT_RES, BC_UW_G, DIMENSION_BC, NEXT_RECA)
321 CALL OUT_BIN_512 (UNIT_RES, BC_VW_G, DIMENSION_BC, NEXT_RECA)
322 CALL OUT_BIN_512 (UNIT_RES, BC_WW_G, DIMENSION_BC, NEXT_RECA)
323 DO LC = 1, MMAX
324 CALL OUT_BIN_512 (UNIT_RES, BC_HW_S(1,LC), DIMENSION_BC, NEXT_RECA)
325 CALL OUT_BIN_512 (UNIT_RES, BC_UW_S(1,LC), DIMENSION_BC, NEXT_RECA)
326 CALL OUT_BIN_512 (UNIT_RES, BC_VW_S(1,LC), DIMENSION_BC, NEXT_RECA)
327 CALL OUT_BIN_512 (UNIT_RES, BC_WW_S(1,LC), DIMENSION_BC, NEXT_RECA)
328 END DO
329 WRITE (UNIT_RES, REC=NEXT_RECA) MOMENTUM_X_EQ, MOMENTUM_Y_EQ, &
330 MOMENTUM_Z_EQ, TOL_DIVERGE, DISCRETIZE, FULL_LOG
331 NEXT_RECA = NEXT_RECA + 1
332
333
334
335 WRITE (UNIT_RES, REC=NEXT_RECA) DETECT_STALL
336 NEXT_RECA = NEXT_RECA + 1
337
338
339
340 WRITE (UNIT_RES, REC=NEXT_RECA) &
341 K_G0, K_S0(1), C_PG0, C_PS0(1), TOL_RESID_T, TOL_RESID_X
342 NEXT_RECA = NEXT_RECA + 1
343 CALL OUT_BIN_512 (UNIT_RES, IC_GAMA_RG, DIMENSION_IC, NEXT_RECA)
344 CALL OUT_BIN_512 (UNIT_RES, IC_T_RG, DIMENSION_IC, NEXT_RECA)
345 DO LC = 1, MMAX
346 CALL OUT_BIN_512 (UNIT_RES, IC_GAMA_RS(1,LC), DIMENSION_IC, NEXT_RECA)
347 CALL OUT_BIN_512 (UNIT_RES, IC_T_RS(1,LC), DIMENSION_IC, NEXT_RECA)
348 END DO
349
350
351
352 WRITE (UNIT_RES, REC=NEXT_RECA) NORM_G, NORM_S
353 NEXT_RECA = NEXT_RECA + 1
354
355
356
357 WRITE (UNIT_RES, REC=NEXT_RECA) NScalar, TOL_RESID_Scalar, DIM_SCALAR
358 NEXT_RECA = NEXT_RECA + 1
359 CALL OUT_BIN_512I (UNIT_RES, Phase4Scalar, DIM_SCALAR, NEXT_RECA)
360
361
362
363
364
365
366 WRITE (UNIT_RES, REC=NEXT_RECA) nRR
367 NEXT_RECA = NEXT_RECA + 1
368
369
370
371 WRITE (UNIT_RES, REC=NEXT_RECA) K_epsilon
372 NEXT_RECA = NEXT_RECA + 1
373
374
375
376 WRITE (UNIT_RES, REC=NEXT_RECA) STIFF_CHEMISTRY, lCALL_ISAT
377 NEXT_RECA = NEXT_RECA + 1
378
379
380
381 WRITE (UNIT_RES, REC=NEXT_RECA) (SOLVE_ROs(LC),LC=1,MMAX)
382 NEXT_RECA = NEXT_RECA + 1
383 DO LC = 1, MMAX
384 IDX = INERT_SPECIES(LC)
385 WRITE (UNIT_RES, REC=NEXT_RECA) IDX, RO_s0(LC),&
386 (X_s0(LC,NN),NN=1,NMAX(LC))
387 NEXT_RECA = NEXT_RECA + 1
388 ENDDO
389
390
391
392
393
394
395
396
397
398 WRITE (UNIT_RES, REC=3) NEXT_RECA
399 FLUSH (UNIT_RES)
400
401 1200 continue
402
403 if (bDist_IO .and. myPE.ne.PE_IO) then
404 WRITE (UNIT_RES, REC=1) VERSION
405 WRITE (UNIT_RES, REC=2) RUN_NAME, ID_MONTH, ID_DAY, ID_YEAR, ID_HOUR, &
406 ID_MINUTE, ID_SECOND
407 WRITE (UNIT_RES, REC=3) 4
408 FLUSH (UNIT_RES)
409 end if
410
411 deallocate (arr1)
412 deallocate (arr2)
413
414 RETURN
415 END SUBROUTINE WRITE_RES0
416