While modifying a file structure and content to add new variables I
noted file growth out of proportion to the variables added. It
appeared that NC_LONG, NC_SHORT, and NC_BYTE types require the same
storage space. Experiments with test programs and files produced the
results listed below. The work was done on a Sun Sparc 2, OS 4.1.1,
netCDF 2.02. The test program list follows. Variable types are
changed for each run.
Comments or suggestions appreciated.
variable 1 - NC_DOUBLE : variable 2 - NC_LONG
file size w/ 1 record = 168 - 2 records = 180 - 3 records = 192 (diff = 12)
variable 1 - NC_DOUBLE : variable 2 - NC_SHORT
file size w/ 1 record = 168 - 2 records = 180 - 3 records = 192 (diff = 12)
should be 10
variable 1 - NC_DOUBLE : variable 2 - NC_BYTE
file size w/ 1 record = 168 - 2 records = 180 - 3 records = 192 (diff = 12)
should be 9
variable 1 - NC_LONG : variable 2 - NC_LONG
file size w/ 1 record = 164 - 2 records = 172 - 3 records = 180 (diff = 8)
variable 1 - NC_LONG : variable 2 - NC_SHORT
file size w/ 1 record = 164 - 2 records = 172 - 3 records = 180 (diff = 8)
should be 6
variable 1 - NC_LONG : variable 2 - NC_BYTE
file size w/ 1 record = 164 - 2 records = 172 - 3 records = 180 (diff = 8)
should be 5
/*----------------------------------------------------------------------*/
#include <stdio.h>
#include "netcdf.h"
int cdfid;
int v1_id, v2_id;
short v1;
byte v2;
main(argc,argv)
int argc;
char **argv;
{
int n,i,ix[1];
if(argc < 2)
n = 1; /* default to one record */
else
n = atoi(argv[1]); /* or request number of records */
docdf(); /* define and create the file */
v1 = 1;
v2 = 2;
for(i = 0; i < n; i++) /* write the requested records */
{
ix[0] = i;
ncvarput1(cdfid, v1_id, ix, (void *) &v1);
ncvarput1(cdfid, v2_id, ix, (void *) &v2);
}
ncclose(cdfid);
}
/*----------------------------------------------------------------------*/
docdf()
{
int dims[3];
int record_dim;
cdfid = nccreate("test.cdf", NC_CLOBBER);
record_dim = ncdimdef(cdfid, "record", NC_UNLIMITED);
dims[0] = record_dim;
v1_id = ncvardef (cdfid, "var1", NC_DOUBLE, 1, dims);
v2_id = ncvardef (cdfid, "var2", NC_SHORT, 1, dims);
ncattput(cdfid,NC_GLOBAL,"title",NC_CHAR,13,(void *)"CDF TEST DATA");
ncendef (cdfid);
}
___________________________________________________________________________
Ken Prada |
Applied Ocean Physics and Engineering |Organization is critical to success.
Woods Hole Oceanographic Institution |
(508) 457-2000 Ext 2711 |Try eating a soup sandwich.
kegp@xxxxxxxxxxxxx |