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