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.
Many thanks to Wei-keng Liao for finding the cause of the missing data. There is a bug in dfile.c where netcdf does not recognize NC_PNETCDF in the cmode when opening a file for writing. (In 4.3.1.1, it is at line 1675 in dfile.c) The test code with netcdf-fortran works because it writes data after the enddef, but before closing the file. - Ted Begin forwarded message: > I think I found the cause ! > > One question first. Does your code first creates a new nc file, defines > dimensions, variables, put attributes, close the file without calling > any put_var? And then reopen the file and call many get_var and put_var? > Yes, it does. > If this is the case, then the cause is due to a bug in netCDF I reported > to netCDF team recently. See > https://bugtracking.unidata.ucar.edu/browse/NCF-319 > > A simple fix is to add the 3 lines (1712-1715 below) after line 1711 of file > libdispatch/dfile.c. > 1710 else if(cmode & NC_NETCDF4) model |= NC_DISPATCH_NC4; > 1711 } > 1712 else if (model == NC_DISPATCH_NC3) { > 1713 /* if file is a CDF-1 or CDF-2, and PnetCDF method is selected */ > 1714 if (cmode & NC_PNETCDF) model = NC_DISPATCH_NC5; > 1715 } > > Without this fix, netCDF will fail to call PnetCDF APIs even if NF90_PNETCDF > open mode is used. It will use POSIX read/write instead. Please re-build your > netCDF and let me know if it works. > > Wei-keng > It works!!!
netcdfgroup
archives: