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

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