Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
> 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: