Next: NF_GET_VARS_ type, Previous: NF_GET_VAR_ type, Up: Variables
The members of the NF_GET_VARA_ type family of functions read an array of values from a netCDF variable of an open netCDF dataset. The array is specified by giving a corner and a vector of edge lengths. The values are read into consecutive locations with the first dimension varying fastest. The netCDF dataset must be in data mode.
INTEGER FUNCTION NF_GET_VARA_TEXT(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), CHARACTER*(*) text) INTEGER FUNCTION NF_GET_VARA_INT1(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER*1 i1vals(*)) INTEGER FUNCTION NF_GET_VARA_INT2(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER*2 i2vals(*)) INTEGER FUNCTION NF_GET_VARA_INT (INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), INTEGER ivals(*)) INTEGER FUNCTION NF_GET_VARA_REAL(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), REAL rvals(*)) INTEGER FUNCTION NF_GET_VARA_DOUBLE(INTEGER NCID, INTEGER VARID, INTEGER START(*), INTEGER COUNT(*), DOUBLE dvals(*))
NCID
VARID
START
COUNT
text
i1vals
i2vals
ivals
rvals
dvals
NF_GET_VARA_ 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_VARA_DOUBLE to read all the values of the variable named rh from an existing netCDF dataset named foo.nc. 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) DOUBLE RHVALS(LONS, LATS, TIMES) DATA START /1, 1, 1/ ! start at first value DATA COUNT /LONS, LATS, TIMES/ ! get all the values ... 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_VARA_DOUBLE (NCID, RHID, START, COUNT, RHVALS) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)