File: RELATIVE:/../../../mfix.git/model/mfix_netcdf_mod.f
1 module MFIX_netcdf
2
3 #ifdef NETCDF
4 include 'netcdf.inc'
5 #else
6 integer NF90_64BIT_OFFSET
7
8 integer NF90_DOUBLE
9 integer NF90_INT
10 integer NF90_NOWRITE
11 integer NF90_CLOBBER
12
13 parameter (NF90_64BIT_OFFSET = 0)
14 parameter (NF90_DOUBLE = 0)
15 parameter (NF90_INT = 0)
16 parameter (NF90_NOWRITE = 0)
17 parameter (NF90_CLOBBER = 0)
18 #endif
19
20
21 interface MFIX_nf90_def_var
22 module procedure MFIX_nf90_def_var_Scalar, MFIX_nf90_def_var_oneDim, MFIX_nf90_def_var_ManyDims
23 end interface MFIX_nf90_def_var
24
25 interface MFIX_nf90_put_var
26 module procedure MFIX_nf90_put_var_text, &
27 MFIX_nf90_put_var_FourByteInt, &
28 MFIX_nf90_put_var_FourByteReal, MFIX_nf90_put_var_EightByteReal
29 module procedure MFIX_nf90_put_var_1D_text, &
30 MFIX_nf90_put_var_1D_FourByteInt, &
31 MFIX_nf90_put_var_1D_FourByteReal, MFIX_nf90_put_var_1D_EightByteReal
32 module procedure MFIX_nf90_put_var_2D_text, &
33 MFIX_nf90_put_var_2D_FourByteInt, &
34 MFIX_nf90_put_var_2D_FourByteReal, MFIX_nf90_put_var_2D_EightByteReal
35 module procedure MFIX_nf90_put_var_3D_text, &
36 MFIX_nf90_put_var_3D_FourByteInt, &
37 MFIX_nf90_put_var_3D_FourByteReal, MFIX_nf90_put_var_3D_EightByteReal
38 module procedure MFIX_nf90_put_var_4D_FourByteInt , MFIX_nf90_put_var_4D_EightByteReal
39 end interface MFIX_nf90_put_var
40
41 interface MFIX_nf90_get_var
42 module procedure MFIX_nf90_get_var_text, &
43 MFIX_nf90_get_var_FourByteInt, &
44 , MFIX_nf90_get_var_EightByteReal
45 module procedure MFIX_nf90_get_var_1D_text, &
46 MFIX_nf90_get_var_1D_FourByteInt , &
47 MFIX_nf90_get_var_1D_FourByteReal, MFIX_nf90_get_var_1D_EightByteReal
48 module procedure MFIX_nf90_get_var_2D_text, &
49 MFIX_nf90_get_var_2D_FourByteReal, MFIX_nf90_get_var_2D_EightByteReal
50 module procedure MFIX_nf90_get_var_3D_text, &
51 MFIX_nf90_get_var_3D_FourByteInt, &
52 MFIX_nf90_get_var_3D_FourByteReal, MFIX_nf90_get_var_3D_EightByteReal
53 module procedure MFIX_nf90_get_var_4D_text
54 module procedure MFIX_nf90_get_var_5D_text
55 module procedure MFIX_nf90_get_var_6D_text
56 module procedure MFIX_nf90_get_var_7D_text
57 end interface MFIX_nf90_get_var
58
59 contains
60 function MFIX_nf90_def_var_Scalar(ncid, name, xtype, varid)
61 integer, intent( in) :: ncid
62 character (len = *), intent( in) :: name
63 integer, intent( in) :: xtype
64 integer, intent(inout) :: varid
65 integer :: MFIX_nf90_def_var_Scalar
66
67
68 integer, dimension(1) :: dimids
69
70 #ifdef NETCDF
71 MFIX_nf90_def_var_Scalar = nf90_def_var(ncid, name, xtype, varid)
72 #else
73 MFIX_nf90_def_var_Scalar = 1
74 #endif
75 end function MFIX_nf90_def_var_Scalar
76
77 function MFIX_nf90_def_var_oneDim(ncid, name, xtype, dimids, varid)
78 integer, intent( in) :: ncid
79 character (len = *), intent( in) :: name
80 integer, intent( in) :: xtype
81 integer, intent( in) :: dimids
82 integer, intent(inout) :: varid
83 integer :: MFIX_nf90_def_var_oneDim
84
85 integer, dimension(1) :: dimidsA
86 dimidsA(1) = dimids
87 #ifdef NETCDF
88 MFIX_nf90_def_var_oneDim = nf90_def_var(ncid, name, xtype, dimids, varid)
89 #else
90 MFIX_nf90_def_var_oneDim = 1
91 #endif
92 end function MFIX_nf90_def_var_oneDim
93
94 function MFIX_nf90_def_var_ManyDims(ncid, name, xtype, dimids, varid)
95 integer, intent( in) :: ncid
96 character (len = *), intent( in) :: name
97 integer, intent( in) :: xtype
98 integer, dimension(:), intent( in) :: dimids
99 integer, intent(inout) :: varid
100 integer :: MFIX_nf90_def_var_ManyDims
101
102 #ifdef NETCDF
103 MFIX_nf90_def_var_ManyDims = nf90_def_var(ncid, name, xtype, dimids, varid)
104 #else
105 MFIX_nf90_def_var_ManyDims = 1
106 #endif
107 end function MFIX_nf90_def_var_ManyDims
108
109
110 function MFIX_nf90_put_var_text(ncid, varid, values, start, count, stride, map)
111 integer, intent( in) :: ncid, varid
112 character (len = *), intent( in) :: values
113 integer, dimension(:), optional, intent( in) :: start, count, stride, map
114 integer :: MFIX_nf90_put_var_text
115
116
117 #ifdef NETCDF
118 MFIX_nf90_put_var_text = nf90_put_var(ncid, varid, values, start, count, stride, map)
119 #else
120 MFIX_nf90_put_var_text = 1
121 #endif
122 end function MFIX_nf90_put_var_text
123
124 function MFIX_nf90_get_var_text(ncid, varid, values, start, count, stride, map)
125 integer, intent( in) :: ncid, varid
126 character (len = *), intent(inout) :: values
127 integer, dimension(:), optional, intent( in) :: start, count, stride, map
128 integer :: MFIX_nf90_get_var_text
129
130
131 #ifdef NETCDF
132 MFIX_nf90_get_var_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
133 #else
134 MFIX_nf90_get_var_text = 1
135 #endif
136 end function MFIX_nf90_get_var_text
137
138
139 function MFIX_nf90_put_var_1D_text(ncid, varid, values, start, count, stride, map)
140 integer, intent( in) :: ncid, varid
141 character (len = *), dimension(:), &
142 intent( in) :: values
143 integer, dimension(:), optional, intent( in) :: start, count, stride, map
144 integer :: MFIX_nf90_put_var_1D_text
145
146 integer, parameter :: numDims = 1
147
148 #ifdef NETCDF
149 MFIX_nf90_put_var_1D_text = nf90_put_var(ncid, varid, values, start, count, stride, map)
150 #else
151 MFIX_nf90_put_var_1D_text = 1
152 #endif
153
154 end function MFIX_nf90_put_var_1D_text
155
156
157 function MFIX_nf90_put_var_2D_text(ncid, varid, values, start, count, stride, map)
158 integer, intent( in) :: ncid, varid
159 character (len = *), dimension(:, :), &
160 intent( in) :: values
161 integer, dimension(:), optional, intent( in) :: start, count, stride, map
162 integer :: MFIX_nf90_put_var_2D_text
163
164 integer, parameter :: numDims = 2
165
166 #ifdef NETCDF
167 MFIX_nf90_put_var_2D_text = nf90_put_var(ncid, varid, values, start, count, stride, map)
168 #else
169 MFIX_nf90_put_var_2D_text = 1
170 #endif
171
172 end function MFIX_nf90_put_var_2D_text
173
174
175 function MFIX_nf90_put_var_3D_text(ncid, varid, values, start, count, stride, map)
176 integer, intent( in) :: ncid, varid
177 character (len = *), dimension(:, :, :), &
178 intent( in) :: values
179 integer, dimension(:), optional, intent( in) :: start, count, stride, map
180 integer :: MFIX_nf90_put_var_3D_text
181
182 integer, parameter :: numDims = 3
183 #ifdef NETCDF
184 MFIX_nf90_put_var_3D_text = nf90_put_var(ncid, varid, values, start, count, stride, map)
185 #else
186 MFIX_nf90_put_var_3D_text = 1
187 #endif
188
189 end function MFIX_nf90_put_var_3D_text
190
191
192
193 function MFIX_nf90_get_var_1D_text(ncid, varid, values, start, count, stride, map)
194 integer, intent( in) :: ncid, varid
195 character (len = *), dimension(:), &
196 intent(inout) :: values
197 integer, dimension(:), optional, intent( in) :: start, count, stride, map
198 integer :: MFIX_nf90_get_var_1D_text
199
200 integer, parameter :: numDims = 1
201 #ifdef NETCDF
202 MFIX_nf90_get_var_1D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
203 #else
204 MFIX_nf90_get_var_1D_text = 1
205 #endif
206 end function MFIX_nf90_get_var_1D_text
207
208
209 function MFIX_nf90_get_var_2D_text(ncid, varid, values, start, count, stride, map)
210 integer, intent( in) :: ncid, varid
211 character (len = *), dimension(:, :), &
212 intent(inout) :: values
213 integer, dimension(:), optional, intent( in) :: start, count, stride, map
214 integer :: MFIX_nf90_get_var_2D_text
215
216 integer, parameter :: numDims = 2
217 #ifdef NETCDF
218 MFIX_nf90_get_var_2D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
219 #else
220 MFIX_nf90_get_var_2D_text = 1
221 #endif
222 end function MFIX_nf90_get_var_2D_text
223
224
225 function MFIX_nf90_get_var_3D_text(ncid, varid, values, start, count, stride, map)
226 integer, intent( in) :: ncid, varid
227 character (len = *), dimension(:, :, :), &
228 intent(inout) :: values
229 integer, dimension(:), optional, intent( in) :: start, count, stride, map
230 integer :: MFIX_nf90_get_var_3D_text
231
232 integer, parameter :: numDims = 3
233 #ifdef NETCDF
234 MFIX_nf90_get_var_3D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
235 #else
236 MFIX_nf90_get_var_3D_text = 1
237 #endif
238 end function MFIX_nf90_get_var_3D_text
239
240
241 function MFIX_nf90_get_var_4D_text(ncid, varid, values, start, count, stride, map)
242 integer, intent( in) :: ncid, varid
243 character (len = *), dimension(:, :, :, :), &
244 intent(inout) :: values
245 integer, dimension(:), optional, intent( in) :: start, count, stride, map
246 integer :: MFIX_nf90_get_var_4D_text
247
248 integer, parameter :: numDims = 4
249 #ifdef NETCDF
250 MFIX_nf90_get_var_4D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
251 #else
252 MFIX_nf90_get_var_4D_text = 1
253 #endif
254 end function MFIX_nf90_get_var_4D_text
255
256
257 function MFIX_nf90_get_var_5D_text(ncid, varid, values, start, count, stride, map)
258 integer, intent( in) :: ncid, varid
259 character (len = *), dimension(:, :, :, :, :), &
260 intent(inout) :: values
261 integer, dimension(:), optional, intent( in) :: start, count, stride, map
262 integer :: MFIX_nf90_get_var_5D_text
263
264 integer, parameter :: numDims = 5
265
266 #ifdef NETCDF
267 MFIX_nf90_get_var_5D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
268 #else
269 MFIX_nf90_get_var_5D_text = 1
270 #endif
271 end function MFIX_nf90_get_var_5D_text
272
273
274 function MFIX_nf90_get_var_6D_text(ncid, varid, values, start, count, stride, map)
275 integer, intent( in) :: ncid, varid
276 character (len = *), dimension(:, :, :, :, :, :), &
277 intent(inout) :: values
278 integer, dimension(:), optional, intent( in) :: start, count, stride, map
279 integer :: MFIX_nf90_get_var_6D_text
280
281 integer, parameter :: numDims = 6
282 #ifdef NETCDF
283 MFIX_nf90_get_var_6D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
284 #else
285 MFIX_nf90_get_var_6D_text = 1
286 #endif
287 end function MFIX_nf90_get_var_6D_text
288
289
290 function MFIX_nf90_get_var_7D_text(ncid, varid, values, start, count, stride, map)
291 integer, intent( in) :: ncid, varid
292 character (len = *), dimension(:, :, :, :, :, :, :), &
293 intent(inout) :: values
294 integer, dimension(:), optional, intent( in) :: start, count, stride, map
295 integer :: MFIX_nf90_get_var_7D_text
296
297 integer, parameter :: numDims = 7
298 #ifdef NETCDF
299 MFIX_nf90_get_var_7D_text = nf90_get_var(ncid, varid, values, start, count, stride, map)
300 #else
301 MFIX_nf90_get_var_7D_text = 1
302 #endif
303 end function MFIX_nf90_get_var_7D_text
304
305 function MFIX_nf90_put_var_FourByteInt(ncid, varid, values, start)
306 integer, intent( in) :: ncid, varid
307 integer , intent( in) :: values
308 integer, dimension(:), optional, intent( in) :: start
309 integer :: MFIX_nf90_put_var_FourByteInt
310
311 #ifdef NETCDF
312 MFIX_nf90_put_var_FourByteInt = nf90_put_var(ncid, varid, values, start)
313 #else
314 MFIX_nf90_put_var_FourByteInt = 1
315 #endif
316 end function MFIX_nf90_put_var_FourByteInt
317
318 function MFIX_nf90_put_var_FourByteReal(ncid, varid, values, start)
319 integer, intent( in) :: ncid, varid
320 real , intent( in) :: values
321 integer, dimension(:), optional, intent( in) :: start
322 integer :: MFIX_nf90_put_var_FourByteReal
323
324
325 #ifdef NETCDF
326 MFIX_nf90_put_var_FourByteReal = nf90_put_var(ncid, varid, values, start)
327 #else
328 MFIX_nf90_put_var_FourByteReal = 1
329 #endif
330 end function MFIX_nf90_put_var_FourByteReal
331
332
333 function MFIX_nf90_put_var_EightByteReal(ncid, varid, values, start)
334 integer, intent( in) :: ncid, varid
335 double precision, intent( in) :: values
336 integer, dimension(:), optional, intent( in) :: start
337 integer :: MFIX_nf90_put_var_EightByteReal
338
339
340 #ifdef NETCDF
341 MFIX_nf90_put_var_EightByteReal = nf90_put_var(ncid, varid, values, start)
342 #else
343 MFIX_nf90_put_var_EightByteReal = 1
344 #endif
345 end function MFIX_nf90_put_var_EightByteReal
346
347
348
349 function MFIX_nf90_get_var_TwoByteInt(ncid, varid, values, start)
350 integer, intent( in) :: ncid, varid
351 integer , intent(inout) :: values
352 integer, dimension(:), optional, intent( in) :: start
353 integer :: MFIX_nf90_get_var_TwoByteInt
354
355 integer :: counter
356
357
358 #ifdef NETCDF
359 MFIX_nf90_get_var_TwoByteInt = nf90_get_var(ncid, varid, values, start)
360 #else
361 MFIX_nf90_get_var_TwoByteInt = 1
362 #endif
363 end function MFIX_nf90_get_var_TwoByteInt
364
365
366 function MFIX_nf90_get_var_FourByteInt(ncid, varid, values, start)
367 integer, intent( in) :: ncid, varid
368 integer , intent(inout) :: values
369 integer, dimension(:), optional, intent( in) :: start
370 integer :: MFIX_nf90_get_var_FourByteInt
371
372 integer :: counter
373 integer :: defaultInteger
374
375 #ifdef NETCDF
376 MFIX_nf90_get_var_FourByteInt = nf90_get_var(ncid, varid, values, start)
377 #else
378 MFIX_nf90_get_var_FourByteInt = 1
379 #endif
380 end function MFIX_nf90_get_var_FourByteInt
381
382
383
384
385
386
387
388
389
390 #ifdef NETCDF
391
392 #else
393
394 #endif
395
396
397
398 function MFIX_nf90_get_var_FourByteReal(ncid, varid, values, start)
399 integer, intent( in) :: ncid, varid
400 real , intent(inout) :: values
401 integer, dimension(:), optional, intent( in) :: start
402 integer :: MFIX_nf90_get_var_FourByteReal
403
404
405 #ifdef NETCDF
406 MFIX_nf90_get_var_FourByteReal = nf90_get_var(ncid, varid, values, start)
407 #else
408 MFIX_nf90_get_var_FourByteReal = 1
409 #endif
410 end function MFIX_nf90_get_var_FourByteReal
411
412
413 function MFIX_nf90_get_var_EightByteReal(ncid, varid, values, start)
414 integer, intent( in) :: ncid, varid
415 double precision, intent(inout) :: values
416 integer, dimension(:), optional, intent( in) :: start
417 integer :: MFIX_nf90_get_var_EightByteReal
418
419 #ifdef NETCDF
420 MFIX_nf90_get_var_EightByteReal = nf90_get_var(ncid, varid, values, start)
421 #else
422 MFIX_nf90_get_var_EightByteReal = 1
423 #endif
424 end function MFIX_nf90_get_var_EightByteReal
425
426
427 function MFIX_nf90_get_var_1D_TwoByteInt(ncid, varid, values, start, count, stride, map)
428 integer, intent( in) :: ncid, varid
429 integer , dimension(:), &
430 intent(inout) :: values
431 integer, dimension(:), optional, intent( in) :: start, count, stride, map
432 integer :: MFIX_nf90_get_var_1D_TwoByteInt
433
434 #ifdef NETCDF
435 MFIX_nf90_get_var_1D_TwoByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
436 #else
437 MFIX_nf90_get_var_1D_TwoByteInt = 1
438 #endif
439
440 end function MFIX_nf90_get_var_1D_TwoByteInt
441
442
443 function MFIX_nf90_get_var_2D_TwoByteInt(ncid, varid, values, start, count, stride, map)
444 integer, intent( in) :: ncid, varid
445 integer , dimension(:, :), &
446 intent(inout) :: values
447 integer, dimension(:), optional, intent( in) :: start, count, stride, map
448 integer :: MFIX_nf90_get_var_2D_TwoByteInt
449
450 #ifdef NETCDF
451 MFIX_nf90_get_var_2D_TwoByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
452 #else
453 MFIX_nf90_get_var_2D_TwoByteInt = 1
454 #endif
455 end function MFIX_nf90_get_var_2D_TwoByteInt
456
457
458 function MFIX_nf90_get_var_3D_TwoByteInt(ncid, varid, values, start, count, stride, map)
459 integer, intent( in) :: ncid, varid
460 integer , dimension(:, :, :), &
461 intent(inout) :: values
462 integer, dimension(:), optional, intent( in) :: start, count, stride, map
463 integer :: MFIX_nf90_get_var_3D_TwoByteInt
464
465 #ifdef NETCDF
466 MFIX_nf90_get_var_3D_TwoByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
467 #else
468 MFIX_nf90_get_var_3D_TwoByteInt = 1
469 #endif
470 end function MFIX_nf90_get_var_3D_TwoByteInt
471
472 function MFIX_nf90_get_var_1D_FourByteInt(ncid, varid, values, start, count, stride, map)
473 integer, intent( in) :: ncid, varid
474 integer , dimension(:), &
475 intent(inout) :: values
476 integer, dimension(:), optional, intent( in) :: start, count, stride, map
477 integer :: MFIX_nf90_get_var_1D_FourByteInt
478 #ifdef NETCDF
479 MFIX_nf90_get_var_1D_FourByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
480 #else
481 MFIX_nf90_get_var_1D_FourByteInt = 1
482 #endif
483 end function MFIX_nf90_get_var_1D_FourByteInt
484
485
486 function MFIX_nf90_get_var_2D_FourByteInt(ncid, varid, values, start, count, stride, map)
487 integer, intent( in) :: ncid, varid
488 integer , dimension(:, :), &
489 intent(inout) :: values
490 integer, dimension(:), optional, intent( in) :: start, count, stride, map
491 integer :: MFIX_nf90_get_var_2D_FourByteInt
492
493 #ifdef NETCDF
494 MFIX_nf90_get_var_2D_FourByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
495 #else
496 MFIX_nf90_get_var_2D_FourByteInt = 1
497 #endif
498 end function MFIX_nf90_get_var_2D_FourByteInt
499
500
501 function MFIX_nf90_get_var_3D_FourByteInt(ncid, varid, values, start, count, stride, map)
502 integer, intent( in) :: ncid, varid
503 integer , dimension(:, :, :), &
504 intent(inout) :: values
505 integer, dimension(:), optional, intent( in) :: start, count, stride, map
506 integer :: MFIX_nf90_get_var_3D_FourByteInt
507 #ifdef NETCDF
508 MFIX_nf90_get_var_3D_FourByteInt = nf90_get_var(ncid, varid, values, start, count, stride, map)
509 #else
510 MFIX_nf90_get_var_3D_FourByteInt = 1
511 #endif
512 end function MFIX_nf90_get_var_3D_FourByteInt
513
514
515
516 function MFIX_nf90_get_var_1D_FourByteReal(ncid, varid, values, start, count, stride, map)
517 integer, intent( in) :: ncid, varid
518 real , dimension(:), &
519 intent(inout) :: values
520 integer, dimension(:), optional, intent( in) :: start, count, stride, map
521 integer :: MFIX_nf90_get_var_1D_FourByteReal
522 #ifdef NETCDF
523 MFIX_nf90_get_var_1D_FourByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
524 #else
525 MFIX_nf90_get_var_1D_FourByteReal = 1
526 #endif
527 end function MFIX_nf90_get_var_1D_FourByteReal
528
529
530 function MFIX_nf90_get_var_2D_FourByteReal(ncid, varid, values, start, count, stride, map)
531 integer, intent( in) :: ncid, varid
532 real , dimension(:, :), &
533 intent(inout) :: values
534 integer, dimension(:), optional, intent( in) :: start, count, stride, map
535 integer :: MFIX_nf90_get_var_2D_FourByteReal
536
537 #ifdef NETCDF
538 MFIX_nf90_get_var_2D_FourByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
539 #else
540 MFIX_nf90_get_var_2D_FourByteReal = 1
541 #endif
542 end function MFIX_nf90_get_var_2D_FourByteReal
543
544
545 function MFIX_nf90_get_var_3D_FourByteReal(ncid, varid, values, start, count, stride, map)
546 integer, intent( in) :: ncid, varid
547 real , dimension(:, :, :), &
548 intent(inout) :: values
549 integer, dimension(:), optional, intent( in) :: start, count, stride, map
550 integer :: MFIX_nf90_get_var_3D_FourByteReal
551 #ifdef NETCDF
552 MFIX_nf90_get_var_3D_FourByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
553 #else
554 MFIX_nf90_get_var_3D_FourByteReal = 1
555 #endif
556 end function MFIX_nf90_get_var_3D_FourByteReal
557
558 function MFIX_nf90_get_var_1D_EightByteReal(ncid, varid, values, start, count, stride, map)
559 integer, intent( in) :: ncid, varid
560 double precision, dimension(:), &
561 intent(inout) :: values
562 integer, dimension(:), optional, intent( in) :: start, count, stride, map
563 integer :: MFIX_nf90_get_var_1D_EightByteReal
564
565 #ifdef NETCDF
566 MFIX_nf90_get_var_1D_EightByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
567 #else
568 MFIX_nf90_get_var_1D_EightByteReal = 1
569 #endif
570 end function MFIX_nf90_get_var_1D_EightByteReal
571
572
573 function MFIX_nf90_get_var_2D_EightByteReal(ncid, varid, values, start, count, stride, map)
574 integer, intent( in) :: ncid, varid
575 double precision, dimension(:, :), &
576 intent(inout) :: values
577 integer, dimension(:), optional, intent( in) :: start, count, stride, map
578 integer :: MFIX_nf90_get_var_2D_EightByteReal
579
580 #ifdef NETCDF
581 MFIX_nf90_get_var_2D_EightByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
582 #else
583 MFIX_nf90_get_var_2D_EightByteReal = 1
584 #endif
585 end function MFIX_nf90_get_var_2D_EightByteReal
586
587
588 function MFIX_nf90_get_var_3D_EightByteReal(ncid, varid, values, start, count, stride, map)
589 integer, intent( in) :: ncid, varid
590 double precision, dimension(:, :, :), &
591 intent(inout) :: values
592 integer, dimension(:), optional, intent( in) :: start, count, stride, map
593 integer :: MFIX_nf90_get_var_3D_EightByteReal
594
595 #ifdef NETCDF
596 MFIX_nf90_get_var_3D_EightByteReal = nf90_get_var(ncid, varid, values, start, count, stride, map)
597 #else
598 MFIX_nf90_get_var_3D_EightByteReal = 1
599 #endif
600 end function MFIX_nf90_get_var_3D_EightByteReal
601
602 function MFIX_nf90_inquire_dimension(ncid, dimid, name, len)
603 integer, intent( in) :: ncid, dimid
604 character (len = *), optional, intent(inout) :: name
605 integer, optional, intent(inout) :: len
606 integer :: MFIX_nf90_inquire_dimension
607
608 #ifdef NETCDF
609 MFIX_nf90_inquire_dimension = nf90_inquire_dimension(ncid, dimid, name, len)
610 #else
611 MFIX_nf90_inquire_dimension = 1
612 #endif
613 end function MFIX_nf90_inquire_dimension
614
615 function MFIX_nf90_put_var_1D_FourByteInt(ncid, varid, values, start, count, stride, map)
616 integer, intent( in) :: ncid, varid
617 integer , dimension(:), &
618 intent( in) :: values
619 integer, dimension(:), optional, intent( in) :: start, count, stride, map
620 integer :: MFIX_nf90_put_var_1D_FourByteInt
621
622 #ifdef NETCDF
623 MFIX_nf90_put_var_1D_FourByteInt = nf90_put_var(ncid, varid, values, start, count, stride, map)
624 #else
625 MFIX_nf90_put_var_1D_FourByteInt = 1
626 #endif
627 end function MFIX_nf90_put_var_1D_FourByteInt
628
629
630 function MFIX_nf90_put_var_2D_FourByteInt(ncid, varid, values, start, count, stride, map)
631 integer, intent( in) :: ncid, varid
632 integer , dimension(:, :), &
633 intent( in) :: values
634 integer, dimension(:), optional, intent( in) :: start, count, stride, map
635 integer :: MFIX_nf90_put_var_2D_FourByteInt
636
637 #ifdef NETCDF
638 MFIX_nf90_put_var_2D_FourByteInt = nf90_put_var(ncid, varid, values, start, count, stride, map)
639 #else
640 MFIX_nf90_put_var_2D_FourByteInt = 1
641 #endif
642 end function MFIX_nf90_put_var_2D_FourByteInt
643
644
645 function MFIX_nf90_put_var_3D_FourByteInt(ncid, varid, values, start, count, stride, map)
646 integer, intent( in) :: ncid, varid
647 integer , dimension(:, :, :), &
648 intent( in) :: values
649 integer, dimension(:), optional, intent( in) :: start, count, stride, map
650 integer :: MFIX_nf90_put_var_3D_FourByteInt
651 #ifdef NETCDF
652 MFIX_nf90_put_var_3D_FourByteInt = nf90_put_var(ncid, varid, values, start, count, stride, map)
653 #else
654 MFIX_nf90_put_var_3D_FourByteInt = 1
655 #endif
656 end function MFIX_nf90_put_var_3D_FourByteInt
657
658 function MFIX_nf90_put_var_4D_FourByteInt(ncid, varid, values, start, count, stride, map)
659 integer, intent( in) :: ncid, varid
660 integer , dimension(:, :, : , :), &
661 intent( in) :: values
662 integer, dimension(:), optional, intent( in) :: start, count, stride, map
663 integer :: MFIX_nf90_put_var_4D_FourByteInt
664 #ifdef NETCDF
665 MFIX_nf90_put_var_4D_FourByteInt = nf90_put_var(ncid, varid, values, start, count, stride, map)
666 #else
667 MFIX_nf90_put_var_4D_FourByteInt = 1
668 #endif
669 end function MFIX_nf90_put_var_4D_FourByteInt
670
671 function MFIX_nf90_put_var_1D_FourByteReal(ncid, varid, values, start, count, stride, map)
672 integer, intent( in) :: ncid, varid
673 real , dimension(:), &
674 intent( in) :: values
675 integer, dimension(:), optional, intent( in) :: start, count, stride, map
676 integer :: MFIX_nf90_put_var_1D_FourByteReal
677
678 #ifdef NETCDF
679 MFIX_nf90_put_var_1D_FourByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
680 #else
681 MFIX_nf90_put_var_1D_FourByteReal = 1
682 #endif
683 end function MFIX_nf90_put_var_1D_FourByteReal
684
685
686 function MFIX_nf90_put_var_2D_FourByteReal(ncid, varid, values, start, count, stride, map)
687 integer, intent( in) :: ncid, varid
688 real , dimension(:, :), &
689 intent( in) :: values
690 integer, dimension(:), optional, intent( in) :: start, count, stride, map
691 integer :: MFIX_nf90_put_var_2D_FourByteReal
692
693 #ifdef NETCDF
694 MFIX_nf90_put_var_2D_FourByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
695 #else
696 MFIX_nf90_put_var_2D_FourByteReal = 1
697 #endif
698 end function MFIX_nf90_put_var_2D_FourByteReal
699
700
701 function MFIX_nf90_put_var_3D_FourByteReal(ncid, varid, values, start, count, stride, map)
702 integer, intent( in) :: ncid, varid
703 real , dimension(:, :, :), &
704 intent( in) :: values
705 integer, dimension(:), optional, intent( in) :: start, count, stride, map
706 integer :: MFIX_nf90_put_var_3D_FourByteReal
707 #ifdef NETCDF
708 MFIX_nf90_put_var_3D_FourByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
709 #else
710 MFIX_nf90_put_var_3D_FourByteReal = 1
711 #endif
712 end function MFIX_nf90_put_var_3D_FourByteReal
713
714
715 function MFIX_nf90_put_var_1D_EightByteReal(ncid, varid, values, start, count, stride, map)
716 integer, intent( in) :: ncid, varid
717 double precision, dimension(:), &
718 intent( in) :: values
719 integer, dimension(:), optional, intent( in) :: start, count, stride, map
720 integer :: MFIX_nf90_put_var_1D_EightByteReal
721
722 #ifdef NETCDF
723 MFIX_nf90_put_var_1D_EightByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
724 #else
725 MFIX_nf90_put_var_1D_EightByteReal = 1
726 #endif
727 end function MFIX_nf90_put_var_1D_EightByteReal
728
729
730 function MFIX_nf90_put_var_2D_EightByteReal(ncid, varid, values, start, count, stride, map)
731 integer, intent( in) :: ncid, varid
732 double precision, dimension(:, :), &
733 intent( in) :: values
734 integer, dimension(:), optional, intent( in) :: start, count, stride, map
735 integer :: MFIX_nf90_put_var_2D_EightByteReal
736 #ifdef NETCDF
737 MFIX_nf90_put_var_2D_EightByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
738 #else
739 MFIX_nf90_put_var_2D_EightByteReal = 1
740 #endif
741 end function MFIX_nf90_put_var_2D_EightByteReal
742
743
744 function MFIX_nf90_put_var_3D_EightByteReal(ncid, varid, values, start, count, stride, map)
745 integer, intent( in) :: ncid, varid
746 double precision, dimension(:, :, :), &
747 intent( in) :: values
748 integer, dimension(:), optional, intent( in) :: start, count, stride, map
749 integer :: MFIX_nf90_put_var_3D_EightByteReal
750 #ifdef NETCDF
751 MFIX_nf90_put_var_3D_EightByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
752 #else
753 MFIX_nf90_put_var_3D_EightByteReal = 1
754 #endif
755 end function MFIX_nf90_put_var_3D_EightByteReal
756
757
758 function MFIX_nf90_put_var_4D_EightByteReal(ncid, varid, values, start, count, stride, map)
759 integer, intent( in) :: ncid, varid
760 double precision, dimension(:, :, : , :), &
761 intent( in) :: values
762 integer, dimension(:), optional, intent( in) :: start, count, stride, map
763 integer :: MFIX_nf90_put_var_4D_EightByteReal
764 #ifdef NETCDF
765 MFIX_nf90_put_var_4D_EightByteReal = nf90_put_var(ncid, varid, values, start, count, stride, map)
766 #else
767 MFIX_nf90_put_var_4D_EightByteReal = 1
768 #endif
769 end function MFIX_nf90_put_var_4D_EightByteReal
770
771 function MFIX_usingNETCDF()
772 logical :: MFIX_usingNETCDF
773 #ifdef NETCDF
774 MFIX_usingNETCDF = .true.
775 #else
776 MFIX_usingNETCDF = .false.
777 #endif
778 end function MFIX_usingNETCDF
779
780
781
782
783 subroutine MFIX_check_netcdf( status )
784 implicit none
785 integer, intent ( in) :: status
786
787 #ifdef NETCDF
788 if (status /= nf90_noerr) then
789 write (*,*) ' ******************************************'
790 write (*,*) trim(nf90_strerror(status))
791 write (*,*) ' ******************************************'
792 end if
793 #endif
794 end subroutine MFIX_check_netcdf
795
796
797
798 function MFIX_nf90_create(path, cmode, ncid, initialsize, chunksize)
799 character (len = *), intent(in ) :: path
800 integer, intent(in ) :: cmode
801 integer, intent(inout) :: ncid
802 integer, optional, intent(in ) :: initialsize
803 integer, optional, intent(inout) :: chunksize
804 integer :: MFIX_nf90_create
805
806 integer :: fileSize
807
808 #ifdef NETCDF
809 MFIX_nf90_create = nf90_create(path, cmode, ncid, initialsize, chunksize)
810 #else
811 MFIX_nf90_create = 0
812 #endif
813 return
814 end function MFIX_nf90_create
815
816
817 function MFIX_nf90_def_dim(ncid, name, len, dimid)
818 integer, intent( in) :: ncid
819 character (len = *), intent( in) :: name
820 integer, intent( in) :: len
821 integer, intent(inout) :: dimid
822 integer :: MFIX_nf90_def_dim
823
824 #ifdef NETCDF
825 MFIX_nf90_def_dim = nf90_def_dim(ncid, name, len, dimid)
826 #else
827 MFIX_nf90_def_dim = 1
828 #endif
829 end function MFIX_nf90_def_dim
830
831
832 function MFIX_nf90_enddef(ncid, h_minfree, v_align, v_minfree, r_align)
833 integer, intent( in) :: ncid
834 integer, optional, intent( in) :: h_minfree, v_align, v_minfree, r_align
835 integer :: MFIX_nf90_enddef
836
837 #ifdef NETCDF
838 MFIX_nf90_enddef = nf90_enddef(ncid, h_minfree, v_align, v_minfree, r_align)
839 #else
840 MFIX_nf90_enddef = 1
841 #endif
842 end function MFIX_nf90_enddef
843
844
845 function MFIX_nf90_open(path, mode, ncid, chunksize)
846 character (len = *), intent(in ) :: path
847 integer, intent(in ) :: mode
848 integer, intent(inout) :: ncid
849 integer, optional, intent(inout) :: chunksize
850 integer :: MFIX_nf90_open
851 #ifdef NETCDF
852 MFIX_nf90_open = nf90_open(path, mode, ncid, chunksize)
853 #else
854 MFIX_nf90_open = 1
855 #endif
856 end function MFIX_nf90_open
857
858
859 function MFIX_nf90_inquire(ncid, nDimensions, nVariables, nAttributes, unlimitedDimId, formatNum)
860 integer, intent( in) :: ncid
861 integer, optional, intent(inout) :: nDimensions, nVariables, nAttributes, unlimitedDimId, formatNum
862 integer :: MFIX_nf90_inquire
863
864 integer :: nDims, nVars, nGAtts, unlimDimId, frmt
865
866 #ifdef NETCDF
867 MFIX_nf90_inquire = nf90_inquire(ncid, nDimensions, nVariables, nAttributes, unlimitedDimId, formatNum)
868 #else
869 MFIX_nf90_inquire = 1
870 #endif
871 end function MFIX_nf90_inquire
872
873
874 function MFIX_nf90_inq_dimid(ncid, name, dimid)
875 integer, intent( in) :: ncid
876 character (len = *), intent( in) :: name
877 integer, intent(inout) :: dimid
878 integer :: MFIX_nf90_inq_dimid
879
880 #ifdef NETCDF
881 MFIX_nf90_inq_dimid = nf90_inq_dimid(ncid, name, dimid)
882 #else
883 MFIX_nf90_inq_dimid = 1
884 #endif
885 end function MFIX_nf90_inq_dimid
886
887 function MFIX_nf90_inq_varid(ncid, name, varid)
888 integer, intent( in) :: ncid
889 character (len = *), intent( in) :: name
890 integer, intent(inout) :: varid
891 integer :: MFIX_nf90_inq_varid
892
893 #ifdef NETCDF
894 MFIX_nf90_inq_varid = nf90_inq_varid(ncid, name, varid)
895 #else
896 MFIX_nf90_inq_varid = 1
897 #endif
898 end function MFIX_nf90_inq_varid
899
900 function MFIX_nf90_close(ncid)
901 integer, intent( in) :: ncid
902 integer :: MFIX_nf90_close
903
904 #ifdef NETCDF
905 MFIX_nf90_close = nf90_close(ncid)
906 #else
907 MFIX_nf90_close = 1
908 #endif
909 end function MFIX_nf90_close
910
911 subroutine MFIX_ncvinq(ncid,varid,varnam,vartyp,nvdims,vdims,nvatts,rcode)
912 implicit none
913
914 integer :: ncid , varid , vartyp , nvdims , nvatts , rcode
915 integer :: vdims(*)
916 character(len=*) varnam
917
918 #ifdef NETCDF
919 call ncvinq(ncid,varid,varnam,vartyp,nvdims,vdims,nvatts,rcode)
920 #endif
921 return
922 end subroutine MFIX_ncvinq
923
924
925 end module MFIX_netcdf
926