This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>To: "'address@hidden'" <address@hidden> >From: "Weiss, Michele" <address@hidden> >Subject: netCDF question >Organization: . >Keywords: 199902241931.MAA11972 Hi Michele, > I am running NetCDF using the C++ version 3.4 on HP-UX and I am coming > up with an execution error. I am attaching the source code but > essentially, I am successful in opening a NetCDF file using replace as > the attribute, add attributes to it but when I try and create a > dimension, either unlimited or with a size specified, I am getting an > execution error that states: > > ncinquire: ncid 6: Not a netCDF id > > When I print out what the class of nc contains, I get the following > values: > > {the_id = 6, in_define_mode = 1, dimensions = 0x40009788, variables = > 0x40009920, globalv = 0x4000b868, _vptr$ = 0x400014f8 <NcFile virtual > table>} > > I am new to NetCDF and really stuck and am totally out of ideas on > things to try to get around this. Since I don't have the NetCDF source > code, I can't step into it to see how the id of 6 is getting assigned > and what is a valid netcdf id. If you want to debug this further, you can certainly get the netCDF source code, compile it with debugging, and step into it, by accessing the sources from ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.Z I was able to compile the C++ code you provided, in an attempt to diagnose the problem, but I was unable to duplicate the problem here, because there was no main program. Also, there was not quite enough information provided to determine where the program was when the error message occurred. Nevertheless, I saw one problem in the code and have a guess at what might be another problem. In "NetCDFFileIO.cpp": strcpy (filename, "dummy.dat\n"); NcFile nc( filename, NcFile::Replace ); which tries to open or create the file "dummy.dat\n", where the "\n" means the newline character will actually be included in the file name. You probably intended instead to open the file "dummy.dat", but it must have worked OK, because you didn't say you got an error returned from the call to the NcFile constructor. I note that the end of the NetCDFFileIO::WriteLevel1AImagingfunction method in which nc is declared is outputRate2->add_att("long_name", "Output_Rate_Data_2"); // now add data } with your comment indicating that more data is to be added. You cannot use "nc" or "outfile" as a valid handle of a netCDF file after this function exits, because these were local variables in that method, so their destructors get called automatically when they go out of scope, and the NcFile destructor closes the file. Hence if you had saved a copy or a pointer to nc or outfile to try to use either of them again, you will get a message similar to what you are seeing ncinquire: ncid 6: Not a netCDF id I didn't see this happening in your code, so this may be wrong, but I hope this helps. --Russ _____________________________________________________________________ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu