manpagez: man pages & more
man netcdf_f77(3)
Home | html | info | man
NETCDF(3)                  UNIDATA LIBRARY FUNCTIONS                 NETCDF(3)




NAME

       netcdf - Unidata's Network Common Data Form (netCDF) library interface


SYNOPSIS

       include netcdf.inc


   Most Systems:
       f77 ...  -lnetcdf -lhdf5_hl -lhdf5 -lz -lm


   CRAY PVP Systems:
       f90 -dp -i64 ... -lnetcdf

       Complete  documentation  for  the  netCDF libraries can be found at the
       netCDF website: http://www.unidata.ucar.edu/software/netcdf/.



LIBRARY VERSION

       This document describes versions 3 and 4 of Unidata netCDF  data-access
       interface for the FORTRAN programming language.

       character*80 nf_inq_libvers(void)

              Returns  a string identifying the version of the netCDF library,
              and when it was built, like: "3.1a of Aug 22 1996 12:57:47 $".

       The RCS ident(1) command will find a string like "$Id: @(#) netcdf  li-
       brary  version 3.1a of Sep  6 1996 15:56:26 $" in the library. The SCCS
       what(1) command will find a string like "netcdf library version 3.1a of
       Aug 23 1996 16:07:40 $".


RETURN VALUES

       All netCDF functions (except nf_inq_libvers() and nf_strerror()) return
       an integer status.

       If this returned status value is not equal to NF_NOERR (zero), it indi-
       cates that an error occurred. The possible status values are defined in
       netcdf.inc.

       character*80 nf_strerror(integer status)

              Returns a string textual translation of the status  value,  like
              "Attribute  or variable name contains illegal characters" or "No
              such file or directory".



FILE OPERATIONS

       integer function nf_create(character*(*) path, integer  cmode,  integer
              ncid)

              Creates  a  new netCDF dataset at path, returning a netCDF ID in
              ncid.  The argument cmode may include the bitwise-or of the fol-
              lowing flags: NF_NOCLOBBER to protect existing datasets (default
              silently blows them away), NF_SHARE for synchronous dataset  up-
              dates for classic format files (default is to buffer accesses),

              When  a  netCDF  dataset is created, is is opened NF_WRITE.  The
              new netCDF dataset is in define mode.  NF_64BIT_OFFSET.  to cre-
              ate  a  file  in the 64-bit offset format (as opposed to classic
              format, the default).  NF_TRUE to create a  netCDF-4/HDF5  file,
              and NF_CLASSIC_MODEL to guarantee that netCDF-4/HDF5 files main-
              tain compatibility with the netCDF classic data model.

       integer function nf__create(character*(*) path, integer cmode,  integer
              initialsize, integer chunksize, integer ncid)

              Like  nf_create()  but has additional performance tuning parame-
              ters.

              The argument initialsize sets the initial size of  the  file  at
              creation time.

              See nf__open() below for an explanation of the chunksize parame-
              ter.

       integer function  nf_open(character*(*)  path,  integer  mode,  integer
              ncid)

              (Corresponds to ncopn() in version 2)

              Opens a existing netCDF dataset at path returning a netCDF ID in
              ncid.  The type of access is described by  the  mode  parameter,
              which  may  include  the  bitwise-or  of  the  following  flags:
              NF_WRITE for read-write access (default read-only), NF_SHARE for
              synchronous dataset updates (default is to buffer accesses), and
              NF_LOCK (not yet implemented).

              As of NetCDF version 4.1, and if TRUE support was  enabled  when
              the  NetCDF  library was built, the path parameter may specify a
              TRUE URL. In this case, the access mode is forced to be read-on-
              ly.

       integer  function  nf__open(character*(*)  path,  integer mode, integer
              chunksize, integer ncid)

              Like nf_open() but has an additional performance tuning  parame-
              ter.

              The  argument  referenced  by  chunksize controls a space versus
              time tradeoff, memory allocated in  the  netcdf  library  versus
              number  of  system calls.  Because of internal requirements, the
              value may not be set to exactly the value requested.  The actual
              value chosen is returned by reference.  Using the value NF_SIZE-
              HINT_DEFAULT causes the library to choose a  default.   How  the
              system  choses  the default depends on the system.  On many sys-
              tems, the "preferred I/O  block  size"  is  available  from  the
              stat()  system  call, struct stat member st_blksize.  If this is
              available it is used. Lacking that, twice the system pagesize is
              used.   Lacking  a call to discover the system pagesize, we just
              set default chunksize to 8192.

              The chunksize is a property of a given  open  netcdf  descriptor
              ncid, it is not a persistent property of the netcdf dataset.

              As  with  nf__open(), the path parameter may specify a TRUE URL,
              but the tuning parameters are ignored.

       integer function nf_redef(integer ncid)

              (Corresponds to ncredf() in version 2)

              Puts an open netCDF dataset into  define  mode,  so  dimensions,
              variables, and attributes can be added or renamed and attributes
              can be deleted.

       integer function nf_enddef(integer ncid)

              (Corresponds to ncendf() in version 2)

              Takes an open netCDF dataset out of define  mode.   The  changes
              made  to  the  netCDF  dataset  while  it was in define mode are
              checked and committed to disk if no problems occurred.  Some da-
              ta  values may be written as well, see "VARIABLE PREFILLING" be-
              low.  After a successful call, variable  data  can  be  read  or
              written to the dataset.

       integer  function  nf__enddef(integer  ncid, integer h_minfree, integer
              v_align, integer v_minfree, integer r_align)

              Like nf_enddef() but has additional performance  tuning  parame-
              ters.

              Caution: this function exposes internals of the netcdf version 1
              file format.  It may not be available on future netcdf implemen-
              tations.

              The  current netcdf file format has three sections, the "header"
              section, the data section for fixed size variables, and the data
              section  for variables which have an unlimited dimension (record
              variables).  The header begins at the beginning of the file. The
              index  (offset)  of  the  beginning of the other two sections is
              contained in the header. Typically, there is  no  space  between
              the  sections.  This  causes  copying  overhead to accrue if one
              wishes to change the size of the sections, as  may  happen  when
              changing  names  of  things,  text  attribute values, adding at-
              tributes or adding variables. Also, for buffered i/o, there  may
              be advantages to aligning sections in certain ways.

              The  minfree  parameters  allow  one  to control costs of future
              calls to nf_redef(),  nf_enddef()  by  requesting  that  minfree
              bytes be available at the end of the section.  The h_minfree pa-
              rameter sets the pad at the end of  the  "header"  section.  The
              v_minfree  parameter sets the pad at the end of the data section
              for fixed size variables.

              The align parameters allow one to set the alignment of  the  be-
              ginning of the corresponding sections. The beginning of the sec-
              tion is rounded up to an index which is a multiple of the  align
              parameter.  The  flag  value NF_ALIGN_CHUNK tells the library to
              use the chunksize (see  above)  as  the  align  parameter.   The
              v_align parameter controls the alignment of the beginning of the
              data section for fixed size variables.   The  r_align  parameter
              controls  the alignment of the beginning of the data section for
              variables which have an unlimited dimension (record  variables).

              The  file  format requires mod 4 alignment, so the align parame-
              ters are silently rounded up to multiples of 4. The usual  call,
              nf_enddef(ncid) is equivalent to nf__enddef(ncid, 0, 4, 0, 4).

              The  file format does not contain a "record size" value, this is
              calculated from the sizes of the record variables. This unfortu-
              nate  fact prevents us from providing minfree and alignment con-
              trol of the "records" in a netcdf file. If you  add  a  variable
              which  has an unlimited dimension, the third section will always
              be copied with the new variable added.

       integer function nf_sync(integer ncid)

              (Corresponds to ncsnc() in version 2)

              Unless the NF_SHARE bit is set in nf_open() or nf_create(),  ac-
              cesses  to the underlying netCDF dataset are buffered by the li-
              brary. This function synchronizes the state  of  the  underlying
              dataset   and  the  library.   This  is  done  automatically  by
              nf_close() and nf_enddef().

       integer function nf_abort(integer ncid)

              (Corresponds to ncabor() in version 2)

              You don't need to call this function.  This function  is  called
              automatically by nf_close() if the netCDF was in define mode and
              something goes wrong with the commit.   If  the  netCDF  dataset
              isn't  in  define  mode,  then  this  function  is equivalent to
              nf_close().  If  it  is  called  after  nf_redef(),  but  before
              nf_enddef(),  the  new  definitions  are  not  committed and the
              dataset is closed.  If it is called after nf_create() but before
              nf_enddef(), the dataset disappears.

       integer function nf_close(integer ncid)

              (Corresponds to ncclos() in version 2)

              Closes  an  open  netCDF  dataset.   If the dataset is in define
              mode, nf_enddef()  will  be  called  before  closing.   After  a
              dataset  is closed, its ID may be reassigned to another dataset.

       integer function nf_inq(integer ncid, integer ndims, integer nvars, in-
              teger natts, integer unlimdimid)

       integer function nf_inq_ndims(integer ncid, integer ndims)

       integer function nf_inq_nvars(integer ncid, integer nvars)

       integer function nf_inq_natts(integer ncid, integer natts)

       integer function nf_inq_unlimdim(integer ncid, integer unlimdimid)

       integer function nf_inq_format(integer ncid, integer formatn)

              Use  these  functions  to  find out what is in a netCDF dataset.
              Upon successful return, ndims will contain  the number of dimen-
              sions  defined  for  this netCDF dataset, nvars will contain the
              number of variables,  natts  will  contain  the  number  of  at-
              tributes,  and  unlimdimid  will contain the dimension ID of the
              unlimited dimension if one exists, or 0 otherwise.  formatn will
              contain  the  version  number  of  the  dataset <format>, one of
              NF_FORMAT_CLASSIC,   NF_FORMAT_64BIT,   NF_FORMAT_NETCDF4,    or
              NF_FORMAT_NETCDF4_CLASSIC.


       integer  function  nf_def_dim(integer ncid, character*(*) name, integer
              len, integer dimid)

              (Corresponds to ncddef() in version 2)

              Adds a new dimension to an open netCDF dataset, which must be in
              define  mode.   name  is the dimension name.  dimid will contain
              the dimension ID of the newly created dimension.



USER DEFINED TYPES

       Users many define types for a netCDF-4/HDF5 file (unless  the  NF_CLAS-
       SIC_MODEL  was  used  when the file was creates). Users may define com-
       pound types, variable length  arrays,  enumeration  types,  and  opaque
       types.



       integer  function  nf_def_compound(integer  ncid, integer size, charac-
              ter*(*) name, integer typeidp)

              Define a compound type.

       integer function nf_insert_compound(integer  ncid,  integer  ,  charac-
              ter*(*) name, integer offset, integer field_typeid)

              Insert  an  element  into a compound type. May not be done after
              type has been used, or after the type has  been  written  by  an
              enddef.

       integer function nf_insert_array_compound(integer ncid, integer , char-
              acter*(*) name, integer offset,  integer  field_typeid,  integer
              ndims, integer dim_sizes(1))

              Insert an array into a compound type.

       integer  function  nf_inq_type(integer  ncid,  integer  , character*(*)
              name, integer sizep)

              Learn about a type.

       integer function nf_inq_compound(integer ncid, integer ,  character*(*)
              name, integer sizep, integer nfieldsp)

       integer  function  nf_inq_compound_name(integer ncid, integer , charac-
              ter*(*) name)

       integer function nf_inq_compound_size(integer ncid, integer  ,  integer
              sizep)

       integer  function nf_inq_compound_nfields(integer ncid, integer , inte-
              ger nfieldsp)

       integer function nf_inq_compound_fieldname(integer ncid, integer ,  in-
              teger fieldid, character*(*) name)

       integer  function  nf_inq_compound_fieldindex(integer  ncid,  integer ,
              character*(*) name, integer fieldidp)

       integer function nf_inq_compound_fieldoffset(integer  ncid,  integer  ,
              integer fieldid, integer offsetp)

       integer  function nf_inq_compound_fieldtype(integer ncid, integer , in-
              teger fieldid, integer field_typeid)

       integer function nf_inq_compound_fieldndims(integer ncid, integer , in-
              teger fieldid, integer ndims)

       integer function nf_inq_compound_fielddim_sizes(integer ncid, integer ,
              integer fieldid, integer dim_sizes(1))

              Learn about a compound type.

       integer function nf_def_vlen(integer ncid, character*(*) name,  integer
              base_typeid, integer xtypep)

              Create a varaible length array type.

       integer  function  nf_inq_vlen(integer  ncid,  integer  , character*(*)
              name, integer datum_sizep, integer base_nc_typep)

              Learn about a varaible length array type.

       integer function nf_free_vlen(nc_vlen_t *vl)

              Free memory comsumed by reading data of a varaible length  array
              type.

       integer  function  nf_put_vlen_element(integer  ncid,  integer , void *
              vlen_element, integer len, void * data)

              Write one VLEN.

       integer function nf_get_vlen_element(integer ncid,  integer  ,  void  *
              vlen_element, integer len, void * data)

              Read one VLEN.

       integer function nf_free_string(integer len, char **data)

              Free memory comsumed by reading data of a string type.

       integer function nf_inq_user_type(integer ncid, integer , character*(*)
              name, integer , integer , integer , integer )

              Learn about a user define type.

       integer function nf_def_enum(integer ncid, integer base_typeid, charac-
              ter*(*) name, integer typeidp)

              Define an enumeration type.

       integer  function  nf_insert_enum(integer  ncid,  integer  base_typeid,
              character*(*) name, const void *value)

              Insert a name-value pair into enumeration type.

       integer function nf_inq_enum_member(integer ncid, integer xtype,  inte-
              ger idx, character*(*) name, void *value)

       integer function nf_inq_enum_ident(integer ncid, integer xtype, integer
              idx, integer*8 value, character*(*) identifier)

              Learn about a name-value pair into enumeration type.

       integer function  nf_def_opaque(integer  ncid,  integer  size,  charac-
              ter*(*) name, integer xtypep)

              Create an opaque type.

       integer  function  nf_inq_opaque(integer  ncid,  integer xtype, charac-
              ter*(*) name, integer sizep)

              Learn about opaque type.



GROUPS

       Users may organize data into hierarchical groups in netCDF-4/HDF5 files
       (unless NF_CLASSIC_MODEL was used when creating the file).

       integer  function  nf_inq_grps(integer  ncid,  integer numgrps, integer
              ncids(1))

              Learn how many groups (and their ncids) are available  from  the
              group represented by ncid.

       integer function nf_inq_grpname(integer ncid, character*(*) name)

       integer function nf_inq_grpname_full(integer ncid, integer len, charac-
              ter*(*) name)

       integer function nf_inq_grpname_len(integer ncid, integer len)

       integer function nf_inq_grp_parent(integer ncid, integer ncid)

       integer function nf_inq_grp_ncid(integer ncid, character*(*) name,  in-
              teger ncid)

       integer function nf_inq_full_ncid(integer ncid, character*(*) name, in-
              teger ncid)

              Learn about a group.

       integer function nf_inq_varids(integer ncid, integer nvars, integer )

              Get the varids in a group.

       integer function nf_inq_dimids(integer  ncid,  integer  ndims,  integer
              dimids, integer include_parents)

              Get the dimids in a group and (potentially) its parents.

       integer  function  nf_inq_typeids(integer ncid, integer ntypes, integer
              typeids(1))

              Get the typeids of user-defined types in a group.

       integer function nf_def_grp(integer ncid, character*(*)  name,  integer
              ncid)

              Create a group.




DIMENSIONS

       integer function nf_inq_dimid(integer ncid, character*(*) name, integer
              dimid)

              (Corresponds to ncdid() in version 2)

              Given a dimension name, returns the ID of a netCDF dimension  in
              dimid.

       integer  function nf_inq_dim(integer ncid, integer dimid, character*(*)
              name, integer len)

       integer function nf_inq_dimname(integer ncid,  integer  dimid,  charac-
              ter*(*) name)

       integer  function  nf_inq_dimlen(integer  ncid,  integer dimid, integer
              len)

              Use these functions to find out about a dimension.

              name should be  big enough (NF_MAX_NAME) to hold  the  dimension
              name  as  the name will be copied into your storage.  The length
              return parameter, len will contain the size  of  the  dimension.
              For  the unlimited dimension, the returned length is the current
              maximum value used for writing into any of the  variables  which
              use the dimension.

       integer  function  nf_rename_dim(integer  ncid,  integer dimid, charac-
              ter*(*) name)

              (Corresponds to ncdren() in version 2)

              Renames an existing dimension in an open netCDF dataset.  If the
              new name is longer than the old name, the netCDF dataset must be
              in define mode.  You cannot rename a dimension to have the  same
              name as another dimension.


VARIABLES

       integer  function  nf_def_var(integer ncid, character*(*) name, integer
              xtype, integer ndims, integer dimids(1), integer varid)

              (Corresponds to ncvdef() in version 2)

              Adds a new variable to a netCDF dataset. The netCDF must  be  in
              define mode.  varid will be set to the netCDF variable ID.

       integer function nf_inq_varid(integer ncid, character*(*) name, integer
              varid)

              (Corresponds to ncvid() in version 2)

              Returns the ID of a netCDF variable in varid given its name.

       integer function nf_inq_var(integer ncid, integer varid,  character*(*)
              name,  integer  xtype, integer ndims, integer dimids(1), integer
              natts)

       integer function nf_inq_varname(integer ncid,  integer  varid,  charac-
              ter*(*) name)

       integer  function  nf_inq_vartype(integer  ncid, integer varid, integer
              xtype)

       integer function nf_inq_varndims(integer ncid, integer  varid,  integer
              ndims)

       integer  function  nf_inq_vardimid(integer ncid, integer varid, integer
              dimids(1))

       integer function nf_inq_varnatts(integer ncid, integer  varid,  integer
              natts)

              Returns information about a netCDF variable, given its ID.


       integer  function  nf_rename_var(integer  ncid,  integer varid, charac-
              ter*(*) name)

              (Corresponds to ncvren() in version 2)

              Changes the name of a netCDF  variable.   If  the  new  name  is
              longer  than  the  old  name, the netCDF must be in define mode.
              You cannot rename a variable to have the name  of  any  existing
              variable.



VARIABLES in NETCDF-4 FILES

       The   following   functions   may  only  be  used  on  variables  in  a
       netCDF-4/HDF5 data file. These functions must be called after the vari-
       able is defined, but before an enddef call.

       integer  function nf_def_var_deflate(integer ncid, integer varid, inte-
       ger shuffle, integer deflate, integer deflate_level)

       Turn on compression and/or shuffle filter. (Shuffle filter is only use-
       ful for integer data.)

       integer  function nf_inq_var_deflate(integer ncid, integer varid, inte-
              ger shufflep, integer deflatep, integer deflate_levelp)

              Learn about a variable's deflate settings.

       integer function nf_def_var_fletcher32(integer ncid, integer varid, in-
              teger fletcher32)

              Turn on checksumming for a variable.

       integer function nf_inq_var_fletcher32(integer ncid, integer varid, in-
              teger fletcher32)

              Learn about checksumming for a variable.

       integer function nf_def_var_chunking(integer ncid, integer varid, inte-
              ger storage, integer chunksizesp(1))

              Set chunksizes for a variable.

       integer function nf_inq_var_chunking(integer ncid, integer varid, inte-
              ger storagep, integer chunksizesp(1))

              Learn about chunksizes for a variable.

       integer function nf_def_var_fill(integer ncid, integer  varid,  integer
              no_fill, integer chunksizesp(1))

              Set a fill value for a variable.

       integer  function  nf_inq_var_fill(integer ncid, integer varid, integer
              storagep, integer chunksizesp(1))

              Learn the fill value for a variable.

       integer function nf_def_var_endian(integer ncid, integer varid, integer
              endian)

              Set endianness of variable.

       integer function nf_inq_var_endian(integer ncid, integer varid, integer
              endianp)

              Learn the endianness of a variable.




WRITING AND READING WHOLE VARIABLES

       integer function nf_put_var_text(integer ncid, integer  varid,  charac-
              ter*(*) out)


       integer function nf_put_var_int1(integer ncid, integer varid, integer*1
              out(1))

       integer function nf_put_var_int2(integer ncid, integer varid, integer*2
              out(1))

       integer  function  nf_put_var_int(integer  ncid, integer varid, integer
              out(1))


       integer function  nf_put_var_real(integer  ncid,  integer  varid,  real
              out(1))

       integer function nf_put_var_double(integer ncid, integer varid, double-
              precision out(1))

       integer function nf_put_var_ubyte(integer ncid,  integer  varid,  inte-
              ger*1 out(1))

       integer  function  nf_put_var_ushort(integer ncid, integer varid, inte-
              ger*2 out(1))

       integer function nf_put_var_uint(integer ncid, integer varid, integer*4
              out(1))

       integer  function  nf_put_var_(integer  ncid,  integer varid, integer*8
              out(1))

       integer function nf_put_var_uint64(integer ncid, integer  varid,  inte-
              ger*8 out(1))

       integer function nf_put_var_string(integer ncid, integer varid, charac-
              ter* out(1))



              Writes an entire netCDF variable (i.e.  all  the  values).   The
              netCDF  dataset  must be open and in data mode.  The type of the
              data is specified in the function name, and it is  converted  to
              the external type of the specified variable, if possible, other-
              wise an NF_ERANGE error is returned. Note that rounding  is  not
              performed  during  the  conversion.  Floating  point numbers are
              truncated when converted to integers.

       integer function nf_get_var_text(integer ncid, integer  varid,  charac-
              ter*(*) in)


       integer function nf_get_var_int1(integer ncid, integer varid, integer*1
              in(1))

       integer function nf_get_var_int2(integer ncid, integer varid, integer*2
              in(1))

       integer  function  nf_get_var_int(integer  ncid, integer varid, integer
              in(1))


       integer function  nf_get_var_real(integer  ncid,  integer  varid,  real
              in(1))

       integer function nf_get_var_double(integer ncid, integer varid, double-
              precision in(1))

       integer function nf_get_var_ubyte(integer ncid,  integer  varid,  inte-
              ger*1 in(1))

       integer  function  nf_get_var_ushort(integer ncid, integer varid, inte-
              ger*2 in(1))

       integer function nf_get_var_uint(integer ncid, integer varid, integer*4
              in(1))

       integer  function  nf_get_var_(integer  ncid,  integer varid, integer*8
              in(1))

       integer function nf_get_var_uint64(integer ncid, integer  varid,  inte-
              ger*8 in(1))

       integer function nf_get_var_string(integer ncid, integer varid, charac-
              ter* in(1))



              Reads an entire netCDF variable  (i.e.  all  the  values).   The
              netCDF  dataset must be open and in data mode.  The data is con-
              verted from the external type of the specified variable, if nec-
              essary,  to the type specified in the function name.  If conver-
              sion is not possible, an NF_ERANGE error is returned.


WRITING AND READING ONE DATUM

       integer function nf_put_var1_text(integer ncid, integer varid,  integer
              index(1), character*1 *out)


       integer  function nf_put_var1_int1(integer ncid, integer varid, integer
              index(1), integer*1 *out)

       integer function nf_put_var1_int2(integer ncid, integer varid,  integer
              index(1), integer*2 *out)

       integer  function  nf_put_var1_int(integer ncid, integer varid, integer
              index(1), integer *out)


       integer function nf_put_var1_real(integer ncid, integer varid,  integer
              index(1), real *out)

       integer  function nf_put_var1_double(integer ncid, integer varid, inte-
              ger index(1), doubleprecision *out)

       integer function nf_put_var1_ubyte(integer ncid, integer varid, integer
              index(1), integer*1 *out)

       integer  function nf_put_var1_ushort(integer ncid, integer varid, inte-
              ger index(1), integer*2 *out)

       integer function nf_put_var1_uint(integer ncid, integer varid,  integer
              index(1), integer*4 *out)

       integer  function nf_put_var1_(integer ncid, integer varid, integer in-
              dex(1), integer*8 *out)

       integer function nf_put_var1_uint64(integer ncid, integer varid,  inte-
              ger index(1), integer*8 *out)

       integer  function nf_put_var1_string(integer ncid, integer varid, inte-
              ger index(1), character* *out)



              Puts a single data value into a variable at the  position  index
              of an open netCDF dataset that is in data mode.  The type of the
              data is specified in the function name, and it is  converted  to
              the external type of the specified variable, if possible, other-
              wise an NF_ERANGE error is returned.

       integer function nf_get_var1_text(integer ncid, integer varid,  integer
              index(1), character*1 in)


       integer  function nf_get_var1_int1(integer ncid, integer varid, integer
              index(1), integer*1 in)

       integer function nf_get_var1_int2(integer ncid, integer varid,  integer
              index(1), integer*2 in)

       integer  function  nf_get_var1_int(integer ncid, integer varid, integer
              index(1), integer in)


       integer function nf_get_var1_real(integer ncid, integer varid,  integer
              index(1), real in)

       integer  function nf_get_var1_double(integer ncid, integer varid, inte-
              ger index(1), doubleprecision in)

       integer function nf_get_var1_ubyte(integer ncid, integer varid, integer
              index(1), integer*1 in)

       integer  function nf_get_var1_ushort(integer ncid, integer varid, inte-
              ger index(1), integer*2 in)

       integer function nf_get_var1_uint(integer ncid, integer varid,  integer
              index(1), integer*4 in)

       integer  function nf_get_var1_(integer ncid, integer varid, integer in-
              dex(1), integer*8 in)

       integer function nf_get_var1_uint64(integer ncid, integer varid,  inte-
              ger index(1), integer*8 in)

       integer  function nf_get_var1_string(integer ncid, integer varid, inte-
              ger index(1), character* in)



              Gets a single data value from a variable at the  position  index
              of  an  open  netCDF  dataset that is in data mode.  The data is
              converted from the external type of the specified  variable,  if
              necessary,  to the type specified in the function name.  If con-
              version is not possible, an NF_ERANGE error is returned.


WRITING AND READING AN ARRAY

       integer function nf_put_vara_text(integer ncid, integer varid,  integer
              start(1), integer count(1), character*(*) out)


       integer  function nf_put_vara_int1(integer ncid, integer varid, integer
              start(1), integer count(1), integer*1 out(1))

       integer function nf_put_vara_int2(integer ncid, integer varid,  integer
              start(1), integer count(1), integer*2 out(1))

       integer  function  nf_put_vara_int(integer ncid, integer varid, integer
              start(1), integer count(1), integer out(1))


       integer function nf_put_vara_real(integer ncid, integer varid,  integer
              start(1), integer count(1), real out(1))

       integer  function nf_put_vara_double(integer ncid, integer varid, inte-
              ger start(1), integer count(1), doubleprecision out(1))

       integer function nf_put_vara_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer*1 out(1))

       integer  function nf_put_vara_ushort(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer*2 out(1))

       integer function nf_put_vara_uint(integer ncid, integer varid,  integer
              start(1), integer count(1), integer*4 out(1))

       integer  function  nf_put_vara_(integer  ncid,  integer  varid, integer
              start(1), integer count(1), integer*8 out(1))

       integer function nf_put_vara_uint64(integer ncid, integer varid,  inte-
              ger start(1), integer count(1), integer*8 out(1))

       integer  function nf_put_vara_string(integer ncid, integer varid, inte-
              ger start(1), integer count(1), character* out(1))



              Writes an array section of values into a netCDF variable  of  an
              open netCDF dataset, which must be in data mode.  The array sec-
              tion is specified by the start and count vectors, which give the
              starting  index  and count of values along each dimension of the
              specified variable.  The type of the data is  specified  in  the
              function name and is converted to the external type of the spec-
              ified variable, if possible, otherwise an NF_ERANGE error is re-
              turned.

       integer  function nf_get_vara_text(integer ncid, integer varid, integer
              start(1), integer count(1), character*(*) in)


       integer function nf_get_vara_int1(integer ncid, integer varid,  integer
              start(1), integer count(1), integer*1 in(1))

       integer  function nf_get_vara_int2(integer ncid, integer varid, integer
              start(1), integer count(1), integer*2 in(1))

       integer function nf_get_vara_int(integer ncid, integer  varid,  integer
              start(1), integer count(1), integer in(1))


       integer  function nf_get_vara_real(integer ncid, integer varid, integer
              start(1), integer count(1), real in(1))

       integer function nf_get_vara_double(integer ncid, integer varid,  inte-
              ger start(1), integer count(1), doubleprecision in(1))

       integer function nf_get_vara_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer*1 in(1))

       integer function nf_get_vara_ushort(integer ncid, integer varid,  inte-
              ger start(1), integer count(1), integer*2 in(1))

       integer  function nf_get_vara_uint(integer ncid, integer varid, integer
              start(1), integer count(1), integer*4 in(1))

       integer function  nf_get_vara_(integer  ncid,  integer  varid,  integer
              start(1), integer count(1), integer*8 in(1))

       integer  function nf_get_vara_uint64(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer*8 in(1))

       integer function nf_get_vara_string(integer ncid, integer varid,  inte-
              ger start(1), integer count(1), character* in(1))



              Reads  an  array  section of values from a netCDF variable of an
              open netCDF dataset, which must be in data mode.  The array sec-
              tion is specified by the start and count vectors, which give the
              starting index and count of values along each dimension  of  the
              specified  variable.   The  data  is converted from the external
              type of the specified variable, if necessary, to the type speci-
              fied  in  the  function name.  If conversion is not possible, an
              NF_ERANGE error is returned.


WRITING AND READING A SLICED ARRAY

       integer function nf_put_vars_text(integer ncid, integer varid,  integer
              start(1),  integer  count(1),  integer  stride(1), character*(*)
              out)


       integer function nf_put_vars_int1(integer ncid, integer varid,  integer
              start(1), integer count(1), integer stride(1), integer*1 out(1))

       integer function nf_put_vars_int2(integer ncid, integer varid,  integer
              start(1), integer count(1), integer stride(1), integer*2 out(1))

       integer function nf_put_vars_int(integer ncid, integer  varid,  integer
              start(1), integer count(1), integer stride(1), integer out(1))


       integer  function nf_put_vars_real(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), real out(1))

       integer function nf_put_vars_double(integer ncid, integer varid,  inte-
              ger  start(1), integer count(1), integer stride(1), doublepreci-
              sion out(1))

       integer function nf_put_vars_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), integer*1 out(1))

       integer function nf_put_vars_ushort(integer ncid, integer varid,  inte-
              ger  start(1),  integer  count(1),  integer stride(1), integer*2
              out(1))

       integer function nf_put_vars_uint(integer ncid, integer varid,  integer
              start(1), integer count(1), integer stride(1), integer*4 out(1))

       integer function  nf_put_vars_(integer  ncid,  integer  varid,  integer
              start(1), integer count(1), integer stride(1), integer*8 out(1))

       integer function nf_put_vars_uint64(integer ncid, integer varid,  inte-
              ger  start(1),  integer  count(1),  integer stride(1), integer*8
              out(1))

       integer function nf_put_vars_string(integer ncid, integer varid,  inte-
              ger  start(1),  integer  count(1), integer stride(1), character*
              out(1))



              These functions are used for strided output, which is  like  the
              array  section  output described above, except that the sampling
              stride (the interval between accessed values) is  specified  for
              each  dimension.  For an explanation of the sampling stride vec-
              tor, see COMMON ARGUMENTS DESCRIPTIONS below.

       integer function nf_get_vars_text(integer ncid, integer varid,  integer
              start(1), integer count(1), integer stride(1), character*(*) in)


       integer function nf_get_vars_int1(integer ncid, integer varid,  integer
              start(1), integer count(1), integer stride(1), integer*1 in(1))

       integer  function nf_get_vars_int2(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), integer*2 in(1))

       integer function nf_get_vars_int(integer ncid, integer  varid,  integer
              start(1), integer count(1), integer stride(1), integer in(1))


       integer  function nf_get_vars_real(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), real in(1))

       integer function nf_get_vars_double(integer ncid, integer varid,  inte-
              ger  start(1), integer count(1), integer stride(1), doublepreci-
              sion in(1))

       integer function nf_get_vars_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), integer*1 in(1))

       integer  function nf_get_vars_ushort(integer ncid, integer varid, inte-
              ger start(1), integer  count(1),  integer  stride(1),  integer*2
              in(1))

       integer  function nf_get_vars_uint(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), integer*4 in(1))

       integer function  nf_get_vars_(integer  ncid,  integer  varid,  integer
              start(1), integer count(1), integer stride(1), integer*8 in(1))

       integer  function nf_get_vars_uint64(integer ncid, integer varid, inte-
              ger start(1), integer  count(1),  integer  stride(1),  integer*8
              in(1))

       integer  function nf_get_vars_string(integer ncid, integer varid, inte-
              ger start(1), integer count(1),  integer  stride(1),  character*
              in(1))



              These  functions  are  used for strided input, which is like the
              array section input described above, except  that  the  sampling
              stride  (the  interval between accessed values) is specified for
              each dimension.  For an explanation of the sampling stride  vec-
              tor, see COMMON ARGUMENTS DESCRIPTIONS below.


WRITING AND READING A MAPPED ARRAY

       integer  function nf_put_varm_text(integer ncid, integer varid, integer
              start(1), integer count(1),  integer  stride(1),  imap,  charac-
              ter*(*) out)


       integer  function nf_put_varm_int1(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*1
              out(1))

       integer  function nf_put_varm_int2(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*2
              out(1))

       integer  function  nf_put_varm_int(integer ncid, integer varid, integer
              start(1), integer count(1),  integer  stride(1),  imap,  integer
              out(1))


       integer  function nf_put_varm_real(integer ncid, integer varid, integer
              start(1),  integer  count(1),  integer  stride(1),  imap,   real
              out(1))

       integer  function nf_put_varm_double(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1), imap, double-
              precision out(1))

       integer function nf_put_varm_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*1
              out(1))

       integer  function nf_put_varm_ushort(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1),  imap,  inte-
              ger*2 out(1))

       integer  function nf_put_varm_uint(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*4
              out(1))

       integer  function  nf_put_varm_(integer  ncid,  integer  varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*8
              out(1))

       integer  function nf_put_varm_uint64(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1),  imap,  inte-
              ger*8 out(1))

       integer  function nf_put_varm_string(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1), imap, charac-
              ter* out(1))



              These functions are used for mapped output, which is like strid-
              ed output described above, except that an additional index  map-
              ping  vector is provided to specify the in-memory arrangement of
              the data values.  For an explanation of the index  mapping  vec-
              tor, see COMMON ARGUMENTS DESCRIPTIONS below.

       integer  function nf_get_varm_text(integer ncid, integer varid, integer
              start(1), integer count(1),  integer  stride(1),  imap,  charac-
              ter*(*) in)


       integer  function nf_get_varm_int1(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*1
              in(1))

       integer  function nf_get_varm_int2(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*2
              in(1))

       integer  function  nf_get_varm_int(integer ncid, integer varid, integer
              start(1), integer count(1),  integer  stride(1),  imap,  integer
              in(1))


       integer  function nf_get_varm_real(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1), imap, real in(1))

       integer  function nf_get_varm_double(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1), imap, double-
              precision in(1))

       integer function nf_get_varm_ubyte(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*1
              in(1))

       integer  function nf_get_varm_ushort(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1),  imap,  inte-
              ger*2 in(1))

       integer  function nf_get_varm_uint(integer ncid, integer varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*4
              in(1))

       integer  function  nf_get_varm_(integer  ncid,  integer  varid, integer
              start(1), integer count(1), integer stride(1),  imap,  integer*8
              in(1))

       integer  function nf_get_varm_uint64(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1),  imap,  inte-
              ger*8 in(1))

       integer  function nf_get_varm_string(integer ncid, integer varid, inte-
              ger start(1), integer count(1), integer stride(1), imap, charac-
              ter* in(1))



              These functions are used for mapped input, which is like strided
              input described above, except that an additional  index  mapping
              vector  is  provided to specify the in-memory arrangement of the
              data values.  For an explanation of the  index  mapping  vector,
              see COMMON ARGUMENTS DESCRIPTIONS below.


ATTRIBUTES

       integer  function  nf_put_att_text(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, character*(*) out)


       integer function nf_put_att_int1(integer ncid, integer  varid,  charac-
              ter*(*) name, integer xtype, integer len, integer*1 out(1))

       integer  function  nf_put_att_int2(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, integer*2 out(1))

       integer function nf_put_att_int(integer ncid,  integer  varid,  charac-
              ter*(*) name, integer xtype, integer len, integer out(1))


       integer  function  nf_put_att_real(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, real out(1))

       integer function nf_put_att_double(integer ncid, integer varid, charac-
              ter*(*)   name,  integer  xtype,  integer  len,  doubleprecision
              out(1))

       integer function nf_put_att_ubyte(integer ncid, integer varid,  charac-
              ter*(*) name, integer xtype, integer len, integer*1 out(1))

       integer function nf_put_att_ushort(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, integer*2 out(1))

       integer function nf_put_att_uint(integer ncid, integer  varid,  charac-
              ter*(*) name, integer xtype, integer len, integer*4 out(1))

       integer function nf_put_att_(integer ncid, integer varid, character*(*)
              name, integer xtype, integer len, integer*8 out(1))

       integer function nf_put_att_uint64(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, integer*8 out(1))

       integer function nf_put_att_string(integer ncid, integer varid, charac-
              ter*(*) name, integer xtype, integer len, character* out(1))



       integer function nf_put_att(integer ncid, integer varid,  character*(*)
              name, integer xtype, integer len, void * ip)

       integer  function nf_get_att(integer ncid, integer varid, character*(*)
              name, void * ip)

              Unlike variables, attributes do not have separate functions  for
              defining and writing values.  This family of functions defines a
              new attribute with a value or changes the value of  an  existing
              attribute.  If the attribute is new, or if the space required to
              store the attribute value is greater  than  before,  the  netCDF
              dataset must be in define mode.  The parameter len is the number
              of values from out to transfer.  It is often  one,  except  that
              for nf_put_att_text() it will usually be len_trim(out).

              For  these  functions,  the  type component of the function name
              refers to the in-memory type of the value, whereas the xtype ar-
              gument  refers  to  the external type for storing the value.  An
              NF_ERANGE error results if a conversion between these  types  is
              not  possible.   In  this case the value is represented with the
              appropriate fill-value for the associated external type.

       integer function nf_inq_attname(integer ncid,  integer  varid,  integer
              attnum, character*(*) name)

              Gets  the  name  of  an attribute, given its variable ID and at-
              tribute number.  This function is useful in generic applications
              that need to get the names of all the attributes associated with
              a variable, since attributes are accessed by  name  rather  than
              number  in  all other attribute functions.  The number of an at-
              tribute is more volatile than the name, since it can change when
              other  attributes  of  the  same  variable are deleted.  The at-
              tributes for each variable are numbered from 1  (the  first  at-
              tribute) to nvatts, where nvatts is the number of attributes for
              the variable, as returned from a call to nf_inq_varnatts().


       integer function nf_inq_att(integer ncid, integer varid,  character*(*)
              name, integer xtype, integer len)

       integer  function  nf_inq_attid(integer  ncid,  integer  varid, charac-
              ter*(*) name, integer attnum)

       integer function nf_inq_atttype(integer ncid,  integer  varid,  charac-
              ter*(*) name, integer xtype)

       integer  function  nf_inq_attlen(integer  ncid,  integer varid, charac-
              ter*(*) name, integer len)

              These functions return information  about  a  netCDF  attribute,
              given its variable ID and name.  The information returned is the
              external type in xtype and the number of  elements  in  the  at-
              tribute as len.


       integer  function  nf_copy_att(integer  ncid, integer varid_in, charac-
              ter*(*) name, integer ncid_out, integer varid_out)

              Copies an attribute from one netCDF dataset to another.  It  can
              also  be  used to copy an attribute from one variable to another
              within the same netCDF.  ncid_in is the netCDF ID  of  an  input
              netCDF   dataset  from  which  the  attribute  will  be  copied.
              varid_in is the ID of the variable in the input  netCDF  dataset
              from  which  the  attribute  will  be copied, or NF_GLOBAL for a
              global attribute.  name is the name of the attribute in the  in-
              put  netCDF  dataset to be copied.  ncid_out is the netCDF ID of
              the output netCDF dataset to which the attribute will be copied.
              It is permissible for the input and output netCDF ID's to be the
              same.  The output netCDF dataset should be in define mode if the
              attribute  to  be  copied  does not already exist for the target
              variable, or if it would cause an existing target  attribute  to
              grow.   varid_out is the ID of the variable in the output netCDF
              dataset to which the attribute will be copied, or  NF_GLOBAL  to
              copy to a global attribute.

       integer  function  nf_rename_att(integer  ncid,  integer varid, charac-
              ter*(*) name, character*(*) newname)

              Changes the name of an attribute.  If the  new  name  is  longer
              than  the original name, the netCDF must be in define mode.  You
              cannot rename an attribute to have the same name as another  at-
              tribute  of  the  same variable.  name is the original attribute
              name.  newname is the new name to be assigned to  the  specified
              attribute.   If  the  new  name is longer than the old name, the
              netCDF dataset must be in define mode.

       integer function nf_del_att(integer ncid, integer varid,  character*(*)
              name)

              Deletes an attribute from a netCDF dataset.  The dataset must be
              in define mode.

       integer function nf_get_att_text(integer ncid, integer  varid,  charac-
              ter*(*) name, character*(*) in)


       integer  function  nf_get_att_int1(integer ncid, integer varid, charac-
              ter*(*) name, integer*1 in(1))

       integer function nf_get_att_int2(integer ncid, integer  varid,  charac-
              ter*(*) name, integer*2 in(1))

       integer  function  nf_get_att_int(integer  ncid, integer varid, charac-
              ter*(*) name, integer in(1))


       integer function nf_get_att_real(integer ncid, integer  varid,  charac-
              ter*(*) name, real in(1))

       integer function nf_get_att_double(integer ncid, integer varid, charac-
              ter*(*) name, doubleprecision in(1))

       integer function nf_get_att_ubyte(integer ncid, integer varid,  charac-
              ter*(*) name, integer*1 in(1))

       integer function nf_get_att_ushort(integer ncid, integer varid, charac-
              ter*(*) name, integer*2 in(1))

       integer function nf_get_att_uint(integer ncid, integer  varid,  charac-
              ter*(*) name, integer*4 in(1))

       integer function nf_get_att_(integer ncid, integer varid, character*(*)
              name, integer*8 in(1))

       integer function nf_get_att_uint64(integer ncid, integer varid, charac-
              ter*(*) name, integer*8 in(1))

       integer function nf_get_att_string(integer ncid, integer varid, charac-
              ter*(*) name, character* in(1))



              Gets the value(s) of a netCDF attribute, given its  variable  ID
              and name.  Converts from the external type to the type specified
              in  the  function  name,  if  possible,  otherwise  returns   an
              NF_ERANGE error.  All elements of the vector of attribute values
              are returned, so you must allocate enough space  to  hold  them.
              If  you  don't  know  how much space to reserve, call nf_inq_at-
              tlen() first to find out the length of the attribute.


COMMON ARGUMENT DESCRIPTIONS

       In this section we define some common arguments which are used  in  the
       "FUNCTION DESCRIPTIONS" section.

       integer ncid
              is  the  netCDF  ID returned from a previous, successful call to
              nf_open() or nf_create()

       character*(*) name
              is the name of a dimension, variable, or attribute. The names of
              dimensions,  variables  and  attributes consist of arbitrary se-
              quences of alphanumeric characters (as well as  underscore  '_',
              period  '.'  and  hyphen '-'), beginning with a letter or under-
              score. (However names commencing with  underscore  are  reserved
              for  system  use.)  Case is significant in netCDF names. A zero-
              length name is not allowed.

              The maximum allowable number of characters
               is NF_MAX_NAME.

       integer xtype
              specifies the external data type of a  netCDF  variable  or  at-
              tribute and is one of the following: NF_BYTE, NF_CHAR, NF_SHORT,
              NF_INT, NF_FLOAT, or NF_DOUBLE.  These are used to specify 8-bit
              integers,  characters,  16-bit integers, 32-bit integers, 32-bit
              IEEE floating point numbers, and 64-bit IEEE floating-point num-
              bers, respectively.


       integer dimids(1)
              is  a vector of dimension ID's and defines the shape of a netCDF
              variable.  The size of the vector shall be greater than or equal
              to  the  rank  (i.e.  the  number of dimensions) of the variable
              (ndims).  The vector shall be ordered by the speed with which  a
              dimension  varies:  dimids(1)  shall  be the dimension ID of the
              most rapidly varying dimension and dimids(ndims)  shall  be  the
              dimension  ID of the most slowly varying dimension.  The maximum
              possible number of dimensions for a variable  is  given  by  the
              symbolic constant NF_MAX_VAR_DIMS.

       integer dimid
              is  the ID of a netCDF dimension.  netCDF dimension ID's are al-
              located sequentially from the positive integers  beginning  with
              1.

       integer ndims
              is  either the total number of dimensions in a netCDF dataset or
              the rank (i.e. the number of dimensions) of a  netCDF  variable.
              The  value  shall  not  be negative or greater than the symbolic
              constant NF_MAX_VAR_DIMS.

       integer varid
              is the ID of a netCDF  variable  or  (for  the  attribute-access
              functions)  the  symbolic  constant  NF_GLOBAL, which is used to
              reference global attributes.  netCDF variable ID's are allocated
              sequentially from the positive integers beginning with 1.

       integer natts
              is  the number of global attributes in a netCDF dataset  for the
              nf_inquire() function or the  number  of  attributes  associated
              with a netCDF variable for the nf_varinq() function.

       integer index(1)
              specifies  the  indicial coordinates of the netCDF data value to
              be accessed.  The indices start at 1;  thus,  for  example,  the
              first  data  value  of a two-dimensional variable is (1,1).  The
              size of the vector shall be at least the rank of the  associated
              netCDF  variable and its elements shall correspond, in order, to
              the variable's dimensions.

       integer start(1)
              specifies the starting point for accessing a  netCDF  variable's
              data  values  in terms of the indicial coordinates of the corner
              of the array section.  The indices start at 1; thus,  the  first
              data  value  of  a  variable is (1, 1, ..., 1).  The size of the
              vector shall be at least the rank of the associated netCDF vari-
              able  and  its elements shall correspond, in order, to the vari-
              able's dimensions.

       integer count(1)
              specifies the number of indices selected along each dimension of
              the array section.  Thus, to access a single value, for example,
              specify count as (1, 1, ..., 1).  Note that,  for  strided  I/O,
              this  argument must be adjusted to be compatible with the stride
              and start arguments so that the interaction of  the  three  does
              not attempt to access an invalid data co-ordinate.  The elements
              of the count vector correspond, in order, to the variable's  di-
              mensions.

       integer stride(1)
              specifies  the  sampling  interval  along  each dimension of the
              netCDF variable.   The elements of the stride vector correspond,
              in  order, to the netCDF variable's dimensions (stride(1)) gives
              the sampling interval along the most rapidly  varying  dimension
              of  the  netCDF  variable).  Sampling intervals are specified in
              type-independent units of elements (a value of 1 selects consec-
              utive  elements  of  the netCDF variable along the corresponding
              dimension, a value of 2 selects every other element, etc.).


       imap   specifies the mapping between the dimensions of a  netCDF  vari-
              able  and  the  in-memory  structure of the internal data array.
              The elements of the index mapping vector correspond,  in  order,
              to  the netCDF variable's dimensions (imap(1) gives the distance
              between elements of the internal array corresponding to the most
              rapidly  varying  dimension  of the netCDF variable).  Distances
              between elements are specified in type-independent units of ele-
              ments  (the distance between internal elements that occupy adja-
              cent memory locations is 1 and not the element's byte-length  as
              in netCDF 2).



VARIABLE PREFILLING

       By  default,  the netCDF interface sets the values of all newly-defined
       variables of finite length (i.e. those that do not have  an  unlimited,
       dimension)  to the type-dependent fill-value associated with each vari-
       able.  This is done when nf_enddef() is called.  The fill-value  for  a
       variable  may  be  changed  from  the default value by defining the at-
       tribute `_FillValue' for the variable.  This attribute  must  have  the
       same type as the variable and be of length one.

       Variables with an unlimited dimension are also prefilled, but on an `as
       needed' basis.  For example, if the first write of such a  variable  is
       to  position 5, then positions 1 through 4 (and no others) would be set
       to the fill-value at the same time.

       This default prefilling of data values may be disabled  by  or'ing  the
       NF_NOFILL flag into the mode parameter of nf_open() or nf_create(), or,
       by calling the function nf_set_fill() with the argument NF_NOFILL.  For
       variables  that  do  not use the unlimited dimension, this call must be
       made before nf_enddef().  For variables that use the  unlimited  dimen-
       sion, this call may be made at any time.

       One  can  obtain increased performance of the netCDF interface by using
       this feature, but only at the expense of requiring the  application  to
       set  every  single  data  value.  The performance enhancing behavior of
       this function is dependent on the particulars of the implementation and
       dataset  format.   The  flag  value  controlled by nf_set_fill() is per
       netCDF ID, not per variable or per write.  Allowing this to change  af-
       fects  the  degree  to which a program can be effectively parallelized.
       Given all of this, we state that the use of this  feature  may  not  be
       available  (or  even  needed)  in future releases. Programmers are cau-
       tioned against heavy reliance upon this feature.

       integer function nf_setfill(integer  ncid,  integer  fillmode,  integer
              old_fillemode)


              Determines  whether or not variable prefilling will be done (see
              above).  The netCDF dataset shall be writable.  fillmode is  ei-
              ther  NF_FILL to enable prefilling (the default) or NF_NOFILL to
              disable prefilling.  This function returns the previous  setting
              in old_fillmode.




MPP FUNCTION DESCRIPTIONS

       Additional  functions  for  use  on  SGI/Cray  MPP machines (_CRAYMPP).
       These are used to set and inquire which PE is the base for  MPP  for  a
       particular  netCDF.  These  are  only  relevant when using the SGI/Cray
       ``global'' Flexible File I/O layer and desire to have only a subset  of
       PEs  to  open  the  specific netCDF file.  For technical reasons, these
       functions are available on all platforms.  On  a  platform  other  than
       SGI/Cray MPP, it is as if only processor available were processor 0.

       To  use this feature, you need to specify a communicator group and call
       glio_group_mpi() or glio_group_shmem() prior to  the  netCDF  nf_open()
       and nf_create() calls.

       integer function nf__create_mp(character*(*) path, integer cmode, inte-
              ger initialsize, integer pe, integer chunksize, integer ncid)

              Like nf__create() but allows the base PE to be set.

              The argument pe sets the base PE at creation time.  In  the  MPP
              environment,  nf__create()  and  nf_create()  set the base PE to
              processor zero by default.

       integer function nf__open_mp(character*(*) path, integer mode,  integer
              pe, integer chunksize, integer ncid)

              Like  nf__open() but allows the base PE to be set.  The argument
              pe sets the base PE at creation time. In  the  MPP  environment,
              nf__open()  and  nf_open()  set the base PE to processor zero by
              default.

       integer function nf_inq_base_pe(integer ncid, integer pe)

              Inquires of the netCDF dataset which PE is  being  used  as  the
              base for MPP use.  This is safe to use at any time.

       integer function nf_set_base_pe(integer ncid, integer pe)

              Resets  the  base  PE for the netCDF dataset.  Only perform this
              operation when the affected communicator group synchronizes  be-
              fore  and  after  the  call.   This  operation is very risky and
              should only be contemplated under only the most extreme cases.


ENVIRONMENT VARIABLES

       NETCDF_FFIOSPEC
           Specifies the Flexible File I/O buffers for netCDF I/O when execut-
           ing  under  the UNICOS operating system (the variable is ignored on
           other operating systems).  An appropriate specification can greatly
           increase  the efficiency of netCDF I/O -- to the extent that it can
           actually surpass FORTRAN binary I/O.  This environment variable has
           been  made  a  little more generalized, such that other FFIO option
           specifications can now be added.  The default specification is  bu-
           fa:336:2,  unless  a  current  FFIO  specification is in operation,
           which will be honored.  See UNICOS Flexible File I/O for  more  in-
           formation.


MAILING-LISTS

       Both  a  mailing  list and a digest are available for discussion of the
       netCDF interface and announcements about netCDF bugs,  fixes,  and  en-
       hancements.   To  begin or change your subscription to either the mail-
       ing-list or the digest, send one of the following in the body (not  the
       subject line) of an email message to "majordomo@unidata.ucar.edu".  Use
       your email address in place of jdoe@host.inst.domain.

       To subscribe to the netCDF mailing list:
              subscribe netcdfgroup jdoe@host.inst.domain
       To unsubscribe from the netCDF mailing list:
              unsubscribe netcdfgroup jdoe@host.inst.domain
       To subscribe to the netCDF digest:
              subscribe netcdfdigest jdoe@host.inst.domain
       To unsubscribe from the netCDF digest:
              unsubscribe netcdfdigest jdoe@host.inst.domain
       To retrieve the general introductory information for the mailing list:
              info netcdfgroup
       To get a synopsis of other majordomo commands:
              help


SEE ALSO

       ncdump(1), ncgen(1), netcdf(3f).

       netCDF User's Guide, published by the Unidata Program Center, Universi-
       ty  Corporation for Atmospheric Research, located in Boulder, Colorado.

       NetCDF home page at http://www.unidata.ucar.edu/netcdf.



Printed: 2010-06-28               1997-04-18                         NETCDF(3)

netcdf 4.1.1 - Generated Mon Jun 28 19:05:08 CDT 2010
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.