Beispiel #1
0
/* Initialize iteration for a variable.  Just a wrapper for
 * nc_blkio_init() that makes the netCDF calls needed to initialize
 * lower-level iterator. */
int
nc_get_iter(Symbol* vsym,
	     size_t bufsize,   /* size in bytes of memory buffer */
	     nciter_t *iterp    /* returned opaque iteration state */) 
{
    int stat = NC_NOERR;
    Symbol* vartype;
    size_t value_size;      /* size in bytes of each variable element */
    int ndims;		    /* number of dimensions for variable */
    size_t dimsizes[NC_MAX_VAR_DIMS]; /* variable dimension sizes */
    long long nvalues = 1;
    int dim;

    memset((void*)iterp,0,sizeof(nciter_t)); /* make sure it is initialized */

    stat = nciter_ndims(vsym, &ndims);
    CHECK(stat, nciter_ndims);
    stat = nciter_dimlens(vsym,dimsizes);
    CHECK(stat, nciter_dimlens);
    /* compute total # elements */
    nvalues=1;
    for(dim = 0; dim < ndims; dim++) {
	nvalues *= dimsizes[dim];
    }
    stat = nciter_vartype(vsym, &vartype);
    CHECK(stat, nciter_vartype);
    stat = nciter_valuesize(vartype,&value_size);
    CHECK(stat, nciter_valuesize);
    stat = nc_blkio_init(bufsize, value_size, ndims, dimsizes, iterp);
    CHECK(stat, nc_blkio_init);
    iterp->to_get = 0;
    return stat;
}
Beispiel #2
0
/* Initialize iteration for a variable.  Just a wrapper for
 * nc_blkio_init() that makes the netCDF calls needed to initialize
 * lower-level iterator. */
int
nc_get_iter(Symbol* vsym,
	     size_t bufsize,   /* size in bytes of memory buffer */
	     nciter_t *iterp    /* returned opaque iteration state */) 
{
    int stat = NC_NOERR;
    Symbol* vartype;
    size_t value_size;      /* size in bytes of each variable element */
    int ndims;		    /* number of dimensions for variable */
    size_t dimsizes[NC_MAX_VAR_DIMS]; /* variable dimension sizes */
    size_t chunksizes[NC_MAX_VAR_DIMS]; /* corresponding chunk sizes */
    long long nvalues = 1;
    int dim;
    int chunked = 0;

    memset((void*)iterp,0,sizeof(nciter_t)); /* make sure it is initialized */

    stat = nciter_ndims(vsym, &ndims);
    CHECK(stat, nciter_ndims);
    stat = nciter_dimlens(vsym,dimsizes);
    /* compute total # elements */
    nvalues=1;
    for(dim = 0; dim < ndims; dim++) {
	nvalues *= dimsizes[dim];
    }
    stat = nciter_vartype(vsym, &vartype);
    CHECK(stat, nciter_vartype);
    stat = nciter_valuesize(vartype,&value_size);
    CHECK(stat, nciter_valuesize);
#ifdef USE_NETCDF4    
#ifdef DOCHUNK
    {
	int contig = 1;
	if(ndims > 0) {
	    stat = nc_inq_var_chunking(ncid, varid, &contig, NULL);
	    CHECK(stat, nc_inq_var_chunking);
	}
	if(contig == 0) {	/* chunked */
	    stat = nc_inq_var_chunking(ncid, varid, &contig, chunksizes);
	    CHECK(stat, nc_inq_var_chunking);
	    chunked = 1;
	}
    }
#else
    chunked = 0;
#endif
#endif	/* USE_NETCDF4 */
    stat = nc_blkio_init(bufsize, value_size, ndims, dimsizes, 
			 chunked, chunksizes, iterp);
    CHECK(stat, nc_blkio_init);
    iterp->to_get = 0;
    return stat;
}