source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/phys/write_archive.f @ 224

Last change on this file since 224 was 224, checked in by ymipsl, 10 years ago
File size: 70.8 KB
Line 
1c=======================================================================
2      subroutine write_archive(nid,ntime,nom,titre,unite,dim,px)
3c=======================================================================
4c
5c
6c   Date:    01/1997
7c   ----
8c
9c   Objet:   Ecriture de champs sur grille scalaire (iip1*jjp1)
10c   -----    dans un fichier DRS nomme "start_archive"
11c
12c    Il faut au prealable avoir cree un entete avec un "call ini_archive".
13c    Ces variables peuvent etre 3d (ex: temperature), 2d (ex: temperature
14c    de surface), ou 0d (pour un scalaire qui ne depend que du temps)
15c    (ex: la longitude solaire)
16c
17c
18c   Arguments: 
19c   ----------
20c
21c     Inputs:
22c     ------
23c
24c                 nid      Unite logique du fichier "start_archive"
25c         nom      nom du champ a ecrire dans le fichier "start_archive"
26c         titre    titre de la variable dans le fichier DRS "start_archive"
27c         unite    unite de la variable ....
28c         dim      dimension de la variable a ecrire
29c         px       tableau contenant la variable a ecrire
30c
31c
32c=======================================================================
33
34      use comsoil_h, only: nsoilmx
35      implicit none
36
37!-----------------------------------------------------------------------
38!   INCLUDE 'dimensions.h'
39!
40!   dimensions.h contient les dimensions du modele
41!   ndm est tel que iim=2**ndm
42!-----------------------------------------------------------------------
43
44      INTEGER iim,jjm,llm,ndm
45
46      PARAMETER (iim= 128,jjm=96,llm=64,ndm=1)
47
48!-----------------------------------------------------------------------
49!
50! $Header$
51!
52!
53!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
54!                 veillez  n'utiliser que des ! pour les commentaires
55!                 et  bien positionner les & des lignes de continuation
56!                 (les placer en colonne 6 et en colonne 73)
57!
58!
59!-----------------------------------------------------------------------
60!   INCLUDE 'paramet.h'
61
62      INTEGER  iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1
63      INTEGER  kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm
64      INTEGER  ijmllm,mvar
65      INTEGER jcfil,jcfllm
66
67      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                       &
68     &    ,jjp1=jjm+1-1/jjm)
69      PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
70      PARAMETER( kftd  = iim/2 -ndm )
71      PARAMETER( ip1jm  = iip1*jjm,  ip1jmp1= iip1*jjp1 )
72      PARAMETER( ip1jmi1= ip1jm - iip1 )
73      PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm )
74      PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm )
75      PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm )
76
77!-----------------------------------------------------------------------
78!
79! $Id: comvert.h 1654 2012-09-24 15:07:18Z aslmd $
80!
81!-----------------------------------------------------------------------
82!   INCLUDE 'comvert.h'
83
84      COMMON/comvertr/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm),     &
85     &               pa,preff,nivsigs(llm),nivsig(llm+1),               &
86     &               aps(llm),bps(llm),scaleheight,pseudoalt(llm)
87
88      common/comverti/disvert_type, pressure_exner
89
90      real ap     ! hybrid pressure contribution at interlayers
91      real bp     ! hybrid sigma contribution at interlayer
92      real presnivs ! (reference) pressure at mid-layers
93      real dpres
94      real pa     ! reference pressure (Pa) at which hybrid coordinates
95                  ! become purely pressure
96      real preff  ! reference surface pressure (Pa)
97      real nivsigs
98      real nivsig
99      real aps    ! hybrid pressure contribution at mid-layers
100      real bps    ! hybrid sigma contribution at mid-layers
101      real scaleheight ! atmospheric (reference) scale height (km)
102      real pseudoalt ! pseudo-altitude of model levels (km), based on presnivs(),
103                     ! preff and scaleheight
104
105      integer disvert_type ! type of vertical discretization:
106                           ! 1: Earth (default for planet_type==earth),
107                           !     automatic generation
108                           ! 2: Planets (default for planet_type!=earth),
109                           !     using 'z2sig.def' (or 'esasig.def) file
110
111      logical pressure_exner
112!     compute pressure inside layers using Exner function, else use mean
113!     of pressure values at interfaces
114
115 !-----------------------------------------------------------------------
116!
117! $Header$
118!
119!CDK comgeom
120      COMMON/comgeom/                                                   &
121     & cu(ip1jmp1),cv(ip1jm),unscu2(ip1jmp1),unscv2(ip1jm),             &
122     & aire(ip1jmp1),airesurg(ip1jmp1),aireu(ip1jmp1),                  &
123     & airev(ip1jm),unsaire(ip1jmp1),apoln,apols,                       &
124     & unsairez(ip1jm),airuscv2(ip1jm),airvscu2(ip1jm),                 &
125     & aireij1(ip1jmp1),aireij2(ip1jmp1),aireij3(ip1jmp1),              &
126     & aireij4(ip1jmp1),alpha1(ip1jmp1),alpha2(ip1jmp1),                &
127     & alpha3(ip1jmp1),alpha4(ip1jmp1),alpha1p2(ip1jmp1),               &
128     & alpha1p4(ip1jmp1),alpha2p3(ip1jmp1),alpha3p4(ip1jmp1),           &
129     & fext(ip1jm),constang(ip1jmp1),rlatu(jjp1),rlatv(jjm),            &
130     & rlonu(iip1),rlonv(iip1),cuvsurcv(ip1jm),cvsurcuv(ip1jm),         &
131     & cvusurcu(ip1jmp1),cusurcvu(ip1jmp1),cuvscvgam1(ip1jm),           &
132     & cuvscvgam2(ip1jm),cvuscugam1(ip1jmp1),                           &
133     & cvuscugam2(ip1jmp1),cvscuvgam(ip1jm),cuscvugam(ip1jmp1),         &
134     & unsapolnga1,unsapolnga2,unsapolsga1,unsapolsga2,                 &
135     & unsair_gam1(ip1jmp1),unsair_gam2(ip1jmp1),unsairz_gam(ip1jm),    &
136     & aivscu2gam(ip1jm),aiuscv2gam(ip1jm),xprimu(iip1),xprimv(iip1)
137
138!
139        REAL                                                            &
140     & cu,cv,unscu2,unscv2,aire,airesurg,aireu,airev,unsaire,apoln     ,&
141     & apols,unsairez,airuscv2,airvscu2,aireij1,aireij2,aireij3,aireij4,&
142     & alpha1,alpha2,alpha3,alpha4,alpha1p2,alpha1p4,alpha2p3,alpha3p4 ,&
143     & fext,constang,rlatu,rlatv,rlonu,rlonv,cuvscvgam1,cuvscvgam2     ,&
144     & cvuscugam1,cvuscugam2,cvscuvgam,cuscvugam,unsapolnga1,unsapolnga2&
145     & ,unsapolsga1,unsapolsga2,unsair_gam1,unsair_gam2,unsairz_gam    ,&
146     & aivscu2gam ,aiuscv2gam,cuvsurcv,cvsurcuv,cvusurcu,cusurcvu,xprimu&
147     & , xprimv
148!
149!
150! $Id: temps.h 1577 2011-10-20 15:06:47Z fairhead $
151!
152!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
153!                 veillez  n'utiliser que des ! pour les commentaires
154!                 et  bien positionner les & des lignes de continuation
155!                 (les placer en colonne 6 et en colonne 73)
156!
157!
158! jD_ref = jour julien de la date de reference (lancement de l'experience)
159! hD_ref = "heure" julienne de la date de reference
160!-----------------------------------------------------------------------
161! INCLUDE 'temps.h'
162
163      COMMON/temps_r/dt,jD_ref,jH_ref,start_time,hour_ini
164      COMMON/temps_i/day_ini,day_end,annee_ref,day_ref,                 &
165     &             itau_dyn,itau_phy,itaufin
166      COMMON/temps_c/calend
167
168
169      INTEGER   itaufin ! total number of dynamical steps for the run
170      INTEGER   itau_dyn, itau_phy
171      INTEGER   day_ini ! initial day # of simulation sequence
172      INTEGER   day_end ! final day # ; i.e. day # when this simulation ends
173      INTEGER   annee_ref
174      INTEGER   day_ref
175      REAL      dt ! (dynamics) time step (changes if doing Matsuno or LF step)
176      REAL      jD_ref, jH_ref, start_time
177      CHARACTER (len=10) :: calend
178
179      ! Additionnal Mars stuff:
180      real hour_ini ! initial fraction of day of simulation sequence (0=<hour_ini<1)
181
182!-----------------------------------------------------------------------
183!     NetCDF-3.
184!
185! netcdf version 3 fortran interface:
186!
187
188!
189! external netcdf data types:
190!
191      integer nf_byte
192      integer nf_int1
193      integer nf_char
194      integer nf_short
195      integer nf_int2
196      integer nf_int
197      integer nf_float
198      integer nf_real
199      integer nf_double
200
201      parameter (nf_byte = 1)
202      parameter (nf_int1 = nf_byte)
203      parameter (nf_char = 2)
204      parameter (nf_short = 3)
205      parameter (nf_int2 = nf_short)
206      parameter (nf_int = 4)
207      parameter (nf_float = 5)
208      parameter (nf_real = nf_float)
209      parameter (nf_double = 6)
210
211!
212! default fill values:
213!
214      integer           nf_fill_byte
215      integer           nf_fill_int1
216      integer           nf_fill_char
217      integer           nf_fill_short
218      integer           nf_fill_int2
219      integer           nf_fill_int
220      real              nf_fill_float
221      real              nf_fill_real
222      doubleprecision   nf_fill_double
223
224      parameter (nf_fill_byte = -127)
225      parameter (nf_fill_int1 = nf_fill_byte)
226      parameter (nf_fill_char = 0)
227      parameter (nf_fill_short = -32767)
228      parameter (nf_fill_int2 = nf_fill_short)
229      parameter (nf_fill_int = -2147483647)
230      parameter (nf_fill_float = 9.9692099683868690e+36)
231      parameter (nf_fill_real = nf_fill_float)
232      parameter (nf_fill_double = 9.9692099683868690d+36)
233
234!
235! mode flags for opening and creating a netcdf dataset:
236!
237      integer nf_nowrite
238      integer nf_write
239      integer nf_clobber
240      integer nf_noclobber
241      integer nf_fill
242      integer nf_nofill
243      integer nf_lock
244      integer nf_share
245      integer nf_64bit_offset
246      integer nf_sizehint_default
247      integer nf_align_chunk
248      integer nf_format_classic
249      integer nf_format_64bit
250
251      parameter (nf_nowrite = 0)
252      parameter (nf_write = 1)
253      parameter (nf_clobber = 0)
254      parameter (nf_noclobber = 4)
255      parameter (nf_fill = 0)
256      parameter (nf_nofill = 256)
257      parameter (nf_lock = 1024)
258      parameter (nf_share = 2048)
259      parameter (nf_64bit_offset = 512)
260      parameter (nf_sizehint_default = 0)
261      parameter (nf_align_chunk = -1)
262      parameter (nf_format_classic = 1)
263      parameter (nf_format_64bit = 2)
264
265!
266! size argument for defining an unlimited dimension:
267!
268      integer nf_unlimited
269      parameter (nf_unlimited = 0)
270
271!
272! global attribute id:
273!
274      integer nf_global
275      parameter (nf_global = 0)
276
277!
278! implementation limits:
279!
280      integer nf_max_dims
281      integer nf_max_attrs
282      integer nf_max_vars
283      integer nf_max_name
284      integer nf_max_var_dims
285
286      parameter (nf_max_dims = 1024)
287      parameter (nf_max_attrs = 8192)
288      parameter (nf_max_vars = 8192)
289      parameter (nf_max_name = 256)
290      parameter (nf_max_var_dims = nf_max_dims)
291
292!
293! error codes:
294!
295      integer nf_noerr
296      integer nf_ebadid
297      integer nf_eexist
298      integer nf_einval
299      integer nf_eperm
300      integer nf_enotindefine
301      integer nf_eindefine
302      integer nf_einvalcoords
303      integer nf_emaxdims
304      integer nf_enameinuse
305      integer nf_enotatt
306      integer nf_emaxatts
307      integer nf_ebadtype
308      integer nf_ebaddim
309      integer nf_eunlimpos
310      integer nf_emaxvars
311      integer nf_enotvar
312      integer nf_eglobal
313      integer nf_enotnc
314      integer nf_ests
315      integer nf_emaxname
316      integer nf_eunlimit
317      integer nf_enorecvars
318      integer nf_echar
319      integer nf_eedge
320      integer nf_estride
321      integer nf_ebadname
322      integer nf_erange
323      integer nf_enomem
324      integer nf_evarsize
325      integer nf_edimsize
326      integer nf_etrunc
327
328      parameter (nf_noerr = 0)
329      parameter (nf_ebadid = -33)
330      parameter (nf_eexist = -35)
331      parameter (nf_einval = -36)
332      parameter (nf_eperm = -37)
333      parameter (nf_enotindefine = -38)
334      parameter (nf_eindefine = -39)
335      parameter (nf_einvalcoords = -40)
336      parameter (nf_emaxdims = -41)
337      parameter (nf_enameinuse = -42)
338      parameter (nf_enotatt = -43)
339      parameter (nf_emaxatts = -44)
340      parameter (nf_ebadtype = -45)
341      parameter (nf_ebaddim = -46)
342      parameter (nf_eunlimpos = -47)
343      parameter (nf_emaxvars = -48)
344      parameter (nf_enotvar = -49)
345      parameter (nf_eglobal = -50)
346      parameter (nf_enotnc = -51)
347      parameter (nf_ests = -52)
348      parameter (nf_emaxname = -53)
349      parameter (nf_eunlimit = -54)
350      parameter (nf_enorecvars = -55)
351      parameter (nf_echar = -56)
352      parameter (nf_eedge = -57)
353      parameter (nf_estride = -58)
354      parameter (nf_ebadname = -59)
355      parameter (nf_erange = -60)
356      parameter (nf_enomem = -61)
357      parameter (nf_evarsize = -62)
358      parameter (nf_edimsize = -63)
359      parameter (nf_etrunc = -64)
360!
361! error handling modes:
362!
363      integer  nf_fatal
364      integer nf_verbose
365
366      parameter (nf_fatal = 1)
367      parameter (nf_verbose = 2)
368
369!
370! miscellaneous routines:
371!
372      character*80   nf_inq_libvers
373      external       nf_inq_libvers
374
375      character*80   nf_strerror
376!                         (integer             ncerr)
377      external       nf_strerror
378
379      logical        nf_issyserr
380!                         (integer             ncerr)
381      external       nf_issyserr
382
383!
384! control routines:
385!
386      integer         nf_inq_base_pe
387!                         (integer             ncid,
388!                          integer             pe)
389      external        nf_inq_base_pe
390
391      integer         nf_set_base_pe
392!                         (integer             ncid,
393!                          integer             pe)
394      external        nf_set_base_pe
395
396      integer         nf_create
397!                         (character*(*)       path,
398!                          integer             cmode,
399!                          integer             ncid)
400      external        nf_create
401
402      integer         nf__create
403!                         (character*(*)       path,
404!                          integer             cmode,
405!                          integer             initialsz,
406!                          integer             chunksizehint,
407!                          integer             ncid)
408      external        nf__create
409
410      integer         nf__create_mp
411!                         (character*(*)       path,
412!                          integer             cmode,
413!                          integer             initialsz,
414!                          integer             basepe,
415!                          integer             chunksizehint,
416!                          integer             ncid)
417      external        nf__create_mp
418
419      integer         nf_open
420!                         (character*(*)       path,
421!                          integer             mode,
422!                          integer             ncid)
423      external        nf_open
424
425      integer         nf__open
426!                         (character*(*)       path,
427!                          integer             mode,
428!                          integer             chunksizehint,
429!                          integer             ncid)
430      external        nf__open
431
432      integer         nf__open_mp
433!                         (character*(*)       path,
434!                          integer             mode,
435!                          integer             basepe,
436!                          integer             chunksizehint,
437!                          integer             ncid)
438      external        nf__open_mp
439
440      integer         nf_set_fill
441!                         (integer             ncid,
442!                          integer             fillmode,
443!                          integer             old_mode)
444      external        nf_set_fill
445
446      integer         nf_set_default_format
447!                          (integer             format,
448!                          integer             old_format)
449      external        nf_set_default_format
450
451      integer         nf_redef
452!                         (integer             ncid)
453      external        nf_redef
454
455      integer         nf_enddef
456!                         (integer             ncid)
457      external        nf_enddef
458
459      integer         nf__enddef
460!                         (integer             ncid,
461!                          integer             h_minfree,
462!                          integer             v_align,
463!                          integer             v_minfree,
464!                          integer             r_align)
465      external        nf__enddef
466
467      integer         nf_sync
468!                         (integer             ncid)
469      external        nf_sync
470
471      integer         nf_abort
472!                         (integer             ncid)
473      external        nf_abort
474
475      integer         nf_close
476!                         (integer             ncid)
477      external        nf_close
478
479      integer         nf_delete
480!                         (character*(*)       ncid)
481      external        nf_delete
482
483!
484! general inquiry routines:
485!
486
487      integer         nf_inq
488!                         (integer             ncid,
489!                          integer             ndims,
490!                          integer             nvars,
491!                          integer             ngatts,
492!                          integer             unlimdimid)
493      external        nf_inq
494
495      integer         nf_inq_ndims
496!                         (integer             ncid,
497!                          integer             ndims)
498      external        nf_inq_ndims
499
500      integer         nf_inq_nvars
501!                         (integer             ncid,
502!                          integer             nvars)
503      external        nf_inq_nvars
504
505      integer         nf_inq_natts
506!                         (integer             ncid,
507!                          integer             ngatts)
508      external        nf_inq_natts
509
510      integer         nf_inq_unlimdim
511!                         (integer             ncid,
512!                          integer             unlimdimid)
513      external        nf_inq_unlimdim
514
515      integer         nf_inq_format
516!                         (integer             ncid,
517!                          integer             format)
518      external        nf_inq_format
519
520!
521! dimension routines:
522!
523
524      integer         nf_def_dim
525!                         (integer             ncid,
526!                          character(*)        name,
527!                          integer             len,
528!                          integer             dimid)
529      external        nf_def_dim
530
531      integer         nf_inq_dimid
532!                         (integer             ncid,
533!                          character(*)        name,
534!                          integer             dimid)
535      external        nf_inq_dimid
536
537      integer         nf_inq_dim
538!                         (integer             ncid,
539!                          integer             dimid,
540!                          character(*)        name,
541!                          integer             len)
542      external        nf_inq_dim
543
544      integer         nf_inq_dimname
545!                         (integer             ncid,
546!                          integer             dimid,
547!                          character(*)        name)
548      external        nf_inq_dimname
549
550      integer         nf_inq_dimlen
551!                         (integer             ncid,
552!                          integer             dimid,
553!                          integer             len)
554      external        nf_inq_dimlen
555
556      integer         nf_rename_dim
557!                         (integer             ncid,
558!                          integer             dimid,
559!                          character(*)        name)
560      external        nf_rename_dim
561
562!
563! general attribute routines:
564!
565
566      integer         nf_inq_att
567!                         (integer             ncid,
568!                          integer             varid,
569!                          character(*)        name,
570!                          integer             xtype,
571!                          integer             len)
572      external        nf_inq_att
573
574      integer         nf_inq_attid
575!                         (integer             ncid,
576!                          integer             varid,
577!                          character(*)        name,
578!                          integer             attnum)
579      external        nf_inq_attid
580
581      integer         nf_inq_atttype
582!                         (integer             ncid,
583!                          integer             varid,
584!                          character(*)        name,
585!                          integer             xtype)
586      external        nf_inq_atttype
587
588      integer         nf_inq_attlen
589!                         (integer             ncid,
590!                          integer             varid,
591!                          character(*)        name,
592!                          integer             len)
593      external        nf_inq_attlen
594
595      integer         nf_inq_attname
596!                         (integer             ncid,
597!                          integer             varid,
598!                          integer             attnum,
599!                          character(*)        name)
600      external        nf_inq_attname
601
602      integer         nf_copy_att
603!                         (integer             ncid_in,
604!                          integer             varid_in,
605!                          character(*)        name,
606!                          integer             ncid_out,
607!                          integer             varid_out)
608      external        nf_copy_att
609
610      integer         nf_rename_att
611!                         (integer             ncid,
612!                          integer             varid,
613!                          character(*)        curname,
614!                          character(*)        newname)
615      external        nf_rename_att
616
617      integer         nf_del_att
618!                         (integer             ncid,
619!                          integer             varid,
620!                          character(*)        name)
621      external        nf_del_att
622
623!
624! attribute put/get routines:
625!
626
627      integer         nf_put_att_text
628!                         (integer             ncid,
629!                          integer             varid,
630!                          character(*)        name,
631!                          integer             len,
632!                          character(*)        text)
633      external        nf_put_att_text
634
635      integer         nf_get_att_text
636!                         (integer             ncid,
637!                          integer             varid,
638!                          character(*)        name,
639!                          character(*)        text)
640      external        nf_get_att_text
641
642      integer         nf_put_att_int1
643!                         (integer             ncid,
644!                          integer             varid,
645!                          character(*)        name,
646!                          integer             xtype,
647!                          integer             len,
648!                          nf_int1_t           i1vals(1))
649      external        nf_put_att_int1
650
651      integer         nf_get_att_int1
652!                         (integer             ncid,
653!                          integer             varid,
654!                          character(*)        name,
655!                          nf_int1_t           i1vals(1))
656      external        nf_get_att_int1
657
658      integer         nf_put_att_int2
659!                         (integer             ncid,
660!                          integer             varid,
661!                          character(*)        name,
662!                          integer             xtype,
663!                          integer             len,
664!                          nf_int2_t           i2vals(1))
665      external        nf_put_att_int2
666
667      integer         nf_get_att_int2
668!                         (integer             ncid,
669!                          integer             varid,
670!                          character(*)        name,
671!                          nf_int2_t           i2vals(1))
672      external        nf_get_att_int2
673
674      integer         nf_put_att_int
675!                         (integer             ncid,
676!                          integer             varid,
677!                          character(*)        name,
678!                          integer             xtype,
679!                          integer             len,
680!                          integer             ivals(1))
681      external        nf_put_att_int
682
683      integer         nf_get_att_int
684!                         (integer             ncid,
685!                          integer             varid,
686!                          character(*)        name,
687!                          integer             ivals(1))
688      external        nf_get_att_int
689
690      integer         nf_put_att_real
691!                         (integer             ncid,
692!                          integer             varid,
693!                          character(*)        name,
694!                          integer             xtype,
695!                          integer             len,
696!                          real                rvals(1))
697      external        nf_put_att_real
698
699      integer         nf_get_att_real
700!                         (integer             ncid,
701!                          integer             varid,
702!                          character(*)        name,
703!                          real                rvals(1))
704      external        nf_get_att_real
705
706      integer         nf_put_att_double
707!                         (integer             ncid,
708!                          integer             varid,
709!                          character(*)        name,
710!                          integer             xtype,
711!                          integer             len,
712!                          double              dvals(1))
713      external        nf_put_att_double
714
715      integer         nf_get_att_double
716!                         (integer             ncid,
717!                          integer             varid,
718!                          character(*)        name,
719!                          double              dvals(1))
720      external        nf_get_att_double
721
722!
723! general variable routines:
724!
725
726      integer         nf_def_var
727!                         (integer             ncid,
728!                          character(*)        name,
729!                          integer             datatype,
730!                          integer             ndims,
731!                          integer             dimids(1),
732!                          integer             varid)
733      external        nf_def_var
734
735      integer         nf_inq_var
736!                         (integer             ncid,
737!                          integer             varid,
738!                          character(*)        name,
739!                          integer             datatype,
740!                          integer             ndims,
741!                          integer             dimids(1),
742!                          integer             natts)
743      external        nf_inq_var
744
745      integer         nf_inq_varid
746!                         (integer             ncid,
747!                          character(*)        name,
748!                          integer             varid)
749      external        nf_inq_varid
750
751      integer         nf_inq_varname
752!                         (integer             ncid,
753!                          integer             varid,
754!                          character(*)        name)
755      external        nf_inq_varname
756
757      integer         nf_inq_vartype
758!                         (integer             ncid,
759!                          integer             varid,
760!                          integer             xtype)
761      external        nf_inq_vartype
762
763      integer         nf_inq_varndims
764!                         (integer             ncid,
765!                          integer             varid,
766!                          integer             ndims)
767      external        nf_inq_varndims
768
769      integer         nf_inq_vardimid
770!                         (integer             ncid,
771!                          integer             varid,
772!                          integer             dimids(1))
773      external        nf_inq_vardimid
774
775      integer         nf_inq_varnatts
776!                         (integer             ncid,
777!                          integer             varid,
778!                          integer             natts)
779      external        nf_inq_varnatts
780
781      integer         nf_rename_var
782!                         (integer             ncid,
783!                          integer             varid,
784!                          character(*)        name)
785      external        nf_rename_var
786
787      integer         nf_copy_var
788!                         (integer             ncid_in,
789!                          integer             varid,
790!                          integer             ncid_out)
791      external        nf_copy_var
792
793!
794! entire variable put/get routines:
795!
796
797      integer         nf_put_var_text
798!                         (integer             ncid,
799!                          integer             varid,
800!                          character(*)        text)
801      external        nf_put_var_text
802
803      integer         nf_get_var_text
804!                         (integer             ncid,
805!                          integer             varid,
806!                          character(*)        text)
807      external        nf_get_var_text
808
809      integer         nf_put_var_int1
810!                         (integer             ncid,
811!                          integer             varid,
812!                          nf_int1_t           i1vals(1))
813      external        nf_put_var_int1
814
815      integer         nf_get_var_int1
816!                         (integer             ncid,
817!                          integer             varid,
818!                          nf_int1_t           i1vals(1))
819      external        nf_get_var_int1
820
821      integer         nf_put_var_int2
822!                         (integer             ncid,
823!                          integer             varid,
824!                          nf_int2_t           i2vals(1))
825      external        nf_put_var_int2
826
827      integer         nf_get_var_int2
828!                         (integer             ncid,
829!                          integer             varid,
830!                          nf_int2_t           i2vals(1))
831      external        nf_get_var_int2
832
833      integer         nf_put_var_int
834!                         (integer             ncid,
835!                          integer             varid,
836!                          integer             ivals(1))
837      external        nf_put_var_int
838
839      integer         nf_get_var_int
840!                         (integer             ncid,
841!                          integer             varid,
842!                          integer             ivals(1))
843      external        nf_get_var_int
844
845      integer         nf_put_var_real
846!                         (integer             ncid,
847!                          integer             varid,
848!                          real                rvals(1))
849      external        nf_put_var_real
850
851      integer         nf_get_var_real
852!                         (integer             ncid,
853!                          integer             varid,
854!                          real                rvals(1))
855      external        nf_get_var_real
856
857      integer         nf_put_var_double
858!                         (integer             ncid,
859!                          integer             varid,
860!                          doubleprecision     dvals(1))
861      external        nf_put_var_double
862
863      integer         nf_get_var_double
864!                         (integer             ncid,
865!                          integer             varid,
866!                          doubleprecision     dvals(1))
867      external        nf_get_var_double
868
869!
870! single variable put/get routines:
871!
872
873      integer         nf_put_var1_text
874!                         (integer             ncid,
875!                          integer             varid,
876!                          integer             index(1),
877!                          character*1         text)
878      external        nf_put_var1_text
879
880      integer         nf_get_var1_text
881!                         (integer             ncid,
882!                          integer             varid,
883!                          integer             index(1),
884!                          character*1         text)
885      external        nf_get_var1_text
886
887      integer         nf_put_var1_int1
888!                         (integer             ncid,
889!                          integer             varid,
890!                          integer             index(1),
891!                          nf_int1_t           i1val)
892      external        nf_put_var1_int1
893
894      integer         nf_get_var1_int1
895!                         (integer             ncid,
896!                          integer             varid,
897!                          integer             index(1),
898!                          nf_int1_t           i1val)
899      external        nf_get_var1_int1
900
901      integer         nf_put_var1_int2
902!                         (integer             ncid,
903!                          integer             varid,
904!                          integer             index(1),
905!                          nf_int2_t           i2val)
906      external        nf_put_var1_int2
907
908      integer         nf_get_var1_int2
909!                         (integer             ncid,
910!                          integer             varid,
911!                          integer             index(1),
912!                          nf_int2_t           i2val)
913      external        nf_get_var1_int2
914
915      integer         nf_put_var1_int
916!                         (integer             ncid,
917!                          integer             varid,
918!                          integer             index(1),
919!                          integer             ival)
920      external        nf_put_var1_int
921
922      integer         nf_get_var1_int
923!                         (integer             ncid,
924!                          integer             varid,
925!                          integer             index(1),
926!                          integer             ival)
927      external        nf_get_var1_int
928
929      integer         nf_put_var1_real
930!                         (integer             ncid,
931!                          integer             varid,
932!                          integer             index(1),
933!                          real                rval)
934      external        nf_put_var1_real
935
936      integer         nf_get_var1_real
937!                         (integer             ncid,
938!                          integer             varid,
939!                          integer             index(1),
940!                          real                rval)
941      external        nf_get_var1_real
942
943      integer         nf_put_var1_double
944!                         (integer             ncid,
945!                          integer             varid,
946!                          integer             index(1),
947!                          doubleprecision     dval)
948      external        nf_put_var1_double
949
950      integer         nf_get_var1_double
951!                         (integer             ncid,
952!                          integer             varid,
953!                          integer             index(1),
954!                          doubleprecision     dval)
955      external        nf_get_var1_double
956
957!
958! variable array put/get routines:
959!
960
961      integer         nf_put_vara_text
962!                         (integer             ncid,
963!                          integer             varid,
964!                          integer             start(1),
965!                          integer             count(1),
966!                          character(*)        text)
967      external        nf_put_vara_text
968
969      integer         nf_get_vara_text
970!                         (integer             ncid,
971!                          integer             varid,
972!                          integer             start(1),
973!                          integer             count(1),
974!                          character(*)        text)
975      external        nf_get_vara_text
976
977      integer         nf_put_vara_int1
978!                         (integer             ncid,
979!                          integer             varid,
980!                          integer             start(1),
981!                          integer             count(1),
982!                          nf_int1_t           i1vals(1))
983      external        nf_put_vara_int1
984
985      integer         nf_get_vara_int1
986!                         (integer             ncid,
987!                          integer             varid,
988!                          integer             start(1),
989!                          integer             count(1),
990!                          nf_int1_t           i1vals(1))
991      external        nf_get_vara_int1
992
993      integer         nf_put_vara_int2
994!                         (integer             ncid,
995!                          integer             varid,
996!                          integer             start(1),
997!                          integer             count(1),
998!                          nf_int2_t           i2vals(1))
999      external        nf_put_vara_int2
1000
1001      integer         nf_get_vara_int2
1002!                         (integer             ncid,
1003!                          integer             varid,
1004!                          integer             start(1),
1005!                          integer             count(1),
1006!                          nf_int2_t           i2vals(1))
1007      external        nf_get_vara_int2
1008
1009      integer         nf_put_vara_int
1010!                         (integer             ncid,
1011!                          integer             varid,
1012!                          integer             start(1),
1013!                          integer             count(1),
1014!                          integer             ivals(1))
1015      external        nf_put_vara_int
1016
1017      integer         nf_get_vara_int
1018!                         (integer             ncid,
1019!                          integer             varid,
1020!                          integer             start(1),
1021!                          integer             count(1),
1022!                          integer             ivals(1))
1023      external        nf_get_vara_int
1024
1025      integer         nf_put_vara_real
1026!                         (integer             ncid,
1027!                          integer             varid,
1028!                          integer             start(1),
1029!                          integer             count(1),
1030!                          real                rvals(1))
1031      external        nf_put_vara_real
1032
1033      integer         nf_get_vara_real
1034!                         (integer             ncid,
1035!                          integer             varid,
1036!                          integer             start(1),
1037!                          integer             count(1),
1038!                          real                rvals(1))
1039      external        nf_get_vara_real
1040
1041      integer         nf_put_vara_double
1042!                         (integer             ncid,
1043!                          integer             varid,
1044!                          integer             start(1),
1045!                          integer             count(1),
1046!                          doubleprecision     dvals(1))
1047      external        nf_put_vara_double
1048
1049      integer         nf_get_vara_double
1050!                         (integer             ncid,
1051!                          integer             varid,
1052!                          integer             start(1),
1053!                          integer             count(1),
1054!                          doubleprecision     dvals(1))
1055      external        nf_get_vara_double
1056
1057!
1058! strided variable put/get routines:
1059!
1060
1061      integer         nf_put_vars_text
1062!                         (integer             ncid,
1063!                          integer             varid,
1064!                          integer             start(1),
1065!                          integer             count(1),
1066!                          integer             stride(1),
1067!                          character(*)        text)
1068      external        nf_put_vars_text
1069
1070      integer         nf_get_vars_text
1071!                         (integer             ncid,
1072!                          integer             varid,
1073!                          integer             start(1),
1074!                          integer             count(1),
1075!                          integer             stride(1),
1076!                          character(*)        text)
1077      external        nf_get_vars_text
1078
1079      integer         nf_put_vars_int1
1080!                         (integer             ncid,
1081!                          integer             varid,
1082!                          integer             start(1),
1083!                          integer             count(1),
1084!                          integer             stride(1),
1085!                          nf_int1_t           i1vals(1))
1086      external        nf_put_vars_int1
1087
1088      integer         nf_get_vars_int1
1089!                         (integer             ncid,
1090!                          integer             varid,
1091!                          integer             start(1),
1092!                          integer             count(1),
1093!                          integer             stride(1),
1094!                          nf_int1_t           i1vals(1))
1095      external        nf_get_vars_int1
1096
1097      integer         nf_put_vars_int2
1098!                         (integer             ncid,
1099!                          integer             varid,
1100!                          integer             start(1),
1101!                          integer             count(1),
1102!                          integer             stride(1),
1103!                          nf_int2_t           i2vals(1))
1104      external        nf_put_vars_int2
1105
1106      integer         nf_get_vars_int2
1107!                         (integer             ncid,
1108!                          integer             varid,
1109!                          integer             start(1),
1110!                          integer             count(1),
1111!                          integer             stride(1),
1112!                          nf_int2_t           i2vals(1))
1113      external        nf_get_vars_int2
1114
1115      integer         nf_put_vars_int
1116!                         (integer             ncid,
1117!                          integer             varid,
1118!                          integer             start(1),
1119!                          integer             count(1),
1120!                          integer             stride(1),
1121!                          integer             ivals(1))
1122      external        nf_put_vars_int
1123
1124      integer         nf_get_vars_int
1125!                         (integer             ncid,
1126!                          integer             varid,
1127!                          integer             start(1),
1128!                          integer             count(1),
1129!                          integer             stride(1),
1130!                          integer             ivals(1))
1131      external        nf_get_vars_int
1132
1133      integer         nf_put_vars_real
1134!                         (integer             ncid,
1135!                          integer             varid,
1136!                          integer             start(1),
1137!                          integer             count(1),
1138!                          integer             stride(1),
1139!                          real                rvals(1))
1140      external        nf_put_vars_real
1141
1142      integer         nf_get_vars_real
1143!                         (integer             ncid,
1144!                          integer             varid,
1145!                          integer             start(1),
1146!                          integer             count(1),
1147!                          integer             stride(1),
1148!                          real                rvals(1))
1149      external        nf_get_vars_real
1150
1151      integer         nf_put_vars_double
1152!                         (integer             ncid,
1153!                          integer             varid,
1154!                          integer             start(1),
1155!                          integer             count(1),
1156!                          integer             stride(1),
1157!                          doubleprecision     dvals(1))
1158      external        nf_put_vars_double
1159
1160      integer         nf_get_vars_double
1161!                         (integer             ncid,
1162!                          integer             varid,
1163!                          integer             start(1),
1164!                          integer             count(1),
1165!                          integer             stride(1),
1166!                          doubleprecision     dvals(1))
1167      external        nf_get_vars_double
1168
1169!
1170! mapped variable put/get routines:
1171!
1172
1173      integer         nf_put_varm_text
1174!                         (integer             ncid,
1175!                          integer             varid,
1176!                          integer             start(1),
1177!                          integer             count(1),
1178!                          integer             stride(1),
1179!                          integer             imap(1),
1180!                          character(*)        text)
1181      external        nf_put_varm_text
1182
1183      integer         nf_get_varm_text
1184!                         (integer             ncid,
1185!                          integer             varid,
1186!                          integer             start(1),
1187!                          integer             count(1),
1188!                          integer             stride(1),
1189!                          integer             imap(1),
1190!                          character(*)        text)
1191      external        nf_get_varm_text
1192
1193      integer         nf_put_varm_int1
1194!                         (integer             ncid,
1195!                          integer             varid,
1196!                          integer             start(1),
1197!                          integer             count(1),
1198!                          integer             stride(1),
1199!                          integer             imap(1),
1200!                          nf_int1_t           i1vals(1))
1201      external        nf_put_varm_int1
1202
1203      integer         nf_get_varm_int1
1204!                         (integer             ncid,
1205!                          integer             varid,
1206!                          integer             start(1),
1207!                          integer             count(1),
1208!                          integer             stride(1),
1209!                          integer             imap(1),
1210!                          nf_int1_t           i1vals(1))
1211      external        nf_get_varm_int1
1212
1213      integer         nf_put_varm_int2
1214!                         (integer             ncid,
1215!                          integer             varid,
1216!                          integer             start(1),
1217!                          integer             count(1),
1218!                          integer             stride(1),
1219!                          integer             imap(1),
1220!                          nf_int2_t           i2vals(1))
1221      external        nf_put_varm_int2
1222
1223      integer         nf_get_varm_int2
1224!                         (integer             ncid,
1225!                          integer             varid,
1226!                          integer             start(1),
1227!                          integer             count(1),
1228!                          integer             stride(1),
1229!                          integer             imap(1),
1230!                          nf_int2_t           i2vals(1))
1231      external        nf_get_varm_int2
1232
1233      integer         nf_put_varm_int
1234!                         (integer             ncid,
1235!                          integer             varid,
1236!                          integer             start(1),
1237!                          integer             count(1),
1238!                          integer             stride(1),
1239!                          integer             imap(1),
1240!                          integer             ivals(1))
1241      external        nf_put_varm_int
1242
1243      integer         nf_get_varm_int
1244!                         (integer             ncid,
1245!                          integer             varid,
1246!                          integer             start(1),
1247!                          integer             count(1),
1248!                          integer             stride(1),
1249!                          integer             imap(1),
1250!                          integer             ivals(1))
1251      external        nf_get_varm_int
1252
1253      integer         nf_put_varm_real
1254!                         (integer             ncid,
1255!                          integer             varid,
1256!                          integer             start(1),
1257!                          integer             count(1),
1258!                          integer             stride(1),
1259!                          integer             imap(1),
1260!                          real                rvals(1))
1261      external        nf_put_varm_real
1262
1263      integer         nf_get_varm_real
1264!                         (integer             ncid,
1265!                          integer             varid,
1266!                          integer             start(1),
1267!                          integer             count(1),
1268!                          integer             stride(1),
1269!                          integer             imap(1),
1270!                          real                rvals(1))
1271      external        nf_get_varm_real
1272
1273      integer         nf_put_varm_double
1274!                         (integer             ncid,
1275!                          integer             varid,
1276!                          integer             start(1),
1277!                          integer             count(1),
1278!                          integer             stride(1),
1279!                          integer             imap(1),
1280!                          doubleprecision     dvals(1))
1281      external        nf_put_varm_double
1282
1283      integer         nf_get_varm_double
1284!                         (integer             ncid,
1285!                          integer             varid,
1286!                          integer             start(1),
1287!                          integer             count(1),
1288!                          integer             stride(1),
1289!                          integer             imap(1),
1290!                          doubleprecision     dvals(1))
1291      external        nf_get_varm_double
1292
1293
1294!     NetCDF-2.
1295!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1296! begin netcdf 2.4 backward compatibility:
1297!
1298
1299!     
1300! functions in the fortran interface
1301!
1302      integer nccre
1303      integer ncopn
1304      integer ncddef
1305      integer ncdid
1306      integer ncvdef
1307      integer ncvid
1308      integer nctlen
1309      integer ncsfil
1310
1311      external nccre
1312      external ncopn
1313      external ncddef
1314      external ncdid
1315      external ncvdef
1316      external ncvid
1317      external nctlen
1318      external ncsfil
1319
1320
1321      integer ncrdwr
1322      integer nccreat
1323      integer ncexcl
1324      integer ncindef
1325      integer ncnsync
1326      integer nchsync
1327      integer ncndirty
1328      integer nchdirty
1329      integer nclink
1330      integer ncnowrit
1331      integer ncwrite
1332      integer ncclob
1333      integer ncnoclob
1334      integer ncglobal
1335      integer ncfill
1336      integer ncnofill
1337      integer maxncop
1338      integer maxncdim
1339      integer maxncatt
1340      integer maxncvar
1341      integer maxncnam
1342      integer maxvdims
1343      integer ncnoerr
1344      integer ncebadid
1345      integer ncenfile
1346      integer nceexist
1347      integer nceinval
1348      integer nceperm
1349      integer ncenotin
1350      integer nceindef
1351      integer ncecoord
1352      integer ncemaxds
1353      integer ncename
1354      integer ncenoatt
1355      integer ncemaxat
1356      integer ncebadty
1357      integer ncebadd
1358      integer ncests
1359      integer nceunlim
1360      integer ncemaxvs
1361      integer ncenotvr
1362      integer nceglob
1363      integer ncenotnc
1364      integer ncfoobar
1365      integer ncsyserr
1366      integer ncfatal
1367      integer ncverbos
1368      integer ncentool
1369
1370
1371!
1372! netcdf data types:
1373!
1374      integer ncbyte
1375      integer ncchar
1376      integer ncshort
1377      integer nclong
1378      integer ncfloat
1379      integer ncdouble
1380
1381      parameter(ncbyte = 1)
1382      parameter(ncchar = 2)
1383      parameter(ncshort = 3)
1384      parameter(nclong = 4)
1385      parameter(ncfloat = 5)
1386      parameter(ncdouble = 6)
1387
1388!     
1389!     masks for the struct nc flag field; passed in as 'mode' arg to
1390!     nccreate and ncopen.
1391!     
1392
1393!     read/write, 0 => readonly
1394      parameter(ncrdwr = 1)
1395!     in create phase, cleared by ncendef
1396      parameter(nccreat = 2)
1397!     on create destroy existing file
1398      parameter(ncexcl = 4)
1399!     in define mode, cleared by ncendef
1400      parameter(ncindef = 8)
1401!     synchronise numrecs on change (x'10')
1402      parameter(ncnsync = 16)
1403!     synchronise whole header on change (x'20')
1404      parameter(nchsync = 32)
1405!     numrecs has changed (x'40')
1406      parameter(ncndirty = 64) 
1407!     header info has changed (x'80')
1408      parameter(nchdirty = 128)
1409!     prefill vars on endef and increase of record, the default behavior
1410      parameter(ncfill = 0)
1411!     do not fill vars on endef and increase of record (x'100')
1412      parameter(ncnofill = 256)
1413!     isa link (x'8000')
1414      parameter(nclink = 32768)
1415
1416!     
1417!     'mode' arguments for nccreate and ncopen
1418!     
1419      parameter(ncnowrit = 0)
1420      parameter(ncwrite = ncrdwr)
1421      parameter(ncclob = nf_clobber)
1422      parameter(ncnoclob = nf_noclobber)
1423
1424!     
1425!     'size' argument to ncdimdef for an unlimited dimension
1426!     
1427      integer ncunlim
1428      parameter(ncunlim = 0)
1429
1430!     
1431!     attribute id to put/get a global attribute
1432!     
1433      parameter(ncglobal  = 0)
1434
1435!     
1436!     advisory maximums:
1437!     
1438      parameter(maxncop = 64)
1439      parameter(maxncdim = 1024)
1440      parameter(maxncatt = 8192)
1441      parameter(maxncvar = 8192)
1442!     not enforced
1443      parameter(maxncnam = 256)
1444      parameter(maxvdims = maxncdim)
1445
1446!     
1447!     global netcdf error status variable
1448!     initialized in error.c
1449!     
1450
1451!     no error
1452      parameter(ncnoerr = nf_noerr)
1453!     not a netcdf id
1454      parameter(ncebadid = nf_ebadid)
1455!     too many netcdfs open
1456      parameter(ncenfile = -31)   ! nc_syserr
1457!     netcdf file exists && ncnoclob
1458      parameter(nceexist = nf_eexist)
1459!     invalid argument
1460      parameter(nceinval = nf_einval)
1461!     write to read only
1462      parameter(nceperm = nf_eperm)
1463!     operation not allowed in data mode
1464      parameter(ncenotin = nf_enotindefine )   
1465!     operation not allowed in define mode
1466      parameter(nceindef = nf_eindefine)   
1467!     coordinates out of domain
1468      parameter(ncecoord = nf_einvalcoords)
1469!     maxncdims exceeded
1470      parameter(ncemaxds = nf_emaxdims)
1471!     string match to name in use
1472      parameter(ncename = nf_enameinuse)   
1473!     attribute not found
1474      parameter(ncenoatt = nf_enotatt)
1475!     maxncattrs exceeded
1476      parameter(ncemaxat = nf_emaxatts)
1477!     not a netcdf data type
1478      parameter(ncebadty = nf_ebadtype)
1479!     invalid dimension id
1480      parameter(ncebadd = nf_ebaddim)
1481!     ncunlimited in the wrong index
1482      parameter(nceunlim = nf_eunlimpos)
1483!     maxncvars exceeded
1484      parameter(ncemaxvs = nf_emaxvars)
1485!     variable not found
1486      parameter(ncenotvr = nf_enotvar)
1487!     action prohibited on ncglobal varid
1488      parameter(nceglob = nf_eglobal)
1489!     not a netcdf file
1490      parameter(ncenotnc = nf_enotnc)
1491      parameter(ncests = nf_ests)
1492      parameter (ncentool = nf_emaxname) 
1493      parameter(ncfoobar = 32)
1494      parameter(ncsyserr = -31)
1495
1496!     
1497!     global options variable. used to determine behavior of error handler.
1498!     initialized in lerror.c
1499!     
1500      parameter(ncfatal = 1)
1501      parameter(ncverbos = 2)
1502
1503!
1504!     default fill values.  these must be the same as in the c interface.
1505!
1506      integer filbyte
1507      integer filchar
1508      integer filshort
1509      integer fillong
1510      real filfloat
1511      doubleprecision fildoub
1512
1513      parameter (filbyte = -127)
1514      parameter (filchar = 0)
1515      parameter (filshort = -32767)
1516      parameter (fillong = -2147483647)
1517      parameter (filfloat = 9.9692099683868690e+36)
1518      parameter (fildoub = 9.9692099683868690d+36)
1519
1520!     NetCDF-4.
1521!     This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT
1522!     file for distribution information.
1523
1524!     Netcdf version 4 fortran interface.
1525
1526!     $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $
1527
1528!     New netCDF-4 types.
1529      integer nf_ubyte
1530      integer nf_ushort
1531      integer nf_uint
1532      integer nf_int64
1533      integer nf_uint64
1534      integer nf_string
1535      integer nf_vlen
1536      integer nf_opaque
1537      integer nf_enum
1538      integer nf_compound
1539
1540      parameter (nf_ubyte = 7)
1541      parameter (nf_ushort = 8)
1542      parameter (nf_uint = 9)
1543      parameter (nf_int64 = 10)
1544      parameter (nf_uint64 = 11)
1545      parameter (nf_string = 12)
1546      parameter (nf_vlen = 13)
1547      parameter (nf_opaque = 14)
1548      parameter (nf_enum = 15)
1549      parameter (nf_compound = 16)
1550
1551!     New netCDF-4 fill values.
1552      integer           nf_fill_ubyte
1553      integer           nf_fill_ushort
1554!      real              nf_fill_uint
1555!      real              nf_fill_int64
1556!      real              nf_fill_uint64
1557      parameter (nf_fill_ubyte = 255)
1558      parameter (nf_fill_ushort = 65535)
1559
1560!     New constants.
1561      integer nf_format_netcdf4
1562      parameter (nf_format_netcdf4 = 3)
1563
1564      integer nf_format_netcdf4_classic
1565      parameter (nf_format_netcdf4_classic = 4)
1566
1567      integer nf_netcdf4
1568      parameter (nf_netcdf4 = 4096)
1569
1570      integer nf_classic_model
1571      parameter (nf_classic_model = 256)
1572
1573      integer nf_chunk_seq
1574      parameter (nf_chunk_seq = 0)
1575      integer nf_chunk_sub
1576      parameter (nf_chunk_sub = 1)
1577      integer nf_chunk_sizes
1578      parameter (nf_chunk_sizes = 2)
1579
1580      integer nf_endian_native
1581      parameter (nf_endian_native = 0)
1582      integer nf_endian_little
1583      parameter (nf_endian_little = 1)
1584      integer nf_endian_big
1585      parameter (nf_endian_big = 2)
1586
1587!     For NF_DEF_VAR_CHUNKING
1588      integer nf_chunked
1589      parameter (nf_chunked = 0)
1590      integer nf_contiguous
1591      parameter (nf_contiguous = 1)
1592
1593!     For NF_DEF_VAR_FLETCHER32
1594      integer nf_nochecksum
1595      parameter (nf_nochecksum = 0)
1596      integer nf_fletcher32
1597      parameter (nf_fletcher32 = 1)
1598
1599!     For NF_DEF_VAR_DEFLATE
1600      integer nf_noshuffle
1601      parameter (nf_noshuffle = 0)
1602      integer nf_shuffle
1603      parameter (nf_shuffle = 1)
1604
1605!     For NF_DEF_VAR_SZIP
1606      integer nf_szip_ec_option_mask
1607      parameter (nf_szip_ec_option_mask = 4)
1608      integer nf_szip_nn_option_mask
1609      parameter (nf_szip_nn_option_mask = 32)
1610
1611!     For parallel I/O.
1612      integer nf_mpiio     
1613      parameter (nf_mpiio = 8192)
1614      integer nf_mpiposix
1615      parameter (nf_mpiposix = 16384)
1616      integer nf_pnetcdf
1617      parameter (nf_pnetcdf = 32768)
1618
1619!     For NF_VAR_PAR_ACCESS.
1620      integer nf_independent
1621      parameter (nf_independent = 0)
1622      integer nf_collective
1623      parameter (nf_collective = 1)
1624
1625!     New error codes.
1626      integer nf_ehdferr        ! Error at HDF5 layer.
1627      parameter (nf_ehdferr = -101)
1628      integer nf_ecantread      ! Can't read.
1629      parameter (nf_ecantread = -102)
1630      integer nf_ecantwrite     ! Can't write.
1631      parameter (nf_ecantwrite = -103)
1632      integer nf_ecantcreate    ! Can't create.
1633      parameter (nf_ecantcreate = -104)
1634      integer nf_efilemeta      ! Problem with file metadata.
1635      parameter (nf_efilemeta = -105)
1636      integer nf_edimmeta       ! Problem with dimension metadata.
1637      parameter (nf_edimmeta = -106)
1638      integer nf_eattmeta       ! Problem with attribute metadata.
1639      parameter (nf_eattmeta = -107)
1640      integer nf_evarmeta       ! Problem with variable metadata.
1641      parameter (nf_evarmeta = -108)
1642      integer nf_enocompound    ! Not a compound type.
1643      parameter (nf_enocompound = -109)
1644      integer nf_eattexists     ! Attribute already exists.
1645      parameter (nf_eattexists = -110)
1646      integer nf_enotnc4        ! Attempting netcdf-4 operation on netcdf-3 file.   
1647      parameter (nf_enotnc4 = -111)
1648      integer nf_estrictnc3     ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file.   
1649      parameter (nf_estrictnc3 = -112)
1650      integer nf_enotnc3        ! Attempting netcdf-3 operation on netcdf-4 file.   
1651      parameter (nf_enotnc3 = -113)
1652      integer nf_enopar         ! Parallel operation on file opened for non-parallel access.   
1653      parameter (nf_enopar = -114)
1654      integer nf_eparinit       ! Error initializing for parallel access.   
1655      parameter (nf_eparinit = -115)
1656      integer nf_ebadgrpid      ! Bad group ID.   
1657      parameter (nf_ebadgrpid = -116)
1658      integer nf_ebadtypid      ! Bad type ID.   
1659      parameter (nf_ebadtypid = -117)
1660      integer nf_etypdefined    ! Type has already been defined and may not be edited.
1661      parameter (nf_etypdefined = -118)
1662      integer nf_ebadfield      ! Bad field ID.   
1663      parameter (nf_ebadfield = -119)
1664      integer nf_ebadclass      ! Bad class.   
1665      parameter (nf_ebadclass = -120)
1666      integer nf_emaptype       ! Mapped access for atomic types only.   
1667      parameter (nf_emaptype = -121)
1668      integer nf_elatefill      ! Attempt to define fill value when data already exists.
1669      parameter (nf_elatefill = -122)
1670      integer nf_elatedef       ! Attempt to define var properties, like deflate, after enddef.
1671      parameter (nf_elatedef = -123)
1672      integer nf_edimscale      ! Probem with HDF5 dimscales.
1673      parameter (nf_edimscale = -124)
1674      integer nf_enogrp       ! No group found.
1675      parameter (nf_enogrp = -125)
1676
1677
1678!     New functions.
1679
1680!     Parallel I/O.
1681      integer nf_create_par
1682      external nf_create_par
1683
1684      integer nf_open_par
1685      external nf_open_par
1686
1687      integer nf_var_par_access
1688      external nf_var_par_access
1689
1690!     Functions to handle groups.
1691      integer nf_inq_ncid
1692      external nf_inq_ncid
1693
1694      integer nf_inq_grps
1695      external nf_inq_grps
1696
1697      integer nf_inq_grpname
1698      external nf_inq_grpname
1699
1700      integer nf_inq_grpname_full
1701      external nf_inq_grpname_full
1702
1703      integer nf_inq_grpname_len
1704      external nf_inq_grpname_len
1705
1706      integer nf_inq_grp_parent
1707      external nf_inq_grp_parent
1708
1709      integer nf_inq_grp_ncid
1710      external nf_inq_grp_ncid
1711
1712      integer nf_inq_grp_full_ncid
1713      external nf_inq_grp_full_ncid
1714
1715      integer nf_inq_varids
1716      external nf_inq_varids
1717
1718      integer nf_inq_dimids
1719      external nf_inq_dimids
1720
1721      integer nf_def_grp
1722      external nf_def_grp
1723
1724!     New options for netCDF variables.
1725      integer nf_def_var_deflate
1726      external nf_def_var_deflate
1727
1728      integer nf_inq_var_deflate
1729      external nf_inq_var_deflate
1730
1731      integer nf_def_var_fletcher32
1732      external nf_def_var_fletcher32
1733
1734      integer nf_inq_var_fletcher32
1735      external nf_inq_var_fletcher32
1736
1737      integer nf_def_var_chunking
1738      external nf_def_var_chunking
1739
1740      integer nf_inq_var_chunking
1741      external nf_inq_var_chunking
1742
1743      integer nf_def_var_fill
1744      external nf_def_var_fill
1745
1746      integer nf_inq_var_fill
1747      external nf_inq_var_fill
1748
1749      integer nf_def_var_endian
1750      external nf_def_var_endian
1751
1752      integer nf_inq_var_endian
1753      external nf_inq_var_endian
1754
1755!     User defined types.
1756      integer nf_inq_typeids
1757      external nf_inq_typeids
1758
1759      integer nf_inq_typeid
1760      external nf_inq_typeid
1761
1762      integer nf_inq_type
1763      external nf_inq_type
1764
1765      integer nf_inq_user_type
1766      external nf_inq_user_type
1767
1768!     User defined types - compound types.
1769      integer nf_def_compound
1770      external nf_def_compound
1771
1772      integer nf_insert_compound
1773      external nf_insert_compound
1774
1775      integer nf_insert_array_compound
1776      external nf_insert_array_compound
1777
1778      integer nf_inq_compound
1779      external nf_inq_compound
1780
1781      integer nf_inq_compound_name
1782      external nf_inq_compound_name
1783
1784      integer nf_inq_compound_size
1785      external nf_inq_compound_size
1786
1787      integer nf_inq_compound_nfields
1788      external nf_inq_compound_nfields
1789
1790      integer nf_inq_compound_field
1791      external nf_inq_compound_field
1792
1793      integer nf_inq_compound_fieldname
1794      external nf_inq_compound_fieldname
1795
1796      integer nf_inq_compound_fieldindex
1797      external nf_inq_compound_fieldindex
1798
1799      integer nf_inq_compound_fieldoffset
1800      external nf_inq_compound_fieldoffset
1801
1802      integer nf_inq_compound_fieldtype
1803      external nf_inq_compound_fieldtype
1804
1805      integer nf_inq_compound_fieldndims
1806      external nf_inq_compound_fieldndims
1807
1808      integer nf_inq_compound_fielddim_sizes
1809      external nf_inq_compound_fielddim_sizes
1810
1811!     User defined types - variable length arrays.
1812      integer nf_def_vlen
1813      external nf_def_vlen
1814
1815      integer nf_inq_vlen
1816      external nf_inq_vlen
1817
1818      integer nf_free_vlen
1819      external nf_free_vlen
1820
1821!     User defined types - enums.
1822      integer nf_def_enum
1823      external nf_def_enum
1824
1825      integer nf_insert_enum
1826      external nf_insert_enum
1827
1828      integer nf_inq_enum
1829      external nf_inq_enum
1830
1831      integer nf_inq_enum_member
1832      external nf_inq_enum_member
1833
1834      integer nf_inq_enum_ident
1835      external nf_inq_enum_ident
1836
1837!     User defined types - opaque.
1838      integer nf_def_opaque
1839      external nf_def_opaque
1840
1841      integer nf_inq_opaque
1842      external nf_inq_opaque
1843
1844!     Write and read attributes of any type, including user defined
1845!     types.
1846      integer nf_put_att
1847      external nf_put_att
1848      integer nf_get_att
1849      external nf_get_att
1850
1851!     Write and read variables of any type, including user defined
1852!     types.
1853      integer nf_put_var
1854      external nf_put_var
1855      integer nf_put_var1
1856      external nf_put_var1
1857      integer nf_put_vara
1858      external nf_put_vara
1859      integer nf_put_vars
1860      external nf_put_vars
1861      integer nf_get_var
1862      external nf_get_var
1863      integer nf_get_var1
1864      external nf_get_var1
1865      integer nf_get_vara
1866      external nf_get_vara
1867      integer nf_get_vars
1868      external nf_get_vars
1869
1870!     64-bit int functions.
1871      integer nf_put_var1_int64
1872      external nf_put_var1_int64
1873      integer nf_put_vara_int64
1874      external nf_put_vara_int64
1875      integer nf_put_vars_int64
1876      external nf_put_vars_int64
1877      integer nf_put_varm_int64
1878      external nf_put_varm_int64
1879      integer nf_put_var_int64
1880      external nf_put_var_int64
1881      integer nf_get_var1_int64
1882      external nf_get_var1_int64
1883      integer nf_get_vara_int64
1884      external nf_get_vara_int64
1885      integer nf_get_vars_int64
1886      external nf_get_vars_int64
1887      integer nf_get_varm_int64
1888      external nf_get_varm_int64
1889      integer nf_get_var_int64
1890      external nf_get_var_int64
1891
1892!     For helping F77 users with VLENs.
1893      integer nf_get_vlen_element
1894      external nf_get_vlen_element
1895      integer nf_put_vlen_element
1896      external nf_put_vlen_element
1897
1898!     For dealing with file level chunk cache.
1899      integer nf_set_chunk_cache
1900      external nf_set_chunk_cache
1901      integer nf_get_chunk_cache
1902      external nf_get_chunk_cache
1903
1904!     For dealing with per variable chunk cache.
1905      integer nf_set_var_chunk_cache
1906      external nf_set_var_chunk_cache
1907      integer nf_get_var_chunk_cache
1908      external nf_get_var_chunk_cache
1909
1910c-----------------------------------------------------------------------
1911c       Declarations   
1912c-----------------------------------------------------------------------
1913
1914c Arguments:
1915
1916      INTEGER nid
1917      integer ntime ! time index
1918      integer dim
1919      REAL px(iip1,jjp1,llm) 
1920
1921      CHARACTER*(*) nom, titre, unite
1922
1923      integer ierr
1924
1925
1926c local
1927      integer, dimension(4) :: edges,corner,id
1928      integer :: varid,i,j,l
1929c-----------------------------------------------------------------------
1930c      Ecriture du champs dans le fichier            (3 cas)     
1931c-----------------------------------------------------------------------
1932
1933! For an atmospheric 3D Variable
1934!--------------------------------
1935        if (dim.eq.3) then
1936
1937!         Ecriture du champs
1938
1939! nom de la variable
1940           ierr= NF_INQ_VARID(nid,nom,varid)
1941           if (ierr /= NF_NOERR) then
1942! choix du nom des coordonnees
1943              ierr= NF_INQ_DIMID(nid,"longitude",id(1))
1944              ierr= NF_INQ_DIMID(nid,"latitude",id(2))
1945              ierr= NF_INQ_DIMID(nid,"altitude",id(3))
1946              ierr= NF_INQ_DIMID(nid,"Time",id(4))
1947
1948! Creation de la variable si elle n'existait pas
1949
1950              write (*,*) "====================="
1951              write (*,*) "creation de ",nom
1952              call def_var(nid,nom,titre,unite,4,id,varid,ierr)
1953
1954           endif
1955
1956! mars s'arranger pour qu'il n'y ai plus besoin de ca
1957
1958c          do l=1,llm
1959c             do j=1,jjp1
1960c                do i=1,iip1
1961c                   pxbis(i,j,l)=px(i,j,llm-l+1)
1962c                enddo
1963c             enddo
1964c          enddo
1965           corner(1)=1
1966           corner(2)=1
1967           corner(3)=1
1968           corner(4)=ntime
1969
1970           edges(1)=iip1
1971           edges(2)=jjp1
1972           edges(3)=llm
1973           edges(4)=1
1974           ierr= NF_PUT_VARA_DOUBLE(nid,varid,corner,edges,px)
1975
1976           if (ierr.ne.NF_NOERR) then
1977              write(*,*) "***** PUT_VAR matter in write_archive"
1978              write(*,*) "***** with ",nom," ",nf_STRERROR(ierr)
1979              call abort
1980           endif
1981
1982
1983! For a subterranean 3D Variable
1984!-------------------------------
1985
1986        else if (dim.eq.-3) then
1987        ! get variables' ID, if it exists
1988        ierr=NF_INQ_VARID(nid,nom,varid)
1989       
1990         if (ierr.ne.NF_NOERR) then ! variable not defined yet
1991          ! build related coordinates
1992          ierr=NF_INQ_DIMID(nid,"longitude",id(1))
1993          ierr=NF_INQ_DIMID(nid,"latitude",id(2))
1994          ierr=NF_INQ_DIMID(nid,"subsurface_layers",id(3))
1995          if (ierr.ne.NF_NOERR) then
1996           write(*,*)"write_archive: dimension <subsurface_layers>",
1997     &               " is missing !!!"
1998           call abort
1999          endif
2000          ierr=NF_INQ_DIMID(nid,"Time",id(4))
2001         
2002          ! define the variable
2003          write(*,*)"====================="
2004          write(*,*)"defining ",nom
2005          call def_var(nid,nom,titre,unite,4,id,varid,ierr)
2006         
2007         endif
2008
2009        ! build cedges and corners
2010        corner(1)=1
2011        corner(2)=1
2012        corner(3)=1
2013        corner(4)=ntime
2014
2015        edges(1)=iip1
2016        edges(2)=jjp1
2017        edges(3)=nsoilmx
2018        edges(4)=1
2019           ierr= NF_PUT_VARA_DOUBLE(nid,varid,corner,edges,px)
2020
2021
2022! For a surface 2D Variable
2023!--------------------------
2024
2025        else if (dim.eq.2) then
2026
2027!         Ecriture du champs
2028
2029           ierr= NF_INQ_VARID(nid,nom,varid)
2030           if (ierr /= NF_NOERR) then
2031!  choix du nom des coordonnees
2032              ierr= NF_INQ_DIMID(nid,"longitude",id(1))
2033              ierr= NF_INQ_DIMID(nid,"latitude",id(2))
2034              ierr= NF_INQ_DIMID(nid,"Time",id(3))
2035
2036! Creation de la variable si elle n'existait pas
2037
2038              write (*,*) "====================="
2039              write (*,*) "creation de ",nom
2040
2041              call def_var(nid,nom,titre,unite,3,id,varid,ierr)
2042
2043           endif
2044
2045           corner(1)=1
2046           corner(2)=1
2047           corner(3)=ntime
2048           edges(1)=iip1
2049           edges(2)=jjp1
2050           edges(3)=1
2051
2052
2053           ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,px)
2054
2055           if (ierr.ne.NF_NOERR) then
2056              write(*,*) "***** PUT_VAR matter in write_archive"
2057              write(*,*) "***** with ",nom,nf_STRERROR(ierr)
2058              call abort
2059           endif
2060
2061
2062!Cas Variable 0D (scalaire dependant du temps)
2063!---------------------------------------------
2064
2065        else if (dim.eq.0) then
2066
2067!         Ecriture du champs
2068
2069           ierr= NF_INQ_VARID(nid,nom,varid)
2070           if (ierr /= NF_NOERR) then
2071!  choix du nom des coordonnees
2072              ierr= NF_INQ_DIMID(nid,"Time",id(1))
2073
2074! Creation de la variable si elle n'existait pas
2075
2076              write (*,*) "====================="
2077              write (*,*) "creation de ",nom
2078
2079              call def_var(nid,nom,titre,unite,1,id,varid,ierr)
2080
2081           endif
2082
2083           corner(1)=ntime
2084           edges(1)=1
2085
2086           ierr = NF_PUT_VARA_DOUBLE (nid,varid,corner,edges,px)
2087           if (ierr.ne.NF_NOERR) then
2088              write(*,*) "***** PUT_VAR matter in write_archive"
2089              write(*,*) "***** with ",nom,nf_STRERROR(ierr)
2090              call abort
2091           endif
2092
2093        else
2094          write(*,*) "write_archive: dim=",dim," ?!?"
2095          call abort
2096        endif ! of if (dim.eq.3) else if (dim.eq.-3) ....
2097
2098      return
2099      end
2100
Note: See TracBrowser for help on using the repository browser.