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