/[MITgcm]/MITgcm/pkg/rw/write_rec.F
ViewVC logotype

Contents of /MITgcm/pkg/rw/write_rec.F

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


Revision 1.2 - (show annotations) (download)
Tue Nov 13 19:39:26 2007 UTC (16 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59k, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i
Changes since 1.1: +189 -23 lines
- add new wraper S/R for reading/writing a set of consecutive levels
 (instead of all of them) in/from a 3-D array.
- clean-up other S/R: call directly new MDSIO S/R

1 C $Header: /u/gcmpack/MITgcm/pkg/rw/write_rec.F,v 1.1 2006/08/06 18:06:17 jmc Exp $
2 C $Name: $
3 #include "RW_OPTIONS.h"
4
5 C-- File read_write_rec.F: Routines to handle mid-level I/O interface.
6 C-- Contents
7 C-- o SET_WRITE_GLOBAL_REC
8 C-- o WRITE_REC_XY_RS
9 C-- o WRITE_REC_XY_RL
10 C-- o WRITE_REC_XYZ_RS
11 C-- o WRITE_REC_XYZ_RL
12 C-- o WRITE_REC_3D_RS
13 C-- o WRITE_REC_3D_RL
14 C-- o WRITE_REC_LEV_RS
15 C-- o WRITE_REC_LEV_RL
16
17
18 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
19 CBOP
20 C !ROUTINE: SET_WRITE_GLOBAL_REC
21 C !INTERFACE:
22 SUBROUTINE SET_WRITE_GLOBAL_REC ( flag )
23 IMPLICIT NONE
24
25 C !DESCRIPTION: \bv
26 C SET_WRITE_GLOBAL_FLD( flag ) sets an internal logical state to
27 C indicate whether files written by subsequent call to the
28 C READ_WRITE_FLD package should create "global" or "tiled" files.
29 C flag = .TRUE. indicates "global" files
30 C flag = .FALSE. indicates "tiled" files
31 C \ev
32
33 C !INPUT/OUTPUT PARAMETERS:
34 C Arguments
35 LOGICAL flag
36 C !USES:
37 C Common
38 COMMON /RD_WR_REC/ globalFile
39 LOGICAL globalFile
40 CEOP
41
42 globalFile=flag
43
44 RETURN
45 END
46
47 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
48 CBOP
49 C !ROUTINE: WRITE_REC_XY_RS
50 C !INTERFACE:
51 SUBROUTINE WRITE_REC_XY_RS( fName,field,iRec,myIter,myThid )
52
53 C !DESCRIPTION: \bv
54 C WRITE_REC_XY_RS is a "front-end" interface to the low-level I/O
55 C routines.
56 C \ev
57
58 C !USES:
59 IMPLICIT NONE
60 C Global
61 #include "SIZE.h"
62 #include "EEPARAMS.h"
63 #include "PARAMS.h"
64
65 C !INPUT/OUTPUT PARAMETERS:
66 C Arguments
67 CHARACTER*(*) fName
68 _RS field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
69 INTEGER iRec
70 INTEGER myIter
71 INTEGER myThid
72
73 C Functions
74 c INTEGER ILNBLNK
75
76 C Common
77 COMMON /RD_WR_REC/ globalFile
78 LOGICAL globalFile
79
80 C !LOCAL VARIABLES:
81 C Local
82 LOGICAL useCurrentDir
83 CHARACTER*(2) fType
84 INTEGER nNz
85 c INTEGER IL
86 c CHARACTER*(MAX_LEN_FNAM) fullName
87 CEOP
88
89
90 c IF (myIter.GE.0) THEN
91 c IL=ILNBLNK( fName )
92 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
93 c ELSE
94 c fullName=fName
95 c ENDIF
96
97 useCurrentDir = .FALSE.
98 fType='RS'
99 nNz=1
100 #ifdef ALLOW_MDSIO
101 CALL MDS_WRITE_FIELD(
102 I fName, writeBinaryPrec,
103 I globalFile, useCurrentDir,
104 I fType, nNz, 1, nNz, field,
105 I iRec, myIter, myThid )
106 #endif
107 RETURN
108 END
109
110 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
111 CBOP
112 C !ROUTINE: WRITE_REC_XY_RL
113 C !INTERFACE:
114 SUBROUTINE WRITE_REC_XY_RL( fName,field,iRec,myIter,myThid )
115
116 C !DESCRIPTION: \bv
117 C WRITE_REC_XY_RL is a "front-end" interface to the low-level I/O
118 C routines.
119 C \ev
120
121 C !USES:
122 IMPLICIT NONE
123 C Global
124 #include "SIZE.h"
125 #include "EEPARAMS.h"
126 #include "PARAMS.h"
127
128 C !INPUT/OUTPUT PARAMETERS:
129 C Arguments
130 CHARACTER*(*) fName
131 _RL field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
132 INTEGER iRec
133 INTEGER myIter
134 INTEGER myThid
135
136 C Functions
137 c INTEGER ILNBLNK
138
139 C Common
140 COMMON /RD_WR_REC/ globalFile
141 LOGICAL globalFile
142
143 C !LOCAL VARIABLES:
144 C Local
145 LOGICAL useCurrentDir
146 CHARACTER*(2) fType
147 INTEGER nNz
148 c INTEGER IL
149 c CHARACTER*(MAX_LEN_FNAM) fullName
150 CEOP
151
152
153 c IF (myIter.GE.0) THEN
154 c IL=ILNBLNK( fName )
155 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
156 c ELSE
157 c fullName=fName
158 c ENDIF
159
160 useCurrentDir = .FALSE.
161 fType='RL'
162 nNz=1
163 #ifdef ALLOW_MDSIO
164 CALL MDS_WRITE_FIELD(
165 I fName, writeBinaryPrec,
166 I globalFile, useCurrentDir,
167 I fType, nNz, 1, nNz, field,
168 I iRec, myIter, myThid )
169 #endif
170 RETURN
171 END
172
173 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
174 CBOP
175 C !ROUTINE: WRITE_REC_XYZ_RS
176 C !INTERFACE:
177 SUBROUTINE WRITE_REC_XYZ_RS( fName,field,iRec,myIter,myThid )
178
179 C !DESCRIPTION: \bv
180 C WRITE_REC_XYZ_RS is a "front-end" interface to the low-level I/O
181 C routines.
182 C \ev
183
184 C !USES:
185 IMPLICIT NONE
186 C Global
187 #include "SIZE.h"
188 #include "EEPARAMS.h"
189 #include "PARAMS.h"
190
191 C !INPUT/OUTPUT PARAMETERS:
192 C Arguments
193 CHARACTER*(*) fName
194 _RS field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
195 INTEGER iRec
196 INTEGER myIter
197 INTEGER myThid
198
199 C Functions
200 c INTEGER ILNBLNK
201
202 C Common
203 COMMON /RD_WR_REC/ globalFile
204 LOGICAL globalFile
205
206 C !LOCAL VARIABLES:
207 C Local
208 LOGICAL useCurrentDir
209 CHARACTER*(2) fType
210 INTEGER nNz
211 c INTEGER IL
212 c CHARACTER*(MAX_LEN_FNAM) fullName
213 CEOP
214
215
216 c IF (myIter.GE.0) THEN
217 c IL=ILNBLNK( fName )
218 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
219 c ELSE
220 c fullName=fName
221 c ENDIF
222
223 useCurrentDir = .FALSE.
224 fType='RS'
225 nNz=Nr
226 #ifdef ALLOW_MDSIO
227 CALL MDS_WRITE_FIELD(
228 I fName, writeBinaryPrec,
229 I globalFile, useCurrentDir,
230 I fType, nNz, 1, nNz, field,
231 I iRec, myIter, myThid )
232 #endif
233 RETURN
234 END
235
236 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
237 CBOP
238 C !ROUTINE: WRITE_REC_XYZ_RL
239 C !INTERFACE:
240 SUBROUTINE WRITE_REC_XYZ_RL( fName,field,iRec,myIter,myThid )
241
242 C !DESCRIPTION: \bv
243 C WRITE_REC_XYZ_RL is a "front-end" interface to the low-level I/O
244 C routines.
245 C \ev
246
247 C !USES:
248 IMPLICIT NONE
249 C Global
250 #include "SIZE.h"
251 #include "EEPARAMS.h"
252 #include "PARAMS.h"
253
254 C !INPUT/OUTPUT PARAMETERS:
255 C Arguments
256 CHARACTER*(*) fName
257 _RL field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
258 INTEGER iRec
259 INTEGER myIter
260 INTEGER myThid
261
262 C Functions
263 c INTEGER ILNBLNK
264
265 C Common
266 COMMON /RD_WR_REC/ globalFile
267 LOGICAL globalFile
268
269 C !LOCAL VARIABLES:
270 C Local
271 LOGICAL useCurrentDir
272 CHARACTER*(2) fType
273 INTEGER nNz
274 c INTEGER IL
275 c CHARACTER*(MAX_LEN_FNAM) fullName
276 CEOP
277
278
279 c IF (myIter.GE.0) THEN
280 c IL=ILNBLNK( fName )
281 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
282 c ELSE
283 c fullName=fName
284 c ENDIF
285
286 useCurrentDir = .FALSE.
287 fType='RL'
288 nNz=Nr
289 #ifdef ALLOW_MDSIO
290 CALL MDS_WRITE_FIELD(
291 I fName, writeBinaryPrec,
292 I globalFile, useCurrentDir,
293 I fType, nNz, 1, nNz, field,
294 I iRec, myIter, myThid )
295 #endif
296 RETURN
297 END
298
299 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
300 CBOP
301 C !ROUTINE: WRITE_REC_3D_RS
302 C !INTERFACE:
303 SUBROUTINE WRITE_REC_3D_RS(
304 I fName, fPrec, nNz, field,
305 I iRec, myIter, myThid )
306
307 C !DESCRIPTION: \bv
308 C WRITE_REC_3D_RS is a "front-end" interface to the low-level I/O routines.
309 C write a full 3D field (nNz levels) to record number "iRec"
310 C in binary file "fName" (precision "fPrec", generally =32 or 64).
311 C \ev
312
313 C !USES:
314 IMPLICIT NONE
315 C Global
316 #include "SIZE.h"
317 #include "EEPARAMS.h"
318 #include "PARAMS.h"
319
320 C !INPUT/OUTPUT PARAMETERS:
321 C Arguments
322 CHARACTER*(*) fName
323 INTEGER fPrec
324 INTEGER nNz
325 _RS field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nNz,nSx,nSy)
326 INTEGER iRec
327 INTEGER myIter
328 INTEGER myThid
329
330 C Functions
331 c INTEGER ILNBLNK
332
333 C Common
334 COMMON /RD_WR_REC/ globalFile
335 LOGICAL globalFile
336
337 C !LOCAL VARIABLES:
338 C Local
339 LOGICAL useCurrentDir
340 CHARACTER*(2) fType
341 c INTEGER IL
342 c CHARACTER*(MAX_LEN_FNAM) fullName
343 CEOP
344
345
346 c IF (myIter.GE.0) THEN
347 c IL=ILNBLNK( fName )
348 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
349 c ELSE
350 c fullName=fName
351 c ENDIF
352
353 useCurrentDir = .FALSE.
354 fType='RS'
355 #ifdef ALLOW_MDSIO
356 CALL MDS_WRITE_FIELD(
357 I fName, fPrec, globalFile, useCurrentDir,
358 I fType, nNz, 1, nNz, field,
359 I iRec, myIter, myThid )
360 #endif
361 RETURN
362 END
363
364 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
365 CBOP
366 C !ROUTINE: WRITE_REC_3D_RL
367 C !INTERFACE:
368 SUBROUTINE WRITE_REC_3D_RL(
369 I fName, fPrec, nNz, field,
370 I iRec, myIter, myThid )
371
372 C !DESCRIPTION: \bv
373 C WRITE_REC_3D_RL is a "front-end" interface to the low-level I/O routines.
374 C write a full 3D field (nNz levels) to record number "iRec"
375 C in binary file "fName" (precision "fPrec", generally =32 or 64).
376 C \ev
377
378 C !USES:
379 IMPLICIT NONE
380 C Global
381 #include "SIZE.h"
382 #include "EEPARAMS.h"
383 #include "PARAMS.h"
384
385 C !INPUT/OUTPUT PARAMETERS:
386 C Arguments
387 CHARACTER*(*) fName
388 INTEGER fPrec
389 INTEGER nNz
390 _RL field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nNz,nSx,nSy)
391 INTEGER iRec
392 INTEGER myIter
393 INTEGER myThid
394
395 C Functions
396 c INTEGER ILNBLNK
397
398 C Common
399 COMMON /RD_WR_REC/ globalFile
400 LOGICAL globalFile
401
402 C !LOCAL VARIABLES:
403 C Local
404 LOGICAL useCurrentDir
405 CHARACTER*(2) fType
406 c INTEGER IL
407 c CHARACTER*(MAX_LEN_FNAM) fullName
408 CEOP
409
410
411 c IF (myIter.GE.0) THEN
412 c IL=ILNBLNK( fName )
413 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
414 c ELSE
415 c fullName=fName
416 c ENDIF
417
418 useCurrentDir = .FALSE.
419 fType='RL'
420 #ifdef ALLOW_MDSIO
421 CALL MDS_WRITE_FIELD(
422 I fName, fPrec, globalFile, useCurrentDir,
423 I fType, nNz, 1, nNz, field,
424 I iRec, myIter, myThid )
425 #endif
426 RETURN
427 END
428
429 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
430 CBOP
431 C !ROUTINE: WRITE_REC_LEV_RS
432 C !INTERFACE:
433 SUBROUTINE WRITE_REC_LEV_RS(
434 I fName, fPrec, kSiz, kLo, kHi, field,
435 I iRec, myIter, myThid )
436
437 C !DESCRIPTION: \bv
438 C WRITE_REC_LEV_RS is a "front-end" interface to the low-level I/O routines.
439 C Write a set a consecutive levels (from kLo to kHi) from 3D array (size: kSiz)
440 C to record number "iRec" in binary file "fName" (precision "fPrec",
441 C generally =32 or 64).
442 C \ev
443
444 C !USES:
445 IMPLICIT NONE
446 C Global
447 #include "SIZE.h"
448 #include "EEPARAMS.h"
449 #include "PARAMS.h"
450
451 C !INPUT/OUTPUT PARAMETERS:
452 C Arguments
453 CHARACTER*(*) fName
454 INTEGER fPrec
455 INTEGER kSiz, kLo, kHi
456 _RS field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSiz,nSx,nSy)
457 INTEGER iRec
458 INTEGER myIter
459 INTEGER myThid
460
461 C Functions
462 c INTEGER ILNBLNK
463
464 C Common
465 COMMON /RD_WR_REC/ globalFile
466 LOGICAL globalFile
467
468 C !LOCAL VARIABLES:
469 C Local
470 LOGICAL useCurrentDir
471 CHARACTER*(2) fType
472 c INTEGER IL
473 c CHARACTER*(MAX_LEN_FNAM) fullName
474 CEOP
475
476
477 c IF (myIter.GE.0) THEN
478 c IL=ILNBLNK( fName )
479 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
480 c ELSE
481 c fullName=fName
482 c ENDIF
483
484 useCurrentDir = .FALSE.
485 fType='RS'
486 #ifdef ALLOW_MDSIO
487 CALL MDS_WRITE_FIELD(
488 I fName, fPrec, globalFile, useCurrentDir,
489 I fType, kSiz, kLo, kHi, field,
490 I iRec, myIter, myThid )
491 #endif
492 RETURN
493 END
494
495 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
496 CBOP
497 C !ROUTINE: WRITE_REC_LEV_RL
498 C !INTERFACE:
499 SUBROUTINE WRITE_REC_LEV_RL(
500 I fName, fPrec, kSiz, kLo, kHi, field,
501 I iRec, myIter, myThid )
502
503 C !DESCRIPTION: \bv
504 C WRITE_REC_LEV_RL is a "front-end" interface to the low-level I/O routines.
505 C Write a set a consecutive levels (from kLo to kHi) from 3D array (size: kSiz)
506 C to record number "iRec" in binary file "fName" (precision "fPrec",
507 C generally =32 or 64).
508 C \ev
509
510 C !USES:
511 IMPLICIT NONE
512 C Global
513 #include "SIZE.h"
514 #include "EEPARAMS.h"
515 #include "PARAMS.h"
516
517 C !INPUT/OUTPUT PARAMETERS:
518 C Arguments
519 CHARACTER*(*) fName
520 INTEGER fPrec
521 INTEGER kSiz, kLo, kHi
522 _RS field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSiz,nSx,nSy)
523 INTEGER iRec
524 INTEGER myIter
525 INTEGER myThid
526
527 C Functions
528 c INTEGER ILNBLNK
529
530 C Common
531 COMMON /RD_WR_REC/ globalFile
532 LOGICAL globalFile
533
534 C !LOCAL VARIABLES:
535 C Local
536 LOGICAL useCurrentDir
537 CHARACTER*(2) fType
538 c INTEGER IL
539 c CHARACTER*(MAX_LEN_FNAM) fullName
540 CEOP
541
542
543 c IF (myIter.GE.0) THEN
544 c IL=ILNBLNK( fName )
545 c WRITE(fullName,'(2a,i10.10)') fName(1:IL),'.',myIter
546 c ELSE
547 c fullName=fName
548 c ENDIF
549
550 useCurrentDir = .FALSE.
551 fType='RL'
552 #ifdef ALLOW_MDSIO
553 CALL MDS_WRITE_FIELD(
554 I fName, fPrec, globalFile, useCurrentDir,
555 I fType, kSiz, kLo, kHi, field,
556 I iRec, myIter, myThid )
557 #endif
558 RETURN
559 END
560
561 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

  ViewVC Help
Powered by ViewVC 1.1.22