source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/phys/wstats.f90 @ 224

Last change on this file since 224 was 224, checked in by ymipsl, 10 years ago
File size: 129.7 KB
Line 
1subroutine wstats(ngrid,nom,titre,unite,dim,px)
2
3use mod_phys_lmdz_para, only : is_mpi_root, is_master, gather, klon_mpi_begin
4use mod_grid_phy_lmdz, only : klon_glo, Grid1Dto2D_glo
5
6implicit none
7
8!-----------------------------------------------------------------------
9!   INCLUDE 'dimensions.h'
10!
11!   dimensions.h contient les dimensions du modele
12!   ndm est tel que iim=2**ndm
13!-----------------------------------------------------------------------
14
15      INTEGER iim,jjm,llm,ndm
16
17      PARAMETER (iim= 128,jjm=96,llm=64,ndm=1)
18
19!-----------------------------------------------------------------------
20!-----------------------------------------------------------------------
21!   INCLUDE 'dimphys.h'
22
23! ngridmx : number of horizontal grid points
24! note: the -1/jjm term will be 0; unless jj=1
25      integer, parameter :: ngridmx = (2+(jjm-1)*iim - 1/jjm)   
26! nlayermx : number of atmospheric layers
27      integer, parameter :: nlayermx = llm 
28! nsoilmx : number of subterranean layers ! nsoilmx is now in comsoil_h
29      !integer, parameter :: nsoilmx = 4 ! for a test
30      !integer, parameter :: nsoilmx = 18 ! for z1=0.0002 m, depth = 18 m => mars case
31      !integer, parameter :: nsoilmx = 13 ! for z1=0.03 m, depth = 104.8 m => earth case
32!-----------------------------------------------------------------------
33
34!
35! $Id: comconst.h 1437 2010-09-30 08:29:10Z emillour $
36!
37!-----------------------------------------------------------------------
38! INCLUDE comconst.h
39
40      COMMON/comconsti/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl,          &
41     &                 iflag_top_bound,mode_top_bound
42      COMMON/comconstr/dtvr,daysec,                                     &
43     & pi,dtphys,dtdiss,rad,r,kappa,cotot,unsim,g,omeg                  &
44     & ,dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta        &
45     & ,dissip_pupstart  ,tau_top_bound,                                &
46     & daylen,molmass, ihf
47      COMMON/cpdetvenus/cpp,nu_venus,t0_venus
48
49      INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl
50      REAL dtvr ! dynamical time step (in s)
51      REAL daysec !length (in s) of a standard day
52      REAL pi    ! something like 3.14159....
53      REAL dtphys ! (s) time step for the physics
54      REAL dtdiss ! (s) time step for the dissipation
55      REAL rad ! (m) radius of the planet
56      REAL r ! Reduced Gas constant r=R/mu
57             ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol)
58      REAL cpp   ! Cp
59      REAL kappa ! kappa=R/Cp
60      REAL cotot
61      REAL unsim ! = 1./iim
62      REAL g ! (m/s2) gravity
63      REAL omeg ! (rad/s) rotation rate of the planet
64! Dissipation factors, for Earth model:
65      REAL dissip_factz,dissip_zref !dissip_deltaz
66! Dissipation factors, for other planets:
67      REAL dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta
68      REAL dissip_pupstart
69      INTEGER iflag_top_bound,mode_top_bound
70      REAL tau_top_bound
71      REAL daylen ! length of solar day, in 'standard' day length
72      REAL molmass ! (g/mol) molar mass of the atmosphere
73
74      REAL nu_venus,t0_venus ! coeffs needed for Cp(T), Venus atmosphere
75      REAL ihf  ! (W/m2) intrinsic heat flux for giant planets
76
77
78!-----------------------------------------------------------------------
79
80!  statto:
81!     This include file controls the production of statistics.
82!     Some variables could be set in a namelist, but it is easier to
83!     do it here since arrays can then be dimensioned using parameters
84!     and values shouldn't have to change too often.   SRL
85
86!     Calculate stats every istats physics timesteps, starting at first
87!     call.  If istats=0 then don't do statistics at all.  Check value
88!     if number of physics timesteps changes.
89        integer istats
90
91!     Calculate itime independent sums and sums of squares,
92!     example, istat=1,istime=1 gives a single time mean
93        integer, parameter :: istime=12
94
95!     Number of 2D and 3D variables on which to do statistics.
96        integer n2dvar, n3dvar
97        parameter (n2dvar = 8, n3dvar = 5)
98
99!     Units for writing stats header and data
100        integer usdata
101
102!     count tab to know the variable record
103        integer count(istime)
104
105!     Record of the number of stores made for each time.
106        integer nstore(istime)
107
108! Size of the "controle" array
109        integer, parameter :: cntrlsize=15
110
111!       common /sttcom/ dummy,nstore,istats,usdata
112        common /sttcom/ nstore,istats,usdata,count
113!     NetCDF-3.
114!
115! netcdf version 3 fortran interface:
116!
117
118!
119! external netcdf data types:
120!
121      integer nf_byte
122      integer nf_int1
123      integer nf_char
124      integer nf_short
125      integer nf_int2
126      integer nf_int
127      integer nf_float
128      integer nf_real
129      integer nf_double
130
131      parameter (nf_byte = 1)
132      parameter (nf_int1 = nf_byte)
133      parameter (nf_char = 2)
134      parameter (nf_short = 3)
135      parameter (nf_int2 = nf_short)
136      parameter (nf_int = 4)
137      parameter (nf_float = 5)
138      parameter (nf_real = nf_float)
139      parameter (nf_double = 6)
140
141!
142! default fill values:
143!
144      integer           nf_fill_byte
145      integer           nf_fill_int1
146      integer           nf_fill_char
147      integer           nf_fill_short
148      integer           nf_fill_int2
149      integer           nf_fill_int
150      real              nf_fill_float
151      real              nf_fill_real
152      doubleprecision   nf_fill_double
153
154      parameter (nf_fill_byte = -127)
155      parameter (nf_fill_int1 = nf_fill_byte)
156      parameter (nf_fill_char = 0)
157      parameter (nf_fill_short = -32767)
158      parameter (nf_fill_int2 = nf_fill_short)
159      parameter (nf_fill_int = -2147483647)
160      parameter (nf_fill_float = 9.9692099683868690e+36)
161      parameter (nf_fill_real = nf_fill_float)
162      parameter (nf_fill_double = 9.9692099683868690d+36)
163
164!
165! mode flags for opening and creating a netcdf dataset:
166!
167      integer nf_nowrite
168      integer nf_write
169      integer nf_clobber
170      integer nf_noclobber
171      integer nf_fill
172      integer nf_nofill
173      integer nf_lock
174      integer nf_share
175      integer nf_64bit_offset
176      integer nf_sizehint_default
177      integer nf_align_chunk
178      integer nf_format_classic
179      integer nf_format_64bit
180
181      parameter (nf_nowrite = 0)
182      parameter (nf_write = 1)
183      parameter (nf_clobber = 0)
184      parameter (nf_noclobber = 4)
185      parameter (nf_fill = 0)
186      parameter (nf_nofill = 256)
187      parameter (nf_lock = 1024)
188      parameter (nf_share = 2048)
189      parameter (nf_64bit_offset = 512)
190      parameter (nf_sizehint_default = 0)
191      parameter (nf_align_chunk = -1)
192      parameter (nf_format_classic = 1)
193      parameter (nf_format_64bit = 2)
194
195!
196! size argument for defining an unlimited dimension:
197!
198      integer nf_unlimited
199      parameter (nf_unlimited = 0)
200
201!
202! global attribute id:
203!
204      integer nf_global
205      parameter (nf_global = 0)
206
207!
208! implementation limits:
209!
210      integer nf_max_dims
211      integer nf_max_attrs
212      integer nf_max_vars
213      integer nf_max_name
214      integer nf_max_var_dims
215
216      parameter (nf_max_dims = 1024)
217      parameter (nf_max_attrs = 8192)
218      parameter (nf_max_vars = 8192)
219      parameter (nf_max_name = 256)
220      parameter (nf_max_var_dims = nf_max_dims)
221
222!
223! error codes:
224!
225      integer nf_noerr
226      integer nf_ebadid
227      integer nf_eexist
228      integer nf_einval
229      integer nf_eperm
230      integer nf_enotindefine
231      integer nf_eindefine
232      integer nf_einvalcoords
233      integer nf_emaxdims
234      integer nf_enameinuse
235      integer nf_enotatt
236      integer nf_emaxatts
237      integer nf_ebadtype
238      integer nf_ebaddim
239      integer nf_eunlimpos
240      integer nf_emaxvars
241      integer nf_enotvar
242      integer nf_eglobal
243      integer nf_enotnc
244      integer nf_ests
245      integer nf_emaxname
246      integer nf_eunlimit
247      integer nf_enorecvars
248      integer nf_echar
249      integer nf_eedge
250      integer nf_estride
251      integer nf_ebadname
252      integer nf_erange
253      integer nf_enomem
254      integer nf_evarsize
255      integer nf_edimsize
256      integer nf_etrunc
257
258      parameter (nf_noerr = 0)
259      parameter (nf_ebadid = -33)
260      parameter (nf_eexist = -35)
261      parameter (nf_einval = -36)
262      parameter (nf_eperm = -37)
263      parameter (nf_enotindefine = -38)
264      parameter (nf_eindefine = -39)
265      parameter (nf_einvalcoords = -40)
266      parameter (nf_emaxdims = -41)
267      parameter (nf_enameinuse = -42)
268      parameter (nf_enotatt = -43)
269      parameter (nf_emaxatts = -44)
270      parameter (nf_ebadtype = -45)
271      parameter (nf_ebaddim = -46)
272      parameter (nf_eunlimpos = -47)
273      parameter (nf_emaxvars = -48)
274      parameter (nf_enotvar = -49)
275      parameter (nf_eglobal = -50)
276      parameter (nf_enotnc = -51)
277      parameter (nf_ests = -52)
278      parameter (nf_emaxname = -53)
279      parameter (nf_eunlimit = -54)
280      parameter (nf_enorecvars = -55)
281      parameter (nf_echar = -56)
282      parameter (nf_eedge = -57)
283      parameter (nf_estride = -58)
284      parameter (nf_ebadname = -59)
285      parameter (nf_erange = -60)
286      parameter (nf_enomem = -61)
287      parameter (nf_evarsize = -62)
288      parameter (nf_edimsize = -63)
289      parameter (nf_etrunc = -64)
290!
291! error handling modes:
292!
293      integer  nf_fatal
294      integer nf_verbose
295
296      parameter (nf_fatal = 1)
297      parameter (nf_verbose = 2)
298
299!
300! miscellaneous routines:
301!
302      character*80   nf_inq_libvers
303      external       nf_inq_libvers
304
305      character*80   nf_strerror
306!                         (integer             ncerr)
307      external       nf_strerror
308
309      logical        nf_issyserr
310!                         (integer             ncerr)
311      external       nf_issyserr
312
313!
314! control routines:
315!
316      integer         nf_inq_base_pe
317!                         (integer             ncid,
318!                          integer             pe)
319      external        nf_inq_base_pe
320
321      integer         nf_set_base_pe
322!                         (integer             ncid,
323!                          integer             pe)
324      external        nf_set_base_pe
325
326      integer         nf_create
327!                         (character*(*)       path,
328!                          integer             cmode,
329!                          integer             ncid)
330      external        nf_create
331
332      integer         nf__create
333!                         (character*(*)       path,
334!                          integer             cmode,
335!                          integer             initialsz,
336!                          integer             chunksizehint,
337!                          integer             ncid)
338      external        nf__create
339
340      integer         nf__create_mp
341!                         (character*(*)       path,
342!                          integer             cmode,
343!                          integer             initialsz,
344!                          integer             basepe,
345!                          integer             chunksizehint,
346!                          integer             ncid)
347      external        nf__create_mp
348
349      integer         nf_open
350!                         (character*(*)       path,
351!                          integer             mode,
352!                          integer             ncid)
353      external        nf_open
354
355      integer         nf__open
356!                         (character*(*)       path,
357!                          integer             mode,
358!                          integer             chunksizehint,
359!                          integer             ncid)
360      external        nf__open
361
362      integer         nf__open_mp
363!                         (character*(*)       path,
364!                          integer             mode,
365!                          integer             basepe,
366!                          integer             chunksizehint,
367!                          integer             ncid)
368      external        nf__open_mp
369
370      integer         nf_set_fill
371!                         (integer             ncid,
372!                          integer             fillmode,
373!                          integer             old_mode)
374      external        nf_set_fill
375
376      integer         nf_set_default_format
377!                          (integer             format,
378!                          integer             old_format)
379      external        nf_set_default_format
380
381      integer         nf_redef
382!                         (integer             ncid)
383      external        nf_redef
384
385      integer         nf_enddef
386!                         (integer             ncid)
387      external        nf_enddef
388
389      integer         nf__enddef
390!                         (integer             ncid,
391!                          integer             h_minfree,
392!                          integer             v_align,
393!                          integer             v_minfree,
394!                          integer             r_align)
395      external        nf__enddef
396
397      integer         nf_sync
398!                         (integer             ncid)
399      external        nf_sync
400
401      integer         nf_abort
402!                         (integer             ncid)
403      external        nf_abort
404
405      integer         nf_close
406!                         (integer             ncid)
407      external        nf_close
408
409      integer         nf_delete
410!                         (character*(*)       ncid)
411      external        nf_delete
412
413!
414! general inquiry routines:
415!
416
417      integer         nf_inq
418!                         (integer             ncid,
419!                          integer             ndims,
420!                          integer             nvars,
421!                          integer             ngatts,
422!                          integer             unlimdimid)
423      external        nf_inq
424
425      integer         nf_inq_ndims
426!                         (integer             ncid,
427!                          integer             ndims)
428      external        nf_inq_ndims
429
430      integer         nf_inq_nvars
431!                         (integer             ncid,
432!                          integer             nvars)
433      external        nf_inq_nvars
434
435      integer         nf_inq_natts
436!                         (integer             ncid,
437!                          integer             ngatts)
438      external        nf_inq_natts
439
440      integer         nf_inq_unlimdim
441!                         (integer             ncid,
442!                          integer             unlimdimid)
443      external        nf_inq_unlimdim
444
445      integer         nf_inq_format
446!                         (integer             ncid,
447!                          integer             format)
448      external        nf_inq_format
449
450!
451! dimension routines:
452!
453
454      integer         nf_def_dim
455!                         (integer             ncid,
456!                          character(*)        name,
457!                          integer             len,
458!                          integer             dimid)
459      external        nf_def_dim
460
461      integer         nf_inq_dimid
462!                         (integer             ncid,
463!                          character(*)        name,
464!                          integer             dimid)
465      external        nf_inq_dimid
466
467      integer         nf_inq_dim
468!                         (integer             ncid,
469!                          integer             dimid,
470!                          character(*)        name,
471!                          integer             len)
472      external        nf_inq_dim
473
474      integer         nf_inq_dimname
475!                         (integer             ncid,
476!                          integer             dimid,
477!                          character(*)        name)
478      external        nf_inq_dimname
479
480      integer         nf_inq_dimlen
481!                         (integer             ncid,
482!                          integer             dimid,
483!                          integer             len)
484      external        nf_inq_dimlen
485
486      integer         nf_rename_dim
487!                         (integer             ncid,
488!                          integer             dimid,
489!                          character(*)        name)
490      external        nf_rename_dim
491
492!
493! general attribute routines:
494!
495
496      integer         nf_inq_att
497!                         (integer             ncid,
498!                          integer             varid,
499!                          character(*)        name,
500!                          integer             xtype,
501!                          integer             len)
502      external        nf_inq_att
503
504      integer         nf_inq_attid
505!                         (integer             ncid,
506!                          integer             varid,
507!                          character(*)        name,
508!                          integer             attnum)
509      external        nf_inq_attid
510
511      integer         nf_inq_atttype
512!                         (integer             ncid,
513!                          integer             varid,
514!                          character(*)        name,
515!                          integer             xtype)
516      external        nf_inq_atttype
517
518      integer         nf_inq_attlen
519!                         (integer             ncid,
520!                          integer             varid,
521!                          character(*)        name,
522!                          integer             len)
523      external        nf_inq_attlen
524
525      integer         nf_inq_attname
526!                         (integer             ncid,
527!                          integer             varid,
528!                          integer             attnum,
529!                          character(*)        name)
530      external        nf_inq_attname
531
532      integer         nf_copy_att
533!                         (integer             ncid_in,
534!                          integer             varid_in,
535!                          character(*)        name,
536!                          integer             ncid_out,
537!                          integer             varid_out)
538      external        nf_copy_att
539
540      integer         nf_rename_att
541!                         (integer             ncid,
542!                          integer             varid,
543!                          character(*)        curname,
544!                          character(*)        newname)
545      external        nf_rename_att
546
547      integer         nf_del_att
548!                         (integer             ncid,
549!                          integer             varid,
550!                          character(*)        name)
551      external        nf_del_att
552
553!
554! attribute put/get routines:
555!
556
557      integer         nf_put_att_text
558!                         (integer             ncid,
559!                          integer             varid,
560!                          character(*)        name,
561!                          integer             len,
562!                          character(*)        text)
563      external        nf_put_att_text
564
565      integer         nf_get_att_text
566!                         (integer             ncid,
567!                          integer             varid,
568!                          character(*)        name,
569!                          character(*)        text)
570      external        nf_get_att_text
571
572      integer         nf_put_att_int1
573!                         (integer             ncid,
574!                          integer             varid,
575!                          character(*)        name,
576!                          integer             xtype,
577!                          integer             len,
578!                          nf_int1_t           i1vals(1))
579      external        nf_put_att_int1
580
581      integer         nf_get_att_int1
582!                         (integer             ncid,
583!                          integer             varid,
584!                          character(*)        name,
585!                          nf_int1_t           i1vals(1))
586      external        nf_get_att_int1
587
588      integer         nf_put_att_int2
589!                         (integer             ncid,
590!                          integer             varid,
591!                          character(*)        name,
592!                          integer             xtype,
593!                          integer             len,
594!                          nf_int2_t           i2vals(1))
595      external        nf_put_att_int2
596
597      integer         nf_get_att_int2
598!                         (integer             ncid,
599!                          integer             varid,
600!                          character(*)        name,
601!                          nf_int2_t           i2vals(1))
602      external        nf_get_att_int2
603
604      integer         nf_put_att_int
605!                         (integer             ncid,
606!                          integer             varid,
607!                          character(*)        name,
608!                          integer             xtype,
609!                          integer             len,
610!                          integer             ivals(1))
611      external        nf_put_att_int
612
613      integer         nf_get_att_int
614!                         (integer             ncid,
615!                          integer             varid,
616!                          character(*)        name,
617!                          integer             ivals(1))
618      external        nf_get_att_int
619
620      integer         nf_put_att_real
621!                         (integer             ncid,
622!                          integer             varid,
623!                          character(*)        name,
624!                          integer             xtype,
625!                          integer             len,
626!                          real                rvals(1))
627      external        nf_put_att_real
628
629      integer         nf_get_att_real
630!                         (integer             ncid,
631!                          integer             varid,
632!                          character(*)        name,
633!                          real                rvals(1))
634      external        nf_get_att_real
635
636      integer         nf_put_att_double
637!                         (integer             ncid,
638!                          integer             varid,
639!                          character(*)        name,
640!                          integer             xtype,
641!                          integer             len,
642!                          double              dvals(1))
643      external        nf_put_att_double
644
645      integer         nf_get_att_double
646!                         (integer             ncid,
647!                          integer             varid,
648!                          character(*)        name,
649!                          double              dvals(1))
650      external        nf_get_att_double
651
652!
653! general variable routines:
654!
655
656      integer         nf_def_var
657!                         (integer             ncid,
658!                          character(*)        name,
659!                          integer             datatype,
660!                          integer             ndims,
661!                          integer             dimids(1),
662!                          integer             varid)
663      external        nf_def_var
664
665      integer         nf_inq_var
666!                         (integer             ncid,
667!                          integer             varid,
668!                          character(*)        name,
669!                          integer             datatype,
670!                          integer             ndims,
671!                          integer             dimids(1),
672!                          integer             natts)
673      external        nf_inq_var
674
675      integer         nf_inq_varid
676!                         (integer             ncid,
677!                          character(*)        name,
678!                          integer             varid)
679      external        nf_inq_varid
680
681      integer         nf_inq_varname
682!                         (integer             ncid,
683!                          integer             varid,
684!                          character(*)        name)
685      external        nf_inq_varname
686
687      integer         nf_inq_vartype
688!                         (integer             ncid,
689!                          integer             varid,
690!                          integer             xtype)
691      external        nf_inq_vartype
692
693      integer         nf_inq_varndims
694!                         (integer             ncid,
695!                          integer             varid,
696!                          integer             ndims)
697      external        nf_inq_varndims
698
699      integer         nf_inq_vardimid
700!                         (integer             ncid,
701!                          integer             varid,
702!                          integer             dimids(1))
703      external        nf_inq_vardimid
704
705      integer         nf_inq_varnatts
706!                         (integer             ncid,
707!                          integer             varid,
708!                          integer             natts)
709      external        nf_inq_varnatts
710
711      integer         nf_rename_var
712!                         (integer             ncid,
713!                          integer             varid,
714!                          character(*)        name)
715      external        nf_rename_var
716
717      integer         nf_copy_var
718!                         (integer             ncid_in,
719!                          integer             varid,
720!                          integer             ncid_out)
721      external        nf_copy_var
722
723!
724! entire variable put/get routines:
725!
726
727      integer         nf_put_var_text
728!                         (integer             ncid,
729!                          integer             varid,
730!                          character(*)        text)
731      external        nf_put_var_text
732
733      integer         nf_get_var_text
734!                         (integer             ncid,
735!                          integer             varid,
736!                          character(*)        text)
737      external        nf_get_var_text
738
739      integer         nf_put_var_int1
740!                         (integer             ncid,
741!                          integer             varid,
742!                          nf_int1_t           i1vals(1))
743      external        nf_put_var_int1
744
745      integer         nf_get_var_int1
746!                         (integer             ncid,
747!                          integer             varid,
748!                          nf_int1_t           i1vals(1))
749      external        nf_get_var_int1
750
751      integer         nf_put_var_int2
752!                         (integer             ncid,
753!                          integer             varid,
754!                          nf_int2_t           i2vals(1))
755      external        nf_put_var_int2
756
757      integer         nf_get_var_int2
758!                         (integer             ncid,
759!                          integer             varid,
760!                          nf_int2_t           i2vals(1))
761      external        nf_get_var_int2
762
763      integer         nf_put_var_int
764!                         (integer             ncid,
765!                          integer             varid,
766!                          integer             ivals(1))
767      external        nf_put_var_int
768
769      integer         nf_get_var_int
770!                         (integer             ncid,
771!                          integer             varid,
772!                          integer             ivals(1))
773      external        nf_get_var_int
774
775      integer         nf_put_var_real
776!                         (integer             ncid,
777!                          integer             varid,
778!                          real                rvals(1))
779      external        nf_put_var_real
780
781      integer         nf_get_var_real
782!                         (integer             ncid,
783!                          integer             varid,
784!                          real                rvals(1))
785      external        nf_get_var_real
786
787      integer         nf_put_var_double
788!                         (integer             ncid,
789!                          integer             varid,
790!                          doubleprecision     dvals(1))
791      external        nf_put_var_double
792
793      integer         nf_get_var_double
794!                         (integer             ncid,
795!                          integer             varid,
796!                          doubleprecision     dvals(1))
797      external        nf_get_var_double
798
799!
800! single variable put/get routines:
801!
802
803      integer         nf_put_var1_text
804!                         (integer             ncid,
805!                          integer             varid,
806!                          integer             index(1),
807!                          character*1         text)
808      external        nf_put_var1_text
809
810      integer         nf_get_var1_text
811!                         (integer             ncid,
812!                          integer             varid,
813!                          integer             index(1),
814!                          character*1         text)
815      external        nf_get_var1_text
816
817      integer         nf_put_var1_int1
818!                         (integer             ncid,
819!                          integer             varid,
820!                          integer             index(1),
821!                          nf_int1_t           i1val)
822      external        nf_put_var1_int1
823
824      integer         nf_get_var1_int1
825!                         (integer             ncid,
826!                          integer             varid,
827!                          integer             index(1),
828!                          nf_int1_t           i1val)
829      external        nf_get_var1_int1
830
831      integer         nf_put_var1_int2
832!                         (integer             ncid,
833!                          integer             varid,
834!                          integer             index(1),
835!                          nf_int2_t           i2val)
836      external        nf_put_var1_int2
837
838      integer         nf_get_var1_int2
839!                         (integer             ncid,
840!                          integer             varid,
841!                          integer             index(1),
842!                          nf_int2_t           i2val)
843      external        nf_get_var1_int2
844
845      integer         nf_put_var1_int
846!                         (integer             ncid,
847!                          integer             varid,
848!                          integer             index(1),
849!                          integer             ival)
850      external        nf_put_var1_int
851
852      integer         nf_get_var1_int
853!                         (integer             ncid,
854!                          integer             varid,
855!                          integer             index(1),
856!                          integer             ival)
857      external        nf_get_var1_int
858
859      integer         nf_put_var1_real
860!                         (integer             ncid,
861!                          integer             varid,
862!                          integer             index(1),
863!                          real                rval)
864      external        nf_put_var1_real
865
866      integer         nf_get_var1_real
867!                         (integer             ncid,
868!                          integer             varid,
869!                          integer             index(1),
870!                          real                rval)
871      external        nf_get_var1_real
872
873      integer         nf_put_var1_double
874!                         (integer             ncid,
875!                          integer             varid,
876!                          integer             index(1),
877!                          doubleprecision     dval)
878      external        nf_put_var1_double
879
880      integer         nf_get_var1_double
881!                         (integer             ncid,
882!                          integer             varid,
883!                          integer             index(1),
884!                          doubleprecision     dval)
885      external        nf_get_var1_double
886
887!
888! variable array put/get routines:
889!
890
891      integer         nf_put_vara_text
892!                         (integer             ncid,
893!                          integer             varid,
894!                          integer             start(1),
895!                          integer             count(1),
896!                          character(*)        text)
897      external        nf_put_vara_text
898
899      integer         nf_get_vara_text
900!                         (integer             ncid,
901!                          integer             varid,
902!                          integer             start(1),
903!                          integer             count(1),
904!                          character(*)        text)
905      external        nf_get_vara_text
906
907      integer         nf_put_vara_int1
908!                         (integer             ncid,
909!                          integer             varid,
910!                          integer             start(1),
911!                          integer             count(1),
912!                          nf_int1_t           i1vals(1))
913      external        nf_put_vara_int1
914
915      integer         nf_get_vara_int1
916!                         (integer             ncid,
917!                          integer             varid,
918!                          integer             start(1),
919!                          integer             count(1),
920!                          nf_int1_t           i1vals(1))
921      external        nf_get_vara_int1
922
923      integer         nf_put_vara_int2
924!                         (integer             ncid,
925!                          integer             varid,
926!                          integer             start(1),
927!                          integer             count(1),
928!                          nf_int2_t           i2vals(1))
929      external        nf_put_vara_int2
930
931      integer         nf_get_vara_int2
932!                         (integer             ncid,
933!                          integer             varid,
934!                          integer             start(1),
935!                          integer             count(1),
936!                          nf_int2_t           i2vals(1))
937      external        nf_get_vara_int2
938
939      integer         nf_put_vara_int
940!                         (integer             ncid,
941!                          integer             varid,
942!                          integer             start(1),
943!                          integer             count(1),
944!                          integer             ivals(1))
945      external        nf_put_vara_int
946
947      integer         nf_get_vara_int
948!                         (integer             ncid,
949!                          integer             varid,
950!                          integer             start(1),
951!                          integer             count(1),
952!                          integer             ivals(1))
953      external        nf_get_vara_int
954
955      integer         nf_put_vara_real
956!                         (integer             ncid,
957!                          integer             varid,
958!                          integer             start(1),
959!                          integer             count(1),
960!                          real                rvals(1))
961      external        nf_put_vara_real
962
963      integer         nf_get_vara_real
964!                         (integer             ncid,
965!                          integer             varid,
966!                          integer             start(1),
967!                          integer             count(1),
968!                          real                rvals(1))
969      external        nf_get_vara_real
970
971      integer         nf_put_vara_double
972!                         (integer             ncid,
973!                          integer             varid,
974!                          integer             start(1),
975!                          integer             count(1),
976!                          doubleprecision     dvals(1))
977      external        nf_put_vara_double
978
979      integer         nf_get_vara_double
980!                         (integer             ncid,
981!                          integer             varid,
982!                          integer             start(1),
983!                          integer             count(1),
984!                          doubleprecision     dvals(1))
985      external        nf_get_vara_double
986
987!
988! strided variable put/get routines:
989!
990
991      integer         nf_put_vars_text
992!                         (integer             ncid,
993!                          integer             varid,
994!                          integer             start(1),
995!                          integer             count(1),
996!                          integer             stride(1),
997!                          character(*)        text)
998      external        nf_put_vars_text
999
1000      integer         nf_get_vars_text
1001!                         (integer             ncid,
1002!                          integer             varid,
1003!                          integer             start(1),
1004!                          integer             count(1),
1005!                          integer             stride(1),
1006!                          character(*)        text)
1007      external        nf_get_vars_text
1008
1009      integer         nf_put_vars_int1
1010!                         (integer             ncid,
1011!                          integer             varid,
1012!                          integer             start(1),
1013!                          integer             count(1),
1014!                          integer             stride(1),
1015!                          nf_int1_t           i1vals(1))
1016      external        nf_put_vars_int1
1017
1018      integer         nf_get_vars_int1
1019!                         (integer             ncid,
1020!                          integer             varid,
1021!                          integer             start(1),
1022!                          integer             count(1),
1023!                          integer             stride(1),
1024!                          nf_int1_t           i1vals(1))
1025      external        nf_get_vars_int1
1026
1027      integer         nf_put_vars_int2
1028!                         (integer             ncid,
1029!                          integer             varid,
1030!                          integer             start(1),
1031!                          integer             count(1),
1032!                          integer             stride(1),
1033!                          nf_int2_t           i2vals(1))
1034      external        nf_put_vars_int2
1035
1036      integer         nf_get_vars_int2
1037!                         (integer             ncid,
1038!                          integer             varid,
1039!                          integer             start(1),
1040!                          integer             count(1),
1041!                          integer             stride(1),
1042!                          nf_int2_t           i2vals(1))
1043      external        nf_get_vars_int2
1044
1045      integer         nf_put_vars_int
1046!                         (integer             ncid,
1047!                          integer             varid,
1048!                          integer             start(1),
1049!                          integer             count(1),
1050!                          integer             stride(1),
1051!                          integer             ivals(1))
1052      external        nf_put_vars_int
1053
1054      integer         nf_get_vars_int
1055!                         (integer             ncid,
1056!                          integer             varid,
1057!                          integer             start(1),
1058!                          integer             count(1),
1059!                          integer             stride(1),
1060!                          integer             ivals(1))
1061      external        nf_get_vars_int
1062
1063      integer         nf_put_vars_real
1064!                         (integer             ncid,
1065!                          integer             varid,
1066!                          integer             start(1),
1067!                          integer             count(1),
1068!                          integer             stride(1),
1069!                          real                rvals(1))
1070      external        nf_put_vars_real
1071
1072      integer         nf_get_vars_real
1073!                         (integer             ncid,
1074!                          integer             varid,
1075!                          integer             start(1),
1076!                          integer             count(1),
1077!                          integer             stride(1),
1078!                          real                rvals(1))
1079      external        nf_get_vars_real
1080
1081      integer         nf_put_vars_double
1082!                         (integer             ncid,
1083!                          integer             varid,
1084!                          integer             start(1),
1085!                          integer             count(1),
1086!                          integer             stride(1),
1087!                          doubleprecision     dvals(1))
1088      external        nf_put_vars_double
1089
1090      integer         nf_get_vars_double
1091!                         (integer             ncid,
1092!                          integer             varid,
1093!                          integer             start(1),
1094!                          integer             count(1),
1095!                          integer             stride(1),
1096!                          doubleprecision     dvals(1))
1097      external        nf_get_vars_double
1098
1099!
1100! mapped variable put/get routines:
1101!
1102
1103      integer         nf_put_varm_text
1104!                         (integer             ncid,
1105!                          integer             varid,
1106!                          integer             start(1),
1107!                          integer             count(1),
1108!                          integer             stride(1),
1109!                          integer             imap(1),
1110!                          character(*)        text)
1111      external        nf_put_varm_text
1112
1113      integer         nf_get_varm_text
1114!                         (integer             ncid,
1115!                          integer             varid,
1116!                          integer             start(1),
1117!                          integer             count(1),
1118!                          integer             stride(1),
1119!                          integer             imap(1),
1120!                          character(*)        text)
1121      external        nf_get_varm_text
1122
1123      integer         nf_put_varm_int1
1124!                         (integer             ncid,
1125!                          integer             varid,
1126!                          integer             start(1),
1127!                          integer             count(1),
1128!                          integer             stride(1),
1129!                          integer             imap(1),
1130!                          nf_int1_t           i1vals(1))
1131      external        nf_put_varm_int1
1132
1133      integer         nf_get_varm_int1
1134!                         (integer             ncid,
1135!                          integer             varid,
1136!                          integer             start(1),
1137!                          integer             count(1),
1138!                          integer             stride(1),
1139!                          integer             imap(1),
1140!                          nf_int1_t           i1vals(1))
1141      external        nf_get_varm_int1
1142
1143      integer         nf_put_varm_int2
1144!                         (integer             ncid,
1145!                          integer             varid,
1146!                          integer             start(1),
1147!                          integer             count(1),
1148!                          integer             stride(1),
1149!                          integer             imap(1),
1150!                          nf_int2_t           i2vals(1))
1151      external        nf_put_varm_int2
1152
1153      integer         nf_get_varm_int2
1154!                         (integer             ncid,
1155!                          integer             varid,
1156!                          integer             start(1),
1157!                          integer             count(1),
1158!                          integer             stride(1),
1159!                          integer             imap(1),
1160!                          nf_int2_t           i2vals(1))
1161      external        nf_get_varm_int2
1162
1163      integer         nf_put_varm_int
1164!                         (integer             ncid,
1165!                          integer             varid,
1166!                          integer             start(1),
1167!                          integer             count(1),
1168!                          integer             stride(1),
1169!                          integer             imap(1),
1170!                          integer             ivals(1))
1171      external        nf_put_varm_int
1172
1173      integer         nf_get_varm_int
1174!                         (integer             ncid,
1175!                          integer             varid,
1176!                          integer             start(1),
1177!                          integer             count(1),
1178!                          integer             stride(1),
1179!                          integer             imap(1),
1180!                          integer             ivals(1))
1181      external        nf_get_varm_int
1182
1183      integer         nf_put_varm_real
1184!                         (integer             ncid,
1185!                          integer             varid,
1186!                          integer             start(1),
1187!                          integer             count(1),
1188!                          integer             stride(1),
1189!                          integer             imap(1),
1190!                          real                rvals(1))
1191      external        nf_put_varm_real
1192
1193      integer         nf_get_varm_real
1194!                         (integer             ncid,
1195!                          integer             varid,
1196!                          integer             start(1),
1197!                          integer             count(1),
1198!                          integer             stride(1),
1199!                          integer             imap(1),
1200!                          real                rvals(1))
1201      external        nf_get_varm_real
1202
1203      integer         nf_put_varm_double
1204!                         (integer             ncid,
1205!                          integer             varid,
1206!                          integer             start(1),
1207!                          integer             count(1),
1208!                          integer             stride(1),
1209!                          integer             imap(1),
1210!                          doubleprecision     dvals(1))
1211      external        nf_put_varm_double
1212
1213      integer         nf_get_varm_double
1214!                         (integer             ncid,
1215!                          integer             varid,
1216!                          integer             start(1),
1217!                          integer             count(1),
1218!                          integer             stride(1),
1219!                          integer             imap(1),
1220!                          doubleprecision     dvals(1))
1221      external        nf_get_varm_double
1222
1223
1224!     NetCDF-2.
1225!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1226! begin netcdf 2.4 backward compatibility:
1227!
1228
1229!     
1230! functions in the fortran interface
1231!
1232      integer nccre
1233      integer ncopn
1234      integer ncddef
1235      integer ncdid
1236      integer ncvdef
1237      integer ncvid
1238      integer nctlen
1239      integer ncsfil
1240
1241      external nccre
1242      external ncopn
1243      external ncddef
1244      external ncdid
1245      external ncvdef
1246      external ncvid
1247      external nctlen
1248      external ncsfil
1249
1250
1251      integer ncrdwr
1252      integer nccreat
1253      integer ncexcl
1254      integer ncindef
1255      integer ncnsync
1256      integer nchsync
1257      integer ncndirty
1258      integer nchdirty
1259      integer nclink
1260      integer ncnowrit
1261      integer ncwrite
1262      integer ncclob
1263      integer ncnoclob
1264      integer ncglobal
1265      integer ncfill
1266      integer ncnofill
1267      integer maxncop
1268      integer maxncdim
1269      integer maxncatt
1270      integer maxncvar
1271      integer maxncnam
1272      integer maxvdims
1273      integer ncnoerr
1274      integer ncebadid
1275      integer ncenfile
1276      integer nceexist
1277      integer nceinval
1278      integer nceperm
1279      integer ncenotin
1280      integer nceindef
1281      integer ncecoord
1282      integer ncemaxds
1283      integer ncename
1284      integer ncenoatt
1285      integer ncemaxat
1286      integer ncebadty
1287      integer ncebadd
1288      integer ncests
1289      integer nceunlim
1290      integer ncemaxvs
1291      integer ncenotvr
1292      integer nceglob
1293      integer ncenotnc
1294      integer ncfoobar
1295      integer ncsyserr
1296      integer ncfatal
1297      integer ncverbos
1298      integer ncentool
1299
1300
1301!
1302! netcdf data types:
1303!
1304      integer ncbyte
1305      integer ncchar
1306      integer ncshort
1307      integer nclong
1308      integer ncfloat
1309      integer ncdouble
1310
1311      parameter(ncbyte = 1)
1312      parameter(ncchar = 2)
1313      parameter(ncshort = 3)
1314      parameter(nclong = 4)
1315      parameter(ncfloat = 5)
1316      parameter(ncdouble = 6)
1317
1318!     
1319!     masks for the struct nc flag field; passed in as 'mode' arg to
1320!     nccreate and ncopen.
1321!     
1322
1323!     read/write, 0 => readonly
1324      parameter(ncrdwr = 1)
1325!     in create phase, cleared by ncendef
1326      parameter(nccreat = 2)
1327!     on create destroy existing file
1328      parameter(ncexcl = 4)
1329!     in define mode, cleared by ncendef
1330      parameter(ncindef = 8)
1331!     synchronise numrecs on change (x'10')
1332      parameter(ncnsync = 16)
1333!     synchronise whole header on change (x'20')
1334      parameter(nchsync = 32)
1335!     numrecs has changed (x'40')
1336      parameter(ncndirty = 64) 
1337!     header info has changed (x'80')
1338      parameter(nchdirty = 128)
1339!     prefill vars on endef and increase of record, the default behavior
1340      parameter(ncfill = 0)
1341!     do not fill vars on endef and increase of record (x'100')
1342      parameter(ncnofill = 256)
1343!     isa link (x'8000')
1344      parameter(nclink = 32768)
1345
1346!     
1347!     'mode' arguments for nccreate and ncopen
1348!     
1349      parameter(ncnowrit = 0)
1350      parameter(ncwrite = ncrdwr)
1351      parameter(ncclob = nf_clobber)
1352      parameter(ncnoclob = nf_noclobber)
1353
1354!     
1355!     'size' argument to ncdimdef for an unlimited dimension
1356!     
1357      integer ncunlim
1358      parameter(ncunlim = 0)
1359
1360!     
1361!     attribute id to put/get a global attribute
1362!     
1363      parameter(ncglobal  = 0)
1364
1365!     
1366!     advisory maximums:
1367!     
1368      parameter(maxncop = 64)
1369      parameter(maxncdim = 1024)
1370      parameter(maxncatt = 8192)
1371      parameter(maxncvar = 8192)
1372!     not enforced
1373      parameter(maxncnam = 256)
1374      parameter(maxvdims = maxncdim)
1375
1376!     
1377!     global netcdf error status variable
1378!     initialized in error.c
1379!     
1380
1381!     no error
1382      parameter(ncnoerr = nf_noerr)
1383!     not a netcdf id
1384      parameter(ncebadid = nf_ebadid)
1385!     too many netcdfs open
1386      parameter(ncenfile = -31)   ! nc_syserr
1387!     netcdf file exists && ncnoclob
1388      parameter(nceexist = nf_eexist)
1389!     invalid argument
1390      parameter(nceinval = nf_einval)
1391!     write to read only
1392      parameter(nceperm = nf_eperm)
1393!     operation not allowed in data mode
1394      parameter(ncenotin = nf_enotindefine )   
1395!     operation not allowed in define mode
1396      parameter(nceindef = nf_eindefine)   
1397!     coordinates out of domain
1398      parameter(ncecoord = nf_einvalcoords)
1399!     maxncdims exceeded
1400      parameter(ncemaxds = nf_emaxdims)
1401!     string match to name in use
1402      parameter(ncename = nf_enameinuse)   
1403!     attribute not found
1404      parameter(ncenoatt = nf_enotatt)
1405!     maxncattrs exceeded
1406      parameter(ncemaxat = nf_emaxatts)
1407!     not a netcdf data type
1408      parameter(ncebadty = nf_ebadtype)
1409!     invalid dimension id
1410      parameter(ncebadd = nf_ebaddim)
1411!     ncunlimited in the wrong index
1412      parameter(nceunlim = nf_eunlimpos)
1413!     maxncvars exceeded
1414      parameter(ncemaxvs = nf_emaxvars)
1415!     variable not found
1416      parameter(ncenotvr = nf_enotvar)
1417!     action prohibited on ncglobal varid
1418      parameter(nceglob = nf_eglobal)
1419!     not a netcdf file
1420      parameter(ncenotnc = nf_enotnc)
1421      parameter(ncests = nf_ests)
1422      parameter (ncentool = nf_emaxname) 
1423      parameter(ncfoobar = 32)
1424      parameter(ncsyserr = -31)
1425
1426!     
1427!     global options variable. used to determine behavior of error handler.
1428!     initialized in lerror.c
1429!     
1430      parameter(ncfatal = 1)
1431      parameter(ncverbos = 2)
1432
1433!
1434!     default fill values.  these must be the same as in the c interface.
1435!
1436      integer filbyte
1437      integer filchar
1438      integer filshort
1439      integer fillong
1440      real filfloat
1441      doubleprecision fildoub
1442
1443      parameter (filbyte = -127)
1444      parameter (filchar = 0)
1445      parameter (filshort = -32767)
1446      parameter (fillong = -2147483647)
1447      parameter (filfloat = 9.9692099683868690e+36)
1448      parameter (fildoub = 9.9692099683868690d+36)
1449
1450!     NetCDF-4.
1451!     This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT
1452!     file for distribution information.
1453
1454!     Netcdf version 4 fortran interface.
1455
1456!     $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $
1457
1458!     New netCDF-4 types.
1459      integer nf_ubyte
1460      integer nf_ushort
1461      integer nf_uint
1462      integer nf_int64
1463      integer nf_uint64
1464      integer nf_string
1465      integer nf_vlen
1466      integer nf_opaque
1467      integer nf_enum
1468      integer nf_compound
1469
1470      parameter (nf_ubyte = 7)
1471      parameter (nf_ushort = 8)
1472      parameter (nf_uint = 9)
1473      parameter (nf_int64 = 10)
1474      parameter (nf_uint64 = 11)
1475      parameter (nf_string = 12)
1476      parameter (nf_vlen = 13)
1477      parameter (nf_opaque = 14)
1478      parameter (nf_enum = 15)
1479      parameter (nf_compound = 16)
1480
1481!     New netCDF-4 fill values.
1482      integer           nf_fill_ubyte
1483      integer           nf_fill_ushort
1484!      real              nf_fill_uint
1485!      real              nf_fill_int64
1486!      real              nf_fill_uint64
1487      parameter (nf_fill_ubyte = 255)
1488      parameter (nf_fill_ushort = 65535)
1489
1490!     New constants.
1491      integer nf_format_netcdf4
1492      parameter (nf_format_netcdf4 = 3)
1493
1494      integer nf_format_netcdf4_classic
1495      parameter (nf_format_netcdf4_classic = 4)
1496
1497      integer nf_netcdf4
1498      parameter (nf_netcdf4 = 4096)
1499
1500      integer nf_classic_model
1501      parameter (nf_classic_model = 256)
1502
1503      integer nf_chunk_seq
1504      parameter (nf_chunk_seq = 0)
1505      integer nf_chunk_sub
1506      parameter (nf_chunk_sub = 1)
1507      integer nf_chunk_sizes
1508      parameter (nf_chunk_sizes = 2)
1509
1510      integer nf_endian_native
1511      parameter (nf_endian_native = 0)
1512      integer nf_endian_little
1513      parameter (nf_endian_little = 1)
1514      integer nf_endian_big
1515      parameter (nf_endian_big = 2)
1516
1517!     For NF_DEF_VAR_CHUNKING
1518      integer nf_chunked
1519      parameter (nf_chunked = 0)
1520      integer nf_contiguous
1521      parameter (nf_contiguous = 1)
1522
1523!     For NF_DEF_VAR_FLETCHER32
1524      integer nf_nochecksum
1525      parameter (nf_nochecksum = 0)
1526      integer nf_fletcher32
1527      parameter (nf_fletcher32 = 1)
1528
1529!     For NF_DEF_VAR_DEFLATE
1530      integer nf_noshuffle
1531      parameter (nf_noshuffle = 0)
1532      integer nf_shuffle
1533      parameter (nf_shuffle = 1)
1534
1535!     For NF_DEF_VAR_SZIP
1536      integer nf_szip_ec_option_mask
1537      parameter (nf_szip_ec_option_mask = 4)
1538      integer nf_szip_nn_option_mask
1539      parameter (nf_szip_nn_option_mask = 32)
1540
1541!     For parallel I/O.
1542      integer nf_mpiio     
1543      parameter (nf_mpiio = 8192)
1544      integer nf_mpiposix
1545      parameter (nf_mpiposix = 16384)
1546      integer nf_pnetcdf
1547      parameter (nf_pnetcdf = 32768)
1548
1549!     For NF_VAR_PAR_ACCESS.
1550      integer nf_independent
1551      parameter (nf_independent = 0)
1552      integer nf_collective
1553      parameter (nf_collective = 1)
1554
1555!     New error codes.
1556      integer nf_ehdferr        ! Error at HDF5 layer.
1557      parameter (nf_ehdferr = -101)
1558      integer nf_ecantread      ! Can't read.
1559      parameter (nf_ecantread = -102)
1560      integer nf_ecantwrite     ! Can't write.
1561      parameter (nf_ecantwrite = -103)
1562      integer nf_ecantcreate    ! Can't create.
1563      parameter (nf_ecantcreate = -104)
1564      integer nf_efilemeta      ! Problem with file metadata.
1565      parameter (nf_efilemeta = -105)
1566      integer nf_edimmeta       ! Problem with dimension metadata.
1567      parameter (nf_edimmeta = -106)
1568      integer nf_eattmeta       ! Problem with attribute metadata.
1569      parameter (nf_eattmeta = -107)
1570      integer nf_evarmeta       ! Problem with variable metadata.
1571      parameter (nf_evarmeta = -108)
1572      integer nf_enocompound    ! Not a compound type.
1573      parameter (nf_enocompound = -109)
1574      integer nf_eattexists     ! Attribute already exists.
1575      parameter (nf_eattexists = -110)
1576      integer nf_enotnc4        ! Attempting netcdf-4 operation on netcdf-3 file.   
1577      parameter (nf_enotnc4 = -111)
1578      integer nf_estrictnc3     ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file.   
1579      parameter (nf_estrictnc3 = -112)
1580      integer nf_enotnc3        ! Attempting netcdf-3 operation on netcdf-4 file.   
1581      parameter (nf_enotnc3 = -113)
1582      integer nf_enopar         ! Parallel operation on file opened for non-parallel access.   
1583      parameter (nf_enopar = -114)
1584      integer nf_eparinit       ! Error initializing for parallel access.   
1585      parameter (nf_eparinit = -115)
1586      integer nf_ebadgrpid      ! Bad group ID.   
1587      parameter (nf_ebadgrpid = -116)
1588      integer nf_ebadtypid      ! Bad type ID.   
1589      parameter (nf_ebadtypid = -117)
1590      integer nf_etypdefined    ! Type has already been defined and may not be edited.
1591      parameter (nf_etypdefined = -118)
1592      integer nf_ebadfield      ! Bad field ID.   
1593      parameter (nf_ebadfield = -119)
1594      integer nf_ebadclass      ! Bad class.   
1595      parameter (nf_ebadclass = -120)
1596      integer nf_emaptype       ! Mapped access for atomic types only.   
1597      parameter (nf_emaptype = -121)
1598      integer nf_elatefill      ! Attempt to define fill value when data already exists.
1599      parameter (nf_elatefill = -122)
1600      integer nf_elatedef       ! Attempt to define var properties, like deflate, after enddef.
1601      parameter (nf_elatedef = -123)
1602      integer nf_edimscale      ! Probem with HDF5 dimscales.
1603      parameter (nf_edimscale = -124)
1604      integer nf_enogrp       ! No group found.
1605      parameter (nf_enogrp = -125)
1606
1607
1608!     New functions.
1609
1610!     Parallel I/O.
1611      integer nf_create_par
1612      external nf_create_par
1613
1614      integer nf_open_par
1615      external nf_open_par
1616
1617      integer nf_var_par_access
1618      external nf_var_par_access
1619
1620!     Functions to handle groups.
1621      integer nf_inq_ncid
1622      external nf_inq_ncid
1623
1624      integer nf_inq_grps
1625      external nf_inq_grps
1626
1627      integer nf_inq_grpname
1628      external nf_inq_grpname
1629
1630      integer nf_inq_grpname_full
1631      external nf_inq_grpname_full
1632
1633      integer nf_inq_grpname_len
1634      external nf_inq_grpname_len
1635
1636      integer nf_inq_grp_parent
1637      external nf_inq_grp_parent
1638
1639      integer nf_inq_grp_ncid
1640      external nf_inq_grp_ncid
1641
1642      integer nf_inq_grp_full_ncid
1643      external nf_inq_grp_full_ncid
1644
1645      integer nf_inq_varids
1646      external nf_inq_varids
1647
1648      integer nf_inq_dimids
1649      external nf_inq_dimids
1650
1651      integer nf_def_grp
1652      external nf_def_grp
1653
1654!     New options for netCDF variables.
1655      integer nf_def_var_deflate
1656      external nf_def_var_deflate
1657
1658      integer nf_inq_var_deflate
1659      external nf_inq_var_deflate
1660
1661      integer nf_def_var_fletcher32
1662      external nf_def_var_fletcher32
1663
1664      integer nf_inq_var_fletcher32
1665      external nf_inq_var_fletcher32
1666
1667      integer nf_def_var_chunking
1668      external nf_def_var_chunking
1669
1670      integer nf_inq_var_chunking
1671      external nf_inq_var_chunking
1672
1673      integer nf_def_var_fill
1674      external nf_def_var_fill
1675
1676      integer nf_inq_var_fill
1677      external nf_inq_var_fill
1678
1679      integer nf_def_var_endian
1680      external nf_def_var_endian
1681
1682      integer nf_inq_var_endian
1683      external nf_inq_var_endian
1684
1685!     User defined types.
1686      integer nf_inq_typeids
1687      external nf_inq_typeids
1688
1689      integer nf_inq_typeid
1690      external nf_inq_typeid
1691
1692      integer nf_inq_type
1693      external nf_inq_type
1694
1695      integer nf_inq_user_type
1696      external nf_inq_user_type
1697
1698!     User defined types - compound types.
1699      integer nf_def_compound
1700      external nf_def_compound
1701
1702      integer nf_insert_compound
1703      external nf_insert_compound
1704
1705      integer nf_insert_array_compound
1706      external nf_insert_array_compound
1707
1708      integer nf_inq_compound
1709      external nf_inq_compound
1710
1711      integer nf_inq_compound_name
1712      external nf_inq_compound_name
1713
1714      integer nf_inq_compound_size
1715      external nf_inq_compound_size
1716
1717      integer nf_inq_compound_nfields
1718      external nf_inq_compound_nfields
1719
1720      integer nf_inq_compound_field
1721      external nf_inq_compound_field
1722
1723      integer nf_inq_compound_fieldname
1724      external nf_inq_compound_fieldname
1725
1726      integer nf_inq_compound_fieldindex
1727      external nf_inq_compound_fieldindex
1728
1729      integer nf_inq_compound_fieldoffset
1730      external nf_inq_compound_fieldoffset
1731
1732      integer nf_inq_compound_fieldtype
1733      external nf_inq_compound_fieldtype
1734
1735      integer nf_inq_compound_fieldndims
1736      external nf_inq_compound_fieldndims
1737
1738      integer nf_inq_compound_fielddim_sizes
1739      external nf_inq_compound_fielddim_sizes
1740
1741!     User defined types - variable length arrays.
1742      integer nf_def_vlen
1743      external nf_def_vlen
1744
1745      integer nf_inq_vlen
1746      external nf_inq_vlen
1747
1748      integer nf_free_vlen
1749      external nf_free_vlen
1750
1751!     User defined types - enums.
1752      integer nf_def_enum
1753      external nf_def_enum
1754
1755      integer nf_insert_enum
1756      external nf_insert_enum
1757
1758      integer nf_inq_enum
1759      external nf_inq_enum
1760
1761      integer nf_inq_enum_member
1762      external nf_inq_enum_member
1763
1764      integer nf_inq_enum_ident
1765      external nf_inq_enum_ident
1766
1767!     User defined types - opaque.
1768      integer nf_def_opaque
1769      external nf_def_opaque
1770
1771      integer nf_inq_opaque
1772      external nf_inq_opaque
1773
1774!     Write and read attributes of any type, including user defined
1775!     types.
1776      integer nf_put_att
1777      external nf_put_att
1778      integer nf_get_att
1779      external nf_get_att
1780
1781!     Write and read variables of any type, including user defined
1782!     types.
1783      integer nf_put_var
1784      external nf_put_var
1785      integer nf_put_var1
1786      external nf_put_var1
1787      integer nf_put_vara
1788      external nf_put_vara
1789      integer nf_put_vars
1790      external nf_put_vars
1791      integer nf_get_var
1792      external nf_get_var
1793      integer nf_get_var1
1794      external nf_get_var1
1795      integer nf_get_vara
1796      external nf_get_vara
1797      integer nf_get_vars
1798      external nf_get_vars
1799
1800!     64-bit int functions.
1801      integer nf_put_var1_int64
1802      external nf_put_var1_int64
1803      integer nf_put_vara_int64
1804      external nf_put_vara_int64
1805      integer nf_put_vars_int64
1806      external nf_put_vars_int64
1807      integer nf_put_varm_int64
1808      external nf_put_varm_int64
1809      integer nf_put_var_int64
1810      external nf_put_var_int64
1811      integer nf_get_var1_int64
1812      external nf_get_var1_int64
1813      integer nf_get_vara_int64
1814      external nf_get_vara_int64
1815      integer nf_get_vars_int64
1816      external nf_get_vars_int64
1817      integer nf_get_varm_int64
1818      external nf_get_varm_int64
1819      integer nf_get_var_int64
1820      external nf_get_var_int64
1821
1822!     For helping F77 users with VLENs.
1823      integer nf_get_vlen_element
1824      external nf_get_vlen_element
1825      integer nf_put_vlen_element
1826      external nf_put_vlen_element
1827
1828!     For dealing with file level chunk cache.
1829      integer nf_set_chunk_cache
1830      external nf_set_chunk_cache
1831      integer nf_get_chunk_cache
1832      external nf_get_chunk_cache
1833
1834!     For dealing with per variable chunk cache.
1835      integer nf_set_var_chunk_cache
1836      external nf_set_var_chunk_cache
1837      integer nf_get_var_chunk_cache
1838      external nf_get_var_chunk_cache
1839
1840integer,intent(in) :: ngrid
1841character (len=*),intent(in) :: nom,titre,unite
1842integer,intent(in) :: dim
1843integer,parameter :: iip1=iim+1
1844integer,parameter :: jjp1=jjm+1
1845real,intent(in) :: px(ngrid,llm)
1846real, dimension(iip1,jjp1,llm) :: mean3d,sd3d,dx3
1847real, dimension(iip1,jjp1) :: mean2d,sd2d,dx2
1848character (len=50) :: namebis
1849character (len=50), save :: firstvar
1850integer :: ierr,varid,nbdim,nid
1851integer :: meanid,sdid
1852integer, dimension(4)  :: id,start,sizes
1853logical, save :: firstcall=.TRUE.
1854integer :: l,i,j,ig0
1855integer,save :: indx
1856
1857integer, save :: step=0
1858
1859! Added to work in parallel mode
1860real px3_glop(klon_glo,llm) ! to store a 3D data set on global physics grid
1861real px3_glo(iim,jjp1,llm) ! to store a global 3D data set on global lonxlat grid
1862real px2_glop(klon_glo) ! to store a 2D data set on global physics grid
1863real px2_glo(iim,jjp1) ! to store a 2D data set on global lonxlat grid
1864real px2(ngrid)
1865real px3(ngrid,llm)
1866
1867! 1. Initialization (creation of stats.nc file)
1868if (firstcall) then
1869   firstcall=.false.
1870   firstvar=trim((nom))
1871   call inistats(ierr)
1872endif
1873
1874if (firstvar==nom) then ! If we're back to the first variable, increment time counter
1875      step = step + 1
1876endif
1877
1878if (mod(step,istats).ne.0) then
1879  ! if its not time to write to file, exit
1880   RETURN
1881endif
1882
1883! collect fields on a global physics grid
1884 if (dim.eq.3) then
1885  px3(1:ngrid,1:llm)=px(1:ngrid,1:llm)
1886  ! Gather fieds on a "global" (without redundant longitude) array
1887  call Gather(px3,px3_glop)
1888!$OMP MASTER
1889  if (is_mpi_root) then
1890    call Grid1Dto2D_glo(px3_glop,px3_glo)
1891    ! copy dx3_glo() to dx3(:) and add redundant longitude
1892    dx3(1:iim,:,:)=px3_glo(1:iim,:,:)
1893    dx3(iip1,:,:)=dx3(1,:,:)
1894  endif
1895!$OMP END MASTER
1896!$OMP BARRIER
1897 else ! dim.eq.2
1898  ! Gather fieds on a "global" (without redundant longitude) array
1899  px2(:)=px(:,1)
1900  call Gather(px2,px2_glop)
1901!$OMP MASTER
1902          if (is_mpi_root) then
1903            call Grid1Dto2D_glo(px2_glop,px2_glo)
1904            ! copy px2_glo() to dx2(:) and add redundant longitude
1905            dx2(1:iim,:)=px2_glo(1:iim,:)
1906            dx2(iip1,:)=dx2(1,:)
1907          endif
1908!$OMP END MASTER
1909!$OMP BARRIER
1910 endif
1911
1912! 2. Write field to file
1913
1914if (is_master) then
1915! only master needs do this
1916
1917ierr = NF_OPEN("stats.nc",NF_WRITE,nid)
1918
1919namebis=trim(nom)
1920
1921! test: check if that variable already exists in file
1922ierr= NF_INQ_VARID(nid,namebis,meanid)
1923
1924if (ierr.ne.NF_NOERR) then
1925  ! variable not in file, create/define it
1926   if (firstvar==nom) then
1927      indx=1
1928      count(:)=0
1929   endif
1930
1931
1932!declaration de la variable
1933
1934! choix du nom des coordonnees
1935   ierr= NF_INQ_DIMID(nid,"longitude",id(1))
1936   ierr= NF_INQ_DIMID(nid,"latitude",id(2))
1937   if (dim.eq.3) then
1938      ierr= NF_INQ_DIMID(nid,"altitude",id(3))
1939      ierr= NF_INQ_DIMID(nid,"Time",id(4))
1940      nbdim=4
1941   else if (dim==2) then
1942      ierr= NF_INQ_DIMID(nid,"Time",id(3))
1943      nbdim=3
1944   endif
1945
1946   write (*,*) "====================="
1947   write (*,*) "STATS: creation de ",nom
1948   namebis=trim(nom)
1949   call def_var(nid,namebis,titre,unite,nbdim,id,meanid,ierr)
1950   if (dim.eq.3) then
1951     call inivar(nid,meanid,size(px3_glop,1),dim,indx,px3_glop,ierr)
1952   else ! dim.eq.2
1953     call inivar(nid,meanid,size(px2_glop,1),dim,indx,px2_glop,ierr)
1954   endif
1955   namebis=trim(nom)//"_sd"
1956   call def_var(nid,namebis,trim(titre)//" total standard deviation over the season",unite,nbdim,id,sdid,ierr)
1957   if (dim.eq.3) then
1958     call inivar(nid,sdid,size(px3_glop,1),dim,indx,px3_glop,ierr)
1959   else ! dim.eq.2
1960     call inivar(nid,sdid,size(px2_glop,1),dim,indx,px2_glop,ierr)
1961   endif
1962
1963   ierr= NF_CLOSE(nid)
1964   return
1965
1966else
1967   ! variable found in file
1968   namebis=trim(nom)//"_sd"
1969   ierr= NF_INQ_VARID(nid,namebis,sdid)
1970
1971endif
1972
1973if (firstvar==nom) then
1974   count(indx)=count(int(indx))+1
1975   indx=indx+1
1976   if (indx>istime) then
1977      indx=1
1978   endif
1979endif
1980
1981if (count(indx)==0) then
1982   ! very first time we write the variable to file
1983   if (dim.eq.3) then
1984      start=(/1,1,1,indx/)
1985      sizes=(/iip1,jjp1,llm,1/)
1986      mean3d(:,:,:)=0
1987      sd3d(:,:,:)=0
1988   else if (dim.eq.2) then
1989      start=(/1,1,indx,0/)
1990      sizes=(/iip1,jjp1,1,0/)
1991      mean2d(:,:)=0
1992      sd2d(:,:)=0
1993   endif
1994else
1995   ! load values from file
1996   if (dim.eq.3) then
1997      start=(/1,1,1,indx/)
1998      sizes=(/iip1,jjp1,llm,1/)
1999      ierr = NF_GET_VARA_DOUBLE(nid,meanid,start,sizes,mean3d)
2000      ierr = NF_GET_VARA_DOUBLE(nid,sdid,start,sizes,sd3d)
2001      if (ierr.ne.NF_NOERR) then
2002         write (*,*) NF_STRERROR(ierr)
2003         stop ""
2004      endif
2005
2006   else if (dim.eq.2) then
2007      start=(/1,1,indx,0/)
2008      sizes=(/iip1,jjp1,1,0/)
2009      ierr = NF_GET_VARA_DOUBLE(nid,meanid,start,sizes,mean2d)
2010      ierr = NF_GET_VARA_DOUBLE(nid,sdid,start,sizes,sd2d)
2011      if (ierr.ne.NF_NOERR) then
2012         write (*,*) NF_STRERROR(ierr)
2013         stop ""
2014      endif
2015   endif
2016endif ! of if (count(indx)==0)
2017
2018
2019! 2.1. Build dx* (data on lon-lat grid, with redundant longitude)
2020
2021if (dim.eq.3) then
2022  dx3(1:iim,:,:)=px3_glo(:,:,:)
2023  dx3(iip1,:,:)=dx3(1,:,:)
2024else ! dim.eq.2
2025  dx2(1:iim,:)=px2_glo(:,:)
2026  dx2(iip1,:)=dx2(1,:)
2027endif
2028
2029
2030! 2.2. Add current values to previously stored sums
2031
2032if (dim.eq.3) then
2033
2034   mean3d(:,:,:)=mean3d(:,:,:)+dx3(:,:,:)
2035   sd3d(:,:,:)=sd3d(:,:,:)+dx3(:,:,:)**2
2036
2037   ierr = NF_PUT_VARA_DOUBLE(nid,meanid,start,sizes,mean3d)
2038   ierr = NF_PUT_VARA_DOUBLE(nid,sdid,start,sizes,sd3d)
2039
2040else if (dim.eq.2) then
2041
2042   mean2d(:,:)= mean2d(:,:)+dx2(:,:)
2043   sd2d(:,:)=sd2d(:,:)+dx2(:,:)**2
2044
2045   ierr = NF_PUT_VARA_DOUBLE(nid,meanid,start,sizes,mean2d)
2046   ierr = NF_PUT_VARA_DOUBLE(nid,sdid,start,sizes,sd2d)
2047
2048endif ! of if (dim.eq.3) elseif (dim.eq.2)
2049
2050  ierr= NF_CLOSE(nid)
2051endif ! of if (is_master)
2052
2053end subroutine wstats
2054
2055!======================================================
2056subroutine inivar(nid,varid,ngrid,dim,indx,px,ierr)
2057
2058implicit none
2059
2060include "dimensions.h"
2061include "dimphys.h"
2062include "netcdf.inc"
2063
2064integer, intent(in) :: nid,varid,dim,indx,ngrid
2065real, dimension(ngrid,llm), intent(in) :: px
2066integer, intent(out) :: ierr
2067
2068integer,parameter :: iip1=iim+1
2069integer,parameter :: jjp1=jjm+1
2070
2071integer :: l,i,j,ig0
2072integer, dimension(4) :: start,sizes
2073real, dimension(iip1,jjp1,llm) :: dx3
2074real, dimension(iip1,jjp1) :: dx2
2075
2076if (dim.eq.3) then
2077
2078   start=(/1,1,1,indx/)
2079   sizes=(/iip1,jjp1,llm,1/)
2080
2081!  Passage variable physique -->  variable dynamique
2082
2083   DO l=1,llm
2084      DO i=1,iip1
2085         dx3(i,1,l)=px(1,l)
2086         dx3(i,jjp1,l)=px(ngrid,l)
2087      ENDDO
2088      DO j=2,jjm
2089         ig0= 1+(j-2)*iim
2090         DO i=1,iim
2091            dx3(i,j,l)=px(ig0+i,l)
2092         ENDDO
2093         dx3(iip1,j,l)=dx3(1,j,l)
2094      ENDDO
2095   ENDDO
2096
2097   ierr = NF_PUT_VARA_DOUBLE(nid,varid,start,sizes,dx3)
2098
2099else if (dim.eq.2) then
2100
2101      start=(/1,1,indx,0/)
2102      sizes=(/iip1,jjp1,1,0/)
2103
2104!    Passage variable physique -->  physique dynamique
2105
2106  DO i=1,iip1
2107     dx2(i,1)=px(1,1)
2108     dx2(i,jjp1)=px(ngrid,1)
2109  ENDDO
2110  DO j=2,jjm
2111     ig0= 1+(j-2)*iim
2112     DO i=1,iim
2113        dx2(i,j)=px(ig0+i,1)
2114     ENDDO
2115     dx2(iip1,j)=dx2(1,j)
2116  ENDDO
2117
2118   ierr = NF_PUT_VARA_DOUBLE(nid,varid,start,sizes,dx2)
2119
2120endif
2121
2122end subroutine inivar
2123
2124!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2125
2126subroutine def_var_stats(nid,name,title,units,nbdim,dimids,nvarid,ierr)
2127
2128! This subroutine defines variable 'name' in a (pre-existing and opened)
2129! NetCDF file (known from its NetCDF ID 'nid').
2130! The number of dimensions 'nbdim' of the variable, as well as the IDs of
2131! corresponding dimensions must be set (in array 'dimids').
2132! Upon successfull definition of the variable, 'nvarid' contains the
2133! NetCDF ID of the variable.
2134! The variables' attributes 'title' (Note that 'long_name' would be more
2135! appropriate) and 'units' are also set.
2136
2137implicit none
2138
2139!     NetCDF-3.
2140!
2141! netcdf version 3 fortran interface:
2142!
2143
2144!
2145! external netcdf data types:
2146!
2147      integer nf_byte
2148      integer nf_int1
2149      integer nf_char
2150      integer nf_short
2151      integer nf_int2
2152      integer nf_int
2153      integer nf_float
2154      integer nf_real
2155      integer nf_double
2156
2157      parameter (nf_byte = 1)
2158      parameter (nf_int1 = nf_byte)
2159      parameter (nf_char = 2)
2160      parameter (nf_short = 3)
2161      parameter (nf_int2 = nf_short)
2162      parameter (nf_int = 4)
2163      parameter (nf_float = 5)
2164      parameter (nf_real = nf_float)
2165      parameter (nf_double = 6)
2166
2167!
2168! default fill values:
2169!
2170      integer           nf_fill_byte
2171      integer           nf_fill_int1
2172      integer           nf_fill_char
2173      integer           nf_fill_short
2174      integer           nf_fill_int2
2175      integer           nf_fill_int
2176      real              nf_fill_float
2177      real              nf_fill_real
2178      doubleprecision   nf_fill_double
2179
2180      parameter (nf_fill_byte = -127)
2181      parameter (nf_fill_int1 = nf_fill_byte)
2182      parameter (nf_fill_char = 0)
2183      parameter (nf_fill_short = -32767)
2184      parameter (nf_fill_int2 = nf_fill_short)
2185      parameter (nf_fill_int = -2147483647)
2186      parameter (nf_fill_float = 9.9692099683868690e+36)
2187      parameter (nf_fill_real = nf_fill_float)
2188      parameter (nf_fill_double = 9.9692099683868690d+36)
2189
2190!
2191! mode flags for opening and creating a netcdf dataset:
2192!
2193      integer nf_nowrite
2194      integer nf_write
2195      integer nf_clobber
2196      integer nf_noclobber
2197      integer nf_fill
2198      integer nf_nofill
2199      integer nf_lock
2200      integer nf_share
2201      integer nf_64bit_offset
2202      integer nf_sizehint_default
2203      integer nf_align_chunk
2204      integer nf_format_classic
2205      integer nf_format_64bit
2206
2207      parameter (nf_nowrite = 0)
2208      parameter (nf_write = 1)
2209      parameter (nf_clobber = 0)
2210      parameter (nf_noclobber = 4)
2211      parameter (nf_fill = 0)
2212      parameter (nf_nofill = 256)
2213      parameter (nf_lock = 1024)
2214      parameter (nf_share = 2048)
2215      parameter (nf_64bit_offset = 512)
2216      parameter (nf_sizehint_default = 0)
2217      parameter (nf_align_chunk = -1)
2218      parameter (nf_format_classic = 1)
2219      parameter (nf_format_64bit = 2)
2220
2221!
2222! size argument for defining an unlimited dimension:
2223!
2224      integer nf_unlimited
2225      parameter (nf_unlimited = 0)
2226
2227!
2228! global attribute id:
2229!
2230      integer nf_global
2231      parameter (nf_global = 0)
2232
2233!
2234! implementation limits:
2235!
2236      integer nf_max_dims
2237      integer nf_max_attrs
2238      integer nf_max_vars
2239      integer nf_max_name
2240      integer nf_max_var_dims
2241
2242      parameter (nf_max_dims = 1024)
2243      parameter (nf_max_attrs = 8192)
2244      parameter (nf_max_vars = 8192)
2245      parameter (nf_max_name = 256)
2246      parameter (nf_max_var_dims = nf_max_dims)
2247
2248!
2249! error codes:
2250!
2251      integer nf_noerr
2252      integer nf_ebadid
2253      integer nf_eexist
2254      integer nf_einval
2255      integer nf_eperm
2256      integer nf_enotindefine
2257      integer nf_eindefine
2258      integer nf_einvalcoords
2259      integer nf_emaxdims
2260      integer nf_enameinuse
2261      integer nf_enotatt
2262      integer nf_emaxatts
2263      integer nf_ebadtype
2264      integer nf_ebaddim
2265      integer nf_eunlimpos
2266      integer nf_emaxvars
2267      integer nf_enotvar
2268      integer nf_eglobal
2269      integer nf_enotnc
2270      integer nf_ests
2271      integer nf_emaxname
2272      integer nf_eunlimit
2273      integer nf_enorecvars
2274      integer nf_echar
2275      integer nf_eedge
2276      integer nf_estride
2277      integer nf_ebadname
2278      integer nf_erange
2279      integer nf_enomem
2280      integer nf_evarsize
2281      integer nf_edimsize
2282      integer nf_etrunc
2283
2284      parameter (nf_noerr = 0)
2285      parameter (nf_ebadid = -33)
2286      parameter (nf_eexist = -35)
2287      parameter (nf_einval = -36)
2288      parameter (nf_eperm = -37)
2289      parameter (nf_enotindefine = -38)
2290      parameter (nf_eindefine = -39)
2291      parameter (nf_einvalcoords = -40)
2292      parameter (nf_emaxdims = -41)
2293      parameter (nf_enameinuse = -42)
2294      parameter (nf_enotatt = -43)
2295      parameter (nf_emaxatts = -44)
2296      parameter (nf_ebadtype = -45)
2297      parameter (nf_ebaddim = -46)
2298      parameter (nf_eunlimpos = -47)
2299      parameter (nf_emaxvars = -48)
2300      parameter (nf_enotvar = -49)
2301      parameter (nf_eglobal = -50)
2302      parameter (nf_enotnc = -51)
2303      parameter (nf_ests = -52)
2304      parameter (nf_emaxname = -53)
2305      parameter (nf_eunlimit = -54)
2306      parameter (nf_enorecvars = -55)
2307      parameter (nf_echar = -56)
2308      parameter (nf_eedge = -57)
2309      parameter (nf_estride = -58)
2310      parameter (nf_ebadname = -59)
2311      parameter (nf_erange = -60)
2312      parameter (nf_enomem = -61)
2313      parameter (nf_evarsize = -62)
2314      parameter (nf_edimsize = -63)
2315      parameter (nf_etrunc = -64)
2316!
2317! error handling modes:
2318!
2319      integer  nf_fatal
2320      integer nf_verbose
2321
2322      parameter (nf_fatal = 1)
2323      parameter (nf_verbose = 2)
2324
2325!
2326! miscellaneous routines:
2327!
2328      character*80   nf_inq_libvers
2329      external       nf_inq_libvers
2330
2331      character*80   nf_strerror
2332!                         (integer             ncerr)
2333      external       nf_strerror
2334
2335      logical        nf_issyserr
2336!                         (integer             ncerr)
2337      external       nf_issyserr
2338
2339!
2340! control routines:
2341!
2342      integer         nf_inq_base_pe
2343!                         (integer             ncid,
2344!                          integer             pe)
2345      external        nf_inq_base_pe
2346
2347      integer         nf_set_base_pe
2348!                         (integer             ncid,
2349!                          integer             pe)
2350      external        nf_set_base_pe
2351
2352      integer         nf_create
2353!                         (character*(*)       path,
2354!                          integer             cmode,
2355!                          integer             ncid)
2356      external        nf_create
2357
2358      integer         nf__create
2359!                         (character*(*)       path,
2360!                          integer             cmode,
2361!                          integer             initialsz,
2362!                          integer             chunksizehint,
2363!                          integer             ncid)
2364      external        nf__create
2365
2366      integer         nf__create_mp
2367!                         (character*(*)       path,
2368!                          integer             cmode,
2369!                          integer             initialsz,
2370!                          integer             basepe,
2371!                          integer             chunksizehint,
2372!                          integer             ncid)
2373      external        nf__create_mp
2374
2375      integer         nf_open
2376!                         (character*(*)       path,
2377!                          integer             mode,
2378!                          integer             ncid)
2379      external        nf_open
2380
2381      integer         nf__open
2382!                         (character*(*)       path,
2383!                          integer             mode,
2384!                          integer             chunksizehint,
2385!                          integer             ncid)
2386      external        nf__open
2387
2388      integer         nf__open_mp
2389!                         (character*(*)       path,
2390!                          integer             mode,
2391!                          integer             basepe,
2392!                          integer             chunksizehint,
2393!                          integer             ncid)
2394      external        nf__open_mp
2395
2396      integer         nf_set_fill
2397!                         (integer             ncid,
2398!                          integer             fillmode,
2399!                          integer             old_mode)
2400      external        nf_set_fill
2401
2402      integer         nf_set_default_format
2403!                          (integer             format,
2404!                          integer             old_format)
2405      external        nf_set_default_format
2406
2407      integer         nf_redef
2408!                         (integer             ncid)
2409      external        nf_redef
2410
2411      integer         nf_enddef
2412!                         (integer             ncid)
2413      external        nf_enddef
2414
2415      integer         nf__enddef
2416!                         (integer             ncid,
2417!                          integer             h_minfree,
2418!                          integer             v_align,
2419!                          integer             v_minfree,
2420!                          integer             r_align)
2421      external        nf__enddef
2422
2423      integer         nf_sync
2424!                         (integer             ncid)
2425      external        nf_sync
2426
2427      integer         nf_abort
2428!                         (integer             ncid)
2429      external        nf_abort
2430
2431      integer         nf_close
2432!                         (integer             ncid)
2433      external        nf_close
2434
2435      integer         nf_delete
2436!                         (character*(*)       ncid)
2437      external        nf_delete
2438
2439!
2440! general inquiry routines:
2441!
2442
2443      integer         nf_inq
2444!                         (integer             ncid,
2445!                          integer             ndims,
2446!                          integer             nvars,
2447!                          integer             ngatts,
2448!                          integer             unlimdimid)
2449      external        nf_inq
2450
2451      integer         nf_inq_ndims
2452!                         (integer             ncid,
2453!                          integer             ndims)
2454      external        nf_inq_ndims
2455
2456      integer         nf_inq_nvars
2457!                         (integer             ncid,
2458!                          integer             nvars)
2459      external        nf_inq_nvars
2460
2461      integer         nf_inq_natts
2462!                         (integer             ncid,
2463!                          integer             ngatts)
2464      external        nf_inq_natts
2465
2466      integer         nf_inq_unlimdim
2467!                         (integer             ncid,
2468!                          integer             unlimdimid)
2469      external        nf_inq_unlimdim
2470
2471      integer         nf_inq_format
2472!                         (integer             ncid,
2473!                          integer             format)
2474      external        nf_inq_format
2475
2476!
2477! dimension routines:
2478!
2479
2480      integer         nf_def_dim
2481!                         (integer             ncid,
2482!                          character(*)        name,
2483!                          integer             len,
2484!                          integer             dimid)
2485      external        nf_def_dim
2486
2487      integer         nf_inq_dimid
2488!                         (integer             ncid,
2489!                          character(*)        name,
2490!                          integer             dimid)
2491      external        nf_inq_dimid
2492
2493      integer         nf_inq_dim
2494!                         (integer             ncid,
2495!                          integer             dimid,
2496!                          character(*)        name,
2497!                          integer             len)
2498      external        nf_inq_dim
2499
2500      integer         nf_inq_dimname
2501!                         (integer             ncid,
2502!                          integer             dimid,
2503!                          character(*)        name)
2504      external        nf_inq_dimname
2505
2506      integer         nf_inq_dimlen
2507!                         (integer             ncid,
2508!                          integer             dimid,
2509!                          integer             len)
2510      external        nf_inq_dimlen
2511
2512      integer         nf_rename_dim
2513!                         (integer             ncid,
2514!                          integer             dimid,
2515!                          character(*)        name)
2516      external        nf_rename_dim
2517
2518!
2519! general attribute routines:
2520!
2521
2522      integer         nf_inq_att
2523!                         (integer             ncid,
2524!                          integer             varid,
2525!                          character(*)        name,
2526!                          integer             xtype,
2527!                          integer             len)
2528      external        nf_inq_att
2529
2530      integer         nf_inq_attid
2531!                         (integer             ncid,
2532!                          integer             varid,
2533!                          character(*)        name,
2534!                          integer             attnum)
2535      external        nf_inq_attid
2536
2537      integer         nf_inq_atttype
2538!                         (integer             ncid,
2539!                          integer             varid,
2540!                          character(*)        name,
2541!                          integer             xtype)
2542      external        nf_inq_atttype
2543
2544      integer         nf_inq_attlen
2545!                         (integer             ncid,
2546!                          integer             varid,
2547!                          character(*)        name,
2548!                          integer             len)
2549      external        nf_inq_attlen
2550
2551      integer         nf_inq_attname
2552!                         (integer             ncid,
2553!                          integer             varid,
2554!                          integer             attnum,
2555!                          character(*)        name)
2556      external        nf_inq_attname
2557
2558      integer         nf_copy_att
2559!                         (integer             ncid_in,
2560!                          integer             varid_in,
2561!                          character(*)        name,
2562!                          integer             ncid_out,
2563!                          integer             varid_out)
2564      external        nf_copy_att
2565
2566      integer         nf_rename_att
2567!                         (integer             ncid,
2568!                          integer             varid,
2569!                          character(*)        curname,
2570!                          character(*)        newname)
2571      external        nf_rename_att
2572
2573      integer         nf_del_att
2574!                         (integer             ncid,
2575!                          integer             varid,
2576!                          character(*)        name)
2577      external        nf_del_att
2578
2579!
2580! attribute put/get routines:
2581!
2582
2583      integer         nf_put_att_text
2584!                         (integer             ncid,
2585!                          integer             varid,
2586!                          character(*)        name,
2587!                          integer             len,
2588!                          character(*)        text)
2589      external        nf_put_att_text
2590
2591      integer         nf_get_att_text
2592!                         (integer             ncid,
2593!                          integer             varid,
2594!                          character(*)        name,
2595!                          character(*)        text)
2596      external        nf_get_att_text
2597
2598      integer         nf_put_att_int1
2599!                         (integer             ncid,
2600!                          integer             varid,
2601!                          character(*)        name,
2602!                          integer             xtype,
2603!                          integer             len,
2604!                          nf_int1_t           i1vals(1))
2605      external        nf_put_att_int1
2606
2607      integer         nf_get_att_int1
2608!                         (integer             ncid,
2609!                          integer             varid,
2610!                          character(*)        name,
2611!                          nf_int1_t           i1vals(1))
2612      external        nf_get_att_int1
2613
2614      integer         nf_put_att_int2
2615!                         (integer             ncid,
2616!                          integer             varid,
2617!                          character(*)        name,
2618!                          integer             xtype,
2619!                          integer             len,
2620!                          nf_int2_t           i2vals(1))
2621      external        nf_put_att_int2
2622
2623      integer         nf_get_att_int2
2624!                         (integer             ncid,
2625!                          integer             varid,
2626!                          character(*)        name,
2627!                          nf_int2_t           i2vals(1))
2628      external        nf_get_att_int2
2629
2630      integer         nf_put_att_int
2631!                         (integer             ncid,
2632!                          integer             varid,
2633!                          character(*)        name,
2634!                          integer             xtype,
2635!                          integer             len,
2636!                          integer             ivals(1))
2637      external        nf_put_att_int
2638
2639      integer         nf_get_att_int
2640!                         (integer             ncid,
2641!                          integer             varid,
2642!                          character(*)        name,
2643!                          integer             ivals(1))
2644      external        nf_get_att_int
2645
2646      integer         nf_put_att_real
2647!                         (integer             ncid,
2648!                          integer             varid,
2649!                          character(*)        name,
2650!                          integer             xtype,
2651!                          integer             len,
2652!                          real                rvals(1))
2653      external        nf_put_att_real
2654
2655      integer         nf_get_att_real
2656!                         (integer             ncid,
2657!                          integer             varid,
2658!                          character(*)        name,
2659!                          real                rvals(1))
2660      external        nf_get_att_real
2661
2662      integer         nf_put_att_double
2663!                         (integer             ncid,
2664!                          integer             varid,
2665!                          character(*)        name,
2666!                          integer             xtype,
2667!                          integer             len,
2668!                          double              dvals(1))
2669      external        nf_put_att_double
2670
2671      integer         nf_get_att_double
2672!                         (integer             ncid,
2673!                          integer             varid,
2674!                          character(*)        name,
2675!                          double              dvals(1))
2676      external        nf_get_att_double
2677
2678!
2679! general variable routines:
2680!
2681
2682      integer         nf_def_var
2683!                         (integer             ncid,
2684!                          character(*)        name,
2685!                          integer             datatype,
2686!                          integer             ndims,
2687!                          integer             dimids(1),
2688!                          integer             varid)
2689      external        nf_def_var
2690
2691      integer         nf_inq_var
2692!                         (integer             ncid,
2693!                          integer             varid,
2694!                          character(*)        name,
2695!                          integer             datatype,
2696!                          integer             ndims,
2697!                          integer             dimids(1),
2698!                          integer             natts)
2699      external        nf_inq_var
2700
2701      integer         nf_inq_varid
2702!                         (integer             ncid,
2703!                          character(*)        name,
2704!                          integer             varid)
2705      external        nf_inq_varid
2706
2707      integer         nf_inq_varname
2708!                         (integer             ncid,
2709!                          integer             varid,
2710!                          character(*)        name)
2711      external        nf_inq_varname
2712
2713      integer         nf_inq_vartype
2714!                         (integer             ncid,
2715!                          integer             varid,
2716!                          integer             xtype)
2717      external        nf_inq_vartype
2718
2719      integer         nf_inq_varndims
2720!                         (integer             ncid,
2721!                          integer             varid,
2722!                          integer             ndims)
2723      external        nf_inq_varndims
2724
2725      integer         nf_inq_vardimid
2726!                         (integer             ncid,
2727!                          integer             varid,
2728!                          integer             dimids(1))
2729      external        nf_inq_vardimid
2730
2731      integer         nf_inq_varnatts
2732!                         (integer             ncid,
2733!                          integer             varid,
2734!                          integer             natts)
2735      external        nf_inq_varnatts
2736
2737      integer         nf_rename_var
2738!                         (integer             ncid,
2739!                          integer             varid,
2740!                          character(*)        name)
2741      external        nf_rename_var
2742
2743      integer         nf_copy_var
2744!                         (integer             ncid_in,
2745!                          integer             varid,
2746!                          integer             ncid_out)
2747      external        nf_copy_var
2748
2749!
2750! entire variable put/get routines:
2751!
2752
2753      integer         nf_put_var_text
2754!                         (integer             ncid,
2755!                          integer             varid,
2756!                          character(*)        text)
2757      external        nf_put_var_text
2758
2759      integer         nf_get_var_text
2760!                         (integer             ncid,
2761!                          integer             varid,
2762!                          character(*)        text)
2763      external        nf_get_var_text
2764
2765      integer         nf_put_var_int1
2766!                         (integer             ncid,
2767!                          integer             varid,
2768!                          nf_int1_t           i1vals(1))
2769      external        nf_put_var_int1
2770
2771      integer         nf_get_var_int1
2772!                         (integer             ncid,
2773!                          integer             varid,
2774!                          nf_int1_t           i1vals(1))
2775      external        nf_get_var_int1
2776
2777      integer         nf_put_var_int2
2778!                         (integer             ncid,
2779!                          integer             varid,
2780!                          nf_int2_t           i2vals(1))
2781      external        nf_put_var_int2
2782
2783      integer         nf_get_var_int2
2784!                         (integer             ncid,
2785!                          integer             varid,
2786!                          nf_int2_t           i2vals(1))
2787      external        nf_get_var_int2
2788
2789      integer         nf_put_var_int
2790!                         (integer             ncid,
2791!                          integer             varid,
2792!                          integer             ivals(1))
2793      external        nf_put_var_int
2794
2795      integer         nf_get_var_int
2796!                         (integer             ncid,
2797!                          integer             varid,
2798!                          integer             ivals(1))
2799      external        nf_get_var_int
2800
2801      integer         nf_put_var_real
2802!                         (integer             ncid,
2803!                          integer             varid,
2804!                          real                rvals(1))
2805      external        nf_put_var_real
2806
2807      integer         nf_get_var_real
2808!                         (integer             ncid,
2809!                          integer             varid,
2810!                          real                rvals(1))
2811      external        nf_get_var_real
2812
2813      integer         nf_put_var_double
2814!                         (integer             ncid,
2815!                          integer             varid,
2816!                          doubleprecision     dvals(1))
2817      external        nf_put_var_double
2818
2819      integer         nf_get_var_double
2820!                         (integer             ncid,
2821!                          integer             varid,
2822!                          doubleprecision     dvals(1))
2823      external        nf_get_var_double
2824
2825!
2826! single variable put/get routines:
2827!
2828
2829      integer         nf_put_var1_text
2830!                         (integer             ncid,
2831!                          integer             varid,
2832!                          integer             index(1),
2833!                          character*1         text)
2834      external        nf_put_var1_text
2835
2836      integer         nf_get_var1_text
2837!                         (integer             ncid,
2838!                          integer             varid,
2839!                          integer             index(1),
2840!                          character*1         text)
2841      external        nf_get_var1_text
2842
2843      integer         nf_put_var1_int1
2844!                         (integer             ncid,
2845!                          integer             varid,
2846!                          integer             index(1),
2847!                          nf_int1_t           i1val)
2848      external        nf_put_var1_int1
2849
2850      integer         nf_get_var1_int1
2851!                         (integer             ncid,
2852!                          integer             varid,
2853!                          integer             index(1),
2854!                          nf_int1_t           i1val)
2855      external        nf_get_var1_int1
2856
2857      integer         nf_put_var1_int2
2858!                         (integer             ncid,
2859!                          integer             varid,
2860!                          integer             index(1),
2861!                          nf_int2_t           i2val)
2862      external        nf_put_var1_int2
2863
2864      integer         nf_get_var1_int2
2865!                         (integer             ncid,
2866!                          integer             varid,
2867!                          integer             index(1),
2868!                          nf_int2_t           i2val)
2869      external        nf_get_var1_int2
2870
2871      integer         nf_put_var1_int
2872!                         (integer             ncid,
2873!                          integer             varid,
2874!                          integer             index(1),
2875!                          integer             ival)
2876      external        nf_put_var1_int
2877
2878      integer         nf_get_var1_int
2879!                         (integer             ncid,
2880!                          integer             varid,
2881!                          integer             index(1),
2882!                          integer             ival)
2883      external        nf_get_var1_int
2884
2885      integer         nf_put_var1_real
2886!                         (integer             ncid,
2887!                          integer             varid,
2888!                          integer             index(1),
2889!                          real                rval)
2890      external        nf_put_var1_real
2891
2892      integer         nf_get_var1_real
2893!                         (integer             ncid,
2894!                          integer             varid,
2895!                          integer             index(1),
2896!                          real                rval)
2897      external        nf_get_var1_real
2898
2899      integer         nf_put_var1_double
2900!                         (integer             ncid,
2901!                          integer             varid,
2902!                          integer             index(1),
2903!                          doubleprecision     dval)
2904      external        nf_put_var1_double
2905
2906      integer         nf_get_var1_double
2907!                         (integer             ncid,
2908!                          integer             varid,
2909!                          integer             index(1),
2910!                          doubleprecision     dval)
2911      external        nf_get_var1_double
2912
2913!
2914! variable array put/get routines:
2915!
2916
2917      integer         nf_put_vara_text
2918!                         (integer             ncid,
2919!                          integer             varid,
2920!                          integer             start(1),
2921!                          integer             count(1),
2922!                          character(*)        text)
2923      external        nf_put_vara_text
2924
2925      integer         nf_get_vara_text
2926!                         (integer             ncid,
2927!                          integer             varid,
2928!                          integer             start(1),
2929!                          integer             count(1),
2930!                          character(*)        text)
2931      external        nf_get_vara_text
2932
2933      integer         nf_put_vara_int1
2934!                         (integer             ncid,
2935!                          integer             varid,
2936!                          integer             start(1),
2937!                          integer             count(1),
2938!                          nf_int1_t           i1vals(1))
2939      external        nf_put_vara_int1
2940
2941      integer         nf_get_vara_int1
2942!                         (integer             ncid,
2943!                          integer             varid,
2944!                          integer             start(1),
2945!                          integer             count(1),
2946!                          nf_int1_t           i1vals(1))
2947      external        nf_get_vara_int1
2948
2949      integer         nf_put_vara_int2
2950!                         (integer             ncid,
2951!                          integer             varid,
2952!                          integer             start(1),
2953!                          integer             count(1),
2954!                          nf_int2_t           i2vals(1))
2955      external        nf_put_vara_int2
2956
2957      integer         nf_get_vara_int2
2958!                         (integer             ncid,
2959!                          integer             varid,
2960!                          integer             start(1),
2961!                          integer             count(1),
2962!                          nf_int2_t           i2vals(1))
2963      external        nf_get_vara_int2
2964
2965      integer         nf_put_vara_int
2966!                         (integer             ncid,
2967!                          integer             varid,
2968!                          integer             start(1),
2969!                          integer             count(1),
2970!                          integer             ivals(1))
2971      external        nf_put_vara_int
2972
2973      integer         nf_get_vara_int
2974!                         (integer             ncid,
2975!                          integer             varid,
2976!                          integer             start(1),
2977!                          integer             count(1),
2978!                          integer             ivals(1))
2979      external        nf_get_vara_int
2980
2981      integer         nf_put_vara_real
2982!                         (integer             ncid,
2983!                          integer             varid,
2984!                          integer             start(1),
2985!                          integer             count(1),
2986!                          real                rvals(1))
2987      external        nf_put_vara_real
2988
2989      integer         nf_get_vara_real
2990!                         (integer             ncid,
2991!                          integer             varid,
2992!                          integer             start(1),
2993!                          integer             count(1),
2994!                          real                rvals(1))
2995      external        nf_get_vara_real
2996
2997      integer         nf_put_vara_double
2998!                         (integer             ncid,
2999!                          integer             varid,
3000!                          integer             start(1),
3001!                          integer             count(1),
3002!                          doubleprecision     dvals(1))
3003      external        nf_put_vara_double
3004
3005      integer         nf_get_vara_double
3006!                         (integer             ncid,
3007!                          integer             varid,
3008!                          integer             start(1),
3009!                          integer             count(1),
3010!                          doubleprecision     dvals(1))
3011      external        nf_get_vara_double
3012
3013!
3014! strided variable put/get routines:
3015!
3016
3017      integer         nf_put_vars_text
3018!                         (integer             ncid,
3019!                          integer             varid,
3020!                          integer             start(1),
3021!                          integer             count(1),
3022!                          integer             stride(1),
3023!                          character(*)        text)
3024      external        nf_put_vars_text
3025
3026      integer         nf_get_vars_text
3027!                         (integer             ncid,
3028!                          integer             varid,
3029!                          integer             start(1),
3030!                          integer             count(1),
3031!                          integer             stride(1),
3032!                          character(*)        text)
3033      external        nf_get_vars_text
3034
3035      integer         nf_put_vars_int1
3036!                         (integer             ncid,
3037!                          integer             varid,
3038!                          integer             start(1),
3039!                          integer             count(1),
3040!                          integer             stride(1),
3041!                          nf_int1_t           i1vals(1))
3042      external        nf_put_vars_int1
3043
3044      integer         nf_get_vars_int1
3045!                         (integer             ncid,
3046!                          integer             varid,
3047!                          integer             start(1),
3048!                          integer             count(1),
3049!                          integer             stride(1),
3050!                          nf_int1_t           i1vals(1))
3051      external        nf_get_vars_int1
3052
3053      integer         nf_put_vars_int2
3054!                         (integer             ncid,
3055!                          integer             varid,
3056!                          integer             start(1),
3057!                          integer             count(1),
3058!                          integer             stride(1),
3059!                          nf_int2_t           i2vals(1))
3060      external        nf_put_vars_int2
3061
3062      integer         nf_get_vars_int2
3063!                         (integer             ncid,
3064!                          integer             varid,
3065!                          integer             start(1),
3066!                          integer             count(1),
3067!                          integer             stride(1),
3068!                          nf_int2_t           i2vals(1))
3069      external        nf_get_vars_int2
3070
3071      integer         nf_put_vars_int
3072!                         (integer             ncid,
3073!                          integer             varid,
3074!                          integer             start(1),
3075!                          integer             count(1),
3076!                          integer             stride(1),
3077!                          integer             ivals(1))
3078      external        nf_put_vars_int
3079
3080      integer         nf_get_vars_int
3081!                         (integer             ncid,
3082!                          integer             varid,
3083!                          integer             start(1),
3084!                          integer             count(1),
3085!                          integer             stride(1),
3086!                          integer             ivals(1))
3087      external        nf_get_vars_int
3088
3089      integer         nf_put_vars_real
3090!                         (integer             ncid,
3091!                          integer             varid,
3092!                          integer             start(1),
3093!                          integer             count(1),
3094!                          integer             stride(1),
3095!                          real                rvals(1))
3096      external        nf_put_vars_real
3097
3098      integer         nf_get_vars_real
3099!                         (integer             ncid,
3100!                          integer             varid,
3101!                          integer             start(1),
3102!                          integer             count(1),
3103!                          integer             stride(1),
3104!                          real                rvals(1))
3105      external        nf_get_vars_real
3106
3107      integer         nf_put_vars_double
3108!                         (integer             ncid,
3109!                          integer             varid,
3110!                          integer             start(1),
3111!                          integer             count(1),
3112!                          integer             stride(1),
3113!                          doubleprecision     dvals(1))
3114      external        nf_put_vars_double
3115
3116      integer         nf_get_vars_double
3117!                         (integer             ncid,
3118!                          integer             varid,
3119!                          integer             start(1),
3120!                          integer             count(1),
3121!                          integer             stride(1),
3122!                          doubleprecision     dvals(1))
3123      external        nf_get_vars_double
3124
3125!
3126! mapped variable put/get routines:
3127!
3128
3129      integer         nf_put_varm_text
3130!                         (integer             ncid,
3131!                          integer             varid,
3132!                          integer             start(1),
3133!                          integer             count(1),
3134!                          integer             stride(1),
3135!                          integer             imap(1),
3136!                          character(*)        text)
3137      external        nf_put_varm_text
3138
3139      integer         nf_get_varm_text
3140!                         (integer             ncid,
3141!                          integer             varid,
3142!                          integer             start(1),
3143!                          integer             count(1),
3144!                          integer             stride(1),
3145!                          integer             imap(1),
3146!                          character(*)        text)
3147      external        nf_get_varm_text
3148
3149      integer         nf_put_varm_int1
3150!                         (integer             ncid,
3151!                          integer             varid,
3152!                          integer             start(1),
3153!                          integer             count(1),
3154!                          integer             stride(1),
3155!                          integer             imap(1),
3156!                          nf_int1_t           i1vals(1))
3157      external        nf_put_varm_int1
3158
3159      integer         nf_get_varm_int1
3160!                         (integer             ncid,
3161!                          integer             varid,
3162!                          integer             start(1),
3163!                          integer             count(1),
3164!                          integer             stride(1),
3165!                          integer             imap(1),
3166!                          nf_int1_t           i1vals(1))
3167      external        nf_get_varm_int1
3168
3169      integer         nf_put_varm_int2
3170!                         (integer             ncid,
3171!                          integer             varid,
3172!                          integer             start(1),
3173!                          integer             count(1),
3174!                          integer             stride(1),
3175!                          integer             imap(1),
3176!                          nf_int2_t           i2vals(1))
3177      external        nf_put_varm_int2
3178
3179      integer         nf_get_varm_int2
3180!                         (integer             ncid,
3181!                          integer             varid,
3182!                          integer             start(1),
3183!                          integer             count(1),
3184!                          integer             stride(1),
3185!                          integer             imap(1),
3186!                          nf_int2_t           i2vals(1))
3187      external        nf_get_varm_int2
3188
3189      integer         nf_put_varm_int
3190!                         (integer             ncid,
3191!                          integer             varid,
3192!                          integer             start(1),
3193!                          integer             count(1),
3194!                          integer             stride(1),
3195!                          integer             imap(1),
3196!                          integer             ivals(1))
3197      external        nf_put_varm_int
3198
3199      integer         nf_get_varm_int
3200!                         (integer             ncid,
3201!                          integer             varid,
3202!                          integer             start(1),
3203!                          integer             count(1),
3204!                          integer             stride(1),
3205!                          integer             imap(1),
3206!                          integer             ivals(1))
3207      external        nf_get_varm_int
3208
3209      integer         nf_put_varm_real
3210!                         (integer             ncid,
3211!                          integer             varid,
3212!                          integer             start(1),
3213!                          integer             count(1),
3214!                          integer             stride(1),
3215!                          integer             imap(1),
3216!                          real                rvals(1))
3217      external        nf_put_varm_real
3218
3219      integer         nf_get_varm_real
3220!                         (integer             ncid,
3221!                          integer             varid,
3222!                          integer             start(1),
3223!                          integer             count(1),
3224!                          integer             stride(1),
3225!                          integer             imap(1),
3226!                          real                rvals(1))
3227      external        nf_get_varm_real
3228
3229      integer         nf_put_varm_double
3230!                         (integer             ncid,
3231!                          integer             varid,
3232!                          integer             start(1),
3233!                          integer             count(1),
3234!                          integer             stride(1),
3235!                          integer             imap(1),
3236!                          doubleprecision     dvals(1))
3237      external        nf_put_varm_double
3238
3239      integer         nf_get_varm_double
3240!                         (integer             ncid,
3241!                          integer             varid,
3242!                          integer             start(1),
3243!                          integer             count(1),
3244!                          integer             stride(1),
3245!                          integer             imap(1),
3246!                          doubleprecision     dvals(1))
3247      external        nf_get_varm_double
3248
3249
3250!     NetCDF-2.
3251!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
3252! begin netcdf 2.4 backward compatibility:
3253!
3254
3255!     
3256! functions in the fortran interface
3257!
3258      integer nccre
3259      integer ncopn
3260      integer ncddef
3261      integer ncdid
3262      integer ncvdef
3263      integer ncvid
3264      integer nctlen
3265      integer ncsfil
3266
3267      external nccre
3268      external ncopn
3269      external ncddef
3270      external ncdid
3271      external ncvdef
3272      external ncvid
3273      external nctlen
3274      external ncsfil
3275
3276
3277      integer ncrdwr
3278      integer nccreat
3279      integer ncexcl
3280      integer ncindef
3281      integer ncnsync
3282      integer nchsync
3283      integer ncndirty
3284      integer nchdirty
3285      integer nclink
3286      integer ncnowrit
3287      integer ncwrite
3288      integer ncclob
3289      integer ncnoclob
3290      integer ncglobal
3291      integer ncfill
3292      integer ncnofill
3293      integer maxncop
3294      integer maxncdim
3295      integer maxncatt
3296      integer maxncvar
3297      integer maxncnam
3298      integer maxvdims
3299      integer ncnoerr
3300      integer ncebadid
3301      integer ncenfile
3302      integer nceexist
3303      integer nceinval
3304      integer nceperm
3305      integer ncenotin
3306      integer nceindef
3307      integer ncecoord
3308      integer ncemaxds
3309      integer ncename
3310      integer ncenoatt
3311      integer ncemaxat
3312      integer ncebadty
3313      integer ncebadd
3314      integer ncests
3315      integer nceunlim
3316      integer ncemaxvs
3317      integer ncenotvr
3318      integer nceglob
3319      integer ncenotnc
3320      integer ncfoobar
3321      integer ncsyserr
3322      integer ncfatal
3323      integer ncverbos
3324      integer ncentool
3325
3326
3327!
3328! netcdf data types:
3329!
3330      integer ncbyte
3331      integer ncchar
3332      integer ncshort
3333      integer nclong
3334      integer ncfloat
3335      integer ncdouble
3336
3337      parameter(ncbyte = 1)
3338      parameter(ncchar = 2)
3339      parameter(ncshort = 3)
3340      parameter(nclong = 4)
3341      parameter(ncfloat = 5)
3342      parameter(ncdouble = 6)
3343
3344!     
3345!     masks for the struct nc flag field; passed in as 'mode' arg to
3346!     nccreate and ncopen.
3347!     
3348
3349!     read/write, 0 => readonly
3350      parameter(ncrdwr = 1)
3351!     in create phase, cleared by ncendef
3352      parameter(nccreat = 2)
3353!     on create destroy existing file
3354      parameter(ncexcl = 4)
3355!     in define mode, cleared by ncendef
3356      parameter(ncindef = 8)
3357!     synchronise numrecs on change (x'10')
3358      parameter(ncnsync = 16)
3359!     synchronise whole header on change (x'20')
3360      parameter(nchsync = 32)
3361!     numrecs has changed (x'40')
3362      parameter(ncndirty = 64) 
3363!     header info has changed (x'80')
3364      parameter(nchdirty = 128)
3365!     prefill vars on endef and increase of record, the default behavior
3366      parameter(ncfill = 0)
3367!     do not fill vars on endef and increase of record (x'100')
3368      parameter(ncnofill = 256)
3369!     isa link (x'8000')
3370      parameter(nclink = 32768)
3371
3372!     
3373!     'mode' arguments for nccreate and ncopen
3374!     
3375      parameter(ncnowrit = 0)
3376      parameter(ncwrite = ncrdwr)
3377      parameter(ncclob = nf_clobber)
3378      parameter(ncnoclob = nf_noclobber)
3379
3380!     
3381!     'size' argument to ncdimdef for an unlimited dimension
3382!     
3383      integer ncunlim
3384      parameter(ncunlim = 0)
3385
3386!     
3387!     attribute id to put/get a global attribute
3388!     
3389      parameter(ncglobal  = 0)
3390
3391!     
3392!     advisory maximums:
3393!     
3394      parameter(maxncop = 64)
3395      parameter(maxncdim = 1024)
3396      parameter(maxncatt = 8192)
3397      parameter(maxncvar = 8192)
3398!     not enforced
3399      parameter(maxncnam = 256)
3400      parameter(maxvdims = maxncdim)
3401
3402!     
3403!     global netcdf error status variable
3404!     initialized in error.c
3405!     
3406
3407!     no error
3408      parameter(ncnoerr = nf_noerr)
3409!     not a netcdf id
3410      parameter(ncebadid = nf_ebadid)
3411!     too many netcdfs open
3412      parameter(ncenfile = -31)   ! nc_syserr
3413!     netcdf file exists && ncnoclob
3414      parameter(nceexist = nf_eexist)
3415!     invalid argument
3416      parameter(nceinval = nf_einval)
3417!     write to read only
3418      parameter(nceperm = nf_eperm)
3419!     operation not allowed in data mode
3420      parameter(ncenotin = nf_enotindefine )   
3421!     operation not allowed in define mode
3422      parameter(nceindef = nf_eindefine)   
3423!     coordinates out of domain
3424      parameter(ncecoord = nf_einvalcoords)
3425!     maxncdims exceeded
3426      parameter(ncemaxds = nf_emaxdims)
3427!     string match to name in use
3428      parameter(ncename = nf_enameinuse)   
3429!     attribute not found
3430      parameter(ncenoatt = nf_enotatt)
3431!     maxncattrs exceeded
3432      parameter(ncemaxat = nf_emaxatts)
3433!     not a netcdf data type
3434      parameter(ncebadty = nf_ebadtype)
3435!     invalid dimension id
3436      parameter(ncebadd = nf_ebaddim)
3437!     ncunlimited in the wrong index
3438      parameter(nceunlim = nf_eunlimpos)
3439!     maxncvars exceeded
3440      parameter(ncemaxvs = nf_emaxvars)
3441!     variable not found
3442      parameter(ncenotvr = nf_enotvar)
3443!     action prohibited on ncglobal varid
3444      parameter(nceglob = nf_eglobal)
3445!     not a netcdf file
3446      parameter(ncenotnc = nf_enotnc)
3447      parameter(ncests = nf_ests)
3448      parameter (ncentool = nf_emaxname) 
3449      parameter(ncfoobar = 32)
3450      parameter(ncsyserr = -31)
3451
3452!     
3453!     global options variable. used to determine behavior of error handler.
3454!     initialized in lerror.c
3455!     
3456      parameter(ncfatal = 1)
3457      parameter(ncverbos = 2)
3458
3459!
3460!     default fill values.  these must be the same as in the c interface.
3461!
3462      integer filbyte
3463      integer filchar
3464      integer filshort
3465      integer fillong
3466      real filfloat
3467      doubleprecision fildoub
3468
3469      parameter (filbyte = -127)
3470      parameter (filchar = 0)
3471      parameter (filshort = -32767)
3472      parameter (fillong = -2147483647)
3473      parameter (filfloat = 9.9692099683868690e+36)
3474      parameter (fildoub = 9.9692099683868690d+36)
3475
3476!     NetCDF-4.
3477!     This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT
3478!     file for distribution information.
3479
3480!     Netcdf version 4 fortran interface.
3481
3482!     $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $
3483
3484!     New netCDF-4 types.
3485      integer nf_ubyte
3486      integer nf_ushort
3487      integer nf_uint
3488      integer nf_int64
3489      integer nf_uint64
3490      integer nf_string
3491      integer nf_vlen
3492      integer nf_opaque
3493      integer nf_enum
3494      integer nf_compound
3495
3496      parameter (nf_ubyte = 7)
3497      parameter (nf_ushort = 8)
3498      parameter (nf_uint = 9)
3499      parameter (nf_int64 = 10)
3500      parameter (nf_uint64 = 11)
3501      parameter (nf_string = 12)
3502      parameter (nf_vlen = 13)
3503      parameter (nf_opaque = 14)
3504      parameter (nf_enum = 15)
3505      parameter (nf_compound = 16)
3506
3507!     New netCDF-4 fill values.
3508      integer           nf_fill_ubyte
3509      integer           nf_fill_ushort
3510!      real              nf_fill_uint
3511!      real              nf_fill_int64
3512!      real              nf_fill_uint64
3513      parameter (nf_fill_ubyte = 255)
3514      parameter (nf_fill_ushort = 65535)
3515
3516!     New constants.
3517      integer nf_format_netcdf4
3518      parameter (nf_format_netcdf4 = 3)
3519
3520      integer nf_format_netcdf4_classic
3521      parameter (nf_format_netcdf4_classic = 4)
3522
3523      integer nf_netcdf4
3524      parameter (nf_netcdf4 = 4096)
3525
3526      integer nf_classic_model
3527      parameter (nf_classic_model = 256)
3528
3529      integer nf_chunk_seq
3530      parameter (nf_chunk_seq = 0)
3531      integer nf_chunk_sub
3532      parameter (nf_chunk_sub = 1)
3533      integer nf_chunk_sizes
3534      parameter (nf_chunk_sizes = 2)
3535
3536      integer nf_endian_native
3537      parameter (nf_endian_native = 0)
3538      integer nf_endian_little
3539      parameter (nf_endian_little = 1)
3540      integer nf_endian_big
3541      parameter (nf_endian_big = 2)
3542
3543!     For NF_DEF_VAR_CHUNKING
3544      integer nf_chunked
3545      parameter (nf_chunked = 0)
3546      integer nf_contiguous
3547      parameter (nf_contiguous = 1)
3548
3549!     For NF_DEF_VAR_FLETCHER32
3550      integer nf_nochecksum
3551      parameter (nf_nochecksum = 0)
3552      integer nf_fletcher32
3553      parameter (nf_fletcher32 = 1)
3554
3555!     For NF_DEF_VAR_DEFLATE
3556      integer nf_noshuffle
3557      parameter (nf_noshuffle = 0)
3558      integer nf_shuffle
3559      parameter (nf_shuffle = 1)
3560
3561!     For NF_DEF_VAR_SZIP
3562      integer nf_szip_ec_option_mask
3563      parameter (nf_szip_ec_option_mask = 4)
3564      integer nf_szip_nn_option_mask
3565      parameter (nf_szip_nn_option_mask = 32)
3566
3567!     For parallel I/O.
3568      integer nf_mpiio     
3569      parameter (nf_mpiio = 8192)
3570      integer nf_mpiposix
3571      parameter (nf_mpiposix = 16384)
3572      integer nf_pnetcdf
3573      parameter (nf_pnetcdf = 32768)
3574
3575!     For NF_VAR_PAR_ACCESS.
3576      integer nf_independent
3577      parameter (nf_independent = 0)
3578      integer nf_collective
3579      parameter (nf_collective = 1)
3580
3581!     New error codes.
3582      integer nf_ehdferr        ! Error at HDF5 layer.
3583      parameter (nf_ehdferr = -101)
3584      integer nf_ecantread      ! Can't read.
3585      parameter (nf_ecantread = -102)
3586      integer nf_ecantwrite     ! Can't write.
3587      parameter (nf_ecantwrite = -103)
3588      integer nf_ecantcreate    ! Can't create.
3589      parameter (nf_ecantcreate = -104)
3590      integer nf_efilemeta      ! Problem with file metadata.
3591      parameter (nf_efilemeta = -105)
3592      integer nf_edimmeta       ! Problem with dimension metadata.
3593      parameter (nf_edimmeta = -106)
3594      integer nf_eattmeta       ! Problem with attribute metadata.
3595      parameter (nf_eattmeta = -107)
3596      integer nf_evarmeta       ! Problem with variable metadata.
3597      parameter (nf_evarmeta = -108)
3598      integer nf_enocompound    ! Not a compound type.
3599      parameter (nf_enocompound = -109)
3600      integer nf_eattexists     ! Attribute already exists.
3601      parameter (nf_eattexists = -110)
3602      integer nf_enotnc4        ! Attempting netcdf-4 operation on netcdf-3 file.   
3603      parameter (nf_enotnc4 = -111)
3604      integer nf_estrictnc3     ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file.   
3605      parameter (nf_estrictnc3 = -112)
3606      integer nf_enotnc3        ! Attempting netcdf-3 operation on netcdf-4 file.   
3607      parameter (nf_enotnc3 = -113)
3608      integer nf_enopar         ! Parallel operation on file opened for non-parallel access.   
3609      parameter (nf_enopar = -114)
3610      integer nf_eparinit       ! Error initializing for parallel access.   
3611      parameter (nf_eparinit = -115)
3612      integer nf_ebadgrpid      ! Bad group ID.   
3613      parameter (nf_ebadgrpid = -116)
3614      integer nf_ebadtypid      ! Bad type ID.   
3615      parameter (nf_ebadtypid = -117)
3616      integer nf_etypdefined    ! Type has already been defined and may not be edited.
3617      parameter (nf_etypdefined = -118)
3618      integer nf_ebadfield      ! Bad field ID.   
3619      parameter (nf_ebadfield = -119)
3620      integer nf_ebadclass      ! Bad class.   
3621      parameter (nf_ebadclass = -120)
3622      integer nf_emaptype       ! Mapped access for atomic types only.   
3623      parameter (nf_emaptype = -121)
3624      integer nf_elatefill      ! Attempt to define fill value when data already exists.
3625      parameter (nf_elatefill = -122)
3626      integer nf_elatedef       ! Attempt to define var properties, like deflate, after enddef.
3627      parameter (nf_elatedef = -123)
3628      integer nf_edimscale      ! Probem with HDF5 dimscales.
3629      parameter (nf_edimscale = -124)
3630      integer nf_enogrp       ! No group found.
3631      parameter (nf_enogrp = -125)
3632
3633
3634!     New functions.
3635
3636!     Parallel I/O.
3637      integer nf_create_par
3638      external nf_create_par
3639
3640      integer nf_open_par
3641      external nf_open_par
3642
3643      integer nf_var_par_access
3644      external nf_var_par_access
3645
3646!     Functions to handle groups.
3647      integer nf_inq_ncid
3648      external nf_inq_ncid
3649
3650      integer nf_inq_grps
3651      external nf_inq_grps
3652
3653      integer nf_inq_grpname
3654      external nf_inq_grpname
3655
3656      integer nf_inq_grpname_full
3657      external nf_inq_grpname_full
3658
3659      integer nf_inq_grpname_len
3660      external nf_inq_grpname_len
3661
3662      integer nf_inq_grp_parent
3663      external nf_inq_grp_parent
3664
3665      integer nf_inq_grp_ncid
3666      external nf_inq_grp_ncid
3667
3668      integer nf_inq_grp_full_ncid
3669      external nf_inq_grp_full_ncid
3670
3671      integer nf_inq_varids
3672      external nf_inq_varids
3673
3674      integer nf_inq_dimids
3675      external nf_inq_dimids
3676
3677      integer nf_def_grp
3678      external nf_def_grp
3679
3680!     New options for netCDF variables.
3681      integer nf_def_var_deflate
3682      external nf_def_var_deflate
3683
3684      integer nf_inq_var_deflate
3685      external nf_inq_var_deflate
3686
3687      integer nf_def_var_fletcher32
3688      external nf_def_var_fletcher32
3689
3690      integer nf_inq_var_fletcher32
3691      external nf_inq_var_fletcher32
3692
3693      integer nf_def_var_chunking
3694      external nf_def_var_chunking
3695
3696      integer nf_inq_var_chunking
3697      external nf_inq_var_chunking
3698
3699      integer nf_def_var_fill
3700      external nf_def_var_fill
3701
3702      integer nf_inq_var_fill
3703      external nf_inq_var_fill
3704
3705      integer nf_def_var_endian
3706      external nf_def_var_endian
3707
3708      integer nf_inq_var_endian
3709      external nf_inq_var_endian
3710
3711!     User defined types.
3712      integer nf_inq_typeids
3713      external nf_inq_typeids
3714
3715      integer nf_inq_typeid
3716      external nf_inq_typeid
3717
3718      integer nf_inq_type
3719      external nf_inq_type
3720
3721      integer nf_inq_user_type
3722      external nf_inq_user_type
3723
3724!     User defined types - compound types.
3725      integer nf_def_compound
3726      external nf_def_compound
3727
3728      integer nf_insert_compound
3729      external nf_insert_compound
3730
3731      integer nf_insert_array_compound
3732      external nf_insert_array_compound
3733
3734      integer nf_inq_compound
3735      external nf_inq_compound
3736
3737      integer nf_inq_compound_name
3738      external nf_inq_compound_name
3739
3740      integer nf_inq_compound_size
3741      external nf_inq_compound_size
3742
3743      integer nf_inq_compound_nfields
3744      external nf_inq_compound_nfields
3745
3746      integer nf_inq_compound_field
3747      external nf_inq_compound_field
3748
3749      integer nf_inq_compound_fieldname
3750      external nf_inq_compound_fieldname
3751
3752      integer nf_inq_compound_fieldindex
3753      external nf_inq_compound_fieldindex
3754
3755      integer nf_inq_compound_fieldoffset
3756      external nf_inq_compound_fieldoffset
3757
3758      integer nf_inq_compound_fieldtype
3759      external nf_inq_compound_fieldtype
3760
3761      integer nf_inq_compound_fieldndims
3762      external nf_inq_compound_fieldndims
3763
3764      integer nf_inq_compound_fielddim_sizes
3765      external nf_inq_compound_fielddim_sizes
3766
3767!     User defined types - variable length arrays.
3768      integer nf_def_vlen
3769      external nf_def_vlen
3770
3771      integer nf_inq_vlen
3772      external nf_inq_vlen
3773
3774      integer nf_free_vlen
3775      external nf_free_vlen
3776
3777!     User defined types - enums.
3778      integer nf_def_enum
3779      external nf_def_enum
3780
3781      integer nf_insert_enum
3782      external nf_insert_enum
3783
3784      integer nf_inq_enum
3785      external nf_inq_enum
3786
3787      integer nf_inq_enum_member
3788      external nf_inq_enum_member
3789
3790      integer nf_inq_enum_ident
3791      external nf_inq_enum_ident
3792
3793!     User defined types - opaque.
3794      integer nf_def_opaque
3795      external nf_def_opaque
3796
3797      integer nf_inq_opaque
3798      external nf_inq_opaque
3799
3800!     Write and read attributes of any type, including user defined
3801!     types.
3802      integer nf_put_att
3803      external nf_put_att
3804      integer nf_get_att
3805      external nf_get_att
3806
3807!     Write and read variables of any type, including user defined
3808!     types.
3809      integer nf_put_var
3810      external nf_put_var
3811      integer nf_put_var1
3812      external nf_put_var1
3813      integer nf_put_vara
3814      external nf_put_vara
3815      integer nf_put_vars
3816      external nf_put_vars
3817      integer nf_get_var
3818      external nf_get_var
3819      integer nf_get_var1
3820      external nf_get_var1
3821      integer nf_get_vara
3822      external nf_get_vara
3823      integer nf_get_vars
3824      external nf_get_vars
3825
3826!     64-bit int functions.
3827      integer nf_put_var1_int64
3828      external nf_put_var1_int64
3829      integer nf_put_vara_int64
3830      external nf_put_vara_int64
3831      integer nf_put_vars_int64
3832      external nf_put_vars_int64
3833      integer nf_put_varm_int64
3834      external nf_put_varm_int64
3835      integer nf_put_var_int64
3836      external nf_put_var_int64
3837      integer nf_get_var1_int64
3838      external nf_get_var1_int64
3839      integer nf_get_vara_int64
3840      external nf_get_vara_int64
3841      integer nf_get_vars_int64
3842      external nf_get_vars_int64
3843      integer nf_get_varm_int64
3844      external nf_get_varm_int64
3845      integer nf_get_var_int64
3846      external nf_get_var_int64
3847
3848!     For helping F77 users with VLENs.
3849      integer nf_get_vlen_element
3850      external nf_get_vlen_element
3851      integer nf_put_vlen_element
3852      external nf_put_vlen_element
3853
3854!     For dealing with file level chunk cache.
3855      integer nf_set_chunk_cache
3856      external nf_set_chunk_cache
3857      integer nf_get_chunk_cache
3858      external nf_get_chunk_cache
3859
3860!     For dealing with per variable chunk cache.
3861      integer nf_set_var_chunk_cache
3862      external nf_set_var_chunk_cache
3863      integer nf_get_var_chunk_cache
3864      external nf_get_var_chunk_cache
3865
3866integer,intent(in) :: nid ! NetCDF file ID
3867character(len=*),intent(in) :: name ! the variable's name
3868character(len=*),intent(in) :: title ! 'title' attribute of variable
3869character(len=*),intent(in) :: units ! 'units' attribute of variable
3870integer,intent(in) :: nbdim ! number of dimensions of the variable
3871integer,dimension(nbdim),intent(in) :: dimids ! NetCDF IDs of the dimensions
3872                                              ! the variable is defined along
3873integer,intent(out) :: nvarid ! NetCDF ID of the variable
3874integer,intent(out) :: ierr ! returned NetCDF staus code
3875
3876! 1. Switch to NetCDF define mode
3877ierr=NF_REDEF(nid)
3878
3879! 2. Define the variable
3880ierr = NF_DEF_VAR (nid,adjustl(name),NF_DOUBLE,nbdim,dimids,nvarid)
3881if(ierr/=NF_NOERR) then
3882   write(*,*) "def_var_stats: Failed defining variable "//trim(name)
3883   write(*,*) NF_STRERROR(ierr)
3884   stop ""
3885endif
3886
3887! 3. Write attributes
3888ierr=NF_PUT_ATT_TEXT(nid,nvarid,"title",&
3889                     len_trim(adjustl(title)),adjustl(title))
3890if(ierr/=NF_NOERR) then
3891   write(*,*) "def_var_stats: Failed writing title attribute for "//trim(name)
3892   write(*,*) NF_STRERROR(ierr)
3893   stop ""
3894endif
3895
3896ierr=NF_PUT_ATT_TEXT(nid,nvarid,"units",&
3897                     len_trim(adjustl(units)),adjustl(units))
3898if(ierr/=NF_NOERR) then
3899   write(*,*) "def_var_stats: Failed writing units attribute for "//trim(name)
3900   write(*,*) NF_STRERROR(ierr)
3901   stop ""
3902endif
3903
3904! 4. Switch out of NetCDF define mode
3905ierr = NF_ENDDEF(nid)
3906
3907end subroutine def_var_stats
3908
Note: See TracBrowser for help on using the repository browser.