/[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.14 by edhill, Sat Sep 10 18:30:07 2005 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(       fname, myThid )
40    MNC_FILE_OPEN(         myThid, fname, itype )    MNC_FILE_OPEN(         fname, itype, myThid )
41    MNC_FILE_ADD_ATTR_STR( myThid, fname, atname, sval )    MNC_FILE_ADD_ATTR_STR( fname, atname, sval, myThid )
42    MNC_FILE_ADD_ATTR_DBL( myThid, fname, atname, len, dval )    MNC_FILE_ADD_ATTR_DBL( fname, atname, len, dval, myThid )
43    MNC_FILE_ADD_ATTR_REAL(myThid, fname, atname, len, rval )    MNC_FILE_ADD_ATTR_REAL(fname, atname, len, rval, myThid )
44    MNC_FILE_ADD_ATTR_INT( myThid, fname, atname, len, ival )    MNC_FILE_ADD_ATTR_INT( fname, atname, len, ival, myThid )
45    MNC_FILE_ADD_ATTR_ANY( myThid, fname, atname, atype, cs,len,dv,rv,iv )    MNC_FILE_ADD_ATTR_ANY( fname, atname, atype, cs,len,dv,rv,iv, myThid )
46    ...    ...
47    MNC_FILE_READ_HEADER(  myThid, fname )    MNC_FILE_READ_HEADER(  fname, myThid )
48    
49    MNC_DIM_INIT(          myThid, fname, dname, dunits, dlen )    MNC_DIM_INIT(          fname, dname, dlen, myThid )
50    
51    MNC_GRID_INIT(         myThid, fname, gname, ndim, dnames )    MNC_GRID_INIT(         fname, gname, ndim, dnames, myThid )
   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(      fname, gname, vname, units, myThid )
54    MNC_VAR_INIT_REAL(     myThid, fname, gname, vname, units )    MNC_VAR_INIT_REAL(     fname, gname, vname, units, myThid )
55    MNC_VAR_INIT_INT(      myThid, fname, gname, vname, units )    MNC_VAR_INIT_INT(      fname, gname, vname, units, myThid )
56    MNC_VAR_INIT_ANY(      myThid, fname, gname, vname, units, type )    MNC_VAR_INIT_ANY(      fname, gname, vname, units, type, myThid )
57    MNC_VAR_ADD_ATTR_STR(  myThid, fname, vname, atname, sval )    MNC_VAR_ADD_ATTR_STR(  fname, vname, atname, sval, myThid )
58    MNC_VAR_ADD_ATTR_DBL(  myThid, fname, vname, atname, nv, dval )    MNC_VAR_ADD_ATTR_DBL(  fname, vname, atname, nv, dval, myThid )
59    MNC_VAR_ADD_ATTR_REAL( myThid, fname, vname, atname, nv, rval )    MNC_VAR_ADD_ATTR_REAL( fname, vname, atname, nv, rval, myThid )
60    MNC_VAR_ADD_ATTR_INT(  myThid, fname, vname, atname, nv, ival )    MNC_VAR_ADD_ATTR_INT(  fname, vname, atname, nv, ival, myThid )
61    MNC_VAR_ADD_ATTR_ANY(  myThid, fname, vname, atname, atype, cs,len,dv,rv,iv )    MNC_VAR_ADD_ATTR_ANY(  fname, vname, atname, atype, cs,len,dv,rv,iv, myThid )
62    MNC_VAR_WRITE_DBL(     myThid, fname, vname, var )    MNC_VAR_WRITE_DBL(     fname, vname, var, myThid )
63    MNC_VAR_WRITE_REAL(    myThid, fname, vname, var )    MNC_VAR_WRITE_REAL(    fname, vname, var, myThid )
64    MNC_VAR_WRITE_INT(     myThid, fname, vname, var )    MNC_VAR_WRITE_INT(     fname, vname, var, myThid )
65    MNC_VAR_WRITE_ANY(     myThid, fname, vname, vtype, dv, rv, iv )    MNC_VAR_WRITE_ANY(     fname, vname, vtype, dv, rv, iv, myThid )
66    ...    ...
67    MNC_VAR_READ(          myThid, fname, vname, var )    MNC_VAR_READ(          fname, vname, var, myThid )
68    
69    MNC_FILE_CLOSE(        myThid, fname )    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    
 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.  
92    
93    
94  To-Do:  To-Do:
# Line 83  To-Do: Line 99  To-Do:
99    
100   2) UNITS -- as with the names we need to follow conventions   2) UNITS -- as with the names we need to follow conventions
101    
102   3) AM described her "diags" (or "myDiags" or "mDiags") interface   3) CNH pointed out that grid interpolation needs to be handled
     which should use MNC for output.  The data storage idea is similar  
     to the MNC tables-of-indicies approach but also includes one huge  
     double-precision "accumulator" to hold all the temporary values  
     (eg. partial sums for averages, current max/mins):  
   
       vname ( ni )  
       vlen  ( ni )  
       vind  ( ni ) ------+  
                          |  
   
       vij_diag ( i, j, [...] )  w/ lat/lon indicies  
       vgl_diag ( [...] )        wo/ lat/lon indicies (global)  
   
  4) CNH pointed out that grid interpolation needs to be handled  
103      "on-the-fly" since pre-processing would result in overly large      "on-the-fly" since pre-processing would result in overly large
104      input files.  We need an interpolation API...      input files.  We need an interpolation API...
105    
106    

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

  ViewVC Help
Powered by ViewVC 1.1.22