/[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.7 - (hide annotations) (download)
Sat Jan 17 13:55:49 2004 UTC (20 years, 4 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint52i_post, checkpoint52i_pre, checkpoint52h_pre
Changes since 1.6: +14 -9 lines
File MIME type: text/plain
 o fix MNC dimensions so they are now per-NetCDF-file: this was a serious
     error in the earlier design
 o fix use of _RL,_RS where they should be REAL*4,REAL*8
 o intelligent error handling for situations where the number of NetCDF
     variables exceeds the available storage space within the MNC
     "tables"
 o add descriptions to the variables in the model_grid output

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 edhill 1.5 MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, len, dval )
44     MNC_FILE_ADD_ATTR_REAL(myThid, fname, atname, len, rval )
45     MNC_FILE_ADD_ATTR_INT( myThid, fname, atname, len, ival )
46     MNC_FILE_ADD_ATTR_ANY( myThid, fname, atname, atype, cs,len,dv,rv,iv )
47 edhill 1.1 ...
48     MNC_FILE_READ_HEADER( myThid, fname )
49    
50 edhill 1.7 MNC_DIM_INIT( myThid, fname, dname, dunits, dlen )
51 edhill 1.1
52     MNC_GRID_INIT( myThid, fname, gname, ndim, dnames )
53 edhill 1.2 MNC_GRID_SET_LL( myThid, fname, gname, type, lats, lons )
54 edhill 1.1
55 edhill 1.5 MNC_VAR_INIT_DBL( myThid, fname, gname, vname, units )
56     MNC_VAR_INIT_REAL( myThid, fname, gname, vname, units )
57     MNC_VAR_INIT_INT( myThid, fname, gname, vname, units )
58     MNC_VAR_INIT_ANY( myThid, fname, gname, vname, units, type )
59 edhill 1.7 MNC_VAR_ADD_ATTR_STR( myThid, fname, vname, atname, sval )
60 edhill 1.5 MNC_VAR_ADD_ATTR_DBL( myThid, fname, vname, atname, nv, dval )
61     MNC_VAR_ADD_ATTR_REAL( myThid, fname, vname, atname, nv, rval )
62     MNC_VAR_ADD_ATTR_INT( myThid, fname, vname, atname, nv, ival )
63     MNC_VAR_ADD_ATTR_ANY( myThid, fname, vname, atname, atype, cs,len,dv,rv,iv )
64 edhill 1.4 MNC_VAR_WRITE_DBL( myThid, fname, vname, var )
65     MNC_VAR_WRITE_REAL( myThid, fname, vname, var )
66     MNC_VAR_WRITE_INT( myThid, fname, vname, var )
67 edhill 1.5 MNC_VAR_WRITE_ANY( myThid, fname, vname, vtype, dv, rv, iv )
68 edhill 1.1 ...
69 edhill 1.4 MNC_VAR_READ( myThid, fname, vname, var )
70 edhill 1.1
71     MNC_FILE_CLOSE( myThid, fname )
72    
73     The above interface is powerful yet easy to use (easier than the
74     entire NetCDF interface) since it helps the user keep track of the
75     associations between files, "grids", variables, and dimensions.
76 edhill 1.2
77    
78     To-Do:
79     ======
80    
81 edhill 1.7 1) NAMING -- We should (as much as possible) try to name variables so
82     that they are in agreement with the CF naming conventions.
83    
84     2) UNITS -- as with the names we need to follow conventions
85 edhill 1.6
86 edhill 1.7 3) AM described her "diags" (or "myDiags" or "mDiags") interface
87 edhill 1.6 which should use MNC for output. The data storage idea is similar
88     to the MNC tables-of-indicies approach but also includes one huge
89     double-precision "accumulator" to hold all the temporary values
90     (eg. partial sums for averages, current max/mins):
91    
92     vname ( ni )
93     vlen ( ni )
94 edhill 1.7 vind ( ni ) ------+
95     |
96 edhill 1.6
97     vij_diag ( i, j, [...] ) w/ lat/lon indicies
98     vgl_diag ( [...] ) wo/ lat/lon indicies (global)
99 edhill 1.7
100     4) CNH pointed out that grid interpolation needs to be handled
101     "on-the-fly" since pre-processing would result in overly large
102     input files. We need an interpolation API...
103    

  ViewVC Help
Powered by ViewVC 1.1.22