1Module netcdf_nf_data 2 3! Module for Netcdf FORTRAN 2003 nf parameters. This includes all the 4! error condition parameters, external data types, fill values etc. 5! for netCDF2,3,4 6 7! Written by: Richard Weed, Ph.D. 8! Center for Advanced Vehicular Systems 9! Mississippi State University 10! rweed@cavs.msstate.edu 11 12 13! License (and other Lawyer Language) 14 15! This software is released under the Apache 2.0 Open Source License. The 16! full text of the License can be viewed at : 17! 18! http:www.apache.org/licenses/LICENSE-2.0.html 19! 20! The author grants to the University Corporation for Atmospheric Research 21! (UCAR), Boulder, CO, USA the right to revise and extend the software 22! without restriction. However, the author retains all copyrights and 23! intellectual property rights explicitly stated in or implied by the 24! Apache license 25 26! Version 1. Sept. 2005 - initial Cray X1 version for netcdf 3.6,0 27! Version 2. Apr. 2005 - updated to be consistent with netcdf 3.6.1 28! Version 3. Apr. 2009 - updated for netCDF 4.0.1 29! Version 4. Apr. 2010 - updated for netCDF 4.1.1 30! Version 5. Feb. 2013 - Updated for netCDF 4.4 31! Version 6. Jan. 2016 - General code cleanup and added several new 32! parameters to mirror whats in netcdf_constants.f90 33 34! This module is provided as a replacement for parts of the netcdf2.inc, 35! netcdf3.inc and netcdf4.inc include files. It does not include the 36! external statements for the nf_ functions. The latter are not needed 37! if you use the interfaces in module_netcdf_nf_interfaces. If you 38! want the externals, just use the include files. 39 40 USE netcdf_nc_data 41 42 Implicit NONE 43 44! Define values found in netcdf2.inc, netcdf3.inc, and netcdf4.inc 45! Also some additional values from the NC_DATA interfaces 46! 47! Define enumerator nc_type data as integers 48 49 Integer, Parameter :: NF_NAT = NC_NAT 50 Integer, Parameter :: NF_BYTE = NC_BYTE 51 Integer, Parameter :: NF_INT1 = NF_BYTE 52 Integer, Parameter :: NF_CHAR = NC_CHAR 53 Integer, Parameter :: NF_SHORT = NC_SHORT 54 Integer, Parameter :: NF_INT2 = NF_SHORT 55 Integer, Parameter :: NF_INT = NC_INT 56 Integer, Parameter :: NF_FLOAT = NC_FLOAT 57 Integer, Parameter :: NF_REAL = NF_FLOAT 58 Integer, Parameter :: NF_DOUBLE = NC_DOUBLE 59 60! Default fill values 61 62 Integer, Parameter :: NF_FILL_CHAR = IACHAR(NC_FILL_CHAR) 63 Integer(IK1), Parameter :: NF_FILL_BYTE = NC_FILL_BYTE 64 Integer(IK2), Parameter :: NF_FILL_SHORT = NC_FILL_SHORT 65 Integer, Parameter :: NF_FILL_INT = NC_FILL_INT 66 67 Real(RK4), Parameter :: NF_FILL_FLOAT = NC_FILL_FLOAT 68 Real(RK4), Parameter :: NF_FILL_REAL = NF_FILL_FLOAT 69 Real(RK4), Parameter :: NF_FILL_REAL4 = NF_FILL_FLOAT 70 Real(RK8), Parameter :: NF_FILL_DOUBLE = NC_FILL_DOUBLE 71 Real(RK8), Parameter :: NF_FILL_REAL8 = NF_FILL_DOUBLE 72 73! Mode flags for opening and creating datasets 74 75 Integer, Parameter :: NF_NOWRITE = NC_NOWRITE 76 Integer, Parameter :: NF_WRITE = NC_WRITE 77 Integer, Parameter :: NF_CLOBBER = NC_CLOBBER 78 Integer, Parameter :: NF_NOCLOBBER = NC_NOCLOBBER 79 Integer, Parameter :: NF_FILL = NC_FILL 80 Integer, Parameter :: NF_NOFILL = NC_NOFILL 81 Integer, Parameter :: NF_LOCK = NC_LOCK 82 Integer, Parameter :: NF_SHARE = NC_SHARE 83 Integer, Parameter :: NF_STRICT_NC3 = NC_STRICT_NC3 84 Integer, Parameter :: NF_64BIT_OFFSET = NC_64BIT_OFFSET 85 Integer, Parameter :: NF_SIZEHINT_DEFAULT = NC_SIZEHINT_DEFAULT 86 Integer, Parameter :: NF_ALIGN_CHUNK = NC_ALIGN_CHUNK 87 Integer, Parameter :: NF_FORMAT_CLASSIC = NC_FORMAT_CLASSIC 88 Integer, Parameter :: NF_FORMAT_64BIT = NC_FORMAT_64BIT 89 Integer, Parameter :: NF_DISKLESS = NC_DISKLESS 90 Integer, Parameter :: NF_MMAP = NC_MMAP 91 Integer, Parameter :: NF_INMEMORY = NC_INMEMORY 92 93! Unlimited dimension size argument and global attibute ID 94 95 Integer, Parameter :: NF_UNLIMITED = NC_UNLIMITED 96 Integer, Parameter :: NF_GLOBAL = NC_GLOBAL 97 98! Implementation limits (WARNING! SHOULD BE THE SAME AS C INTERFACE) 99 100 Integer, Parameter :: NF_MAX_DIMS = NC_MAX_DIMS 101 Integer, Parameter :: NF_MAX_ATTRS = NC_MAX_ATTRS 102 Integer, Parameter :: NF_MAX_VARS = NC_MAX_VARS 103 Integer, Parameter :: NF_MAX_NAME = NC_MAX_NAME 104 Integer, Parameter :: NF_MAX_VAR_DIMS = NC_MAX_DIMS 105 106! Error codes 107 108 Integer, Parameter :: NF_NOERR = NC_NOERR 109 Integer, Parameter :: NF2_ERR = NC2_ERR 110 Integer, Parameter :: NF_SYSERR = NC_SYSERR 111 Integer, Parameter :: NF_EXDR = NC_EXDR 112 Integer, Parameter :: NF_EBADID = NC_EBADID 113 Integer, Parameter :: NF_EBFILE = NC_EBFILE 114 Integer, Parameter :: NF_EEXIST = NC_EEXIST 115 Integer, Parameter :: NF_EINVAL = NC_EINVAL 116 Integer, Parameter :: NF_EPERM = NC_EPERM 117 Integer, Parameter :: NF_ENOTINDEFINE = NC_ENOTINDEFINE 118 Integer, Parameter :: NF_EINDEFINE = NC_EINDEFINE 119 Integer, Parameter :: NF_EINVALCOORDS = NC_EINVALCOORDS 120 Integer, Parameter :: NF_EMAXDIMS = NC_EMAXDIMS 121 Integer, Parameter :: NF_ENAMEINUSE = NC_ENAMEINUSE 122 Integer, Parameter :: NF_ENOTATT = NC_ENOTATT 123 Integer, Parameter :: NF_EMAXATTS = NC_EMAXATTS 124 Integer, Parameter :: NF_EBADTYPE = NC_EBADTYPE 125 Integer, Parameter :: NF_EBADDIM = NC_EBADDIM 126 Integer, Parameter :: NF_EUNLIMPOS = NC_EUNLIMPOS 127 Integer, Parameter :: NF_EMAXVARS = NC_EMAXVARS 128 Integer, Parameter :: NF_ENOTVAR = NC_ENOTVAR 129 Integer, Parameter :: NF_EGLOBAL = NC_EGLOBAL 130 Integer, Parameter :: NF_ENOTNC = NC_ENOTNC 131 Integer, Parameter :: NF_ESTS = NC_ESTS 132 Integer, Parameter :: NF_EMAXNAME = NC_EMAXNAME 133 Integer, Parameter :: NF_EUNLIMIT = NC_EUNLIMIT 134 Integer, Parameter :: NF_ENORECVARS = NC_ENORECVARS 135 136 Integer, Parameter :: NF_ECHAR = NC_ECHAR 137 Integer, Parameter :: NF_EEDGE = NC_EEDGE 138 Integer, Parameter :: NF_ESTRIDE = NC_ESTRIDE 139 Integer, Parameter :: NF_EBADNAME = NC_EBADNAME 140 Integer, Parameter :: NF_ERANGE = NC_ERANGE 141 Integer, Parameter :: NF_ENOMEM = NC_ENOMEM 142 Integer, Parameter :: NF_EVARSIZE = NC_EVARSIZE 143 Integer, Parameter :: NF_EDIMSIZE = NC_EDIMSIZE 144 Integer, Parameter :: NF_ETRUNC = NC_ETRUNC 145 Integer, Parameter :: NF_EAXISTYPE = NC_EAXISTYPE 146 147! DAP error codes 148 149 Integer, Parameter :: NF_EDAP = NC_EDAP 150 Integer, Parameter :: NF_ECURL = NC_ECURL 151 Integer, Parameter :: NF_EIO = NC_EIO 152 Integer, Parameter :: NF_ENODATA = NC_ENODATA 153 Integer, Parameter :: NF_EDAPSVC = NC_EDAPSVC 154 Integer, Parameter :: NF_EDAS = NC_EDAS 155 Integer, Parameter :: NF_EDDS = NC_EDDS 156 Integer, Parameter :: NF_EDATADDS = NC_EDATADDS 157 Integer, Parameter :: NF_EDAPURL = NC_EDAPURL 158 Integer, Parameter :: NF_EDAPCONSTRAINT = NC_EDAPCONSTRAINT 159 Integer, Parameter :: NF_ETRANSLATION = NC_ETRANSLATION 160 161! Error handling codes 162 163 Integer, Parameter :: NF_FATAL = NC_FATAL 164 Integer, Parameter :: NF_VERBOSE = NC_VERBOSE 165 166#ifdef ENABLE_CDF5 167 ! new format types 168 169 Integer, Parameter :: NF_FORMAT_CDF5 = NC_FORMAT_CDF5 170 171 ! New create mode flag 172 Integer, Parameter :: NF_CDF5 = NC_CDF5 173 174#endif 175#ifdef USE_NETCDF4 176 177! NETCDF4 parameters 178 179! data types 180 181 Integer, Parameter :: NF_LONG = NC_LONG 182 Integer, Parameter :: NF_UBYTE = NC_UBYTE 183 Integer, Parameter :: NF_USHORT = NC_USHORT 184 Integer, Parameter :: NF_UINT = NC_UINT 185 Integer, Parameter :: NF_INT64 = NC_INT64 186 Integer, Parameter :: NF_UINT64 = NC_UINT64 187 Integer, Parameter :: NF_STRING = NC_STRING 188 Integer, Parameter :: NF_VLEN = NC_VLEN 189 Integer, Parameter :: NF_OPAQUE = NC_OPAQUE 190 Integer, Parameter :: NF_ENUM = NC_ENUM 191 Integer, Parameter :: NF_COMPOUND = NC_COMPOUND 192 193! Netcdf4 fill flags - for some reason the F90 values are different 194 195 Integer, Parameter :: NF_FILL_UBYTE = NC_FILL_UBYTE 196 Integer, Parameter :: NF_FILL_UINT1 = NF_FILL_UBYTE 197 Integer, Parameter :: NF_FILL_USHORT = NC_FILL_USHORT 198 Integer, Parameter :: NF_FILL_UINT2 = NF_FILL_USHORT 199 Integer(IK8), Parameter :: NF_FILL_UINT = NC_FILL_UINT 200 Integer(IK8), Parameter :: NF_FILL_INT64 = NC_FILL_INT64 201 202! new format types 203 204 Integer, Parameter :: NF_FORMAT_NETCDF4 = NC_FORMAT_NETCDF4 205 Integer, Parameter :: NF_FORMAT_NETCDF4_CLASSIC = NC_FORMAT_NETCDF4_CLASSIC 206 Integer, Parameter :: NF_FORMAT_64BIT_DATA = NC_FORMAT_64BIT_DATA 207 208! Netcdf4 create mode flags 209 Integer, Parameter :: NF_NETCDF4 = NC_NETCDF4 210 Integer, Parameter :: NF_HDF5 = NF_NETCDF4 ! deprecated 211 Integer, Parameter :: NF_CLASSIC_MODEL = NC_CLASSIC_MODEL 212 213! Netcdf4 variable flags 214 215 Integer, Parameter :: NF_CHUNK_SEQ = NC_CHUNK_SEQ 216 Integer, Parameter :: NF_CHUNK_SUB = NC_CHUNK_SUB 217 Integer, Parameter :: NF_CHUNK_SIZES = NC_CHUNK_SIZES 218 Integer, Parameter :: NF_ENDIAN_NATIVE = NC_ENDIAN_NATIVE 219 Integer, Parameter :: NF_ENDIAN_LITTLE = NC_ENDIAN_LITTLE 220 Integer, Parameter :: NF_ENDIAN_BIG = NC_ENDIAN_BIG 221 Integer, Parameter :: NF_CHUNKED = NC_CHUNKED 222 Integer, Parameter :: NF_NOTCONTIGUOUS = NC_NOTCONTIGUOUS 223 Integer, Parameter :: NF_CONTIGUOUS = NC_CONTIGUOUS 224 Integer, Parameter :: NF_NOCHECKSUM = NC_NOCHECKSUM 225 Integer, Parameter :: NF_FLETCHER32 = NC_FLETCHER32 226 Integer, Parameter :: NF_NOSHUFFLE = NC_NOSHUFFLE 227 Integer, Parameter :: NF_SHUFFLE = NC_SHUFFLE 228 Integer, Parameter :: NF_INDEPENDENT = NC_INDEPENDENT 229 Integer, Parameter :: NF_COLLECTIVE = NC_COLLECTIVE 230 231! Flags for parallel I/O 232 233 Integer, Parameter :: NF_MPIIO = NC_MPIIO 234 Integer, Parameter :: NF_MPIPOSIX = NC_MPIPOSIX 235 Integer, Parameter :: NF_PNETCDF = NC_PNETCDF ! which is actually NC_MPIIO 236 237! SZIP flags 238 239 Integer, Parameter :: NF_SZIP_EC_OPTION_MASK = NC_SZIP_EC_OPTION_MASK 240 Integer, Parameter :: NF_SZIP_NN_OPTION_MASK = NC_SZIP_NN_OPTION_MASK 241 242! Netcdf4 error flags 243 244 Integer, Parameter :: NF_EHDFERR = NC_EHDFERR 245 Integer, Parameter :: NF_ECANTREAD = NC_ECANTREAD 246 Integer, Parameter :: NF_ECANTWRITE = NC_ECANTWRITE 247 Integer, Parameter :: NF_ECANTCREATE = NC_ECANTCREATE 248 Integer, Parameter :: NF_EFILEMETA = NC_EFILEMETA 249 Integer, Parameter :: NF_EDIMMETA = NC_EDIMMETA 250 Integer, Parameter :: NF_EATTMETA = NC_EATTMETA 251 Integer, Parameter :: NF_EVARMETA = NC_EVARMETA 252 Integer, Parameter :: NF_ENOCOMPOUND = NC_ENOCOMPOUND 253 Integer, Parameter :: NF_EATTEXISTS = NC_EATTEXISTS 254 Integer, Parameter :: NF_ENOTNC4 = NC_ENOTNC4 255 Integer, Parameter :: NF_ESTRICTNC3 = NC_ESTRICTNC3 256 Integer, Parameter :: NF_ENOTNC3 = NC_ENOTNC3 257 Integer, Parameter :: NF_ENOPAR = NC_ENOPAR 258 Integer, Parameter :: NF_EPARINIT = NC_EPARINIT 259 Integer, Parameter :: NF_EBADGRPID = NC_EBADGRPID 260 Integer, Parameter :: NF_EBADTYPID = NC_EBADTYPID 261 Integer, Parameter :: NF_ETYPDEFINED = NC_ETYPDEFINED 262 Integer, Parameter :: NF_EBADFIELD = NC_EBADFIELD 263 Integer, Parameter :: NF_EBADCLASS = NC_EBADCLASS 264 Integer, Parameter :: NF_EMAPTYPE = NC_EMAPTYPE 265 Integer, Parameter :: NF_ELATEFILL = NC_ELATEFILL 266 Integer, Parameter :: NF_ELATEDEF = NC_ELATEDEF 267 Integer, Parameter :: NF_EDIMSCALE = NC_EDIMSCALE 268 Integer, Parameter :: NF_ENOGRP = NC_ENOGRP 269 Integer, Parameter :: NF_ESTORAGE = NC_ESTORAGE 270 Integer, Parameter :: NF_EBADCHUNK = NC_EBADCHUNK 271 Integer, Parameter :: NF_ENOTBUILT = NC_ENOTBUILT 272 Integer, Parameter :: NF_EDISKLESS = NC_EDISKLESS 273 Integer, Parameter :: NF_ECANTEXTEND = NC_ECANTEXTEND 274 Integer, Parameter :: NF_EMPI = NC_EMPI 275 276#endif 277 278#ifndef NO_NETCDF_2 279 280! V2 interface values 281 282 Integer, Parameter :: NCBYTE = NF_BYTE 283 Integer, Parameter :: NCCHAR = NF_CHAR 284 Integer, Parameter :: NCSHORT = NF_SHORT 285 Integer, Parameter :: NCLONG = NF_INT 286 Integer, Parameter :: NCFLOAT = NF_FLOAT 287 Integer, Parameter :: NCDOUBLE = NF_DOUBLE 288 289 Integer, Parameter :: NCRDWR = NF_WRITE 290 Integer, Parameter :: NCCREATE = 2 291 Integer, Parameter :: NCEXCL = 4 292 Integer, Parameter :: NCINDEF = 8 293 Integer, Parameter :: NCNSYNC = 16 294 Integer, Parameter :: NCHSYNC = 32 295 Integer, Parameter :: NCNDIRTY = 64 296 Integer, Parameter :: NCHDIRTY = 128 297 Integer, Parameter :: NCFILL = NF_FILL 298 Integer, Parameter :: NCNOFILL = NF_NOFILL 299 Integer, Parameter :: NCLINK = 32768 300 301 Integer, Parameter :: NCNOWRIT = NF_NOWRITE 302 Integer, Parameter :: NCWRITE = NF_WRITE 303 Integer, Parameter :: NCCLOB = NF_CLOBBER 304 Integer, Parameter :: NCNOCLOB = NF_NOCLOBBER 305 306 Integer, Parameter :: NCUNLIM = NF_UNLIMITED 307 Integer, Parameter :: NCGLOBAL = NF_GLOBAL 308 309 Integer, Parameter :: MAXNCOP = 64 310 Integer, Parameter :: MAXNCDIM = NF_MAX_DIMS 311 Integer, Parameter :: MAXNCATT = NF_MAX_ATTRS 312 Integer, Parameter :: MAXNCVAR = NF_MAX_VARS 313 Integer, Parameter :: MAXNCNAM = NF_MAX_NAME 314 Integer, Parameter :: MAXVDIMS = MAXNCDIM 315 316 Integer, Parameter :: NCNOERR = NF_NOERR 317 Integer, Parameter :: NCEBADID = NF_EBADID 318 Integer, Parameter :: NCENFILE = -31 319 Integer, Parameter :: NCEEXIST = NF_EEXIST 320 Integer, Parameter :: NCEINVAL = NF_EINVAL 321 Integer, Parameter :: NCEPERM = NF_EPERM 322 Integer, Parameter :: NCENOTIN = NF_ENOTINDEFINE 323 Integer, Parameter :: NCEINDEF = NF_EINDEFINE 324 Integer, Parameter :: NCECOORD = NF_EINVALCOORDS 325 Integer, Parameter :: NCEMAXDS = NF_EMAXDIMS 326 Integer, Parameter :: NCENAME = NF_ENAMEINUSE 327 Integer, Parameter :: NCEMAXAT = NF_EMAXATTS 328 Integer, Parameter :: NCEBADTY = NF_EBADTYPE 329 Integer, Parameter :: NCEBADD = NF_EBADDIM 330 Integer, Parameter :: NCEUNLIM = NF_EUNLIMPOS 331 Integer, Parameter :: NCEMAXVS = NF_EMAXVARS 332 Integer, Parameter :: NCENOTVR = NF_ENOTVAR 333 Integer, Parameter :: NCEGLOB = NF_EGLOBAL 334 Integer, Parameter :: NCNOTNC = NF_ENOTNC 335 Integer, Parameter :: NCESTC = NF_ESTS 336 Integer, Parameter :: NCENTOOL = NF_EMAXNAME 337 Integer, Parameter :: NCFOOBAR = 32 338 Integer, Parameter :: NCSYSERR = NF_SYSERR 339 340 Integer, Parameter :: NCFATAL = NF_FATAL 341 Integer, Parameter :: NCVERBOS = NF_VERBOSE 342 343 Integer, Parameter :: FILCHAR = NF_FILL_CHAR 344 Integer(IK1), Parameter :: FILBYTE = NF_FILL_BYTE 345 Integer(IK2), Parameter :: FILSHORT = NF_FILL_SHORT 346 Integer, Parameter :: FILLONG = NF_FILL_INT 347 Real(RK4), Parameter :: FILFLOAT = NF_FILL_FLOAT 348 Real(RK8), Parameter :: FILDOUB = NF_FILL_DOUBLE 349 350#endif 351 352!------------------------------------------------------------------------------ 353End Module netcdf_nf_data 354