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.

[netcdfgroup] nasty netcdf-4.1 bug


Ed et al: Here's a simple C program that produces an incorrect netcdf file with netcdf-4.1

#include <stdio.h>
#include <string.h>
#include <netcdf.h>
#define FILE_NAME "test.nc"
#define NDIMS 2
#define NLAT 10
#define NLON 20 #define LAT_NAME "lat"
#define LON_NAME "lon"
#define START_LAT 25.0
#define START_LON -125.0
int
main()
{
  int ncid, lon_dimid, lat_dimid;
  int lat_varid, lon_varid;
  int dimids[NDIMS];
  float lats[NLAT], lons[NLON];
  int lat, lon;
  int retval;
  for (lat = 0; lat < NLAT; lat++)
     lats[lat] = START_LAT + 5.*lat;
  for (lon = 0; lon < NLON; lon++)
     lons[lon] = START_LON + 5.*lon;
  retval = nc_create(FILE_NAME, NC_NETCDF4 | NC_CLOBBER, &ncid);
  retval = nc_def_dim(ncid, LAT_NAME, NLAT, &lat_dimid);
  retval = nc_def_dim(ncid, LON_NAME, NLON, &lon_dimid);
  retval = nc_def_var(ncid, LON_NAME, NC_FLOAT, 1, &lon_dimid, &lon_varid);
  retval = nc_put_var_float(ncid, lon_varid, &lons[0]);
  retval = nc_def_var(ncid, LAT_NAME, NC_FLOAT, 1, &lat_dimid, &lat_varid);
  retval = nc_put_var_float(ncid, lat_varid, &lats[0]);
  retval = nc_close(ncid);
  return 0;
}

An ncdump of the resulting file looks like this:

ncdump test.nc
netcdf test {
dimensions:
       lat = 10 ;
       lat = 10 ;
variables:
       float lon(lat) ;
       float lat(lat) ;
data:

lon = -125, -120, -115, -110, -105, -100, -95, -90, -85, -80 ;

lat = 25, 30, 35, 40, 45, 50, 55, 60, 65, 70 ;
}

which is more than a little weird. Linking the program with either netcdf-4.0.1 or netcdf-4.1-rc1 produces the correct netcdf file

ncdump test.nc
netcdf test {
dimensions:
       lat = 10 ;
       lon = 20 ;
variables:
       float lon(lon) ;
       float lat(lat) ;
data:

lon = -125, -120, -115, -110, -105, -100, -95, -90, -85, -80 ;

lat = 25, 30, 35, 40, 45, 50, 55, 60, 65, 70 ;
}

-Jeff



  • 2010 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: