/[MITgcm]/MITgcm/pkg/mnc/README.txt
ViewVC logotype

Annotation of /MITgcm/pkg/mnc/README.txt

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


Revision 1.4 - (hide annotations) (download)
Wed Jan 7 19:50:52 2004 UTC (20 years, 4 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint52e_post
Changes since 1.3: +7 -5 lines
File MIME type: text/plain
 o first version able to create "entire" NetCDF files

1 edhill 1.1
2 edhill 1.2 API Discussions:
3     ================
4    
5 edhill 1.1 As discussed in our group meeting of 2003-12-17 (AJA, CNH, JMC, AM,
6     PH, EH3), the NetCDF interface should resemble the following FORTRAN
7     subroutines:
8    
9     1) "stubs" of the form: MNC_WV_[G|L]2D_R[S|L] ()
10    
11     2) MNC_INIT_VGRID( 'V_GRID_TYPE', nx, ny, nz, zc, zg )
12     1 1
13    
14     3) MNC_INIT_HGRID( 'H_GRID_TYPE', nx, ny, xc, yc, xg, yg )
15    
16     4) MNC_INIT_VAR( 'file', 'Vname', 'Vunits', 'H_GTYPE', 'V_GTYPE', PREC, FillVal )
17    
18     5) MNC_WRITE_VAR( 'file', 'Vname', var, bi, bj, myThid )
19    
20     This is a reasonable start but its inflexible since it isn't easily
21     generalized to grids with dimensions other than [2,3,4] or grids with
22     non-horizontal orientations (eg. vertical slices).
23    
24    
25     Generalizing what we would like to write as "variables defined on 1-D
26     to n-D grids", one can imagine a small number of objects containing
27     all the relevant information:
28    
29     a dimension: [ name, size, units ]
30     a grid: [ name, 1+ dim-ref ]
31     a variable: [ name, units, *1* grid-ref, data ]
32     an attribute: [ name, units, data ]
33     a NetCDF file: [ name, 0+ attr, 0+ grid-ref, 0+ var-ref ]
34    
35     which can then be manipulated (created, associated, destroyed, etc.)
36     using a simple interface such as:
37    
38     MNC_INIT( myThid )
39    
40 edhill 1.2 MNC_FILE_CREATE( myThid, fname )
41 edhill 1.1 MNC_FILE_OPEN( myThid, fname, itype )
42     MNC_FILE_ADD_ATTR_STR( myThid, fname, atname, sval )
43     MNC_FILE_ADD_ATTR_INT( myThid, fname, atname, ival )
44     MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, dval )
45     ...
46     MNC_FILE_READ_HEADER( myThid, fname )
47    
48     MNC_DIM_INIT( myThid, dname, dunits, dlen )
49 edhill 1.2 MNC_DIM_REMOVE( myThid, dname )
50 edhill 1.1
51     MNC_GRID_INIT( myThid, fname, gname, ndim, dnames )
52 edhill 1.2 MNC_GRID_SET_LL( myThid, fname, gname, type, lats, lons )
53 edhill 1.1
54 edhill 1.3 MNC_VAR_INIT_DBL( myThid, fname, gname, vname, units, fillval )
55     MNC_VAR_INIT_REAL( myThid, fname, gname, vname, units, fillval )
56     MNC_VAR_INIT_INT( myThid, fname, gname, vname, units, fillval )
57 edhill 1.4 MNC_VAR_ADD_ATTR_STR( myThid, fname, vname, atname, sval )
58     MNC_VAR_ADD_ATTR_INT( myThid, fname, vname, atname, ival )
59     MNC_VAR_ADD_ATTR_DBL( myThid, fname, vname, atname, dval )
60     MNC_VAR_WRITE_DBL( myThid, fname, vname, var )
61     MNC_VAR_WRITE_REAL( myThid, fname, vname, var )
62     MNC_VAR_WRITE_INT( myThid, fname, vname, var )
63 edhill 1.1 ...
64 edhill 1.4 MNC_VAR_READ( myThid, fname, vname, var )
65 edhill 1.1
66     MNC_FILE_CLOSE( myThid, fname )
67    
68     The above interface is powerful yet easy to use (easier than the
69     entire NetCDF interface) since it helps the user keep track of the
70     associations between files, "grids", variables, and dimensions.
71 edhill 1.2
72    
73     To-Do:
74     ======
75    
76     1) CNH pointed out that grid interpolation needs to be handled
77     "on-the-fly" since pre-processing would result in overly large
78     input files. We need an interpolation API...

  ViewVC Help
Powered by ViewVC 1.1.22