4 |
#include "MNC_OPTIONS.h" |
#include "MNC_OPTIONS.h" |
5 |
|
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
|
CBOP |
8 |
|
C !ROUTINE: MNC_FILE_CREATE |
9 |
|
|
10 |
|
C !INTERFACE: |
11 |
SUBROUTINE MNC_FILE_CREATE( |
SUBROUTINE MNC_FILE_CREATE( |
12 |
I fname, |
I fname, |
13 |
I myThid ) |
I myThid ) |
14 |
|
|
15 |
|
C !DESCRIPTION: |
16 |
|
C Create a NetCDF file. |
17 |
|
|
18 |
|
C !USES: |
19 |
implicit none |
implicit none |
20 |
|
|
21 |
C Arguments |
C !INPUT PARAMETERS: |
22 |
integer myThid |
integer myThid |
23 |
character*(*) fname |
character*(*) fname |
24 |
|
|
25 |
C Local Variables |
C !LOCAL VARIABLES: |
26 |
integer indf |
integer indf |
27 |
|
CEOP |
28 |
|
|
29 |
CALL MNC_FILE_OPEN(fname, 0, indf, myThid) |
CALL MNC_FILE_OPEN(fname, 0, indf, myThid) |
30 |
|
|
32 |
END |
END |
33 |
|
|
34 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
35 |
|
CBOP |
36 |
|
C !ROUTINE: MNC_FILE_OPEN |
37 |
|
|
38 |
|
C !INTERFACE: |
39 |
SUBROUTINE MNC_FILE_OPEN( |
SUBROUTINE MNC_FILE_OPEN( |
40 |
I fname, |
I fname, |
41 |
I itype, |
I itype, |
42 |
O indf, |
O indf, |
43 |
I myThid ) |
I myThid ) |
44 |
|
|
45 |
|
C !DESCRIPTION: |
46 |
|
C Open or create a NetCDF file. |
47 |
|
|
48 |
|
C !USES: |
49 |
implicit none |
implicit none |
50 |
#include "netcdf.inc" |
#include "netcdf.inc" |
51 |
#include "mnc_common.h" |
#include "mnc_common.h" |
52 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
53 |
|
|
54 |
C Arguments |
C !INPUT PARAMETERS: |
55 |
integer myThid,indf |
integer myThid,indf |
56 |
character*(*) fname |
character*(*) fname |
57 |
integer itype |
integer itype |
58 |
C itype => [ 0=new | 1=append | 2=read-only ] |
C itype => [ 0=new | 1=append | 2=read-only ] |
59 |
|
|
60 |
C Functions |
C !LOCAL VARIABLES: |
|
integer ILNBLNK |
|
|
|
|
|
C Local Variables |
|
61 |
integer n, err, fid, nf |
integer n, err, fid, nf |
62 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
63 |
|
CEOP |
64 |
|
C Functions |
65 |
|
integer ILNBLNK |
66 |
|
|
67 |
C Is the file already open? |
C Is the file already open? |
68 |
nf = ILNBLNK(fname) |
nf = ILNBLNK(fname) |
107 |
END |
END |
108 |
|
|
109 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
110 |
|
CBOP |
111 |
|
C !ROUTINE: MNC_FILE_ADD_ATTR_STR |
112 |
|
|
113 |
|
C !INTERFACE: |
114 |
SUBROUTINE MNC_FILE_ADD_ATTR_STR( |
SUBROUTINE MNC_FILE_ADD_ATTR_STR( |
115 |
I fname, |
I fname, |
116 |
I atname, |
I atname, |
117 |
I sval, |
I sval, |
118 |
I myThid ) |
I myThid ) |
119 |
|
|
120 |
|
C !DESCRIPTION: |
121 |
|
C Add a character string attribute to a NetCDF file. |
122 |
|
|
123 |
|
C !USES: |
124 |
implicit none |
implicit none |
125 |
C Arguments |
|
126 |
|
C !INPUT PARAMETERS: |
127 |
integer myThid |
integer myThid |
128 |
character*(*) fname, atname, sval |
character*(*) fname, atname, sval |
129 |
|
CEOP |
130 |
|
|
131 |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 1, |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 1, |
132 |
& sval, 0, 0.0D0, 0.0, 0, myThid ) |
& sval, 0, 0.0D0, 0.0, 0, myThid ) |
134 |
END |
END |
135 |
|
|
136 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
137 |
|
CBOP |
138 |
|
C !ROUTINE: MNC_FILE_ADD_ATTR_DBL |
139 |
|
|
140 |
|
C !INTERFACE: |
141 |
SUBROUTINE MNC_FILE_ADD_ATTR_DBL( |
SUBROUTINE MNC_FILE_ADD_ATTR_DBL( |
142 |
I fname, |
I fname, |
143 |
I atname, |
I atname, |
145 |
I dval, |
I dval, |
146 |
I myThid ) |
I myThid ) |
147 |
|
|
148 |
|
C !DESCRIPTION: |
149 |
|
C Add a double-precision real attribute to a NetCDF file. |
150 |
|
|
151 |
|
C !USES: |
152 |
implicit none |
implicit none |
153 |
C Arguments |
|
154 |
|
C !INPUT PARAMETERS: |
155 |
integer myThid, len |
integer myThid, len |
156 |
character*(*) fname, atname |
character*(*) fname, atname |
157 |
REAL*8 dval |
REAL*8 dval |
158 |
|
CEOP |
159 |
|
|
160 |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 2, |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 2, |
161 |
& ' ', len, dval, 0.0, 0, myThid ) |
& ' ', len, dval, 0.0, 0, myThid ) |
163 |
END |
END |
164 |
|
|
165 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
166 |
|
CBOP |
167 |
|
C !ROUTINE: MNC_FILE_ADD_ATTR_REAL |
168 |
|
|
169 |
|
C !INTERFACE: |
170 |
SUBROUTINE MNC_FILE_ADD_ATTR_REAL( |
SUBROUTINE MNC_FILE_ADD_ATTR_REAL( |
171 |
I fname, |
I fname, |
172 |
I atname, |
I atname, |
174 |
I rval, |
I rval, |
175 |
I myThid ) |
I myThid ) |
176 |
|
|
177 |
|
C !DESCRIPTION: |
178 |
|
C Add a single-precision real attribute to a NetCDF file. |
179 |
|
|
180 |
|
C !USES: |
181 |
implicit none |
implicit none |
182 |
C Arguments |
|
183 |
|
C !INPUT PARAMETERS: |
184 |
integer myThid, len |
integer myThid, len |
185 |
character*(*) fname, atname |
character*(*) fname, atname |
186 |
REAL*4 rval |
REAL*4 rval |
187 |
|
CEOP |
188 |
|
|
189 |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 3, |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 3, |
190 |
& ' ', len, 0.0D0, rval, 0, myThid ) |
& ' ', len, 0.0D0, rval, 0, myThid ) |
192 |
END |
END |
193 |
|
|
194 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
195 |
|
CBOP |
196 |
|
C !ROUTINE: MNC_FILE_ADD_ATTR_INT |
197 |
|
|
198 |
|
C !INTERFACE: |
199 |
SUBROUTINE MNC_FILE_ADD_ATTR_INT( |
SUBROUTINE MNC_FILE_ADD_ATTR_INT( |
200 |
I fname, |
I fname, |
201 |
I atname, |
I atname, |
203 |
I ival, |
I ival, |
204 |
I myThid ) |
I myThid ) |
205 |
|
|
206 |
|
C !DESCRIPTION: |
207 |
|
C Add an integer attribute to a NetCDF file. |
208 |
|
|
209 |
|
C !USES: |
210 |
implicit none |
implicit none |
211 |
C Arguments |
|
212 |
|
C !INPUT PARAMETERS: |
213 |
integer myThid, len, ival |
integer myThid, len, ival |
214 |
character*(*) fname, atname |
character*(*) fname, atname |
215 |
|
CEOP |
216 |
|
|
217 |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 4, |
CALL MNC_FILE_ADD_ATTR_ANY(fname,atname, 4, |
218 |
& ' ', len, 0.0D0, 0.0, ival, myThid ) |
& ' ', len, 0.0D0, 0.0, ival, myThid ) |
220 |
END |
END |
221 |
|
|
222 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
223 |
|
CBOP |
224 |
|
C !ROUTINE: MNC_FILE_ADD_ATTR_ANY |
225 |
|
|
226 |
|
C !INTERFACE: |
227 |
SUBROUTINE MNC_FILE_ADD_ATTR_ANY( |
SUBROUTINE MNC_FILE_ADD_ATTR_ANY( |
228 |
I fname, |
I fname, |
229 |
I atname, |
I atname, |
230 |
I atype, sv, len,dv,rv,iv, |
I atype, sv, len,dv,rv,iv, |
231 |
I myThid ) |
I myThid ) |
232 |
|
|
233 |
|
C !DESCRIPTION: |
234 |
|
C Add all attributes to a NetCDF file. |
235 |
|
|
236 |
|
C !USES: |
237 |
implicit none |
implicit none |
238 |
#include "netcdf.inc" |
#include "netcdf.inc" |
239 |
#include "mnc_common.h" |
#include "mnc_common.h" |
240 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
241 |
|
|
242 |
C Arguments |
C !INPUT PARAMETERS: |
243 |
integer myThid, atype, len, iv |
integer myThid, atype, len, iv |
244 |
character*(*) fname, atname, sv |
character*(*) fname, atname, sv |
245 |
REAL*8 dv |
REAL*8 dv |
246 |
REAL*4 rv |
REAL*4 rv |
247 |
|
|
248 |
C Functions |
C !LOCAL VARIABLES: |
|
integer ILNBLNK |
|
|
|
|
|
C Local Variables |
|
249 |
integer n, err, fid, ind, n1, lens |
integer n, err, fid, ind, n1, lens |
250 |
character*(MNC_MAX_CHAR) s1 |
character*(MNC_MAX_CHAR) s1 |
251 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
252 |
|
CEOP |
253 |
|
C Functions |
254 |
|
integer ILNBLNK |
255 |
|
|
256 |
C Verify that the file is open |
C Verify that the file is open |
257 |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
258 |
IF (ind .LT. 0) THEN |
IF (ind .LT. 0) THEN |
303 |
END |
END |
304 |
|
|
305 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
306 |
|
CBOP |
307 |
|
C !ROUTINE: MNC_FILE_CLOSE |
308 |
|
|
309 |
|
C !INTERFACE: |
310 |
SUBROUTINE MNC_FILE_CLOSE( |
SUBROUTINE MNC_FILE_CLOSE( |
311 |
I fname, |
I fname, |
312 |
I myThid ) |
I myThid ) |
313 |
|
|
314 |
|
C !DESCRIPTION: |
315 |
|
C Close a NetCDF file. |
316 |
|
|
317 |
|
C !USES: |
318 |
implicit none |
implicit none |
319 |
#include "netcdf.inc" |
#include "netcdf.inc" |
320 |
#include "mnc_common.h" |
#include "mnc_common.h" |
321 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
322 |
|
|
323 |
C Arguments |
C !INPUT PARAMETERS: |
324 |
integer myThid |
integer myThid |
325 |
character*(*) fname |
character*(*) fname |
326 |
|
|
327 |
C Functions |
C !LOCAL VARIABLES: |
|
integer ILNBLNK |
|
|
|
|
|
C Local Variables |
|
328 |
integer i,j,k,n, err, fid, indf, nf |
integer i,j,k,n, err, fid, indf, nf |
329 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
330 |
|
CEOP |
331 |
|
C Functions |
332 |
|
integer ILNBLNK |
333 |
|
|
334 |
nf = ILNBLNK(fname) |
nf = ILNBLNK(fname) |
335 |
|
|
389 |
END |
END |
390 |
|
|
391 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
392 |
|
CBOP |
393 |
|
C !ROUTINE: MNC_FILE_CLOSE_ALL_MATCHING |
394 |
|
|
395 |
|
C !INTERFACE: |
396 |
SUBROUTINE MNC_FILE_CLOSE_ALL_MATCHING( |
SUBROUTINE MNC_FILE_CLOSE_ALL_MATCHING( |
397 |
I fname, |
I fname, |
398 |
I myThid ) |
I myThid ) |
399 |
|
|
400 |
|
C !DESCRIPTION: |
401 |
|
C Close all files matching a character string. |
402 |
|
|
403 |
|
C !USES: |
404 |
implicit none |
implicit none |
405 |
#include "netcdf.inc" |
#include "netcdf.inc" |
406 |
#include "mnc_common.h" |
#include "mnc_common.h" |
407 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
408 |
|
|
409 |
C Arguments |
C !INPUT PARAMETERS: |
410 |
integer myThid |
integer myThid |
411 |
character*(*) fname |
character*(*) fname |
412 |
|
|
413 |
|
C !LOCAL VARIABLES: |
414 |
|
integer i,n |
415 |
|
CEOP |
416 |
C Functions |
C Functions |
417 |
integer ILNBLNK |
integer ILNBLNK |
418 |
|
|
|
C Local Variables |
|
|
integer i,n |
|
|
|
|
419 |
n = ILNBLNK(fname) |
n = ILNBLNK(fname) |
420 |
DO i = 1,MNC_MAX_ID |
DO i = 1,MNC_MAX_ID |
421 |
|
|
430 |
END |
END |
431 |
|
|
432 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
433 |
|
CBOP |
434 |
|
C !ROUTINE: MNC_FILE_CLOSE_ALL |
435 |
|
|
436 |
|
C !INTERFACE: |
437 |
SUBROUTINE MNC_FILE_CLOSE_ALL( |
SUBROUTINE MNC_FILE_CLOSE_ALL( |
438 |
I myThid ) |
I myThid ) |
439 |
|
|
440 |
|
C !DESCRIPTION: |
441 |
|
C Close all NetCDF files matching a string. |
442 |
|
|
443 |
|
C !USES: |
444 |
implicit none |
implicit none |
445 |
#include "netcdf.inc" |
#include "netcdf.inc" |
446 |
#include "mnc_common.h" |
#include "mnc_common.h" |
447 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
448 |
|
|
449 |
C Arguments |
C !INPUT PARAMETERS: |
450 |
integer myThid |
integer myThid |
451 |
|
|
452 |
C Local Variables |
C !LOCAL VARIABLES: |
453 |
integer i |
integer i |
454 |
|
CEOP |
455 |
|
|
456 |
DO i = 1,MNC_MAX_ID |
DO i = 1,MNC_MAX_ID |
457 |
|
|
467 |
END |
END |
468 |
|
|
469 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
470 |
|
CBOP |
471 |
|
C !ROUTINE: MNC_FILE_REDEF |
472 |
|
|
473 |
|
C !INTERFACE: |
474 |
SUBROUTINE MNC_FILE_REDEF( |
SUBROUTINE MNC_FILE_REDEF( |
475 |
I fname, |
I fname, |
476 |
I myThid ) |
I myThid ) |
477 |
|
|
478 |
|
C !DESCRIPTION: |
479 |
|
C Set the NetCDF file to DEFINE mode. |
480 |
|
|
481 |
|
C !USES: |
482 |
implicit none |
implicit none |
483 |
#include "netcdf.inc" |
#include "netcdf.inc" |
484 |
#include "mnc_common.h" |
#include "mnc_common.h" |
485 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
486 |
|
|
487 |
C Arguments |
C !INPUT PARAMETERS: |
488 |
integer myThid |
integer myThid |
489 |
character*(*) fname |
character*(*) fname |
490 |
|
|
491 |
C Functions |
C !LOCAL VARIABLES: |
|
integer ILNBLNK |
|
|
|
|
|
C Local Variables |
|
492 |
integer ind, fid, def, err, n |
integer ind, fid, def, err, n |
493 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
494 |
|
CEOP |
495 |
|
C Functions |
496 |
|
integer ILNBLNK |
497 |
|
|
498 |
C Verify that the file is open |
C Verify that the file is open |
499 |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
519 |
END |
END |
520 |
|
|
521 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
522 |
|
CBOP |
523 |
|
C !ROUTINE: MNC_FILE_ENDDEF |
524 |
|
|
525 |
|
C !INTERFACE: |
526 |
SUBROUTINE MNC_FILE_ENDDEF( |
SUBROUTINE MNC_FILE_ENDDEF( |
527 |
I fname, |
I fname, |
528 |
I myThid ) |
I myThid ) |
529 |
|
|
530 |
|
C !DESCRIPTION: |
531 |
|
C End DEFINE mode for a NetCDF file. |
532 |
|
|
533 |
|
C !USES: |
534 |
implicit none |
implicit none |
535 |
#include "netcdf.inc" |
#include "netcdf.inc" |
536 |
#include "mnc_common.h" |
#include "mnc_common.h" |
537 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
538 |
|
|
539 |
C Arguments |
C !INPUT PARAMETERS: |
540 |
integer myThid |
integer myThid |
541 |
character*(*) fname |
character*(*) fname |
542 |
|
|
543 |
C Functions |
C !LOCAL VARIABLES: |
|
integer ILNBLNK |
|
|
|
|
|
C Local Variables |
|
544 |
integer ind, fid, def, err, n |
integer ind, fid, def, err, n |
545 |
character*(MAX_LEN_MBUF) msgbuf |
character*(MAX_LEN_MBUF) msgbuf |
546 |
|
CEOP |
547 |
|
C Functions |
548 |
|
integer ILNBLNK |
549 |
|
|
550 |
C Verify that the file is open |
C Verify that the file is open |
551 |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
CALL MNC_GET_IND(MNC_MAX_ID, fname, mnc_f_names, ind, myThid) |
580 |
#include "netcdf.inc" |
#include "netcdf.inc" |
581 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
582 |
|
|
583 |
C Arguments |
C !INPUT PARAMETERS: |
584 |
integer myThid |
integer myThid |
585 |
character*(*) fname |
character*(*) fname |
586 |
|
|
602 |
END |
END |
603 |
|
|
604 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
605 |
|
CBOP |
606 |
|
C !ROUTINE: MNC_FILE_TRY_READ |
607 |
|
|
608 |
|
C !INTERFACE: |
609 |
SUBROUTINE MNC_FILE_TRY_READ( |
SUBROUTINE MNC_FILE_TRY_READ( |
610 |
I fname, |
I fname, |
611 |
O ierr, |
O ierr, |
612 |
O indf, |
O indf, |
613 |
I myThid ) |
I myThid ) |
614 |
|
|
615 |
|
C !DESCRIPTION: |
616 |
|
C Try to open and read a NetCDF file. |
617 |
|
|
618 |
|
C !USES: |
619 |
implicit none |
implicit none |
620 |
#include "netcdf.inc" |
#include "netcdf.inc" |
621 |
#include "mnc_common.h" |
#include "mnc_common.h" |
622 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
623 |
|
|
624 |
C Arguments |
C !INPUT PARAMETERS: |
625 |
integer myThid, ierr, indf |
integer myThid, ierr, indf |
626 |
character*(*) fname |
character*(*) fname |
627 |
|
|
628 |
C Functions |
C !LOCAL VARIABLES: |
|
integer IFNBLNK, ILNBLNK |
|
|
|
|
|
C Local Variables |
|
629 |
integer i,j,k, fid, err, ndim,nvar,ngat,unlimid |
integer i,j,k, fid, err, ndim,nvar,ngat,unlimid |
630 |
integer dlen, id, xtype, nat, nff,nlf, iv |
integer dlen, id, xtype, nat, nff,nlf, iv |
631 |
integer ndv, did, ns,ne, n1,n2, indg, indv |
integer ndv, did, ns,ne, n1,n2, indg, indv |
633 |
character*(NF_MAX_NAME) name |
character*(NF_MAX_NAME) name |
634 |
integer idlist(NF_MAX_VAR_DIMS) |
integer idlist(NF_MAX_VAR_DIMS) |
635 |
character*(MNC_MAX_CHAR) dnames(20) |
character*(MNC_MAX_CHAR) dnames(20) |
636 |
|
CEOP |
637 |
|
C Functions |
638 |
|
integer IFNBLNK, ILNBLNK |
639 |
|
|
640 |
C Open and save the filename and fID |
C Open and save the filename and fID |
641 |
nff = IFNBLNK(fname) |
nff = IFNBLNK(fname) |