Next: NF_GET_VARM_ type, Previous: NF_GET_VARA_ type, Up: Variables
The NF_GET_VARS_ type family of functions read a subsampled (strided) array section of values from a netCDF variable of an open netCDF dataset. The subsampled array section is specified by giving a corner, a vector of edge lengths, and a stride vector. The values are read with the first dimension of the netCDF variable varying fastest. The netCDF dataset must be in data mode.
INTEGER FUNCTION NF_GET_VARS_TEXT (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*),CHARACTER*(*) text) INTEGER FUNCTION NF_GET_VARS_INT1 (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*),INTEGER*1 i1vals(*)) INTEGER FUNCTION NF_GET_VARS_INT2 (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*),INTEGER*2 i2vals(*)) INTEGER FUNCTION NF_GET_VARS_INT (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*), INTEGER ivals(*)) INTEGER FUNCTION NF_GET_VARS_REAL (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*), REAL rvals(*)) INTEGER FUNCTION NF_GET_VARS_DOUBLE(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER STRIDE(*), DOUBLE dvals(*))
NCID
VARID
START
COUNT
STRIDE
text
i1vals
i2vals
ivals
rvals
dvals
NF_GET_VARS_ type returns the value NF_NOERR if no errors occurred. Otherwise, the returned status indicates an error. Possible causes of errors include:
Here is an example using NF_GET_VARS_DOUBLE to read every other value in each dimension of the variable named rh from an existing netCDF dataset named foo.nc. Values are assigned, using the same dimensional strides, to a 2-parameter array. For simplicity in this example, we assume that we know that rh is dimensioned with lon, lat, and time, and that there are ten lon values, five lat values, and three time values.
INCLUDE 'netcdf.inc' ... PARAMETER (NDIMS=3) ! number of dimensions PARAMETER (TIMES=3, LATS=5, LONS=10) ! dimension lengths INTEGER STATUS, NCID INTEGER RHID ! variable ID INTEGER START(NDIMS), COUNT(NDIMS), STRIDE(NDIMS) DOUBLE DATA(LONS, LATS, TIMES) DATA START /1, 1, 1/ ! start at first value DATA COUNT /LONS, LATS, TIMES/ DATA STRIDE /2, 2, 2/ ... STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ... STATUS = NF_INQ_VARID (NCID, 'rh', RHID) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) STATUS = NF_GET_VARS_DOUBLE(NCID,RHID,START,COUNT,STRIDE,DATA(1,1,1)) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)