/[MITgcm]/MITgcm/eesupp/src/open_copy_data_file.F
ViewVC logotype

Contents of /MITgcm/eesupp/src/open_copy_data_file.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Mon Jul 13 21:41:57 2009 UTC (14 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.1: +13 -5 lines
From Matt: each processor open different scratch files (for TARGET_BGL
 or TARGET_CRAYXT) as an alternative to opening status 'SCRATCH'.

1 C $Header: /u/gcmpack/MITgcm/eesupp/src/open_copy_data_file.F,v 1.1 2009/05/07 18:24:40 jmc Exp $
2 C $Name: $
3
4 #include "CPP_EEOPTIONS.h"
5
6 CBOP
7 C !ROUTINE: OPEN_COPY_DATA_FILE
8 C !INTERFACE:
9 SUBROUTINE OPEN_COPY_DATA_FILE(
10 I data_file, caller_sub,
11 O iUnit,
12 I myThid )
13 C !DESCRIPTION: \bv
14 C *==========================================================*
15 C | SUBROUTINE OPEN_COPY_DATA_FILE
16 C | o Routine to open and copy a data.* file to STDOUT
17 C | and return the open unit in iUnit
18 C *==========================================================*
19 C \ev
20
21 C !USES:
22 IMPLICIT NONE
23 C === Global variables ===
24 #include "SIZE.h"
25 #include "EEPARAMS.h"
26
27 C !INPUT/OUTPUT PARAMETERS:
28 C === Routine arguments ===
29 C myThid - Number of this instance of INI_PARMS
30 CHARACTER*(*) data_file
31 CHARACTER*(*) caller_sub
32 INTEGER iUnit
33 INTEGER myThid
34
35 C !FUNCTIONS:
36 INTEGER ILNBLNK
37 EXTERNAL ILNBLNK
38
39 C !LOCAL VARIABLES:
40 C === Local variables ===
41 C msgBuf - Informational/error meesage buffer
42 CHARACTER*(MAX_LEN_MBUF) msgBuf
43 CHARACTER*(MAX_LEN_PREC) record
44 #if defined (TARGET_BGL) || defined (TARGET_CRAYXT)
45 CHARACTER*(MAX_LEN_FNAM) scratchFile1
46 CHARACTER*(MAX_LEN_FNAM) scratchFile2
47 #endif
48 INTEGER errIO,IL
49 LOGICAL exst
50 CEOP
51
52 _BEGIN_MASTER(myThid)
53
54 C-- Open the parameter file
55 INQUIRE( FILE=data_file, EXIST=exst )
56 IF (exst) THEN
57 WRITE(msgbuf,'(A,A)')
58 & ' OPEN_COPY_DATA_FILE: opening file ',data_file
59 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
60 & SQUEEZE_RIGHT , mythid)
61 ELSE
62 WRITE(msgBuf,'(A,A,A)')
63 & 'File ',data_file,' does not exist!'
64 CALL PRINT_ERROR( msgBuf , 1)
65 WRITE(msgBuf,'(A,A)') 'S/R CALLED BY ',caller_sub
66 CALL PRINT_ERROR( msgBuf , 1)
67 STOP 'ABNORMAL END: S/R OPEN_COPY_DATA_FILE'
68 ENDIF
69
70 #if defined (TARGET_BGL) || defined (TARGET_CRAYXT)
71 WRITE(scratchFile1,'(A,I4.4)') 'scratch1.', myProcId
72 WRITE(scratchFile2,'(A,I4.4)') 'scratch2.', myProcId
73 OPEN(UNIT=scrUnit1, FILE=scratchFile1, STATUS='UNKNOWN')
74 OPEN(UNIT=scrUnit2, FILE=scratchFile2, STATUS='UNKNOWN')
75 #else
76 OPEN(UNIT=scrUnit1,STATUS='SCRATCH')
77 OPEN(UNIT=scrUnit2,STATUS='SCRATCH')
78 #endif
79 OPEN(UNIT=modelDataUnit,FILE=data_file,STATUS='OLD',
80 & IOSTAT=errIO)
81 IF ( errIO .LT. 0 ) THEN
82 WRITE(msgBuf,'(A,A)')
83 & 'Unable to open data file: ',data_file
84 CALL PRINT_ERROR( msgBuf , 1)
85 WRITE(msgBuf,'(A,A)') 'S/R CALLED BY ',caller_sub
86 CALL PRINT_ERROR( msgBuf , 1)
87 STOP 'ABNORMAL END: S/R OPEN_COPY_DATA_FILE'
88 ENDIF
89
90 DO WHILE ( .TRUE. )
91 READ(modelDataUnit,FMT='(A)',END=1001) RECORD
92 IL = MAX(ILNBLNK(RECORD),1)
93 IF ( RECORD(1:1) .NE. commentCharacter ) THEN
94 CALL NML_SET_TERMINATOR( RECORD )
95 WRITE(UNIT=scrUnit1,FMT='(A)') RECORD(:IL)
96 ENDIF
97 WRITE(UNIT=scrUnit2,FMT='(A)') RECORD(:IL)
98 ENDDO
99 1001 CONTINUE
100 CLOSE(modelDataUnit)
101
102 C-- Report contents of model parameter file
103 WRITE(msgBuf,'(A)')
104 &'// ======================================================='
105 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
106 & SQUEEZE_RIGHT , 1)
107 WRITE(msgBuf,'(A,A,A)') '// Parameter file "',data_file,'"'
108 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
109 & SQUEEZE_RIGHT , 1)
110 WRITE(msgBuf,'(A)')
111 &'// ======================================================='
112 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
113 & SQUEEZE_RIGHT , 1)
114 iUnit = scrUnit2
115 REWIND(iUnit)
116 DO WHILE ( .TRUE. )
117 READ(UNIT=iUnit,FMT='(A)',END=2001) RECORD
118 IL = MAX(ILNBLNK(RECORD),1)
119 WRITE(msgBuf,'(A,A)') '>',RECORD(:IL)
120 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
121 & SQUEEZE_RIGHT , 1)
122 ENDDO
123 2001 CONTINUE
124 CLOSE(iUnit)
125 WRITE(msgBuf,'(A)') ' '
126 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
127 & SQUEEZE_RIGHT , 1)
128
129 C-- Return open unit to caller
130 iUnit = scrUnit1
131 REWIND(iUnit)
132
133 _END_MASTER(myThid)
134
135 RETURN
136 END

  ViewVC Help
Powered by ViewVC 1.1.22