Next: nc_put_varm_ type, Previous: nc_put_vara_ type, Up: Variables
Each member of the family of functions nc_put_vars_ type writes a subsampled (strided) array section of values into a netCDF variable of an open netCDF dataset. The subsampled array section is specified by giving a corner, a vector of counts, and a stride vector. The netCDF dataset must be in data mode.
int nc_put_vars_text (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const char *tp);
int nc_put_vars_uchar (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const unsigned char *up);
int nc_put_vars_schar (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const signed char *cp);
int nc_put_vars_short (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const short *sp);
int nc_put_vars_int (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const int *ip);
int nc_put_vars_long (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const long *lp);
int nc_put_vars_float (int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const float *fp);
int nc_put_vars_double(int ncid, int varid, const size_t start[],
const size_t count[], const ptrdiff_t stride[],
const double *dp);
ncidvaridstartcountstridetpupcpspiplpfpdpnc_put_vars_ type returns the value NC_NOERR if no errors occurred. Otherwise, the returned status indicates an error. Possible causes of errors include:
Here is an example of using nc_put_vars_float to write – from an internal array – every other point of a netCDF variable named rh which is described by the C declaration float rh[4][6] (note the size of the dimensions):
#include <netcdf.h>
...
#define NDIM 2 /* rank of netCDF variable */
int ncid; /* netCDF ID */
int status; /* error status */
int rhid; /* variable ID */
static size_t start[NDIM] /* netCDF variable start point: */
= {0, 0}; /* first element */
static size_t count[NDIM] /* size of internal array: entire */
= {2, 3}; /* (subsampled) netCDF variable */
static ptrdiff_t stride[NDIM] /* variable subsampling intervals: */
= {2, 2}; /* access every other netCDF element */
float rh[2][3]; /* note subsampled sizes for */
/* netCDF variable dimensions */
...
status = nc_open("foo.nc", NC_WRITE, &ncid);
if (status != NC_NOERR) handle_error(status);
...
status = nc_inq_varid(ncid, "rh", &rhid);
if (status != NC_NOERR) handle_error(status);
...
status = nc_put_vars_float(ncid, rhid, start, count, stride, rh);
if (status != NC_NOERR) handle_error(status);