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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Module name: WRITE_SPX0(L, unit_add)                                !
4     !  Author: P. Nicoletti                               Date: 13-DEC-91  !
5     !                                                                      !
6     !  Purpose: Write out the initial single percision data files.         !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE WRITE_SPX0(L, UNIT_ADD)
10     
11     ! Global Variables:
12     !---------------------------------------------------------------------//
13     ! User defined run_name
14           use run, only: RUN_NAME
15     ! Calendar information for start of run.
16           use run, only: ID_MONTH, ID_DAY, ID_YEAR
17     ! Time information for start of run.
18           use run, only: ID_HOUR, ID_MINUTE, ID_SECOND
19     ! Base file unit for SPx files.
20           use funits, only: UNIT_SPX
21     ! Flag: Use distributed I/O
22           USE cdist, only: bDIST_IO
23     ! Rank of current process.
24           use compar, only: myPE
25     ! Rank assigned to serial I/O
26           use compar, only: PE_IO
27     
28           IMPLICIT NONE
29     
30     ! Passed Variables:
31     !----------------------------------------------------------------------!
32     ! Index of SPx file.
33           INTEGER, INTENT(IN) :: L
34     ! Offset for use in post_mfix
35           INTEGER, INTENT(IN) :: UNIT_ADD
36     
37     ! Local Variables:
38     !----------------------------------------------------------------------!
39     ! File version ID
40           CHARACTER(LEN=512) :: VERSION
41     ! UNIT_SPX + offset from post_mfix
42           INTEGER :: USPX
43     ! Generic SPx end characters.
44           CHARACTER(len=15), PARAMETER :: EXT_END = '123456789ABCDEF'
45     
46     !......................................................................!
47     
48     ! Serial I/O: only PE_IO writes to a single file [default]
49     ! Distributed I/O: all ranks write their own output file.
50           IF(myPE /= PE_IO .AND. .NOT.bDIST_IO) RETURN
51     
52     ! Construct the file version string.
53           VERSION = 'SPx = 02.00'
54           WRITE(VERSION(3:3),"(A1)") EXT_END(L:L)
55     
56     ! Calculate the SPx file unit
57           USPX = UNIT_SPX + UNIT_ADD + L
58     
59     ! Write the SPx file header.
60           WRITE(USPX, REC=1) VERSION
61           WRITE(USPX, REC=2) RUN_NAME, ID_MONTH, ID_DAY, ID_YEAR,          &
62              ID_HOUR, ID_MINUTE, ID_SECOND
63     
64     !  The first field contains the pointer to the next record.
65     !  The second field contains the number of records written each time step
66     !  (The 4 and -1 are overwritten in WRITE_SPX1)
67           WRITE (USPX, REC=3) 4, -1
68     
69           IF(UNIT_ADD == 0) FLUSH(USPX)
70     
71           RETURN
72           END SUBROUTINE WRITE_SPX0
73