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

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

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


Revision 1.13 - (show annotations) (download)
Wed Mar 24 15:29:33 2004 UTC (20 years, 2 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57o_post, checkpoint52n_post, checkpoint53d_post, checkpoint54a_pre, checkpoint57m_post, checkpoint55c_post, checkpoint54e_post, checkpoint54a_post, checkpoint53c_post, checkpoint57k_post, checkpoint55d_pre, checkpoint57d_post, checkpoint57g_post, checkpoint57b_post, checkpoint57c_pre, checkpoint55j_post, checkpoint56b_post, checkpoint57i_post, checkpoint57e_post, checkpoint55h_post, checkpoint57g_pre, checkpoint54b_post, checkpoint53b_pre, checkpoint55b_post, checkpoint54d_post, checkpoint56c_post, checkpoint52m_post, checkpoint55, checkpoint53a_post, checkpoint57f_pre, checkpoint57a_post, checkpoint54, checkpoint54f_post, checkpoint53b_post, checkpoint55g_post, checkpoint55f_post, checkpoint57r_post, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, checkpoint53, eckpoint57e_pre, checkpoint57h_done, checkpoint53g_post, checkpoint57n_post, checkpoint57p_post, checkpoint57f_post, checkpoint57q_post, checkpoint57c_post, checkpoint55e_post, checkpoint53f_post, checkpoint55a_post, checkpoint53d_pre, checkpoint54c_post, checkpoint57j_post, checkpoint57h_pre, checkpoint57l_post, checkpoint57h_post, checkpoint56a_post, checkpoint55d_post
Changes since 1.12: +5 -4 lines
File MIME type: text/plain
 o in the MNC_CW_xxx_[R|W]_yyy calls, move the yyy=[R|D|I] part to
     a string variable within the argument list so that the output
     types are now run-time selectable
 o fix a bug in the initialization order -- ini_mnc_io() must be called
     after grid initialization

1
2 API Discussions:
3 ================
4
5 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
13 3) MNC_INIT_HGRID('H_GRID_TYPE', nx, ny, xc, yc, xg, yg)
14
15 4) MNC_INIT_VAR('file', 'Vname', 'Vunits', 'H_GTYPE', 'V_GTYPE', PREC, FillVal)
16
17 5) MNC_WRITE_VAR('file', 'Vname', var, bi, bj, myThid)
18
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 MNC_INIT( myThid )
38
39 MNC_FILE_CREATE( fname, myThid )
40 MNC_FILE_OPEN( fname, itype, myThid )
41 MNC_FILE_ADD_ATTR_STR( fname, atname, sval, myThid )
42 MNC_FILE_ADD_ATTR_DBL( fname, atname, len, dval, myThid )
43 MNC_FILE_ADD_ATTR_REAL(fname, atname, len, rval, myThid )
44 MNC_FILE_ADD_ATTR_INT( fname, atname, len, ival, myThid )
45 MNC_FILE_ADD_ATTR_ANY( fname, atname, atype, cs,len,dv,rv,iv, myThid )
46 ...
47 MNC_FILE_READ_HEADER( fname, myThid )
48
49 MNC_DIM_INIT( fname, dname, dlen, myThid )
50
51 MNC_GRID_INIT( fname, gname, ndim, dnames, myThid )
52
53 MNC_VAR_INIT_DBL( fname, gname, vname, units, myThid )
54 MNC_VAR_INIT_REAL( fname, gname, vname, units, myThid )
55 MNC_VAR_INIT_INT( fname, gname, vname, units, myThid )
56 MNC_VAR_INIT_ANY( fname, gname, vname, units, type, myThid )
57 MNC_VAR_ADD_ATTR_STR( fname, vname, atname, sval, myThid )
58 MNC_VAR_ADD_ATTR_DBL( fname, vname, atname, nv, dval, myThid )
59 MNC_VAR_ADD_ATTR_REAL( fname, vname, atname, nv, rval, myThid )
60 MNC_VAR_ADD_ATTR_INT( fname, vname, atname, nv, ival, myThid )
61 MNC_VAR_ADD_ATTR_ANY( fname, vname, atname, atype, cs,len,dv,rv,iv, myThid )
62 MNC_VAR_WRITE_DBL( fname, vname, var, myThid )
63 MNC_VAR_WRITE_REAL( fname, vname, var, myThid )
64 MNC_VAR_WRITE_INT( fname, vname, var, myThid )
65 MNC_VAR_WRITE_ANY( fname, vname, vtype, dv, rv, iv, myThid )
66 ...
67 MNC_VAR_READ( fname, vname, var, myThid )
68
69 MNC_FILE_SYNC( fname, myThid )
70 MNC_FILE_CLOSE( fname, myThid )
71
72
73 Heres a further "convenience wrapper" written on top of the above UI:
74
75 MNC_CW_INIT( Gtype, Htype, Hsub, Vtype, Ttype, wHalo, myThid )
76
77 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
83 MNC_CW_SET_UDIM( fbname, udim, myThid )
84
85 MNC_CW_RX_W( 'R|D|I', fbname,bi,bj, vtype, indu, var, myThid )
86 MNC_CW_RX_R( 'R|D|I', fbname,bi,bj, vtype, indu, var, myThid )
87 |
88 +-- RX = 'RL', 'RS', or 'I'
89
90 MNC_COMP_VTYPE_VAR( ind_vt, ind_fv_ids, ires, myThid )
91
92
93 To-Do:
94 ======
95
96 1) NAMING -- We should (as much as possible) try to name variables so
97 that they are in agreement with the CF naming conventions.
98
99 2) UNITS -- as with the names we need to follow conventions
100
101 3) AM described her "diags" (or "myDiags" or "mDiags") interface
102 which should use MNC for output. The data storage idea is similar
103 to the MNC tables-of-indicies approach but also includes one huge
104 double-precision "accumulator" to hold all the temporary values
105 (eg. partial sums for averages, current max/mins):
106
107 vname ( ni )
108 vlen ( ni )
109 vind ( ni ) ------+
110 |
111
112 vij_diag ( i, j, [...] ) w/ lat/lon indicies
113 vgl_diag ( [...] ) wo/ lat/lon indicies (global)
114
115 4) CNH pointed out that grid interpolation needs to be handled
116 "on-the-fly" since pre-processing would result in overly large
117 input files. We need an interpolation API...
118
119 5) From the group meeting on 2004/01/21, we need to define
120 "sub-grids" corresponding to:
121
122 var_name HGRID VGRID TIME
123 ===========================================
124 u U_xy r_c t
125 eta T_xy - t
126 rac T_xy - -
127
128 And write a convenience wrapper so that users can write variables
129 using just two function calls. JMC and I worked out the
130 following:
131
132

  ViewVC Help
Powered by ViewVC 1.1.22