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       ! Overloaded variable functions
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 ! 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 ! 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, & ! MFIX_nf90_get_var_EightByteInt, &
44               MFIX_nf90_get_var_FourByteReal, 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 ! 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         ! Dummy - shouldn't get used
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       !   function MFIX_nf90_get_var_EightByteInt(ncid, varid, values, start)
384       !     integer,                         intent( in) :: ncid, varid
385       !     integer , intent(inout) :: values
386       !     integer, dimension(:), optional, intent( in) :: start
387       !     integer                                      :: MFIX_nf90_get_var_EightByteInt
388       !
389       !
390     #ifdef NETCDF
391       !     MFIX_nf90_get_var_EightByteInt = nf90_get_var(ncid, varid, values, start)
392     #else
393       !     MFIX_nf90_get_var_EightByteInt = 1
394     #endif
395       !   end function MFIX_nf90_get_var_EightByteInt
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       !                          check_netcdf                             !
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