/[MITgcm]/MITgcm/compare01/src/io.F
ViewVC logotype

Contents of /MITgcm/compare01/src/io.F

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


Revision 1.2 - (show annotations) (download)
Fri Feb 2 21:04:46 2001 UTC (23 years, 3 months ago) by adcroft
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -1 lines
FILE REMOVED
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34)
 - substantial modifications to algorithm sequence (dynamics.F)
 - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics

1 C $Id: io.F,v 1.1 1998/05/25 20:21:05 cnh Exp $
2 #include "CPP_OPTIONS.h"
3 #include "CPP_MACROS.h"
4 C ===========
5 C | io.F |
6 C ===========
7 C Contents
8 C o IO_R2D
9 C o IO_R3D
10
11 C================================================================================
12 C Procedure name: IO_R2D |
13 C Function: Peforms I/O for a 2D Real field of default precision. |
14 C Comments: |
15 C================================================================================
16 CStartOfInterface
17 SUBROUTINE IO_R2D(
18 I N1, N2, fName, direction, eUnit,
19 & field, iErr )
20 IMPLICIT NONE
21 #include "EXTERNAL.h"
22 C /--------------------------------------------------------------\
23 C | Routine arguments |
24 C |==============================================================|
25 C | N1, N2 - Dimensions of data array. |
26 C | fName - Filename to written or read. |
27 C | direction - Read | Write indicator. |
28 C | field - Data array. |
29 C | eUnit - Stream to which error messages are written. |
30 C | iErr - Error flag. |
31 C \--------------------------------------------------------------/
32 INTEGER N1, N2
33 CHARACTER*(*) fName
34 CHARACTER direction
35 REAL field(N1,N2)
36 INTEGER iErr
37 INTEGER eUnit
38 CEndOfInterface
39 C /--------------------------------------------------------------\
40 C | Local variables |
41 C |==============================================================|
42 C | I,J - Loop counters. |
43 C | dir - Work variable. |
44 C | READ_IN - Character used to request read. |
45 C | WRITE_OUT - Character used to request write. |
46 C | dUnit - unit number for I/O. |
47 C | s1, s2 - Start and end character position in fName |
48 C | ioErr - Flag for returning I/O error. |
49 C \--------------------------------------------------------------/
50 INTEGER I, J
51 CHARACTER dir
52 CHARACTER READ_IN
53 PARAMETER ( READ_IN = 'R' )
54 CHARACTER WRITE_OUT
55 PARAMETER ( WRITE_OUT = 'W' )
56 INTEGER dUnit
57 INTEGER s1, s2
58 INTEGER ioErr
59 C
60 ioErr = 0
61 dUnit = 23
62 dir = direction
63 CALL UCASE(dir)
64 s1 = IFNBLNK(fName)
65 s2 = ILNBLNK(fName)
66 IF ( dir .EQ. WRITE_OUT ) THEN
67 OPEN (UNIT=dUnit, FILE=fName(s1:s2), IOSTAT=ioErr,
68 & form='unformatted',status='UNKNOWN')
69 IF ( ioErr .LT. 0 ) GOTO 903
70 ELSEIF ( dir .EQ. READ_IN ) THEN
71 OPEN (UNIT=dUnit, FILE=fName(s1:s2), IOSTAT=ioErr,
72 & form='unformatted',status='OLD')
73 IF ( ioErr .NE. 0 ) GOTO 904
74 ELSE
75 GOTO 905
76 ENDIF
77 C
78 IF ( dir .EQ. READ_IN ) THEN
79 READ (unit=dUnit, IOSTAT=ioErr ) field
80 IF ( ioErr .NE. 0 ) GOTO 906
81 WRITE (0,'(''Read dump file: '', 1024A1)')
82 & (fName(I:I),I=s1,s2)
83 ELSEIF ( DIR .EQ. WRITE_OUT ) THEN
84 WRITE (unit=dUnit, IOSTAT=ioErr ) field
85 IF ( ioErr .NE. 0 ) GOTO 907
86 WRITE (0,'(''Wrote dump file: '', 1024A1)')
87 & (fName(I:I),I=s1,s2)
88 ENDIF
89 CLOSE(dUnit)
90 C
91 1000 CONTINUE
92 RETURN
93 903 CONTINUE
94 WRITE (eUnit,'('' ** Error during readwrite open of file: '',1024A1)')
95 & (fName(I:I),I=s1,s2)
96 iErr = 1
97 GOTO 1000
98 904 CONTINUE
99 WRITE (eUnit,'('' ** Error during readonly open of file: '',1024A1)')
100 & (fName(I:I),I=s1,s2)
101 iErr = 1
102 GOTO 1000
103 905 CONTINUE
104 WRITE (eUnit,'('' ** Error dump direction not '',A1,'' or '',A1)')
105 & READ_IN, WRITE_OUT
106 iErr = 1
107 GOTO 1000
108 906 CONTINUE
109 WRITE (eUnit,'('' ** Error reading file: '',1024A1)')
110 & (fName(I:I),I=s1,s2)
111 iErr = 1
112 GOTO 1000
113 907 CONTINUE
114 WRITE (eUnit,'('' ** Error writing file: '',1024A1)')
115 & (fName(I:I),I=s1,s2)
116 iErr = 1
117 GOTO 1000
118 END
119 C================================================================================
120 C Procedure name: IO_R3D |
121 C Function: Peforms I/O for a 3D Real field of default precision. |
122 C Comments: |
123 C================================================================================
124 CStartOfInterface
125 SUBROUTINE IO_R3D(
126 I N1, N2, N3, fName, direction, eUnit,
127 & field, iErr )
128 IMPLICIT NONE
129 #include "EXTERNAL.h"
130 C /--------------------------------------------------------------\
131 C | Routine arguments |
132 C |==============================================================|
133 C | N1, N2, N3- Dimensions of data array. |
134 C | fName - Filename to written or read. |
135 C | direction - Read | Write indicator. |
136 C | field - Data array. |
137 C | eUnit - Stream to which error messages are written. |
138 C | iErr - Error flag. |
139 C \--------------------------------------------------------------/
140 INTEGER N1, N2, N3
141 CHARACTER*(*) fName
142 CHARACTER direction
143 REAL field(_I3(N3,N1,N2))
144 INTEGER iErr
145 INTEGER eUnit
146 CEndOfInterface
147 C /--------------------------------------------------------------\
148 C | Local variables |
149 C |==============================================================|
150 C | I,J - Loop counters. |
151 C | dir - Work variable. |
152 C | READ_IN - Character used to request read. |
153 C | WRITE_OUT - Character used to request write. |
154 C | dUnit - unit number for I/O. |
155 C | s1, s2 - Start and end character position in fName |
156 C | ioErr - Flag for returning I/O error. |
157 C \--------------------------------------------------------------/
158 INTEGER I, J
159 CHARACTER dir
160 CHARACTER READ_IN
161 PARAMETER ( READ_IN = 'R' )
162 CHARACTER WRITE_OUT
163 PARAMETER ( WRITE_OUT = 'W' )
164 INTEGER dUnit
165 INTEGER s1, s2
166 INTEGER ioErr
167 C
168 ioErr = 0
169 dUnit = 23
170 dir = direction
171 CALL UCASE(dir)
172 s1 = IFNBLNK(fName)
173 s2 = ILNBLNK(fName)
174 IF ( dir .EQ. WRITE_OUT ) THEN
175 OPEN (UNIT=dUnit, FILE=fName(s1:s2), IOSTAT=ioErr,
176 & form='unformatted',status='UNKNOWN')
177 IF ( ioErr .NE. 0 ) GOTO 903
178 ELSEIF ( dir .EQ. READ_IN ) THEN
179 OPEN (UNIT=dUnit, FILE=fName(s1:s2), IOSTAT=ioErr,
180 & form='unformatted',status='OLD')
181 IF ( ioErr .NE. 0 ) GOTO 904
182 ELSE
183 GOTO 905
184 ENDIF
185 C
186 IF ( dir .EQ. READ_IN ) THEN
187 READ (unit=dUnit, IOSTAT=ioErr ) field
188 IF ( ioErr .NE. 0 ) GOTO 906
189 WRITE (0,'(''Read dump file: '', 1024A1)')
190 & (fName(I:I),I=s1,s2)
191 ELSEIF ( DIR .EQ. WRITE_OUT ) THEN
192 WRITE (unit=dUnit, IOSTAT=ioErr ) field
193 IF ( ioErr .NE. 0 ) GOTO 907
194 WRITE (0,'(''Wrote dump file: '', 1024A1)')
195 & (fName(I:I),I=s1,s2)
196 ENDIF
197 CLOSE(dUnit)
198 C
199 1000 CONTINUE
200 RETURN
201 903 CONTINUE
202 WRITE (eUnit,'('' ** Error during readwrite open of file: '',1024A1)')
203 & (fName(I:I),I=s1,s2)
204 iErr = 1
205 GOTO 1000
206 904 CONTINUE
207 WRITE (eUnit,'('' ** Error during readonly open of file: '',1024A1)')
208 & (fName(I:I),I=s1,s2)
209 iErr = 1
210 GOTO 1000
211 905 CONTINUE
212 WRITE (eUnit,'('' ** Error dump direction not '',A1,'' or '',A1)')
213 & READ_IN, WRITE_OUT
214 iErr = 1
215 GOTO 1000
216 906 CONTINUE
217 WRITE (eUnit,'('' ** Error reading file: '',1024A1)')
218 & (fName(I:I),I=s1,s2)
219 iErr = 1
220 GOTO 1000
221 907 CONTINUE
222 WRITE (eUnit,'('' ** Error writing file: '',1024A1)')
223 & (fName(I:I),I=s1,s2)
224 iErr = 1
225 GOTO 1000
226 END

  ViewVC Help
Powered by ViewVC 1.1.22