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

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