NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
> Organization: ERL > Keywords: 199408312007.AA13009 Hi Tom, > Is it possible with the current C++ NetCDF interface to write record > (Unlimited) variables? I know the ncrecput function does not exist, but > the manual for the C interface says that it's not necessary (accomplish > the same by repeated calls to ncvarput; in C++, put). I've tried this > method and I can never get more than one record in a variable. Writing record variables is supported with the current C++ netCDF interface. The netcdf/c++/nctst.cc program that comes with the current distribution shows how this is done. Briefly, you just need to declare the unlimited dimension by *not* providing a size argument to NcFile::add_dim(), for example: NcDim* frtimed = nc.add_dim("frtime"); // unlimited dimension then just declare record variables to use this dimension as their first dimension, for example: NcVar* P = nc.add_var("P", ncFloat, frtimed, latd, lond); and write data to the variable. // We could write all P data at once with P->put(P_data, P->edges()), // but instead we write one record at a time, to show use of setcur(). long rec = 0; // start at zero-th const long nrecs = 1; // # records to write P->put(&P_data[0], nrecs, NLATS, NLONS); // write zero-th record P->set_cur(++rec); // set to next record P->put(&P_data[NLATS*NLONS], nrecs, NLATS, NLONS); // write next record -- Russ Rew UCAR Unidata Program russ@xxxxxxxxxxxxxxxx P.O. Box 3000 http://www.unidata.ucar.edu/ Boulder, CO 80307-3000
netcdfgroup
archives: