/[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.11 - (hide annotations) (download)
Thu Feb 26 22:31:58 2004 UTC (20 years, 2 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint52l_pre, checkpoint52l_post, hrcube5
Changes since 1.10: +4 -1 lines
File MIME type: text/plain
 o fix the calling sequence for MNC
 o add coordinates to the variables within the "state" file
 o reads still unfinished

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 edhill 1.8 2) MNC_INIT_VGRID('V_GRID_TYPE', nx, ny, nz, zc, zg)
12 edhill 1.1
13 edhill 1.8 3) MNC_INIT_HGRID('H_GRID_TYPE', nx, ny, xc, yc, xg, yg)
14 edhill 1.1
15 edhill 1.8 4) MNC_INIT_VAR('file', 'Vname', 'Vunits', 'H_GTYPE', 'V_GTYPE', PREC, FillVal)
16 edhill 1.1
17 edhill 1.8 5) MNC_WRITE_VAR('file', 'Vname', var, bi, bj, myThid)
18 edhill 1.1
19     This is a reasonable start but its inflexible since it isn't easily
20     generalized to grids with dimensions other than [2,3,4] or grids with
21     non-horizontal orientations (eg. vertical slices).
22    
23    
24     Generalizing what we would like to write as "variables defined on 1-D
25     to n-D grids", one can imagine a small number of objects containing
26     all the relevant information:
27    
28     a dimension: [ name, size, units ]
29     a grid: [ name, 1+ dim-ref ]
30     a variable: [ name, units, *1* grid-ref, data ]
31     an attribute: [ name, units, data ]
32     a NetCDF file: [ name, 0+ attr, 0+ grid-ref, 0+ var-ref ]
33    
34     which can then be manipulated (created, associated, destroyed, etc.)
35     using a simple interface such as:
36    
37 edhill 1.8 MNC_INIT( myThid )
38 edhill 1.1
39 edhill 1.8 MNC_FILE_CREATE( myThid, fname )
40     MNC_FILE_OPEN( myThid, fname, itype )
41 edhill 1.1 MNC_FILE_ADD_ATTR_STR( myThid, fname, atname, sval )
42 edhill 1.5 MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, len, dval )
43     MNC_FILE_ADD_ATTR_REAL(myThid, fname, atname, len, rval )
44     MNC_FILE_ADD_ATTR_INT( myThid, fname, atname, len, ival )
45     MNC_FILE_ADD_ATTR_ANY( myThid, fname, atname, atype, cs,len,dv,rv,iv )
46 edhill 1.1 ...
47     MNC_FILE_READ_HEADER( myThid, fname )
48    
49 edhill 1.8 MNC_DIM_INIT( myThid, fname, dname, dlen )
50 edhill 1.1
51 edhill 1.8 MNC_GRID_INIT( myThid, fname, gname, ndim, dnames )
52 edhill 1.1
53 edhill 1.8 MNC_VAR_INIT_DBL( myThid, fname, gname, vname, units )
54     MNC_VAR_INIT_REAL( myThid, fname, gname, vname, units )
55     MNC_VAR_INIT_INT( myThid, fname, gname, vname, units )
56     MNC_VAR_INIT_ANY( myThid, fname, gname, vname, units, type )
57     MNC_VAR_ADD_ATTR_STR( myThid, fname, vname, atname, sval )
58     MNC_VAR_ADD_ATTR_DBL( myThid, fname, vname, atname, nv, dval )
59 edhill 1.5 MNC_VAR_ADD_ATTR_REAL( myThid, fname, vname, atname, nv, rval )
60 edhill 1.8 MNC_VAR_ADD_ATTR_INT( myThid, fname, vname, atname, nv, ival )
61     MNC_VAR_ADD_ATTR_ANY( myThid, fname, vname, atname, atype, cs,len,dv,rv,iv )
62     MNC_VAR_WRITE_DBL( myThid, fname, vname, var )
63     MNC_VAR_WRITE_REAL( myThid, fname, vname, var )
64     MNC_VAR_WRITE_INT( myThid, fname, vname, var )
65     MNC_VAR_WRITE_ANY( myThid, fname, vname, vtype, dv, rv, iv )
66 edhill 1.1 ...
67 edhill 1.4 MNC_VAR_READ( myThid, fname, vname, var )
68 edhill 1.1
69 edhill 1.9 MNC_FILE_SYNC( myThid, fname )
70 edhill 1.8 MNC_FILE_CLOSE( myThid, fname )
71    
72    
73     Heres a further "convenience wrapper" written on top of the above UI:
74    
75 edhill 1.9 MNC_CW_INIT( myThid, Gtype, Htype, Hsub, Vtype, Ttype, wHalo )
76 edhill 1.8
77 edhill 1.9 with pre-defined - xy - - n
78     combinations: U x c t y
79     'Cen_xy_c_t_Hn' V y i
80     'U_xy_i_t_Hn', Cen
81     'Cor_x_-_-_Hy' Cor
82 edhill 1.8
83 edhill 1.9 MNC_CW_WRITE( myThid,myIter, filebn,bi,bj, Gtype, RX, vname, var )
84     MNC_CW_READ( myThid,myIter, filebn,bi,bj, Gtype, RX, vname, var )
85 edhill 1.1
86 edhill 1.11 MNC_CW_RX_W_YY( myThid, fbname,bi,bj, vtype, indu, var )
87     MNC_CW_RX_R_YY( myThid, fbname,bi,bj, vtype, indu, var )
88    
89     MNC_COMP_VTYPE_VAR( myThid, ind_vt, ind_fv_ids, ires )
90 edhill 1.2
91    
92     To-Do:
93     ======
94    
95 edhill 1.7 1) NAMING -- We should (as much as possible) try to name variables so
96     that they are in agreement with the CF naming conventions.
97    
98     2) UNITS -- as with the names we need to follow conventions
99 edhill 1.6
100 edhill 1.7 3) AM described her "diags" (or "myDiags" or "mDiags") interface
101 edhill 1.6 which should use MNC for output. The data storage idea is similar
102     to the MNC tables-of-indicies approach but also includes one huge
103     double-precision "accumulator" to hold all the temporary values
104     (eg. partial sums for averages, current max/mins):
105    
106     vname ( ni )
107     vlen ( ni )
108 edhill 1.7 vind ( ni ) ------+
109 edhill 1.8 |
110 edhill 1.6
111     vij_diag ( i, j, [...] ) w/ lat/lon indicies
112     vgl_diag ( [...] ) wo/ lat/lon indicies (global)
113 edhill 1.7
114     4) CNH pointed out that grid interpolation needs to be handled
115     "on-the-fly" since pre-processing would result in overly large
116     input files. We need an interpolation API...
117 edhill 1.8
118     5) From the group meeting on 2004/01/21, we need to define
119     "sub-grids" corresponding to:
120    
121     var_name HGRID VGRID TIME
122     ===========================================
123     u U_xy r_c t
124     eta T_xy - t
125     rac T_xy - -
126    
127     And write a convenience wrapper so that users can write variables
128     using just two function calls. JMC and I worked out the
129     following:
130    
131 edhill 1.7

  ViewVC Help
Powered by ViewVC 1.1.22