File: N:\mfix\model\write_res0.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Subroutine: WRITE_RES0                                              C
4     !  Purpose: write out the initial restart records (namelist data)      C
5     !                                                                      C
6     !  Author: P. Nicoletti                               Date: 13-DEC-91  C
7     !  Reviewer: P. Nicoletti, W. Rogers, M. Syamlal      Date: 24-JAN-92  C
8     !                                                                      C
9     !  Revision Number:                                                    C
10     !  Purpose:                                                            C
11     !  Author:                                            Date: dd-mmm-yy  C
12     !  Reviewer:                                          Date: dd-mmm-yy  C
13     !                                                                      C
14     ! TODO:                                                                C
15     !    this file may need work for GHD which has internally incremented  C
16     !    user mmax to mmax+1 to represent a mixture solids phase and the   C
17     !    number of real soldis phases is now smax... consequently several  C
18     !    physical properties will not be set at 'mmax' the mixture phase   C
19     !                                                                      C
20     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
21     
22           SUBROUTINE WRITE_RES0
23     
24     !-----------------------------------------------
25     ! Modules
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      ! for gather
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         ! for filling the boundary information
48           USE stiff_chem
49           USE toleranc
50           USE ur_facs
51     
52           IMPLICIT NONE
53     !-----------------------------------------------
54     ! Local variables
55     !-----------------------------------------------
56           integer, allocatable :: arr1(:)
57           integer, allocatable :: arr2(:)
58           integer :: work_around(100)
59     ! loop counters
60           INTEGER :: LC, L, NN, IDX
61     ! Pointer to the next record
62           INTEGER :: NEXT_RECA
63     ! file version id
64     
65     ! Place holder for deprecated variables:
66           LOGICAL, PARAMETER :: lCALL_ISAT = .FALSE.
67     
68           CHARACTER(LEN=512) :: VERSION
69     !-----------------------------------------------
70     
71           NEXT_RECA = 5
72     
73     ! note: the value below for version must be the same as the value
74     !       of version in mfix.f
75     !       If you change it in this subroutine, you must change it in
76     !       mfix.f also.
77     
78     !       The value should also be consistent with the check in
79     !       read_res0
80     
81           VERSION = 'RES = 01.8'
82     
83     ! Add new data entries at the end of the file and identify version no.
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                  ! work around for -O3 compiler bug
105           NEXT_RECA = 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     !      next_reca = next_reca + 1
117     !      CALL OUT_BIN_512I (UNIT_RES, work_around, MMAX+1, NEXT_RECA)
118     !      WRITE (UNIT_RES, REC=NEXT_RECA) (work_around(L),L=1,MMAX+1)
119     
120           WRITE (UNIT_RES, REC=NEXT_RECA) (NMAX(L),L=0,MMAX)
121     
122     !      do l =0,mmax
123     !         write (unit_res,rec=next_reca) nmax(l)
124     !         next_reca = next_reca + 1
125     !      end do
126     !      write (unit_res,rec=next_reca) nmax(0) , nmax(1)
127     
128           NEXT_RECA = 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     !      call MPI_Barrier(MPI_COMM_WORLD,mpierr)  !//PAR_I/O enforce barrier here
226     !      call send_recv (flag,2)
227           call gather (flag,arr1,root)
228     ! To take care of filling the processor ghost layers with the correct values
229           call scatter (flag,arr1,root)
230     !      call MPI_Barrier(MPI_COMM_WORLD,mpierr)  !//PAR_I/O enforce barrier here
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     ! Version 01.09
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     ! Version 01.10
303     ! ------------------------------------------------------------------------
304           WRITE (UNIT_RES, REC=NEXT_RECA) MU_GMAX
305           NEXT_RECA = NEXT_RECA + 1
306     
307     ! Version 01.11
308     ! ------------------------------------------------------------------------
309           WRITE (UNIT_RES, REC=NEXT_RECA) V_EX, MODEL_B
310           NEXT_RECA = NEXT_RECA + 1
311     
312     ! Version 01.12
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     ! Version 01.14
334     ! ------------------------------------------------------------------------
335           WRITE (UNIT_RES, REC=NEXT_RECA) DETECT_STALL
336           NEXT_RECA = NEXT_RECA + 1
337     
338     ! Version 01.15
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     ! Version 01.2
351     ! ------------------------------------------------------------------------
352           WRITE (UNIT_RES, REC=NEXT_RECA) NORM_G, NORM_S
353           NEXT_RECA = NEXT_RECA + 1
354     
355     ! Version 01.3
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     ! Version 1.4 -- write radiation variables in write_res1
362     ! ------------------------------------------------------------------------
363     
364     ! Version 1.5 -- write nRR
365     ! ------------------------------------------------------------------------
366           WRITE (UNIT_RES, REC=NEXT_RECA) nRR
367           NEXT_RECA = NEXT_RECA + 1
368     
369     ! Version 1.6 -- write k and epsilon in write_res1 and spx1
370     ! ------------------------------------------------------------------------
371           WRITE (UNIT_RES, REC=NEXT_RECA) K_epsilon
372           NEXT_RECA = NEXT_RECA + 1
373     
374     ! Version 1.7 -- write STIFF_CHEMISTRY and lCALL_ISAT
375     ! ------------------------------------------------------------------------
376           WRITE (UNIT_RES, REC=NEXT_RECA) STIFF_CHEMISTRY, lCALL_ISAT
377           NEXT_RECA = NEXT_RECA + 1
378     
379     ! Version 1.8 -- write densities of each solids species
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     !  Add new write statements above this line.  Remember to update NEXT_RECA.
393     !  Remember to change the version number near beginning of this subroutine.
394     !  Also modify READ_RES0.  The routines such as OUT_BIN_512 etc. writes
395     !  arrays dimensioned ARRAY(DIM).  So arrays dimensioned ARRAY(DIM1:DIM2)
396     !  should be passed as ARRAY(DIM1) and array length as DIM2-DIM1+1.
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