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

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

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

revision 1.7 by edhill, Sat Jan 17 13:55:49 2004 UTC revision 1.8 by edhill, Sun Jan 25 00:22:57 2004 UTC
# Line 8  subroutines: Line 8  subroutines:
8    
9    1) "stubs" of the form:  MNC_WV_[G|L]2D_R[S|L] ()    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 )    2) MNC_INIT_VGRID('V_GRID_TYPE', nx, ny, nz, zc, zg)
                                     1   1  
12    
13    3) MNC_INIT_HGRID( 'H_GRID_TYPE', nx, ny, xc, yc, xg, yg )    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 )    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 )    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  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  generalized to grids with dimensions other than [2,3,4] or grids with
# Line 35  all the relevant information: Line 34  all the relevant information:
34  which can then be manipulated (created, associated, destroyed, etc.)  which can then be manipulated (created, associated, destroyed, etc.)
35  using a simple interface such as:  using a simple interface such as:
36    
37    MNC_INIT(              myThid )    MNC_INIT(              myThid )
38    
39    MNC_FILE_CREATE(       myThid, fname )    MNC_FILE_CREATE(       myThid, fname )
40    MNC_FILE_OPEN(         myThid, fname, itype )    MNC_FILE_OPEN(         myThid, fname, itype )
41    MNC_FILE_ADD_ATTR_STR( myThid, fname, atname, sval )    MNC_FILE_ADD_ATTR_STR( myThid, fname, atname, sval )
42    MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, len, dval )    MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, len, dval )
43    MNC_FILE_ADD_ATTR_REAL(myThid, fname, atname, len, rval )    MNC_FILE_ADD_ATTR_REAL(myThid, fname, atname, len, rval )
# Line 47  using a simple interface such as: Line 46  using a simple interface such as:
46    ...    ...
47    MNC_FILE_READ_HEADER(  myThid, fname )    MNC_FILE_READ_HEADER(  myThid, fname )
48    
49    MNC_DIM_INIT(          myThid, fname, dname, dunits, dlen )    MNC_DIM_INIT(          myThid, fname, dname, dlen )
50    
51    MNC_GRID_INIT(         myThid, fname, gname, ndim, dnames )    MNC_GRID_INIT(         myThid, fname, gname, ndim, dnames )
   MNC_GRID_SET_LL(       myThid, fname, gname, type, lats, lons )  
52    
53    MNC_VAR_INIT_DBL(      myThid, fname, gname, vname, units )    MNC_VAR_INIT_DBL(      myThid, fname, gname, vname, units )
54    MNC_VAR_INIT_REAL(     myThid, fname, gname, vname, units )    MNC_VAR_INIT_REAL(     myThid, fname, gname, vname, units )
55    MNC_VAR_INIT_INT(      myThid, fname, gname, vname, units )    MNC_VAR_INIT_INT(      myThid, fname, gname, vname, units )
56    MNC_VAR_INIT_ANY(      myThid, fname, gname, vname, units, type )    MNC_VAR_INIT_ANY(      myThid, fname, gname, vname, units, type )
57    MNC_VAR_ADD_ATTR_STR(  myThid, fname, vname, atname, sval )    MNC_VAR_ADD_ATTR_STR(  myThid, fname, vname, atname, sval )
58    MNC_VAR_ADD_ATTR_DBL(  myThid, fname, vname, atname, nv, dval )    MNC_VAR_ADD_ATTR_DBL(  myThid, fname, vname, atname, nv, dval )
59    MNC_VAR_ADD_ATTR_REAL( myThid, fname, vname, atname, nv, rval )    MNC_VAR_ADD_ATTR_REAL( myThid, fname, vname, atname, nv, rval )
60    MNC_VAR_ADD_ATTR_INT(  myThid, fname, vname, atname, nv, ival )    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 )    MNC_VAR_ADD_ATTR_ANY(  myThid, fname, vname, atname, atype, cs,len,dv,rv,iv )
62    MNC_VAR_WRITE_DBL(     myThid, fname, vname, var )    MNC_VAR_WRITE_DBL(     myThid, fname, vname, var )
63    MNC_VAR_WRITE_REAL(    myThid, fname, vname, var )    MNC_VAR_WRITE_REAL(    myThid, fname, vname, var )
64    MNC_VAR_WRITE_INT(     myThid, fname, vname, var )    MNC_VAR_WRITE_INT(     myThid, fname, vname, var )
65    MNC_VAR_WRITE_ANY(     myThid, fname, vname, vtype, dv, rv, iv )    MNC_VAR_WRITE_ANY(     myThid, fname, vname, vtype, dv, rv, iv )
66    ...    ...
67    MNC_VAR_READ(          myThid, fname, vname, var )    MNC_VAR_READ(          myThid, fname, vname, var )
68    
69    MNC_FILE_CLOSE(        myThid, fname )    MNC_FILE_CLOSE(        myThid, fname )
70    
71    
72    Heres a further "convenience wrapper" written on top of the above UI:
73    
74      MNC_UGRID_INIT(        myThid, ugname, Htype, Hsub, Vtype, Ttype )
75    
76        with pre-defined individual          -      xy    -      -
77        types and combinations:              U      x     c      t
78                                             V      y     i
79        'U_xy_i_t' or 'Cor_x_-_-'            Cen
80                                             Cor
81    
82      MNC_UGRID_W_VAR(       myThid, myIter, fbase,bi,bj, ugname, 'RX', var )
83    
84    
 The above interface is powerful yet easy to use (easier than the  
 entire NetCDF interface) since it helps the user keep track of the  
 associations between files, "grids", variables, and dimensions.  
85    
86    
87  To-Do:  To-Do:
# Line 92  To-Do: Line 101  To-Do:
101        vname ( ni )        vname ( ni )
102        vlen  ( ni )        vlen  ( ni )
103        vind  ( ni ) ------+        vind  ( ni ) ------+
104                           |                           |
105    
106        vij_diag ( i, j, [...] )  w/ lat/lon indicies        vij_diag ( i, j, [...] )  w/ lat/lon indicies
107        vgl_diag ( [...] )        wo/ lat/lon indicies (global)        vgl_diag ( [...] )        wo/ lat/lon indicies (global)
# Line 101  To-Do: Line 110  To-Do:
110      "on-the-fly" since pre-processing would result in overly large      "on-the-fly" since pre-processing would result in overly large
111      input files.  We need an interpolation API...      input files.  We need an interpolation API...
112    
113     5) From the group meeting on 2004/01/21, we need to define
114        "sub-grids" corresponding to:
115    
116             var_name       HGRID       VGRID       TIME
117             ===========================================
118             u              U_xy        r_c         t
119             eta            T_xy        -           t
120             rac            T_xy        -           -
121    
122        And write a convenience wrapper so that users can write variables
123        using just two function calls.  JMC and I worked out the
124        following:
125    
126    

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22