source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/dyn/dynredem_p.f @ 224

Last change on this file since 224 was 224, checked in by ymipsl, 10 years ago
File size: 155.9 KB
Line 
1!
2! $Id: dynredem_p.F 1635 2012-07-12 11:37:16Z lguez $
3!
4c
5      SUBROUTINE dynredem0_p(fichnom,iday_end,phis)
6
7
8
9      USE parallel_lmdz
10      USE infotrac
11      use netcdf95, only: NF95_PUT_VAR
12      use control_mod, only : planet_type
13
14      IMPLICIT NONE
15c=======================================================================
16c Ecriture du fichier de redemarrage sous format NetCDF (initialisation)
17c=======================================================================
18c   Declarations:
19c   -------------
20!-----------------------------------------------------------------------
21!   INCLUDE 'dimensions.h'
22!
23!   dimensions.h contient les dimensions du modele
24!   ndm est tel que iim=2**ndm
25!-----------------------------------------------------------------------
26
27      INTEGER iim,jjm,llm,ndm
28
29      PARAMETER (iim= 128,jjm=96,llm=64,ndm=1)
30
31!-----------------------------------------------------------------------
32!
33! $Header$
34!
35!
36!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
37!                 veillez  n'utiliser que des ! pour les commentaires
38!                 et  bien positionner les & des lignes de continuation
39!                 (les placer en colonne 6 et en colonne 73)
40!
41!
42!-----------------------------------------------------------------------
43!   INCLUDE 'paramet.h'
44
45      INTEGER  iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1
46      INTEGER  kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm
47      INTEGER  ijmllm,mvar
48      INTEGER jcfil,jcfllm
49
50      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                       &
51     &    ,jjp1=jjm+1-1/jjm)
52      PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
53      PARAMETER( kftd  = iim/2 -ndm )
54      PARAMETER( ip1jm  = iip1*jjm,  ip1jmp1= iip1*jjp1 )
55      PARAMETER( ip1jmi1= ip1jm - iip1 )
56      PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm )
57      PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm )
58      PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm )
59
60!-----------------------------------------------------------------------
61!
62! $Id: comconst.h 1437 2010-09-30 08:29:10Z emillour $
63!
64!-----------------------------------------------------------------------
65! INCLUDE comconst.h
66
67      COMMON/comconsti/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl,          &
68     &                 iflag_top_bound,mode_top_bound
69      COMMON/comconstr/dtvr,daysec,                                     &
70     & pi,dtphys,dtdiss,rad,r,kappa,cotot,unsim,g,omeg                  &
71     & ,dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta        &
72     & ,dissip_pupstart  ,tau_top_bound,                                &
73     & daylen,molmass, ihf
74      COMMON/cpdetvenus/cpp,nu_venus,t0_venus
75
76      INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl
77      REAL dtvr ! dynamical time step (in s)
78      REAL daysec !length (in s) of a standard day
79      REAL pi    ! something like 3.14159....
80      REAL dtphys ! (s) time step for the physics
81      REAL dtdiss ! (s) time step for the dissipation
82      REAL rad ! (m) radius of the planet
83      REAL r ! Reduced Gas constant r=R/mu
84             ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol)
85      REAL cpp   ! Cp
86      REAL kappa ! kappa=R/Cp
87      REAL cotot
88      REAL unsim ! = 1./iim
89      REAL g ! (m/s2) gravity
90      REAL omeg ! (rad/s) rotation rate of the planet
91! Dissipation factors, for Earth model:
92      REAL dissip_factz,dissip_zref !dissip_deltaz
93! Dissipation factors, for other planets:
94      REAL dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta
95      REAL dissip_pupstart
96      INTEGER iflag_top_bound,mode_top_bound
97      REAL tau_top_bound
98      REAL daylen ! length of solar day, in 'standard' day length
99      REAL molmass ! (g/mol) molar mass of the atmosphere
100
101      REAL nu_venus,t0_venus ! coeffs needed for Cp(T), Venus atmosphere
102      REAL ihf  ! (W/m2) intrinsic heat flux for giant planets
103
104
105!-----------------------------------------------------------------------
106!
107! $Id: comvert.h 1654 2012-09-24 15:07:18Z aslmd $
108!
109!-----------------------------------------------------------------------
110!   INCLUDE 'comvert.h'
111
112      COMMON/comvertr/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm),     &
113     &               pa,preff,nivsigs(llm),nivsig(llm+1),               &
114     &               aps(llm),bps(llm),scaleheight,pseudoalt(llm)
115
116      common/comverti/disvert_type, pressure_exner
117
118      real ap     ! hybrid pressure contribution at interlayers
119      real bp     ! hybrid sigma contribution at interlayer
120      real presnivs ! (reference) pressure at mid-layers
121      real dpres
122      real pa     ! reference pressure (Pa) at which hybrid coordinates
123                  ! become purely pressure
124      real preff  ! reference surface pressure (Pa)
125      real nivsigs
126      real nivsig
127      real aps    ! hybrid pressure contribution at mid-layers
128      real bps    ! hybrid sigma contribution at mid-layers
129      real scaleheight ! atmospheric (reference) scale height (km)
130      real pseudoalt ! pseudo-altitude of model levels (km), based on presnivs(),
131                     ! preff and scaleheight
132
133      integer disvert_type ! type of vertical discretization:
134                           ! 1: Earth (default for planet_type==earth),
135                           !     automatic generation
136                           ! 2: Planets (default for planet_type!=earth),
137                           !     using 'z2sig.def' (or 'esasig.def) file
138
139      logical pressure_exner
140!     compute pressure inside layers using Exner function, else use mean
141!     of pressure values at interfaces
142
143 !-----------------------------------------------------------------------
144!
145! $Header$
146!
147!CDK comgeom2
148      COMMON/comgeom/                                                   &
149     & cu(iip1,jjp1),cv(iip1,jjm),unscu2(iip1,jjp1),unscv2(iip1,jjm)  , &
150     & aire(iip1,jjp1),airesurg(iip1,jjp1),aireu(iip1,jjp1)           , &
151     & airev(iip1,jjm),unsaire(iip1,jjp1),apoln,apols                 , &
152     & unsairez(iip1,jjm),airuscv2(iip1,jjm),airvscu2(iip1,jjm)       , &
153     & aireij1(iip1,jjp1),aireij2(iip1,jjp1),aireij3(iip1,jjp1)       , &
154     & aireij4(iip1,jjp1),alpha1(iip1,jjp1),alpha2(iip1,jjp1)         , &
155     & alpha3(iip1,jjp1),alpha4(iip1,jjp1),alpha1p2(iip1,jjp1)        , &
156     & alpha1p4(iip1,jjp1),alpha2p3(iip1,jjp1),alpha3p4(iip1,jjp1)    , &
157     & fext(iip1,jjm),constang(iip1,jjp1), rlatu(jjp1),rlatv(jjm),      &
158     & rlonu(iip1),rlonv(iip1),cuvsurcv(iip1,jjm),cvsurcuv(iip1,jjm)  , &
159     & cvusurcu(iip1,jjp1),cusurcvu(iip1,jjp1)                        , &
160     & cuvscvgam1(iip1,jjm),cuvscvgam2(iip1,jjm),cvuscugam1(iip1,jjp1), &
161     & cvuscugam2(iip1,jjp1),cvscuvgam(iip1,jjm),cuscvugam(iip1,jjp1) , &
162     & unsapolnga1,unsapolnga2,unsapolsga1,unsapolsga2                , &
163     & unsair_gam1(iip1,jjp1),unsair_gam2(iip1,jjp1)                  , &
164     & unsairz_gam(iip1,jjm),aivscu2gam(iip1,jjm),aiuscv2gam(iip1,jjm)  &
165     & , xprimu(iip1),xprimv(iip1)
166
167
168      REAL                                                               &
169     & cu,cv,unscu2,unscv2,aire,airesurg,aireu,airev,apoln,apols,unsaire &
170     & ,unsairez,airuscv2,airvscu2,aireij1,aireij2,aireij3,aireij4     , &
171     & alpha1,alpha2,alpha3,alpha4,alpha1p2,alpha1p4,alpha2p3,alpha3p4 , &
172     & fext,constang,rlatu,rlatv,rlonu,rlonv,cuvscvgam1,cuvscvgam2     , &
173     & cvuscugam1,cvuscugam2,cvscuvgam,cuscvugam,unsapolnga1           , &
174     & unsapolnga2,unsapolsga1,unsapolsga2,unsair_gam1,unsair_gam2     , &
175     & unsairz_gam,aivscu2gam,aiuscv2gam,cuvsurcv,cvsurcuv,cvusurcu    , &
176     & cusurcvu,xprimu,xprimv
177!
178! $Id: temps.h 1577 2011-10-20 15:06:47Z fairhead $
179!
180!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
181!                 veillez  n'utiliser que des ! pour les commentaires
182!                 et  bien positionner les & des lignes de continuation
183!                 (les placer en colonne 6 et en colonne 73)
184!
185!
186! jD_ref = jour julien de la date de reference (lancement de l'experience)
187! hD_ref = "heure" julienne de la date de reference
188!-----------------------------------------------------------------------
189! INCLUDE 'temps.h'
190
191      COMMON/temps_r/dt,jD_ref,jH_ref,start_time,hour_ini
192      COMMON/temps_i/day_ini,day_end,annee_ref,day_ref,                 &
193     &             itau_dyn,itau_phy,itaufin
194      COMMON/temps_c/calend
195
196
197      INTEGER   itaufin ! total number of dynamical steps for the run
198      INTEGER   itau_dyn, itau_phy
199      INTEGER   day_ini ! initial day # of simulation sequence
200      INTEGER   day_end ! final day # ; i.e. day # when this simulation ends
201      INTEGER   annee_ref
202      INTEGER   day_ref
203      REAL      dt ! (dynamics) time step (changes if doing Matsuno or LF step)
204      REAL      jD_ref, jH_ref, start_time
205      CHARACTER (len=10) :: calend
206
207      ! Additionnal Mars stuff:
208      real hour_ini ! initial fraction of day of simulation sequence (0=<hour_ini<1)
209
210!-----------------------------------------------------------------------
211!
212! $Id: ener.h 1447 2010-10-22 16:18:27Z jghattas $
213!
214!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
215!                 veillez à n'utiliser que des ! pour les commentaires
216!                 et à bien positionner les & des lignes de continuation
217!                 (les placer en colonne 6 et en colonne 73)
218!
219! INCLUDE 'ener.h'
220
221      COMMON/ener/ang0,etot0,ptot0,ztot0,stot0,                         &
222     &            ang,etot,ptot,ztot,stot,rmsdpdt ,                     &
223     &            rmsv,gtot(llmm1)
224
225      REAL ang0,etot0,ptot0,ztot0,stot0,                                &
226     &     ang,etot,ptot,ztot,stot,rmsdpdt,rmsv,gtot
227
228!-----------------------------------------------------------------------
229!
230! $Id: logic.h 1520 2011-05-23 11:37:09Z emillour $
231!
232!
233! NB: keep items of different kinds in seperate common blocs to avoid
234!     "misaligned commons" issues
235!-----------------------------------------------------------------------
236! INCLUDE 'logic.h'
237
238      COMMON/logicl/ purmats,forward,leapf,apphys,                      &
239     &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
240     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
241     &  ,ok_limit,ok_etat0,hybrid                                       &
242     &  ,moyzon_mu,moyzon_ch
243
244      COMMON/logici/ iflag_phys,iflag_trac
245     
246      LOGICAL purmats,forward,leapf,apphys,statcl,conser,               &
247     & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
248     &  ,read_start,ok_guide,ok_strato,tidal,ok_gradsfile               &
249     &  ,ok_limit,ok_etat0
250      logical hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
251                     ! (only used if disvert_type==2)
252      logical moyzon_mu,moyzon_ch ! used for zonal averages in Titan
253
254      integer iflag_phys,iflag_trac
255!$OMP THREADPRIVATE(/logicl/)
256!$OMP THREADPRIVATE(/logici/)
257!-----------------------------------------------------------------------
258!     NetCDF-3.
259!
260! netcdf version 3 fortran interface:
261!
262
263!
264! external netcdf data types:
265!
266      integer nf_byte
267      integer nf_int1
268      integer nf_char
269      integer nf_short
270      integer nf_int2
271      integer nf_int
272      integer nf_float
273      integer nf_real
274      integer nf_double
275
276      parameter (nf_byte = 1)
277      parameter (nf_int1 = nf_byte)
278      parameter (nf_char = 2)
279      parameter (nf_short = 3)
280      parameter (nf_int2 = nf_short)
281      parameter (nf_int = 4)
282      parameter (nf_float = 5)
283      parameter (nf_real = nf_float)
284      parameter (nf_double = 6)
285
286!
287! default fill values:
288!
289      integer           nf_fill_byte
290      integer           nf_fill_int1
291      integer           nf_fill_char
292      integer           nf_fill_short
293      integer           nf_fill_int2
294      integer           nf_fill_int
295      real              nf_fill_float
296      real              nf_fill_real
297      doubleprecision   nf_fill_double
298
299      parameter (nf_fill_byte = -127)
300      parameter (nf_fill_int1 = nf_fill_byte)
301      parameter (nf_fill_char = 0)
302      parameter (nf_fill_short = -32767)
303      parameter (nf_fill_int2 = nf_fill_short)
304      parameter (nf_fill_int = -2147483647)
305      parameter (nf_fill_float = 9.9692099683868690e+36)
306      parameter (nf_fill_real = nf_fill_float)
307      parameter (nf_fill_double = 9.9692099683868690d+36)
308
309!
310! mode flags for opening and creating a netcdf dataset:
311!
312      integer nf_nowrite
313      integer nf_write
314      integer nf_clobber
315      integer nf_noclobber
316      integer nf_fill
317      integer nf_nofill
318      integer nf_lock
319      integer nf_share
320      integer nf_64bit_offset
321      integer nf_sizehint_default
322      integer nf_align_chunk
323      integer nf_format_classic
324      integer nf_format_64bit
325
326      parameter (nf_nowrite = 0)
327      parameter (nf_write = 1)
328      parameter (nf_clobber = 0)
329      parameter (nf_noclobber = 4)
330      parameter (nf_fill = 0)
331      parameter (nf_nofill = 256)
332      parameter (nf_lock = 1024)
333      parameter (nf_share = 2048)
334      parameter (nf_64bit_offset = 512)
335      parameter (nf_sizehint_default = 0)
336      parameter (nf_align_chunk = -1)
337      parameter (nf_format_classic = 1)
338      parameter (nf_format_64bit = 2)
339
340!
341! size argument for defining an unlimited dimension:
342!
343      integer nf_unlimited
344      parameter (nf_unlimited = 0)
345
346!
347! global attribute id:
348!
349      integer nf_global
350      parameter (nf_global = 0)
351
352!
353! implementation limits:
354!
355      integer nf_max_dims
356      integer nf_max_attrs
357      integer nf_max_vars
358      integer nf_max_name
359      integer nf_max_var_dims
360
361      parameter (nf_max_dims = 1024)
362      parameter (nf_max_attrs = 8192)
363      parameter (nf_max_vars = 8192)
364      parameter (nf_max_name = 256)
365      parameter (nf_max_var_dims = nf_max_dims)
366
367!
368! error codes:
369!
370      integer nf_noerr
371      integer nf_ebadid
372      integer nf_eexist
373      integer nf_einval
374      integer nf_eperm
375      integer nf_enotindefine
376      integer nf_eindefine
377      integer nf_einvalcoords
378      integer nf_emaxdims
379      integer nf_enameinuse
380      integer nf_enotatt
381      integer nf_emaxatts
382      integer nf_ebadtype
383      integer nf_ebaddim
384      integer nf_eunlimpos
385      integer nf_emaxvars
386      integer nf_enotvar
387      integer nf_eglobal
388      integer nf_enotnc
389      integer nf_ests
390      integer nf_emaxname
391      integer nf_eunlimit
392      integer nf_enorecvars
393      integer nf_echar
394      integer nf_eedge
395      integer nf_estride
396      integer nf_ebadname
397      integer nf_erange
398      integer nf_enomem
399      integer nf_evarsize
400      integer nf_edimsize
401      integer nf_etrunc
402
403      parameter (nf_noerr = 0)
404      parameter (nf_ebadid = -33)
405      parameter (nf_eexist = -35)
406      parameter (nf_einval = -36)
407      parameter (nf_eperm = -37)
408      parameter (nf_enotindefine = -38)
409      parameter (nf_eindefine = -39)
410      parameter (nf_einvalcoords = -40)
411      parameter (nf_emaxdims = -41)
412      parameter (nf_enameinuse = -42)
413      parameter (nf_enotatt = -43)
414      parameter (nf_emaxatts = -44)
415      parameter (nf_ebadtype = -45)
416      parameter (nf_ebaddim = -46)
417      parameter (nf_eunlimpos = -47)
418      parameter (nf_emaxvars = -48)
419      parameter (nf_enotvar = -49)
420      parameter (nf_eglobal = -50)
421      parameter (nf_enotnc = -51)
422      parameter (nf_ests = -52)
423      parameter (nf_emaxname = -53)
424      parameter (nf_eunlimit = -54)
425      parameter (nf_enorecvars = -55)
426      parameter (nf_echar = -56)
427      parameter (nf_eedge = -57)
428      parameter (nf_estride = -58)
429      parameter (nf_ebadname = -59)
430      parameter (nf_erange = -60)
431      parameter (nf_enomem = -61)
432      parameter (nf_evarsize = -62)
433      parameter (nf_edimsize = -63)
434      parameter (nf_etrunc = -64)
435!
436! error handling modes:
437!
438      integer  nf_fatal
439      integer nf_verbose
440
441      parameter (nf_fatal = 1)
442      parameter (nf_verbose = 2)
443
444!
445! miscellaneous routines:
446!
447      character*80   nf_inq_libvers
448      external       nf_inq_libvers
449
450      character*80   nf_strerror
451!                         (integer             ncerr)
452      external       nf_strerror
453
454      logical        nf_issyserr
455!                         (integer             ncerr)
456      external       nf_issyserr
457
458!
459! control routines:
460!
461      integer         nf_inq_base_pe
462!                         (integer             ncid,
463!                          integer             pe)
464      external        nf_inq_base_pe
465
466      integer         nf_set_base_pe
467!                         (integer             ncid,
468!                          integer             pe)
469      external        nf_set_base_pe
470
471      integer         nf_create
472!                         (character*(*)       path,
473!                          integer             cmode,
474!                          integer             ncid)
475      external        nf_create
476
477      integer         nf__create
478!                         (character*(*)       path,
479!                          integer             cmode,
480!                          integer             initialsz,
481!                          integer             chunksizehint,
482!                          integer             ncid)
483      external        nf__create
484
485      integer         nf__create_mp
486!                         (character*(*)       path,
487!                          integer             cmode,
488!                          integer             initialsz,
489!                          integer             basepe,
490!                          integer             chunksizehint,
491!                          integer             ncid)
492      external        nf__create_mp
493
494      integer         nf_open
495!                         (character*(*)       path,
496!                          integer             mode,
497!                          integer             ncid)
498      external        nf_open
499
500      integer         nf__open
501!                         (character*(*)       path,
502!                          integer             mode,
503!                          integer             chunksizehint,
504!                          integer             ncid)
505      external        nf__open
506
507      integer         nf__open_mp
508!                         (character*(*)       path,
509!                          integer             mode,
510!                          integer             basepe,
511!                          integer             chunksizehint,
512!                          integer             ncid)
513      external        nf__open_mp
514
515      integer         nf_set_fill
516!                         (integer             ncid,
517!                          integer             fillmode,
518!                          integer             old_mode)
519      external        nf_set_fill
520
521      integer         nf_set_default_format
522!                          (integer             format,
523!                          integer             old_format)
524      external        nf_set_default_format
525
526      integer         nf_redef
527!                         (integer             ncid)
528      external        nf_redef
529
530      integer         nf_enddef
531!                         (integer             ncid)
532      external        nf_enddef
533
534      integer         nf__enddef
535!                         (integer             ncid,
536!                          integer             h_minfree,
537!                          integer             v_align,
538!                          integer             v_minfree,
539!                          integer             r_align)
540      external        nf__enddef
541
542      integer         nf_sync
543!                         (integer             ncid)
544      external        nf_sync
545
546      integer         nf_abort
547!                         (integer             ncid)
548      external        nf_abort
549
550      integer         nf_close
551!                         (integer             ncid)
552      external        nf_close
553
554      integer         nf_delete
555!                         (character*(*)       ncid)
556      external        nf_delete
557
558!
559! general inquiry routines:
560!
561
562      integer         nf_inq
563!                         (integer             ncid,
564!                          integer             ndims,
565!                          integer             nvars,
566!                          integer             ngatts,
567!                          integer             unlimdimid)
568      external        nf_inq
569
570      integer         nf_inq_ndims
571!                         (integer             ncid,
572!                          integer             ndims)
573      external        nf_inq_ndims
574
575      integer         nf_inq_nvars
576!                         (integer             ncid,
577!                          integer             nvars)
578      external        nf_inq_nvars
579
580      integer         nf_inq_natts
581!                         (integer             ncid,
582!                          integer             ngatts)
583      external        nf_inq_natts
584
585      integer         nf_inq_unlimdim
586!                         (integer             ncid,
587!                          integer             unlimdimid)
588      external        nf_inq_unlimdim
589
590      integer         nf_inq_format
591!                         (integer             ncid,
592!                          integer             format)
593      external        nf_inq_format
594
595!
596! dimension routines:
597!
598
599      integer         nf_def_dim
600!                         (integer             ncid,
601!                          character(*)        name,
602!                          integer             len,
603!                          integer             dimid)
604      external        nf_def_dim
605
606      integer         nf_inq_dimid
607!                         (integer             ncid,
608!                          character(*)        name,
609!                          integer             dimid)
610      external        nf_inq_dimid
611
612      integer         nf_inq_dim
613!                         (integer             ncid,
614!                          integer             dimid,
615!                          character(*)        name,
616!                          integer             len)
617      external        nf_inq_dim
618
619      integer         nf_inq_dimname
620!                         (integer             ncid,
621!                          integer             dimid,
622!                          character(*)        name)
623      external        nf_inq_dimname
624
625      integer         nf_inq_dimlen
626!                         (integer             ncid,
627!                          integer             dimid,
628!                          integer             len)
629      external        nf_inq_dimlen
630
631      integer         nf_rename_dim
632!                         (integer             ncid,
633!                          integer             dimid,
634!                          character(*)        name)
635      external        nf_rename_dim
636
637!
638! general attribute routines:
639!
640
641      integer         nf_inq_att
642!                         (integer             ncid,
643!                          integer             varid,
644!                          character(*)        name,
645!                          integer             xtype,
646!                          integer             len)
647      external        nf_inq_att
648
649      integer         nf_inq_attid
650!                         (integer             ncid,
651!                          integer             varid,
652!                          character(*)        name,
653!                          integer             attnum)
654      external        nf_inq_attid
655
656      integer         nf_inq_atttype
657!                         (integer             ncid,
658!                          integer             varid,
659!                          character(*)        name,
660!                          integer             xtype)
661      external        nf_inq_atttype
662
663      integer         nf_inq_attlen
664!                         (integer             ncid,
665!                          integer             varid,
666!                          character(*)        name,
667!                          integer             len)
668      external        nf_inq_attlen
669
670      integer         nf_inq_attname
671!                         (integer             ncid,
672!                          integer             varid,
673!                          integer             attnum,
674!                          character(*)        name)
675      external        nf_inq_attname
676
677      integer         nf_copy_att
678!                         (integer             ncid_in,
679!                          integer             varid_in,
680!                          character(*)        name,
681!                          integer             ncid_out,
682!                          integer             varid_out)
683      external        nf_copy_att
684
685      integer         nf_rename_att
686!                         (integer             ncid,
687!                          integer             varid,
688!                          character(*)        curname,
689!                          character(*)        newname)
690      external        nf_rename_att
691
692      integer         nf_del_att
693!                         (integer             ncid,
694!                          integer             varid,
695!                          character(*)        name)
696      external        nf_del_att
697
698!
699! attribute put/get routines:
700!
701
702      integer         nf_put_att_text
703!                         (integer             ncid,
704!                          integer             varid,
705!                          character(*)        name,
706!                          integer             len,
707!                          character(*)        text)
708      external        nf_put_att_text
709
710      integer         nf_get_att_text
711!                         (integer             ncid,
712!                          integer             varid,
713!                          character(*)        name,
714!                          character(*)        text)
715      external        nf_get_att_text
716
717      integer         nf_put_att_int1
718!                         (integer             ncid,
719!                          integer             varid,
720!                          character(*)        name,
721!                          integer             xtype,
722!                          integer             len,
723!                          nf_int1_t           i1vals(1))
724      external        nf_put_att_int1
725
726      integer         nf_get_att_int1
727!                         (integer             ncid,
728!                          integer             varid,
729!                          character(*)        name,
730!                          nf_int1_t           i1vals(1))
731      external        nf_get_att_int1
732
733      integer         nf_put_att_int2
734!                         (integer             ncid,
735!                          integer             varid,
736!                          character(*)        name,
737!                          integer             xtype,
738!                          integer             len,
739!                          nf_int2_t           i2vals(1))
740      external        nf_put_att_int2
741
742      integer         nf_get_att_int2
743!                         (integer             ncid,
744!                          integer             varid,
745!                          character(*)        name,
746!                          nf_int2_t           i2vals(1))
747      external        nf_get_att_int2
748
749      integer         nf_put_att_int
750!                         (integer             ncid,
751!                          integer             varid,
752!                          character(*)        name,
753!                          integer             xtype,
754!                          integer             len,
755!                          integer             ivals(1))
756      external        nf_put_att_int
757
758      integer         nf_get_att_int
759!                         (integer             ncid,
760!                          integer             varid,
761!                          character(*)        name,
762!                          integer             ivals(1))
763      external        nf_get_att_int
764
765      integer         nf_put_att_real
766!                         (integer             ncid,
767!                          integer             varid,
768!                          character(*)        name,
769!                          integer             xtype,
770!                          integer             len,
771!                          real                rvals(1))
772      external        nf_put_att_real
773
774      integer         nf_get_att_real
775!                         (integer             ncid,
776!                          integer             varid,
777!                          character(*)        name,
778!                          real                rvals(1))
779      external        nf_get_att_real
780
781      integer         nf_put_att_double
782!                         (integer             ncid,
783!                          integer             varid,
784!                          character(*)        name,
785!                          integer             xtype,
786!                          integer             len,
787!                          double              dvals(1))
788      external        nf_put_att_double
789
790      integer         nf_get_att_double
791!                         (integer             ncid,
792!                          integer             varid,
793!                          character(*)        name,
794!                          double              dvals(1))
795      external        nf_get_att_double
796
797!
798! general variable routines:
799!
800
801      integer         nf_def_var
802!                         (integer             ncid,
803!                          character(*)        name,
804!                          integer             datatype,
805!                          integer             ndims,
806!                          integer             dimids(1),
807!                          integer             varid)
808      external        nf_def_var
809
810      integer         nf_inq_var
811!                         (integer             ncid,
812!                          integer             varid,
813!                          character(*)        name,
814!                          integer             datatype,
815!                          integer             ndims,
816!                          integer             dimids(1),
817!                          integer             natts)
818      external        nf_inq_var
819
820      integer         nf_inq_varid
821!                         (integer             ncid,
822!                          character(*)        name,
823!                          integer             varid)
824      external        nf_inq_varid
825
826      integer         nf_inq_varname
827!                         (integer             ncid,
828!                          integer             varid,
829!                          character(*)        name)
830      external        nf_inq_varname
831
832      integer         nf_inq_vartype
833!                         (integer             ncid,
834!                          integer             varid,
835!                          integer             xtype)
836      external        nf_inq_vartype
837
838      integer         nf_inq_varndims
839!                         (integer             ncid,
840!                          integer             varid,
841!                          integer             ndims)
842      external        nf_inq_varndims
843
844      integer         nf_inq_vardimid
845!                         (integer             ncid,
846!                          integer             varid,
847!                          integer             dimids(1))
848      external        nf_inq_vardimid
849
850      integer         nf_inq_varnatts
851!                         (integer             ncid,
852!                          integer             varid,
853!                          integer             natts)
854      external        nf_inq_varnatts
855
856      integer         nf_rename_var
857!                         (integer             ncid,
858!                          integer             varid,
859!                          character(*)        name)
860      external        nf_rename_var
861
862      integer         nf_copy_var
863!                         (integer             ncid_in,
864!                          integer             varid,
865!                          integer             ncid_out)
866      external        nf_copy_var
867
868!
869! entire variable put/get routines:
870!
871
872      integer         nf_put_var_text
873!                         (integer             ncid,
874!                          integer             varid,
875!                          character(*)        text)
876      external        nf_put_var_text
877
878      integer         nf_get_var_text
879!                         (integer             ncid,
880!                          integer             varid,
881!                          character(*)        text)
882      external        nf_get_var_text
883
884      integer         nf_put_var_int1
885!                         (integer             ncid,
886!                          integer             varid,
887!                          nf_int1_t           i1vals(1))
888      external        nf_put_var_int1
889
890      integer         nf_get_var_int1
891!                         (integer             ncid,
892!                          integer             varid,
893!                          nf_int1_t           i1vals(1))
894      external        nf_get_var_int1
895
896      integer         nf_put_var_int2
897!                         (integer             ncid,
898!                          integer             varid,
899!                          nf_int2_t           i2vals(1))
900      external        nf_put_var_int2
901
902      integer         nf_get_var_int2
903!                         (integer             ncid,
904!                          integer             varid,
905!                          nf_int2_t           i2vals(1))
906      external        nf_get_var_int2
907
908      integer         nf_put_var_int
909!                         (integer             ncid,
910!                          integer             varid,
911!                          integer             ivals(1))
912      external        nf_put_var_int
913
914      integer         nf_get_var_int
915!                         (integer             ncid,
916!                          integer             varid,
917!                          integer             ivals(1))
918      external        nf_get_var_int
919
920      integer         nf_put_var_real
921!                         (integer             ncid,
922!                          integer             varid,
923!                          real                rvals(1))
924      external        nf_put_var_real
925
926      integer         nf_get_var_real
927!                         (integer             ncid,
928!                          integer             varid,
929!                          real                rvals(1))
930      external        nf_get_var_real
931
932      integer         nf_put_var_double
933!                         (integer             ncid,
934!                          integer             varid,
935!                          doubleprecision     dvals(1))
936      external        nf_put_var_double
937
938      integer         nf_get_var_double
939!                         (integer             ncid,
940!                          integer             varid,
941!                          doubleprecision     dvals(1))
942      external        nf_get_var_double
943
944!
945! single variable put/get routines:
946!
947
948      integer         nf_put_var1_text
949!                         (integer             ncid,
950!                          integer             varid,
951!                          integer             index(1),
952!                          character*1         text)
953      external        nf_put_var1_text
954
955      integer         nf_get_var1_text
956!                         (integer             ncid,
957!                          integer             varid,
958!                          integer             index(1),
959!                          character*1         text)
960      external        nf_get_var1_text
961
962      integer         nf_put_var1_int1
963!                         (integer             ncid,
964!                          integer             varid,
965!                          integer             index(1),
966!                          nf_int1_t           i1val)
967      external        nf_put_var1_int1
968
969      integer         nf_get_var1_int1
970!                         (integer             ncid,
971!                          integer             varid,
972!                          integer             index(1),
973!                          nf_int1_t           i1val)
974      external        nf_get_var1_int1
975
976      integer         nf_put_var1_int2
977!                         (integer             ncid,
978!                          integer             varid,
979!                          integer             index(1),
980!                          nf_int2_t           i2val)
981      external        nf_put_var1_int2
982
983      integer         nf_get_var1_int2
984!                         (integer             ncid,
985!                          integer             varid,
986!                          integer             index(1),
987!                          nf_int2_t           i2val)
988      external        nf_get_var1_int2
989
990      integer         nf_put_var1_int
991!                         (integer             ncid,
992!                          integer             varid,
993!                          integer             index(1),
994!                          integer             ival)
995      external        nf_put_var1_int
996
997      integer         nf_get_var1_int
998!                         (integer             ncid,
999!                          integer             varid,
1000!                          integer             index(1),
1001!                          integer             ival)
1002      external        nf_get_var1_int
1003
1004      integer         nf_put_var1_real
1005!                         (integer             ncid,
1006!                          integer             varid,
1007!                          integer             index(1),
1008!                          real                rval)
1009      external        nf_put_var1_real
1010
1011      integer         nf_get_var1_real
1012!                         (integer             ncid,
1013!                          integer             varid,
1014!                          integer             index(1),
1015!                          real                rval)
1016      external        nf_get_var1_real
1017
1018      integer         nf_put_var1_double
1019!                         (integer             ncid,
1020!                          integer             varid,
1021!                          integer             index(1),
1022!                          doubleprecision     dval)
1023      external        nf_put_var1_double
1024
1025      integer         nf_get_var1_double
1026!                         (integer             ncid,
1027!                          integer             varid,
1028!                          integer             index(1),
1029!                          doubleprecision     dval)
1030      external        nf_get_var1_double
1031
1032!
1033! variable array put/get routines:
1034!
1035
1036      integer         nf_put_vara_text
1037!                         (integer             ncid,
1038!                          integer             varid,
1039!                          integer             start(1),
1040!                          integer             count(1),
1041!                          character(*)        text)
1042      external        nf_put_vara_text
1043
1044      integer         nf_get_vara_text
1045!                         (integer             ncid,
1046!                          integer             varid,
1047!                          integer             start(1),
1048!                          integer             count(1),
1049!                          character(*)        text)
1050      external        nf_get_vara_text
1051
1052      integer         nf_put_vara_int1
1053!                         (integer             ncid,
1054!                          integer             varid,
1055!                          integer             start(1),
1056!                          integer             count(1),
1057!                          nf_int1_t           i1vals(1))
1058      external        nf_put_vara_int1
1059
1060      integer         nf_get_vara_int1
1061!                         (integer             ncid,
1062!                          integer             varid,
1063!                          integer             start(1),
1064!                          integer             count(1),
1065!                          nf_int1_t           i1vals(1))
1066      external        nf_get_vara_int1
1067
1068      integer         nf_put_vara_int2
1069!                         (integer             ncid,
1070!                          integer             varid,
1071!                          integer             start(1),
1072!                          integer             count(1),
1073!                          nf_int2_t           i2vals(1))
1074      external        nf_put_vara_int2
1075
1076      integer         nf_get_vara_int2
1077!                         (integer             ncid,
1078!                          integer             varid,
1079!                          integer             start(1),
1080!                          integer             count(1),
1081!                          nf_int2_t           i2vals(1))
1082      external        nf_get_vara_int2
1083
1084      integer         nf_put_vara_int
1085!                         (integer             ncid,
1086!                          integer             varid,
1087!                          integer             start(1),
1088!                          integer             count(1),
1089!                          integer             ivals(1))
1090      external        nf_put_vara_int
1091
1092      integer         nf_get_vara_int
1093!                         (integer             ncid,
1094!                          integer             varid,
1095!                          integer             start(1),
1096!                          integer             count(1),
1097!                          integer             ivals(1))
1098      external        nf_get_vara_int
1099
1100      integer         nf_put_vara_real
1101!                         (integer             ncid,
1102!                          integer             varid,
1103!                          integer             start(1),
1104!                          integer             count(1),
1105!                          real                rvals(1))
1106      external        nf_put_vara_real
1107
1108      integer         nf_get_vara_real
1109!                         (integer             ncid,
1110!                          integer             varid,
1111!                          integer             start(1),
1112!                          integer             count(1),
1113!                          real                rvals(1))
1114      external        nf_get_vara_real
1115
1116      integer         nf_put_vara_double
1117!                         (integer             ncid,
1118!                          integer             varid,
1119!                          integer             start(1),
1120!                          integer             count(1),
1121!                          doubleprecision     dvals(1))
1122      external        nf_put_vara_double
1123
1124      integer         nf_get_vara_double
1125!                         (integer             ncid,
1126!                          integer             varid,
1127!                          integer             start(1),
1128!                          integer             count(1),
1129!                          doubleprecision     dvals(1))
1130      external        nf_get_vara_double
1131
1132!
1133! strided variable put/get routines:
1134!
1135
1136      integer         nf_put_vars_text
1137!                         (integer             ncid,
1138!                          integer             varid,
1139!                          integer             start(1),
1140!                          integer             count(1),
1141!                          integer             stride(1),
1142!                          character(*)        text)
1143      external        nf_put_vars_text
1144
1145      integer         nf_get_vars_text
1146!                         (integer             ncid,
1147!                          integer             varid,
1148!                          integer             start(1),
1149!                          integer             count(1),
1150!                          integer             stride(1),
1151!                          character(*)        text)
1152      external        nf_get_vars_text
1153
1154      integer         nf_put_vars_int1
1155!                         (integer             ncid,
1156!                          integer             varid,
1157!                          integer             start(1),
1158!                          integer             count(1),
1159!                          integer             stride(1),
1160!                          nf_int1_t           i1vals(1))
1161      external        nf_put_vars_int1
1162
1163      integer         nf_get_vars_int1
1164!                         (integer             ncid,
1165!                          integer             varid,
1166!                          integer             start(1),
1167!                          integer             count(1),
1168!                          integer             stride(1),
1169!                          nf_int1_t           i1vals(1))
1170      external        nf_get_vars_int1
1171
1172      integer         nf_put_vars_int2
1173!                         (integer             ncid,
1174!                          integer             varid,
1175!                          integer             start(1),
1176!                          integer             count(1),
1177!                          integer             stride(1),
1178!                          nf_int2_t           i2vals(1))
1179      external        nf_put_vars_int2
1180
1181      integer         nf_get_vars_int2
1182!                         (integer             ncid,
1183!                          integer             varid,
1184!                          integer             start(1),
1185!                          integer             count(1),
1186!                          integer             stride(1),
1187!                          nf_int2_t           i2vals(1))
1188      external        nf_get_vars_int2
1189
1190      integer         nf_put_vars_int
1191!                         (integer             ncid,
1192!                          integer             varid,
1193!                          integer             start(1),
1194!                          integer             count(1),
1195!                          integer             stride(1),
1196!                          integer             ivals(1))
1197      external        nf_put_vars_int
1198
1199      integer         nf_get_vars_int
1200!                         (integer             ncid,
1201!                          integer             varid,
1202!                          integer             start(1),
1203!                          integer             count(1),
1204!                          integer             stride(1),
1205!                          integer             ivals(1))
1206      external        nf_get_vars_int
1207
1208      integer         nf_put_vars_real
1209!                         (integer             ncid,
1210!                          integer             varid,
1211!                          integer             start(1),
1212!                          integer             count(1),
1213!                          integer             stride(1),
1214!                          real                rvals(1))
1215      external        nf_put_vars_real
1216
1217      integer         nf_get_vars_real
1218!                         (integer             ncid,
1219!                          integer             varid,
1220!                          integer             start(1),
1221!                          integer             count(1),
1222!                          integer             stride(1),
1223!                          real                rvals(1))
1224      external        nf_get_vars_real
1225
1226      integer         nf_put_vars_double
1227!                         (integer             ncid,
1228!                          integer             varid,
1229!                          integer             start(1),
1230!                          integer             count(1),
1231!                          integer             stride(1),
1232!                          doubleprecision     dvals(1))
1233      external        nf_put_vars_double
1234
1235      integer         nf_get_vars_double
1236!                         (integer             ncid,
1237!                          integer             varid,
1238!                          integer             start(1),
1239!                          integer             count(1),
1240!                          integer             stride(1),
1241!                          doubleprecision     dvals(1))
1242      external        nf_get_vars_double
1243
1244!
1245! mapped variable put/get routines:
1246!
1247
1248      integer         nf_put_varm_text
1249!                         (integer             ncid,
1250!                          integer             varid,
1251!                          integer             start(1),
1252!                          integer             count(1),
1253!                          integer             stride(1),
1254!                          integer             imap(1),
1255!                          character(*)        text)
1256      external        nf_put_varm_text
1257
1258      integer         nf_get_varm_text
1259!                         (integer             ncid,
1260!                          integer             varid,
1261!                          integer             start(1),
1262!                          integer             count(1),
1263!                          integer             stride(1),
1264!                          integer             imap(1),
1265!                          character(*)        text)
1266      external        nf_get_varm_text
1267
1268      integer         nf_put_varm_int1
1269!                         (integer             ncid,
1270!                          integer             varid,
1271!                          integer             start(1),
1272!                          integer             count(1),
1273!                          integer             stride(1),
1274!                          integer             imap(1),
1275!                          nf_int1_t           i1vals(1))
1276      external        nf_put_varm_int1
1277
1278      integer         nf_get_varm_int1
1279!                         (integer             ncid,
1280!                          integer             varid,
1281!                          integer             start(1),
1282!                          integer             count(1),
1283!                          integer             stride(1),
1284!                          integer             imap(1),
1285!                          nf_int1_t           i1vals(1))
1286      external        nf_get_varm_int1
1287
1288      integer         nf_put_varm_int2
1289!                         (integer             ncid,
1290!                          integer             varid,
1291!                          integer             start(1),
1292!                          integer             count(1),
1293!                          integer             stride(1),
1294!                          integer             imap(1),
1295!                          nf_int2_t           i2vals(1))
1296      external        nf_put_varm_int2
1297
1298      integer         nf_get_varm_int2
1299!                         (integer             ncid,
1300!                          integer             varid,
1301!                          integer             start(1),
1302!                          integer             count(1),
1303!                          integer             stride(1),
1304!                          integer             imap(1),
1305!                          nf_int2_t           i2vals(1))
1306      external        nf_get_varm_int2
1307
1308      integer         nf_put_varm_int
1309!                         (integer             ncid,
1310!                          integer             varid,
1311!                          integer             start(1),
1312!                          integer             count(1),
1313!                          integer             stride(1),
1314!                          integer             imap(1),
1315!                          integer             ivals(1))
1316      external        nf_put_varm_int
1317
1318      integer         nf_get_varm_int
1319!                         (integer             ncid,
1320!                          integer             varid,
1321!                          integer             start(1),
1322!                          integer             count(1),
1323!                          integer             stride(1),
1324!                          integer             imap(1),
1325!                          integer             ivals(1))
1326      external        nf_get_varm_int
1327
1328      integer         nf_put_varm_real
1329!                         (integer             ncid,
1330!                          integer             varid,
1331!                          integer             start(1),
1332!                          integer             count(1),
1333!                          integer             stride(1),
1334!                          integer             imap(1),
1335!                          real                rvals(1))
1336      external        nf_put_varm_real
1337
1338      integer         nf_get_varm_real
1339!                         (integer             ncid,
1340!                          integer             varid,
1341!                          integer             start(1),
1342!                          integer             count(1),
1343!                          integer             stride(1),
1344!                          integer             imap(1),
1345!                          real                rvals(1))
1346      external        nf_get_varm_real
1347
1348      integer         nf_put_varm_double
1349!                         (integer             ncid,
1350!                          integer             varid,
1351!                          integer             start(1),
1352!                          integer             count(1),
1353!                          integer             stride(1),
1354!                          integer             imap(1),
1355!                          doubleprecision     dvals(1))
1356      external        nf_put_varm_double
1357
1358      integer         nf_get_varm_double
1359!                         (integer             ncid,
1360!                          integer             varid,
1361!                          integer             start(1),
1362!                          integer             count(1),
1363!                          integer             stride(1),
1364!                          integer             imap(1),
1365!                          doubleprecision     dvals(1))
1366      external        nf_get_varm_double
1367
1368
1369!     NetCDF-2.
1370!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1371! begin netcdf 2.4 backward compatibility:
1372!
1373
1374!     
1375! functions in the fortran interface
1376!
1377      integer nccre
1378      integer ncopn
1379      integer ncddef
1380      integer ncdid
1381      integer ncvdef
1382      integer ncvid
1383      integer nctlen
1384      integer ncsfil
1385
1386      external nccre
1387      external ncopn
1388      external ncddef
1389      external ncdid
1390      external ncvdef
1391      external ncvid
1392      external nctlen
1393      external ncsfil
1394
1395
1396      integer ncrdwr
1397      integer nccreat
1398      integer ncexcl
1399      integer ncindef
1400      integer ncnsync
1401      integer nchsync
1402      integer ncndirty
1403      integer nchdirty
1404      integer nclink
1405      integer ncnowrit
1406      integer ncwrite
1407      integer ncclob
1408      integer ncnoclob
1409      integer ncglobal
1410      integer ncfill
1411      integer ncnofill
1412      integer maxncop
1413      integer maxncdim
1414      integer maxncatt
1415      integer maxncvar
1416      integer maxncnam
1417      integer maxvdims
1418      integer ncnoerr
1419      integer ncebadid
1420      integer ncenfile
1421      integer nceexist
1422      integer nceinval
1423      integer nceperm
1424      integer ncenotin
1425      integer nceindef
1426      integer ncecoord
1427      integer ncemaxds
1428      integer ncename
1429      integer ncenoatt
1430      integer ncemaxat
1431      integer ncebadty
1432      integer ncebadd
1433      integer ncests
1434      integer nceunlim
1435      integer ncemaxvs
1436      integer ncenotvr
1437      integer nceglob
1438      integer ncenotnc
1439      integer ncfoobar
1440      integer ncsyserr
1441      integer ncfatal
1442      integer ncverbos
1443      integer ncentool
1444
1445
1446!
1447! netcdf data types:
1448!
1449      integer ncbyte
1450      integer ncchar
1451      integer ncshort
1452      integer nclong
1453      integer ncfloat
1454      integer ncdouble
1455
1456      parameter(ncbyte = 1)
1457      parameter(ncchar = 2)
1458      parameter(ncshort = 3)
1459      parameter(nclong = 4)
1460      parameter(ncfloat = 5)
1461      parameter(ncdouble = 6)
1462
1463!     
1464!     masks for the struct nc flag field; passed in as 'mode' arg to
1465!     nccreate and ncopen.
1466!     
1467
1468!     read/write, 0 => readonly
1469      parameter(ncrdwr = 1)
1470!     in create phase, cleared by ncendef
1471      parameter(nccreat = 2)
1472!     on create destroy existing file
1473      parameter(ncexcl = 4)
1474!     in define mode, cleared by ncendef
1475      parameter(ncindef = 8)
1476!     synchronise numrecs on change (x'10')
1477      parameter(ncnsync = 16)
1478!     synchronise whole header on change (x'20')
1479      parameter(nchsync = 32)
1480!     numrecs has changed (x'40')
1481      parameter(ncndirty = 64) 
1482!     header info has changed (x'80')
1483      parameter(nchdirty = 128)
1484!     prefill vars on endef and increase of record, the default behavior
1485      parameter(ncfill = 0)
1486!     do not fill vars on endef and increase of record (x'100')
1487      parameter(ncnofill = 256)
1488!     isa link (x'8000')
1489      parameter(nclink = 32768)
1490
1491!     
1492!     'mode' arguments for nccreate and ncopen
1493!     
1494      parameter(ncnowrit = 0)
1495      parameter(ncwrite = ncrdwr)
1496      parameter(ncclob = nf_clobber)
1497      parameter(ncnoclob = nf_noclobber)
1498
1499!     
1500!     'size' argument to ncdimdef for an unlimited dimension
1501!     
1502      integer ncunlim
1503      parameter(ncunlim = 0)
1504
1505!     
1506!     attribute id to put/get a global attribute
1507!     
1508      parameter(ncglobal  = 0)
1509
1510!     
1511!     advisory maximums:
1512!     
1513      parameter(maxncop = 64)
1514      parameter(maxncdim = 1024)
1515      parameter(maxncatt = 8192)
1516      parameter(maxncvar = 8192)
1517!     not enforced
1518      parameter(maxncnam = 256)
1519      parameter(maxvdims = maxncdim)
1520
1521!     
1522!     global netcdf error status variable
1523!     initialized in error.c
1524!     
1525
1526!     no error
1527      parameter(ncnoerr = nf_noerr)
1528!     not a netcdf id
1529      parameter(ncebadid = nf_ebadid)
1530!     too many netcdfs open
1531      parameter(ncenfile = -31)   ! nc_syserr
1532!     netcdf file exists && ncnoclob
1533      parameter(nceexist = nf_eexist)
1534!     invalid argument
1535      parameter(nceinval = nf_einval)
1536!     write to read only
1537      parameter(nceperm = nf_eperm)
1538!     operation not allowed in data mode
1539      parameter(ncenotin = nf_enotindefine )   
1540!     operation not allowed in define mode
1541      parameter(nceindef = nf_eindefine)   
1542!     coordinates out of domain
1543      parameter(ncecoord = nf_einvalcoords)
1544!     maxncdims exceeded
1545      parameter(ncemaxds = nf_emaxdims)
1546!     string match to name in use
1547      parameter(ncename = nf_enameinuse)   
1548!     attribute not found
1549      parameter(ncenoatt = nf_enotatt)
1550!     maxncattrs exceeded
1551      parameter(ncemaxat = nf_emaxatts)
1552!     not a netcdf data type
1553      parameter(ncebadty = nf_ebadtype)
1554!     invalid dimension id
1555      parameter(ncebadd = nf_ebaddim)
1556!     ncunlimited in the wrong index
1557      parameter(nceunlim = nf_eunlimpos)
1558!     maxncvars exceeded
1559      parameter(ncemaxvs = nf_emaxvars)
1560!     variable not found
1561      parameter(ncenotvr = nf_enotvar)
1562!     action prohibited on ncglobal varid
1563      parameter(nceglob = nf_eglobal)
1564!     not a netcdf file
1565      parameter(ncenotnc = nf_enotnc)
1566      parameter(ncests = nf_ests)
1567      parameter (ncentool = nf_emaxname) 
1568      parameter(ncfoobar = 32)
1569      parameter(ncsyserr = -31)
1570
1571!     
1572!     global options variable. used to determine behavior of error handler.
1573!     initialized in lerror.c
1574!     
1575      parameter(ncfatal = 1)
1576      parameter(ncverbos = 2)
1577
1578!
1579!     default fill values.  these must be the same as in the c interface.
1580!
1581      integer filbyte
1582      integer filchar
1583      integer filshort
1584      integer fillong
1585      real filfloat
1586      doubleprecision fildoub
1587
1588      parameter (filbyte = -127)
1589      parameter (filchar = 0)
1590      parameter (filshort = -32767)
1591      parameter (fillong = -2147483647)
1592      parameter (filfloat = 9.9692099683868690e+36)
1593      parameter (fildoub = 9.9692099683868690d+36)
1594
1595!     NetCDF-4.
1596!     This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT
1597!     file for distribution information.
1598
1599!     Netcdf version 4 fortran interface.
1600
1601!     $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $
1602
1603!     New netCDF-4 types.
1604      integer nf_ubyte
1605      integer nf_ushort
1606      integer nf_uint
1607      integer nf_int64
1608      integer nf_uint64
1609      integer nf_string
1610      integer nf_vlen
1611      integer nf_opaque
1612      integer nf_enum
1613      integer nf_compound
1614
1615      parameter (nf_ubyte = 7)
1616      parameter (nf_ushort = 8)
1617      parameter (nf_uint = 9)
1618      parameter (nf_int64 = 10)
1619      parameter (nf_uint64 = 11)
1620      parameter (nf_string = 12)
1621      parameter (nf_vlen = 13)
1622      parameter (nf_opaque = 14)
1623      parameter (nf_enum = 15)
1624      parameter (nf_compound = 16)
1625
1626!     New netCDF-4 fill values.
1627      integer           nf_fill_ubyte
1628      integer           nf_fill_ushort
1629!      real              nf_fill_uint
1630!      real              nf_fill_int64
1631!      real              nf_fill_uint64
1632      parameter (nf_fill_ubyte = 255)
1633      parameter (nf_fill_ushort = 65535)
1634
1635!     New constants.
1636      integer nf_format_netcdf4
1637      parameter (nf_format_netcdf4 = 3)
1638
1639      integer nf_format_netcdf4_classic
1640      parameter (nf_format_netcdf4_classic = 4)
1641
1642      integer nf_netcdf4
1643      parameter (nf_netcdf4 = 4096)
1644
1645      integer nf_classic_model
1646      parameter (nf_classic_model = 256)
1647
1648      integer nf_chunk_seq
1649      parameter (nf_chunk_seq = 0)
1650      integer nf_chunk_sub
1651      parameter (nf_chunk_sub = 1)
1652      integer nf_chunk_sizes
1653      parameter (nf_chunk_sizes = 2)
1654
1655      integer nf_endian_native
1656      parameter (nf_endian_native = 0)
1657      integer nf_endian_little
1658      parameter (nf_endian_little = 1)
1659      integer nf_endian_big
1660      parameter (nf_endian_big = 2)
1661
1662!     For NF_DEF_VAR_CHUNKING
1663      integer nf_chunked
1664      parameter (nf_chunked = 0)
1665      integer nf_contiguous
1666      parameter (nf_contiguous = 1)
1667
1668!     For NF_DEF_VAR_FLETCHER32
1669      integer nf_nochecksum
1670      parameter (nf_nochecksum = 0)
1671      integer nf_fletcher32
1672      parameter (nf_fletcher32 = 1)
1673
1674!     For NF_DEF_VAR_DEFLATE
1675      integer nf_noshuffle
1676      parameter (nf_noshuffle = 0)
1677      integer nf_shuffle
1678      parameter (nf_shuffle = 1)
1679
1680!     For NF_DEF_VAR_SZIP
1681      integer nf_szip_ec_option_mask
1682      parameter (nf_szip_ec_option_mask = 4)
1683      integer nf_szip_nn_option_mask
1684      parameter (nf_szip_nn_option_mask = 32)
1685
1686!     For parallel I/O.
1687      integer nf_mpiio     
1688      parameter (nf_mpiio = 8192)
1689      integer nf_mpiposix
1690      parameter (nf_mpiposix = 16384)
1691      integer nf_pnetcdf
1692      parameter (nf_pnetcdf = 32768)
1693
1694!     For NF_VAR_PAR_ACCESS.
1695      integer nf_independent
1696      parameter (nf_independent = 0)
1697      integer nf_collective
1698      parameter (nf_collective = 1)
1699
1700!     New error codes.
1701      integer nf_ehdferr        ! Error at HDF5 layer.
1702      parameter (nf_ehdferr = -101)
1703      integer nf_ecantread      ! Can't read.
1704      parameter (nf_ecantread = -102)
1705      integer nf_ecantwrite     ! Can't write.
1706      parameter (nf_ecantwrite = -103)
1707      integer nf_ecantcreate    ! Can't create.
1708      parameter (nf_ecantcreate = -104)
1709      integer nf_efilemeta      ! Problem with file metadata.
1710      parameter (nf_efilemeta = -105)
1711      integer nf_edimmeta       ! Problem with dimension metadata.
1712      parameter (nf_edimmeta = -106)
1713      integer nf_eattmeta       ! Problem with attribute metadata.
1714      parameter (nf_eattmeta = -107)
1715      integer nf_evarmeta       ! Problem with variable metadata.
1716      parameter (nf_evarmeta = -108)
1717      integer nf_enocompound    ! Not a compound type.
1718      parameter (nf_enocompound = -109)
1719      integer nf_eattexists     ! Attribute already exists.
1720      parameter (nf_eattexists = -110)
1721      integer nf_enotnc4        ! Attempting netcdf-4 operation on netcdf-3 file.   
1722      parameter (nf_enotnc4 = -111)
1723      integer nf_estrictnc3     ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file.   
1724      parameter (nf_estrictnc3 = -112)
1725      integer nf_enotnc3        ! Attempting netcdf-3 operation on netcdf-4 file.   
1726      parameter (nf_enotnc3 = -113)
1727      integer nf_enopar         ! Parallel operation on file opened for non-parallel access.   
1728      parameter (nf_enopar = -114)
1729      integer nf_eparinit       ! Error initializing for parallel access.   
1730      parameter (nf_eparinit = -115)
1731      integer nf_ebadgrpid      ! Bad group ID.   
1732      parameter (nf_ebadgrpid = -116)
1733      integer nf_ebadtypid      ! Bad type ID.   
1734      parameter (nf_ebadtypid = -117)
1735      integer nf_etypdefined    ! Type has already been defined and may not be edited.
1736      parameter (nf_etypdefined = -118)
1737      integer nf_ebadfield      ! Bad field ID.   
1738      parameter (nf_ebadfield = -119)
1739      integer nf_ebadclass      ! Bad class.   
1740      parameter (nf_ebadclass = -120)
1741      integer nf_emaptype       ! Mapped access for atomic types only.   
1742      parameter (nf_emaptype = -121)
1743      integer nf_elatefill      ! Attempt to define fill value when data already exists.
1744      parameter (nf_elatefill = -122)
1745      integer nf_elatedef       ! Attempt to define var properties, like deflate, after enddef.
1746      parameter (nf_elatedef = -123)
1747      integer nf_edimscale      ! Probem with HDF5 dimscales.
1748      parameter (nf_edimscale = -124)
1749      integer nf_enogrp       ! No group found.
1750      parameter (nf_enogrp = -125)
1751
1752
1753!     New functions.
1754
1755!     Parallel I/O.
1756      integer nf_create_par
1757      external nf_create_par
1758
1759      integer nf_open_par
1760      external nf_open_par
1761
1762      integer nf_var_par_access
1763      external nf_var_par_access
1764
1765!     Functions to handle groups.
1766      integer nf_inq_ncid
1767      external nf_inq_ncid
1768
1769      integer nf_inq_grps
1770      external nf_inq_grps
1771
1772      integer nf_inq_grpname
1773      external nf_inq_grpname
1774
1775      integer nf_inq_grpname_full
1776      external nf_inq_grpname_full
1777
1778      integer nf_inq_grpname_len
1779      external nf_inq_grpname_len
1780
1781      integer nf_inq_grp_parent
1782      external nf_inq_grp_parent
1783
1784      integer nf_inq_grp_ncid
1785      external nf_inq_grp_ncid
1786
1787      integer nf_inq_grp_full_ncid
1788      external nf_inq_grp_full_ncid
1789
1790      integer nf_inq_varids
1791      external nf_inq_varids
1792
1793      integer nf_inq_dimids
1794      external nf_inq_dimids
1795
1796      integer nf_def_grp
1797      external nf_def_grp
1798
1799!     New options for netCDF variables.
1800      integer nf_def_var_deflate
1801      external nf_def_var_deflate
1802
1803      integer nf_inq_var_deflate
1804      external nf_inq_var_deflate
1805
1806      integer nf_def_var_fletcher32
1807      external nf_def_var_fletcher32
1808
1809      integer nf_inq_var_fletcher32
1810      external nf_inq_var_fletcher32
1811
1812      integer nf_def_var_chunking
1813      external nf_def_var_chunking
1814
1815      integer nf_inq_var_chunking
1816      external nf_inq_var_chunking
1817
1818      integer nf_def_var_fill
1819      external nf_def_var_fill
1820
1821      integer nf_inq_var_fill
1822      external nf_inq_var_fill
1823
1824      integer nf_def_var_endian
1825      external nf_def_var_endian
1826
1827      integer nf_inq_var_endian
1828      external nf_inq_var_endian
1829
1830!     User defined types.
1831      integer nf_inq_typeids
1832      external nf_inq_typeids
1833
1834      integer nf_inq_typeid
1835      external nf_inq_typeid
1836
1837      integer nf_inq_type
1838      external nf_inq_type
1839
1840      integer nf_inq_user_type
1841      external nf_inq_user_type
1842
1843!     User defined types - compound types.
1844      integer nf_def_compound
1845      external nf_def_compound
1846
1847      integer nf_insert_compound
1848      external nf_insert_compound
1849
1850      integer nf_insert_array_compound
1851      external nf_insert_array_compound
1852
1853      integer nf_inq_compound
1854      external nf_inq_compound
1855
1856      integer nf_inq_compound_name
1857      external nf_inq_compound_name
1858
1859      integer nf_inq_compound_size
1860      external nf_inq_compound_size
1861
1862      integer nf_inq_compound_nfields
1863      external nf_inq_compound_nfields
1864
1865      integer nf_inq_compound_field
1866      external nf_inq_compound_field
1867
1868      integer nf_inq_compound_fieldname
1869      external nf_inq_compound_fieldname
1870
1871      integer nf_inq_compound_fieldindex
1872      external nf_inq_compound_fieldindex
1873
1874      integer nf_inq_compound_fieldoffset
1875      external nf_inq_compound_fieldoffset
1876
1877      integer nf_inq_compound_fieldtype
1878      external nf_inq_compound_fieldtype
1879
1880      integer nf_inq_compound_fieldndims
1881      external nf_inq_compound_fieldndims
1882
1883      integer nf_inq_compound_fielddim_sizes
1884      external nf_inq_compound_fielddim_sizes
1885
1886!     User defined types - variable length arrays.
1887      integer nf_def_vlen
1888      external nf_def_vlen
1889
1890      integer nf_inq_vlen
1891      external nf_inq_vlen
1892
1893      integer nf_free_vlen
1894      external nf_free_vlen
1895
1896!     User defined types - enums.
1897      integer nf_def_enum
1898      external nf_def_enum
1899
1900      integer nf_insert_enum
1901      external nf_insert_enum
1902
1903      integer nf_inq_enum
1904      external nf_inq_enum
1905
1906      integer nf_inq_enum_member
1907      external nf_inq_enum_member
1908
1909      integer nf_inq_enum_ident
1910      external nf_inq_enum_ident
1911
1912!     User defined types - opaque.
1913      integer nf_def_opaque
1914      external nf_def_opaque
1915
1916      integer nf_inq_opaque
1917      external nf_inq_opaque
1918
1919!     Write and read attributes of any type, including user defined
1920!     types.
1921      integer nf_put_att
1922      external nf_put_att
1923      integer nf_get_att
1924      external nf_get_att
1925
1926!     Write and read variables of any type, including user defined
1927!     types.
1928      integer nf_put_var
1929      external nf_put_var
1930      integer nf_put_var1
1931      external nf_put_var1
1932      integer nf_put_vara
1933      external nf_put_vara
1934      integer nf_put_vars
1935      external nf_put_vars
1936      integer nf_get_var
1937      external nf_get_var
1938      integer nf_get_var1
1939      external nf_get_var1
1940      integer nf_get_vara
1941      external nf_get_vara
1942      integer nf_get_vars
1943      external nf_get_vars
1944
1945!     64-bit int functions.
1946      integer nf_put_var1_int64
1947      external nf_put_var1_int64
1948      integer nf_put_vara_int64
1949      external nf_put_vara_int64
1950      integer nf_put_vars_int64
1951      external nf_put_vars_int64
1952      integer nf_put_varm_int64
1953      external nf_put_varm_int64
1954      integer nf_put_var_int64
1955      external nf_put_var_int64
1956      integer nf_get_var1_int64
1957      external nf_get_var1_int64
1958      integer nf_get_vara_int64
1959      external nf_get_vara_int64
1960      integer nf_get_vars_int64
1961      external nf_get_vars_int64
1962      integer nf_get_varm_int64
1963      external nf_get_varm_int64
1964      integer nf_get_var_int64
1965      external nf_get_var_int64
1966
1967!     For helping F77 users with VLENs.
1968      integer nf_get_vlen_element
1969      external nf_get_vlen_element
1970      integer nf_put_vlen_element
1971      external nf_put_vlen_element
1972
1973!     For dealing with file level chunk cache.
1974      integer nf_set_chunk_cache
1975      external nf_set_chunk_cache
1976      integer nf_get_chunk_cache
1977      external nf_get_chunk_cache
1978
1979!     For dealing with per variable chunk cache.
1980      integer nf_set_var_chunk_cache
1981      external nf_set_var_chunk_cache
1982      integer nf_get_var_chunk_cache
1983      external nf_get_var_chunk_cache
1984!
1985! $Header$
1986!
1987      character *120 descript
1988      common /titre/descript
1989!
1990! $Header$
1991!
1992!c
1993!c
1994!c..include serre.h
1995!c
1996       REAL clon,clat,transx,transy,alphax,alphay,pxo,pyo,              &
1997     &  grossismx, grossismy, dzoomx, dzoomy,taux,tauy
1998       COMMON/serre/clon,clat,transx,transy,alphax,alphay,pxo,pyo ,     &
1999     &  grossismx, grossismy, dzoomx, dzoomy,taux,tauy
2000!
2001! $Header$
2002!
2003!
2004! gestion des impressions de sorties et de débogage
2005! lunout:    unité du fichier dans lequel se font les sorties
2006!                           (par defaut 6, la sortie standard)
2007! prt_level: niveau d'impression souhaité (0 = minimum)
2008!
2009      INTEGER lunout, prt_level
2010      COMMON /comprint/ lunout, prt_level
2011
2012c   Arguments:
2013c   ----------
2014      INTEGER iday_end
2015      REAL phis(iip1, jjp1)
2016      CHARACTER*(*) fichnom
2017
2018c   Local:
2019c   ------
2020      INTEGER iq,l
2021      INTEGER length
2022      PARAMETER (length = 100)
2023      REAL tab_cntrl(length) ! tableau des parametres du run
2024      INTEGER ierr
2025      character*20 modname
2026      character*80 abort_message
2027
2028c   Variables locales pour NetCDF:
2029c
2030      INTEGER dims2(2), dims3(3), dims4(4)
2031      INTEGER idim_index
2032      INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
2033      INTEGER idim_s, idim_sig
2034      INTEGER idim_tim
2035      INTEGER nid,nvarid
2036
2037      REAL zan0,zjulian,hours
2038      INTEGER yyears0,jjour0, mmois0
2039      character*30 unites
2040
2041      character(len=12) :: start_file_type="earth" ! default start file type
2042      INTEGER idecal
2043
2044c-----------------------------------------------------------------------
2045      if (mpi_rank==0) then
2046     
2047      modname='dynredem0_p'
2048
2049! set yyears0, mmois0, jjour0 to 0,1,1 (hours is not used)
2050      yyears0=0
2051      mmois0=1
2052      jjour0=1
2053
2054      !!! AS: idecal is a hack to be able to read planeto starts...
2055      !!!     .... while keeping everything OK for LMDZ EARTH
2056      if ((planet_type.eq."generic").or.(planet_type.eq."mars")) then
2057          write(lunout,*) trim(modname),' : Planeto-like start file'
2058          start_file_type="planeto"
2059          idecal = 4
2060      else
2061          write(lunout,*) trim(modname),' : Earth-like start file'
2062          idecal = 5
2063      endif
2064
2065      DO l=1,length
2066       tab_cntrl(l) = 0.
2067      ENDDO
2068       tab_cntrl(1)  = REAL(iim)
2069       tab_cntrl(2)  = REAL(jjm)
2070       tab_cntrl(3)  = REAL(llm)
2071       if (start_file_type.eq."earth") then
2072         tab_cntrl(4)=REAL(day_ref)
2073       else
2074         !tab_cntrl(4)=REAL(day_end)
2075         tab_cntrl(4)=REAL(iday_end)
2076       endif
2077       tab_cntrl(5)  = REAL(annee_ref)
2078       tab_cntrl(idecal+1)  = rad
2079       tab_cntrl(idecal+2)  = omeg
2080       tab_cntrl(idecal+3)  = g
2081       tab_cntrl(idecal+4)  = cpp
2082       tab_cntrl(idecal+5) = kappa
2083       tab_cntrl(idecal+6) = daysec
2084       tab_cntrl(idecal+7) = dtvr
2085       tab_cntrl(idecal+8) = etot0
2086       tab_cntrl(idecal+9) = ptot0
2087       tab_cntrl(idecal+10) = ztot0
2088       tab_cntrl(idecal+11) = stot0
2089       tab_cntrl(idecal+12) = ang0
2090       tab_cntrl(idecal+13) = pa
2091       tab_cntrl(idecal+14) = preff
2092c
2093c    .....    parametres  pour le zoom      ......   
2094
2095       tab_cntrl(idecal+15)  = clon
2096       tab_cntrl(idecal+16)  = clat
2097       tab_cntrl(idecal+17)  = grossismx
2098       tab_cntrl(idecal+18)  = grossismy
2099c
2100      IF ( fxyhypb )   THEN
2101       tab_cntrl(idecal+19) = 1.
2102       tab_cntrl(idecal+20) = dzoomx
2103       tab_cntrl(idecal+21) = dzoomy
2104       tab_cntrl(idecal+22) = 0.
2105       tab_cntrl(idecal+23) = taux
2106       tab_cntrl(idecal+24) = tauy
2107      ELSE
2108       tab_cntrl(idecal+19) = 0.
2109       tab_cntrl(idecal+20) = dzoomx
2110       tab_cntrl(idecal+21) = dzoomy
2111       tab_cntrl(idecal+22) = 0.
2112       tab_cntrl(idecal+23) = 0.
2113       tab_cntrl(idecal+24) = 0.
2114       IF( ysinus )  tab_cntrl(idecal+22) = 1.
2115      ENDIF
2116
2117      if (start_file_type.eq."earth") then
2118       tab_cntrl(idecal+25) = REAL(iday_end)
2119       tab_cntrl(idecal+26) = REAL(itau_dyn + itaufin)
2120c start_time: start_time of simulation (not necessarily 0.)
2121       tab_cntrl(idecal+27) = start_time
2122      endif
2123
2124      if (planet_type=="mars") then ! For Mars only
2125        tab_cntrl(29)=hour_ini
2126      endif
2127c
2128c    .........................................................
2129c
2130c Creation du fichier:
2131c
2132      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
2133      IF (ierr.NE.NF_NOERR) THEN
2134         WRITE(6,*)" Pb d ouverture du fichier "//fichnom
2135         WRITE(6,*)' ierr = ', ierr
2136         CALL ABORT
2137      ENDIF
2138c
2139c Preciser quelques attributs globaux:
2140c
2141      ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 27,
2142     .                       "Fichier demmarage dynamique")
2143c
2144c Definir les dimensions du fichiers:
2145c
2146      if (start_file_type.eq."earth") then
2147        ierr = NF_DEF_DIM (nid, "index", length, idim_index)
2148        ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
2149        ierr = NF_DEF_DIM (nid, "rlatu", jjp1, idim_rlatu)
2150        ierr = NF_DEF_DIM (nid, "rlonv", iip1, idim_rlonv)
2151        ierr = NF_DEF_DIM (nid, "rlatv", jjm, idim_rlatv)
2152        ierr = NF_DEF_DIM (nid, "sigs", llm, idim_s)
2153        ierr = NF_DEF_DIM (nid, "sig", llmp1, idim_sig)
2154        ierr = NF_DEF_DIM (nid, "temps", NF_UNLIMITED, idim_tim)
2155      else
2156        ierr = NF_DEF_DIM (nid, "index", length, idim_index)
2157        ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
2158        ierr = NF_DEF_DIM (nid, "latitude", jjp1, idim_rlatu)
2159        ierr = NF_DEF_DIM (nid, "longitude", iip1, idim_rlonv)
2160        ierr = NF_DEF_DIM (nid, "rlatv", jjm, idim_rlatv)
2161        ierr = NF_DEF_DIM (nid, "altitude", llm, idim_s)
2162        ierr = NF_DEF_DIM (nid, "interlayer", llmp1, idim_sig)
2163        ierr = NF_DEF_DIM (nid, "Time", NF_UNLIMITED, idim_tim)
2164      endif
2165c
2166      ierr = NF_ENDDEF(nid) ! sortir du mode de definition
2167c
2168c Definir et enregistrer certains champs invariants:
2169c
2170      ierr = NF_REDEF (nid)
2171cIM 220306 BEG
2172      ierr = NF_DEF_VAR (nid,"controle",NF_DOUBLE,1,idim_index,nvarid)
2173cIM 220306 END
2174      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22,
2175     .                       "Parametres de controle")
2176      ierr = NF_ENDDEF(nid)
2177      call NF95_PUT_VAR(nid,nvarid,tab_cntrl)
2178c
2179      ierr = NF_REDEF (nid)
2180cIM 220306 BEG
2181      ierr = NF_DEF_VAR (nid,"rlonu",NF_DOUBLE,1,idim_rlonu,nvarid)
2182cIM 220306 END
2183      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23,
2184     .                       "Longitudes des points U")
2185      ierr = NF_ENDDEF(nid)
2186      call NF95_PUT_VAR(nid,nvarid,rlonu)
2187c
2188      ierr = NF_REDEF (nid)
2189cIM 220306 BEG
2190      ierr = NF_DEF_VAR (nid,"rlatu",NF_DOUBLE,1,idim_rlatu,nvarid)
2191cIM 220306 END
2192      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22,
2193     .                       "Latitudes des points U")
2194      ierr = NF_ENDDEF(nid)
2195      call NF95_PUT_VAR (nid,nvarid,rlatu)
2196c
2197      ierr = NF_REDEF (nid)
2198cIM 220306 BEG
2199      ierr = NF_DEF_VAR (nid,"rlonv",NF_DOUBLE,1,idim_rlonv,nvarid)
2200cIM 220306 END
2201      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23,
2202     .                       "Longitudes des points V")
2203      ierr = NF_ENDDEF(nid)
2204      call NF95_PUT_VAR(nid,nvarid,rlonv)
2205c
2206      ierr = NF_REDEF (nid)
2207cIM 220306 BEG
2208      ierr = NF_DEF_VAR (nid,"rlatv",NF_DOUBLE,1,idim_rlatv,nvarid)
2209cIM 220306 END
2210      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22,
2211     .                       "Latitudes des points V")
2212      ierr = NF_ENDDEF(nid)
2213      call NF95_PUT_VAR(nid,nvarid,rlatv)
2214c
2215      if (start_file_type.eq."earth") then
2216        ierr = NF_REDEF (nid)
2217cIM 220306 BEG
2218        ierr = NF_DEF_VAR (nid,"nivsigs",NF_DOUBLE,1,idim_s,nvarid)
2219cIM 220306 END
2220        ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 28,
2221     .                       "Numero naturel des couches s")
2222        ierr = NF_ENDDEF(nid)
2223        call NF95_PUT_VAR(nid,nvarid,nivsigs)
2224c
2225        ierr = NF_REDEF (nid)
2226cIM 220306 BEG
2227        ierr = NF_DEF_VAR (nid,"nivsig",NF_DOUBLE,1,idim_sig,nvarid)
2228cIM 220306 END
2229        ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 32,
2230     .                       "Numero naturel des couches sigma")
2231        ierr = NF_ENDDEF(nid)
2232        call NF95_PUT_VAR(nid,nvarid,nivsig)
2233      endif ! of if (start_file_type.eq."earth")
2234c
2235      ierr = NF_REDEF (nid)
2236cIM 220306 BEG
2237      ierr = NF_DEF_VAR (nid,"ap",NF_DOUBLE,1,idim_sig,nvarid)
2238cIM 220306 END
2239      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 26,
2240     .                       "Coefficient A pour hybride")
2241      ierr = NF_ENDDEF(nid)
2242      call NF95_PUT_VAR(nid,nvarid,ap)
2243c
2244      ierr = NF_REDEF (nid)
2245cIM 220306 BEG
2246      ierr = NF_DEF_VAR (nid,"bp",NF_DOUBLE,1,idim_sig,nvarid)
2247cIM 220306 END
2248      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 26,
2249     .                       "Coefficient B pour hybride")
2250      ierr = NF_ENDDEF(nid)
2251      call NF95_PUT_VAR(nid,nvarid,bp)
2252c
2253      if (start_file_type.ne."earth") then
2254        ierr = NF_REDEF (nid)
2255cIM 220306 BEG
2256        ierr = NF_DEF_VAR (nid,"aps",NF_DOUBLE,1,idim_s,nvarid)
2257cIM 220306 END
2258        ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 37,
2259     .                       "Coef AS: hybrid pressure at midlayers")
2260        ierr = NF_ENDDEF(nid)
2261        call NF95_PUT_VAR(nid,nvarid,aps)
2262c
2263        ierr = NF_REDEF (nid)
2264cIM 220306 BEG
2265        ierr = NF_DEF_VAR (nid,"bps",NF_DOUBLE,1,idim_s,nvarid)
2266cIM 220306 END
2267        ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 34,
2268     .                       "Coef BS: hybrid sigma at midlayers")
2269        ierr = NF_ENDDEF(nid)
2270        call NF95_PUT_VAR(nid,nvarid,bps)
2271      endif ! of if (start_file_type.ne."earth")
2272c
2273      ierr = NF_REDEF (nid)
2274cIM 220306 BEG
2275      ierr = NF_DEF_VAR (nid,"presnivs",NF_DOUBLE,1,idim_s,nvarid)
2276cIM 220306 END
2277      ierr = NF_ENDDEF(nid)
2278      call NF95_PUT_VAR(nid,nvarid,presnivs)
2279c
2280      if (start_file_type.ne."earth") then
2281        ierr = NF_REDEF (nid)
2282        ierr = NF_DEF_VAR(nid,"latitude",NF_DOUBLE,1,idim_rlatu,nvarid)
2283        ierr =NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
2284        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
2285     .        "North latitude")
2286        ierr = NF_ENDDEF(nid)
2287        call NF95_PUT_VAR(nid,nvarid,rlatu*180/pi)
2288c
2289        ierr = NF_REDEF (nid)
2290        ierr=NF_DEF_VAR(nid,"longitude",NF_DOUBLE,1,idim_rlonv,nvarid)
2291        ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14,
2292     .        "East longitude")
2293        ierr = NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
2294        ierr = NF_ENDDEF(nid)
2295        call NF95_PUT_VAR(nid,nvarid,rlonv*180/pi)
2296c
2297        ierr = NF_REDEF (nid)
2298        ierr = NF_DEF_VAR (nid, "altitude", NF_DOUBLE, 1,
2299     .       idim_s,nvarid)
2300        ierr = NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
2301        ierr = NF_PUT_ATT_TEXT (nid,nvarid,'units',2,"km")
2302        ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',2,"up")
2303        ierr = NF_ENDDEF(nid)
2304        call NF95_PUT_VAR(nid,nvarid,pseudoalt)
2305      endif ! of if (start_file_type.ne."earth")
2306c
2307c Coefficients de passage cov. <-> contra. <--> naturel
2308c
2309      ierr = NF_REDEF (nid)
2310      dims2(1) = idim_rlonu
2311      dims2(2) = idim_rlatu
2312cIM 220306 BEG
2313      ierr = NF_DEF_VAR (nid,"cu",NF_DOUBLE,2,dims2,nvarid)
2314cIM 220306 END
2315      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29,
2316     .                       "Coefficient de passage pour U")
2317      ierr = NF_ENDDEF(nid)
2318      call NF95_PUT_VAR(nid,nvarid,cu)
2319c
2320      ierr = NF_REDEF (nid)
2321      dims2(1) = idim_rlonv
2322      dims2(2) = idim_rlatv
2323cIM 220306 BEG
2324      ierr = NF_DEF_VAR (nid,"cv",NF_DOUBLE,2,dims2,nvarid)
2325cIM 220306 END
2326      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29,
2327     .                       "Coefficient de passage pour V")
2328      ierr = NF_ENDDEF(nid)
2329      call NF95_PUT_VAR(nid,nvarid,cv)
2330c
2331c Aire de chaque maille:
2332c
2333      ierr = NF_REDEF (nid)
2334      dims2(1) = idim_rlonv
2335      dims2(2) = idim_rlatu
2336cIM 220306 BEG
2337      ierr = NF_DEF_VAR (nid,"aire",NF_DOUBLE,2,dims2,nvarid)
2338cIM 220306 END
2339      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22,
2340     .                       "Aires de chaque maille")
2341      ierr = NF_ENDDEF(nid)
2342      call NF95_PUT_VAR(nid,nvarid,aire)
2343c
2344c Geopentiel au sol:
2345c
2346      ierr = NF_REDEF (nid)
2347      dims2(1) = idim_rlonv
2348      dims2(2) = idim_rlatu
2349cIM 220306 BEG
2350      ierr = NF_DEF_VAR (nid,"phisinit",NF_DOUBLE,2,dims2,nvarid)
2351cIM 220306 END
2352      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 19,
2353     .                       "Geopotentiel au sol")
2354      ierr = NF_ENDDEF(nid)
2355      call NF95_PUT_VAR(nid,nvarid,phis)
2356c
2357c Definir les variables pour pouvoir les enregistrer plus tard:
2358c
2359      ierr = NF_REDEF (nid) ! entrer dans le mode de definition
2360c
2361      if (start_file_type.eq."earth") then
2362cIM 220306 BEG
2363        ierr = NF_DEF_VAR (nid,"temps",NF_DOUBLE,1,idim_tim,nvarid)
2364cIM 220306 END
2365      else ! start_file_type=="planeto"
2366        ierr = NF_DEF_VAR (nid,"Time",NF_DOUBLE,1,idim_tim,nvarid)
2367      endif ! of if (start_file_type.eq."earth")
2368      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 19,
2369     .                       "Temps de simulation")
2370      write(unites,200)yyears0,mmois0,jjour0
2371200   format('days since ',i4,'-',i2.2,'-',i2.2,' 00:00:00')
2372      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "units", 30,
2373     .                         unites)
2374
2375c
2376      dims4(1) = idim_rlonu
2377      dims4(2) = idim_rlatu
2378      dims4(3) = idim_s
2379      dims4(4) = idim_tim
2380cIM 220306 BEG
2381      ierr = NF_DEF_VAR (nid,"ucov",NF_DOUBLE,4,dims4,nvarid)
2382cIM 220306 END
2383      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9,
2384     .                       "Vitesse U")
2385c
2386      dims4(1) = idim_rlonv
2387      dims4(2) = idim_rlatv
2388      dims4(3) = idim_s
2389      dims4(4) = idim_tim
2390cIM 220306 BEG
2391      ierr = NF_DEF_VAR (nid,"vcov",NF_DOUBLE,4,dims4,nvarid)
2392cIM 220306 END
2393      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9,
2394     .                       "Vitesse V")
2395c
2396      dims4(1) = idim_rlonv
2397      dims4(2) = idim_rlatu
2398      dims4(3) = idim_s
2399      dims4(4) = idim_tim
2400cIM 220306 BEG
2401      ierr = NF_DEF_VAR (nid,"teta",NF_DOUBLE,4,dims4,nvarid)
2402cIM 220306 END
2403      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 11,
2404     .                       "Temperature")
2405c
2406      dims4(1) = idim_rlonv
2407      dims4(2) = idim_rlatu
2408      dims4(3) = idim_s
2409      dims4(4) = idim_tim
2410
2411      DO iq=1,nqtot
2412cIM 220306 BEG
2413      ierr = NF_DEF_VAR (nid,tname(iq),NF_DOUBLE,4,dims4,nvarid)
2414cIM 220306 END
2415      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12,ttext(iq))
2416      ENDDO
2417c
2418      dims4(1) = idim_rlonv
2419      dims4(2) = idim_rlatu
2420      dims4(3) = idim_s
2421      dims4(4) = idim_tim
2422cIM 220306 BEG
2423      ierr = NF_DEF_VAR (nid,"masse",NF_DOUBLE,4,dims4,nvarid)
2424cIM 220306 END
2425      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12,
2426     .                       "C est quoi ?")
2427c
2428      dims3(1) = idim_rlonv
2429      dims3(2) = idim_rlatu
2430      dims3(3) = idim_tim
2431cIM 220306 BEG
2432      ierr = NF_DEF_VAR (nid,"ps",NF_DOUBLE,3,dims3,nvarid)
2433cIM 220306 END
2434      ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 15,
2435     .                       "Pression au sol")
2436c
2437      ierr = NF_ENDDEF(nid) ! sortir du mode de definition
2438      ierr = NF_CLOSE(nid) ! fermer le fichier
2439
2440      PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
2441      PRINT*,'rad,omeg,g,cpp,kappa',
2442     ,        rad,omeg,g,cpp,kappa
2443
2444      endif  ! mpi_rank==0
2445      RETURN
2446      END
2447
2448!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2449
2450      SUBROUTINE dynredem1_p(fichnom,time,
2451     .                     vcov,ucov,teta,q,masse,ps)
2452      USE parallel_lmdz
2453      USE infotrac
2454      USE control_mod, only : planet_type
2455      use netcdf, only: NF90_get_VAR
2456      use netcdf95, only: NF95_PUT_VAR
2457
2458      IMPLICIT NONE
2459c=================================================================
2460c  Ecriture du fichier de redemarrage sous format NetCDF
2461c=================================================================
2462!-----------------------------------------------------------------------
2463!   INCLUDE 'dimensions.h'
2464!
2465!   dimensions.h contient les dimensions du modele
2466!   ndm est tel que iim=2**ndm
2467!-----------------------------------------------------------------------
2468
2469      INTEGER iim,jjm,llm,ndm
2470
2471      PARAMETER (iim= 128,jjm=96,llm=64,ndm=1)
2472
2473!-----------------------------------------------------------------------
2474!
2475! $Header$
2476!
2477!
2478!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
2479!                 veillez  n'utiliser que des ! pour les commentaires
2480!                 et  bien positionner les & des lignes de continuation
2481!                 (les placer en colonne 6 et en colonne 73)
2482!
2483!
2484!-----------------------------------------------------------------------
2485!   INCLUDE 'paramet.h'
2486
2487      INTEGER  iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1
2488      INTEGER  kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm
2489      INTEGER  ijmllm,mvar
2490      INTEGER jcfil,jcfllm
2491
2492      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                       &
2493     &    ,jjp1=jjm+1-1/jjm)
2494      PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
2495      PARAMETER( kftd  = iim/2 -ndm )
2496      PARAMETER( ip1jm  = iip1*jjm,  ip1jmp1= iip1*jjp1 )
2497      PARAMETER( ip1jmi1= ip1jm - iip1 )
2498      PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm )
2499      PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm )
2500      PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm )
2501
2502!-----------------------------------------------------------------------
2503!
2504! $Header$
2505!
2506      character *120 descript
2507      common /titre/descript
2508!     NetCDF-3.
2509!
2510! netcdf version 3 fortran interface:
2511!
2512
2513!
2514! external netcdf data types:
2515!
2516      integer nf_byte
2517      integer nf_int1
2518      integer nf_char
2519      integer nf_short
2520      integer nf_int2
2521      integer nf_int
2522      integer nf_float
2523      integer nf_real
2524      integer nf_double
2525
2526      parameter (nf_byte = 1)
2527      parameter (nf_int1 = nf_byte)
2528      parameter (nf_char = 2)
2529      parameter (nf_short = 3)
2530      parameter (nf_int2 = nf_short)
2531      parameter (nf_int = 4)
2532      parameter (nf_float = 5)
2533      parameter (nf_real = nf_float)
2534      parameter (nf_double = 6)
2535
2536!
2537! default fill values:
2538!
2539      integer           nf_fill_byte
2540      integer           nf_fill_int1
2541      integer           nf_fill_char
2542      integer           nf_fill_short
2543      integer           nf_fill_int2
2544      integer           nf_fill_int
2545      real              nf_fill_float
2546      real              nf_fill_real
2547      doubleprecision   nf_fill_double
2548
2549      parameter (nf_fill_byte = -127)
2550      parameter (nf_fill_int1 = nf_fill_byte)
2551      parameter (nf_fill_char = 0)
2552      parameter (nf_fill_short = -32767)
2553      parameter (nf_fill_int2 = nf_fill_short)
2554      parameter (nf_fill_int = -2147483647)
2555      parameter (nf_fill_float = 9.9692099683868690e+36)
2556      parameter (nf_fill_real = nf_fill_float)
2557      parameter (nf_fill_double = 9.9692099683868690d+36)
2558
2559!
2560! mode flags for opening and creating a netcdf dataset:
2561!
2562      integer nf_nowrite
2563      integer nf_write
2564      integer nf_clobber
2565      integer nf_noclobber
2566      integer nf_fill
2567      integer nf_nofill
2568      integer nf_lock
2569      integer nf_share
2570      integer nf_64bit_offset
2571      integer nf_sizehint_default
2572      integer nf_align_chunk
2573      integer nf_format_classic
2574      integer nf_format_64bit
2575
2576      parameter (nf_nowrite = 0)
2577      parameter (nf_write = 1)
2578      parameter (nf_clobber = 0)
2579      parameter (nf_noclobber = 4)
2580      parameter (nf_fill = 0)
2581      parameter (nf_nofill = 256)
2582      parameter (nf_lock = 1024)
2583      parameter (nf_share = 2048)
2584      parameter (nf_64bit_offset = 512)
2585      parameter (nf_sizehint_default = 0)
2586      parameter (nf_align_chunk = -1)
2587      parameter (nf_format_classic = 1)
2588      parameter (nf_format_64bit = 2)
2589
2590!
2591! size argument for defining an unlimited dimension:
2592!
2593      integer nf_unlimited
2594      parameter (nf_unlimited = 0)
2595
2596!
2597! global attribute id:
2598!
2599      integer nf_global
2600      parameter (nf_global = 0)
2601
2602!
2603! implementation limits:
2604!
2605      integer nf_max_dims
2606      integer nf_max_attrs
2607      integer nf_max_vars
2608      integer nf_max_name
2609      integer nf_max_var_dims
2610
2611      parameter (nf_max_dims = 1024)
2612      parameter (nf_max_attrs = 8192)
2613      parameter (nf_max_vars = 8192)
2614      parameter (nf_max_name = 256)
2615      parameter (nf_max_var_dims = nf_max_dims)
2616
2617!
2618! error codes:
2619!
2620      integer nf_noerr
2621      integer nf_ebadid
2622      integer nf_eexist
2623      integer nf_einval
2624      integer nf_eperm
2625      integer nf_enotindefine
2626      integer nf_eindefine
2627      integer nf_einvalcoords
2628      integer nf_emaxdims
2629      integer nf_enameinuse
2630      integer nf_enotatt
2631      integer nf_emaxatts
2632      integer nf_ebadtype
2633      integer nf_ebaddim
2634      integer nf_eunlimpos
2635      integer nf_emaxvars
2636      integer nf_enotvar
2637      integer nf_eglobal
2638      integer nf_enotnc
2639      integer nf_ests
2640      integer nf_emaxname
2641      integer nf_eunlimit
2642      integer nf_enorecvars
2643      integer nf_echar
2644      integer nf_eedge
2645      integer nf_estride
2646      integer nf_ebadname
2647      integer nf_erange
2648      integer nf_enomem
2649      integer nf_evarsize
2650      integer nf_edimsize
2651      integer nf_etrunc
2652
2653      parameter (nf_noerr = 0)
2654      parameter (nf_ebadid = -33)
2655      parameter (nf_eexist = -35)
2656      parameter (nf_einval = -36)
2657      parameter (nf_eperm = -37)
2658      parameter (nf_enotindefine = -38)
2659      parameter (nf_eindefine = -39)
2660      parameter (nf_einvalcoords = -40)
2661      parameter (nf_emaxdims = -41)
2662      parameter (nf_enameinuse = -42)
2663      parameter (nf_enotatt = -43)
2664      parameter (nf_emaxatts = -44)
2665      parameter (nf_ebadtype = -45)
2666      parameter (nf_ebaddim = -46)
2667      parameter (nf_eunlimpos = -47)
2668      parameter (nf_emaxvars = -48)
2669      parameter (nf_enotvar = -49)
2670      parameter (nf_eglobal = -50)
2671      parameter (nf_enotnc = -51)
2672      parameter (nf_ests = -52)
2673      parameter (nf_emaxname = -53)
2674      parameter (nf_eunlimit = -54)
2675      parameter (nf_enorecvars = -55)
2676      parameter (nf_echar = -56)
2677      parameter (nf_eedge = -57)
2678      parameter (nf_estride = -58)
2679      parameter (nf_ebadname = -59)
2680      parameter (nf_erange = -60)
2681      parameter (nf_enomem = -61)
2682      parameter (nf_evarsize = -62)
2683      parameter (nf_edimsize = -63)
2684      parameter (nf_etrunc = -64)
2685!
2686! error handling modes:
2687!
2688      integer  nf_fatal
2689      integer nf_verbose
2690
2691      parameter (nf_fatal = 1)
2692      parameter (nf_verbose = 2)
2693
2694!
2695! miscellaneous routines:
2696!
2697      character*80   nf_inq_libvers
2698      external       nf_inq_libvers
2699
2700      character*80   nf_strerror
2701!                         (integer             ncerr)
2702      external       nf_strerror
2703
2704      logical        nf_issyserr
2705!                         (integer             ncerr)
2706      external       nf_issyserr
2707
2708!
2709! control routines:
2710!
2711      integer         nf_inq_base_pe
2712!                         (integer             ncid,
2713!                          integer             pe)
2714      external        nf_inq_base_pe
2715
2716      integer         nf_set_base_pe
2717!                         (integer             ncid,
2718!                          integer             pe)
2719      external        nf_set_base_pe
2720
2721      integer         nf_create
2722!                         (character*(*)       path,
2723!                          integer             cmode,
2724!                          integer             ncid)
2725      external        nf_create
2726
2727      integer         nf__create
2728!                         (character*(*)       path,
2729!                          integer             cmode,
2730!                          integer             initialsz,
2731!                          integer             chunksizehint,
2732!                          integer             ncid)
2733      external        nf__create
2734
2735      integer         nf__create_mp
2736!                         (character*(*)       path,
2737!                          integer             cmode,
2738!                          integer             initialsz,
2739!                          integer             basepe,
2740!                          integer             chunksizehint,
2741!                          integer             ncid)
2742      external        nf__create_mp
2743
2744      integer         nf_open
2745!                         (character*(*)       path,
2746!                          integer             mode,
2747!                          integer             ncid)
2748      external        nf_open
2749
2750      integer         nf__open
2751!                         (character*(*)       path,
2752!                          integer             mode,
2753!                          integer             chunksizehint,
2754!                          integer             ncid)
2755      external        nf__open
2756
2757      integer         nf__open_mp
2758!                         (character*(*)       path,
2759!                          integer             mode,
2760!                          integer             basepe,
2761!                          integer             chunksizehint,
2762!                          integer             ncid)
2763      external        nf__open_mp
2764
2765      integer         nf_set_fill
2766!                         (integer             ncid,
2767!                          integer             fillmode,
2768!                          integer             old_mode)
2769      external        nf_set_fill
2770
2771      integer         nf_set_default_format
2772!                          (integer             format,
2773!                          integer             old_format)
2774      external        nf_set_default_format
2775
2776      integer         nf_redef
2777!                         (integer             ncid)
2778      external        nf_redef
2779
2780      integer         nf_enddef
2781!                         (integer             ncid)
2782      external        nf_enddef
2783
2784      integer         nf__enddef
2785!                         (integer             ncid,
2786!                          integer             h_minfree,
2787!                          integer             v_align,
2788!                          integer             v_minfree,
2789!                          integer             r_align)
2790      external        nf__enddef
2791
2792      integer         nf_sync
2793!                         (integer             ncid)
2794      external        nf_sync
2795
2796      integer         nf_abort
2797!                         (integer             ncid)
2798      external        nf_abort
2799
2800      integer         nf_close
2801!                         (integer             ncid)
2802      external        nf_close
2803
2804      integer         nf_delete
2805!                         (character*(*)       ncid)
2806      external        nf_delete
2807
2808!
2809! general inquiry routines:
2810!
2811
2812      integer         nf_inq
2813!                         (integer             ncid,
2814!                          integer             ndims,
2815!                          integer             nvars,
2816!                          integer             ngatts,
2817!                          integer             unlimdimid)
2818      external        nf_inq
2819
2820      integer         nf_inq_ndims
2821!                         (integer             ncid,
2822!                          integer             ndims)
2823      external        nf_inq_ndims
2824
2825      integer         nf_inq_nvars
2826!                         (integer             ncid,
2827!                          integer             nvars)
2828      external        nf_inq_nvars
2829
2830      integer         nf_inq_natts
2831!                         (integer             ncid,
2832!                          integer             ngatts)
2833      external        nf_inq_natts
2834
2835      integer         nf_inq_unlimdim
2836!                         (integer             ncid,
2837!                          integer             unlimdimid)
2838      external        nf_inq_unlimdim
2839
2840      integer         nf_inq_format
2841!                         (integer             ncid,
2842!                          integer             format)
2843      external        nf_inq_format
2844
2845!
2846! dimension routines:
2847!
2848
2849      integer         nf_def_dim
2850!                         (integer             ncid,
2851!                          character(*)        name,
2852!                          integer             len,
2853!                          integer             dimid)
2854      external        nf_def_dim
2855
2856      integer         nf_inq_dimid
2857!                         (integer             ncid,
2858!                          character(*)        name,
2859!                          integer             dimid)
2860      external        nf_inq_dimid
2861
2862      integer         nf_inq_dim
2863!                         (integer             ncid,
2864!                          integer             dimid,
2865!                          character(*)        name,
2866!                          integer             len)
2867      external        nf_inq_dim
2868
2869      integer         nf_inq_dimname
2870!                         (integer             ncid,
2871!                          integer             dimid,
2872!                          character(*)        name)
2873      external        nf_inq_dimname
2874
2875      integer         nf_inq_dimlen
2876!                         (integer             ncid,
2877!                          integer             dimid,
2878!                          integer             len)
2879      external        nf_inq_dimlen
2880
2881      integer         nf_rename_dim
2882!                         (integer             ncid,
2883!                          integer             dimid,
2884!                          character(*)        name)
2885      external        nf_rename_dim
2886
2887!
2888! general attribute routines:
2889!
2890
2891      integer         nf_inq_att
2892!                         (integer             ncid,
2893!                          integer             varid,
2894!                          character(*)        name,
2895!                          integer             xtype,
2896!                          integer             len)
2897      external        nf_inq_att
2898
2899      integer         nf_inq_attid
2900!                         (integer             ncid,
2901!                          integer             varid,
2902!                          character(*)        name,
2903!                          integer             attnum)
2904      external        nf_inq_attid
2905
2906      integer         nf_inq_atttype
2907!                         (integer             ncid,
2908!                          integer             varid,
2909!                          character(*)        name,
2910!                          integer             xtype)
2911      external        nf_inq_atttype
2912
2913      integer         nf_inq_attlen
2914!                         (integer             ncid,
2915!                          integer             varid,
2916!                          character(*)        name,
2917!                          integer             len)
2918      external        nf_inq_attlen
2919
2920      integer         nf_inq_attname
2921!                         (integer             ncid,
2922!                          integer             varid,
2923!                          integer             attnum,
2924!                          character(*)        name)
2925      external        nf_inq_attname
2926
2927      integer         nf_copy_att
2928!                         (integer             ncid_in,
2929!                          integer             varid_in,
2930!                          character(*)        name,
2931!                          integer             ncid_out,
2932!                          integer             varid_out)
2933      external        nf_copy_att
2934
2935      integer         nf_rename_att
2936!                         (integer             ncid,
2937!                          integer             varid,
2938!                          character(*)        curname,
2939!                          character(*)        newname)
2940      external        nf_rename_att
2941
2942      integer         nf_del_att
2943!                         (integer             ncid,
2944!                          integer             varid,
2945!                          character(*)        name)
2946      external        nf_del_att
2947
2948!
2949! attribute put/get routines:
2950!
2951
2952      integer         nf_put_att_text
2953!                         (integer             ncid,
2954!                          integer             varid,
2955!                          character(*)        name,
2956!                          integer             len,
2957!                          character(*)        text)
2958      external        nf_put_att_text
2959
2960      integer         nf_get_att_text
2961!                         (integer             ncid,
2962!                          integer             varid,
2963!                          character(*)        name,
2964!                          character(*)        text)
2965      external        nf_get_att_text
2966
2967      integer         nf_put_att_int1
2968!                         (integer             ncid,
2969!                          integer             varid,
2970!                          character(*)        name,
2971!                          integer             xtype,
2972!                          integer             len,
2973!                          nf_int1_t           i1vals(1))
2974      external        nf_put_att_int1
2975
2976      integer         nf_get_att_int1
2977!                         (integer             ncid,
2978!                          integer             varid,
2979!                          character(*)        name,
2980!                          nf_int1_t           i1vals(1))
2981      external        nf_get_att_int1
2982
2983      integer         nf_put_att_int2
2984!                         (integer             ncid,
2985!                          integer             varid,
2986!                          character(*)        name,
2987!                          integer             xtype,
2988!                          integer             len,
2989!                          nf_int2_t           i2vals(1))
2990      external        nf_put_att_int2
2991
2992      integer         nf_get_att_int2
2993!                         (integer             ncid,
2994!                          integer             varid,
2995!                          character(*)        name,
2996!                          nf_int2_t           i2vals(1))
2997      external        nf_get_att_int2
2998
2999      integer         nf_put_att_int
3000!                         (integer             ncid,
3001!                          integer             varid,
3002!                          character(*)        name,
3003!                          integer             xtype,
3004!                          integer             len,
3005!                          integer             ivals(1))
3006      external        nf_put_att_int
3007
3008      integer         nf_get_att_int
3009!                         (integer             ncid,
3010!                          integer             varid,
3011!                          character(*)        name,
3012!                          integer             ivals(1))
3013      external        nf_get_att_int
3014
3015      integer         nf_put_att_real
3016!                         (integer             ncid,
3017!                          integer             varid,
3018!                          character(*)        name,
3019!                          integer             xtype,
3020!                          integer             len,
3021!                          real                rvals(1))
3022      external        nf_put_att_real
3023
3024      integer         nf_get_att_real
3025!                         (integer             ncid,
3026!                          integer             varid,
3027!                          character(*)        name,
3028!                          real                rvals(1))
3029      external        nf_get_att_real
3030
3031      integer         nf_put_att_double
3032!                         (integer             ncid,
3033!                          integer             varid,
3034!                          character(*)        name,
3035!                          integer             xtype,
3036!                          integer             len,
3037!                          double              dvals(1))
3038      external        nf_put_att_double
3039
3040      integer         nf_get_att_double
3041!                         (integer             ncid,
3042!                          integer             varid,
3043!                          character(*)        name,
3044!                          double              dvals(1))
3045      external        nf_get_att_double
3046
3047!
3048! general variable routines:
3049!
3050
3051      integer         nf_def_var
3052!                         (integer             ncid,
3053!                          character(*)        name,
3054!                          integer             datatype,
3055!                          integer             ndims,
3056!                          integer             dimids(1),
3057!                          integer             varid)
3058      external        nf_def_var
3059
3060      integer         nf_inq_var
3061!                         (integer             ncid,
3062!                          integer             varid,
3063!                          character(*)        name,
3064!                          integer             datatype,
3065!                          integer             ndims,
3066!                          integer             dimids(1),
3067!                          integer             natts)
3068      external        nf_inq_var
3069
3070      integer         nf_inq_varid
3071!                         (integer             ncid,
3072!                          character(*)        name,
3073!                          integer             varid)
3074      external        nf_inq_varid
3075
3076      integer         nf_inq_varname
3077!                         (integer             ncid,
3078!                          integer             varid,
3079!                          character(*)        name)
3080      external        nf_inq_varname
3081
3082      integer         nf_inq_vartype
3083!                         (integer             ncid,
3084!                          integer             varid,
3085!                          integer             xtype)
3086      external        nf_inq_vartype
3087
3088      integer         nf_inq_varndims
3089!                         (integer             ncid,
3090!                          integer             varid,
3091!                          integer             ndims)
3092      external        nf_inq_varndims
3093
3094      integer         nf_inq_vardimid
3095!                         (integer             ncid,
3096!                          integer             varid,
3097!                          integer             dimids(1))
3098      external        nf_inq_vardimid
3099
3100      integer         nf_inq_varnatts
3101!                         (integer             ncid,
3102!                          integer             varid,
3103!                          integer             natts)
3104      external        nf_inq_varnatts
3105
3106      integer         nf_rename_var
3107!                         (integer             ncid,
3108!                          integer             varid,
3109!                          character(*)        name)
3110      external        nf_rename_var
3111
3112      integer         nf_copy_var
3113!                         (integer             ncid_in,
3114!                          integer             varid,
3115!                          integer             ncid_out)
3116      external        nf_copy_var
3117
3118!
3119! entire variable put/get routines:
3120!
3121
3122      integer         nf_put_var_text
3123!                         (integer             ncid,
3124!                          integer             varid,
3125!                          character(*)        text)
3126      external        nf_put_var_text
3127
3128      integer         nf_get_var_text
3129!                         (integer             ncid,
3130!                          integer             varid,
3131!                          character(*)        text)
3132      external        nf_get_var_text
3133
3134      integer         nf_put_var_int1
3135!                         (integer             ncid,
3136!                          integer             varid,
3137!                          nf_int1_t           i1vals(1))
3138      external        nf_put_var_int1
3139
3140      integer         nf_get_var_int1
3141!                         (integer             ncid,
3142!                          integer             varid,
3143!                          nf_int1_t           i1vals(1))
3144      external        nf_get_var_int1
3145
3146      integer         nf_put_var_int2
3147!                         (integer             ncid,
3148!                          integer             varid,
3149!                          nf_int2_t           i2vals(1))
3150      external        nf_put_var_int2
3151
3152      integer         nf_get_var_int2
3153!                         (integer             ncid,
3154!                          integer             varid,
3155!                          nf_int2_t           i2vals(1))
3156      external        nf_get_var_int2
3157
3158      integer         nf_put_var_int
3159!                         (integer             ncid,
3160!                          integer             varid,
3161!                          integer             ivals(1))
3162      external        nf_put_var_int
3163
3164      integer         nf_get_var_int
3165!                         (integer             ncid,
3166!                          integer             varid,
3167!                          integer             ivals(1))
3168      external        nf_get_var_int
3169
3170      integer         nf_put_var_real
3171!                         (integer             ncid,
3172!                          integer             varid,
3173!                          real                rvals(1))
3174      external        nf_put_var_real
3175
3176      integer         nf_get_var_real
3177!                         (integer             ncid,
3178!                          integer             varid,
3179!                          real                rvals(1))
3180      external        nf_get_var_real
3181
3182      integer         nf_put_var_double
3183!                         (integer             ncid,
3184!                          integer             varid,
3185!                          doubleprecision     dvals(1))
3186      external        nf_put_var_double
3187
3188      integer         nf_get_var_double
3189!                         (integer             ncid,
3190!                          integer             varid,
3191!                          doubleprecision     dvals(1))
3192      external        nf_get_var_double
3193
3194!
3195! single variable put/get routines:
3196!
3197
3198      integer         nf_put_var1_text
3199!                         (integer             ncid,
3200!                          integer             varid,
3201!                          integer             index(1),
3202!                          character*1         text)
3203      external        nf_put_var1_text
3204
3205      integer         nf_get_var1_text
3206!                         (integer             ncid,
3207!                          integer             varid,
3208!                          integer             index(1),
3209!                          character*1         text)
3210      external        nf_get_var1_text
3211
3212      integer         nf_put_var1_int1
3213!                         (integer             ncid,
3214!                          integer             varid,
3215!                          integer             index(1),
3216!                          nf_int1_t           i1val)
3217      external        nf_put_var1_int1
3218
3219      integer         nf_get_var1_int1
3220!                         (integer             ncid,
3221!                          integer             varid,
3222!                          integer             index(1),
3223!                          nf_int1_t           i1val)
3224      external        nf_get_var1_int1
3225
3226      integer         nf_put_var1_int2
3227!                         (integer             ncid,
3228!                          integer             varid,
3229!                          integer             index(1),
3230!                          nf_int2_t           i2val)
3231      external        nf_put_var1_int2
3232
3233      integer         nf_get_var1_int2
3234!                         (integer             ncid,
3235!                          integer             varid,
3236!                          integer             index(1),
3237!                          nf_int2_t           i2val)
3238      external        nf_get_var1_int2
3239
3240      integer         nf_put_var1_int
3241!                         (integer             ncid,
3242!                          integer             varid,
3243!                          integer             index(1),
3244!                          integer             ival)
3245      external        nf_put_var1_int
3246
3247      integer         nf_get_var1_int
3248!                         (integer             ncid,
3249!                          integer             varid,
3250!                          integer             index(1),
3251!                          integer             ival)
3252      external        nf_get_var1_int
3253
3254      integer         nf_put_var1_real
3255!                         (integer             ncid,
3256!                          integer             varid,
3257!                          integer             index(1),
3258!                          real                rval)
3259      external        nf_put_var1_real
3260
3261      integer         nf_get_var1_real
3262!                         (integer             ncid,
3263!                          integer             varid,
3264!                          integer             index(1),
3265!                          real                rval)
3266      external        nf_get_var1_real
3267
3268      integer         nf_put_var1_double
3269!                         (integer             ncid,
3270!                          integer             varid,
3271!                          integer             index(1),
3272!                          doubleprecision     dval)
3273      external        nf_put_var1_double
3274
3275      integer         nf_get_var1_double
3276!                         (integer             ncid,
3277!                          integer             varid,
3278!                          integer             index(1),
3279!                          doubleprecision     dval)
3280      external        nf_get_var1_double
3281
3282!
3283! variable array put/get routines:
3284!
3285
3286      integer         nf_put_vara_text
3287!                         (integer             ncid,
3288!                          integer             varid,
3289!                          integer             start(1),
3290!                          integer             count(1),
3291!                          character(*)        text)
3292      external        nf_put_vara_text
3293
3294      integer         nf_get_vara_text
3295!                         (integer             ncid,
3296!                          integer             varid,
3297!                          integer             start(1),
3298!                          integer             count(1),
3299!                          character(*)        text)
3300      external        nf_get_vara_text
3301
3302      integer         nf_put_vara_int1
3303!                         (integer             ncid,
3304!                          integer             varid,
3305!                          integer             start(1),
3306!                          integer             count(1),
3307!                          nf_int1_t           i1vals(1))
3308      external        nf_put_vara_int1
3309
3310      integer         nf_get_vara_int1
3311!                         (integer             ncid,
3312!                          integer             varid,
3313!                          integer             start(1),
3314!                          integer             count(1),
3315!                          nf_int1_t           i1vals(1))
3316      external        nf_get_vara_int1
3317
3318      integer         nf_put_vara_int2
3319!                         (integer             ncid,
3320!                          integer             varid,
3321!                          integer             start(1),
3322!                          integer             count(1),
3323!                          nf_int2_t           i2vals(1))
3324      external        nf_put_vara_int2
3325
3326      integer         nf_get_vara_int2
3327!                         (integer             ncid,
3328!                          integer             varid,
3329!                          integer             start(1),
3330!                          integer             count(1),
3331!                          nf_int2_t           i2vals(1))
3332      external        nf_get_vara_int2
3333
3334      integer         nf_put_vara_int
3335!                         (integer             ncid,
3336!                          integer             varid,
3337!                          integer             start(1),
3338!                          integer             count(1),
3339!                          integer             ivals(1))
3340      external        nf_put_vara_int
3341
3342      integer         nf_get_vara_int
3343!                         (integer             ncid,
3344!                          integer             varid,
3345!                          integer             start(1),
3346!                          integer             count(1),
3347!                          integer             ivals(1))
3348      external        nf_get_vara_int
3349
3350      integer         nf_put_vara_real
3351!                         (integer             ncid,
3352!                          integer             varid,
3353!                          integer             start(1),
3354!                          integer             count(1),
3355!                          real                rvals(1))
3356      external        nf_put_vara_real
3357
3358      integer         nf_get_vara_real
3359!                         (integer             ncid,
3360!                          integer             varid,
3361!                          integer             start(1),
3362!                          integer             count(1),
3363!                          real                rvals(1))
3364      external        nf_get_vara_real
3365
3366      integer         nf_put_vara_double
3367!                         (integer             ncid,
3368!                          integer             varid,
3369!                          integer             start(1),
3370!                          integer             count(1),
3371!                          doubleprecision     dvals(1))
3372      external        nf_put_vara_double
3373
3374      integer         nf_get_vara_double
3375!                         (integer             ncid,
3376!                          integer             varid,
3377!                          integer             start(1),
3378!                          integer             count(1),
3379!                          doubleprecision     dvals(1))
3380      external        nf_get_vara_double
3381
3382!
3383! strided variable put/get routines:
3384!
3385
3386      integer         nf_put_vars_text
3387!                         (integer             ncid,
3388!                          integer             varid,
3389!                          integer             start(1),
3390!                          integer             count(1),
3391!                          integer             stride(1),
3392!                          character(*)        text)
3393      external        nf_put_vars_text
3394
3395      integer         nf_get_vars_text
3396!                         (integer             ncid,
3397!                          integer             varid,
3398!                          integer             start(1),
3399!                          integer             count(1),
3400!                          integer             stride(1),
3401!                          character(*)        text)
3402      external        nf_get_vars_text
3403
3404      integer         nf_put_vars_int1
3405!                         (integer             ncid,
3406!                          integer             varid,
3407!                          integer             start(1),
3408!                          integer             count(1),
3409!                          integer             stride(1),
3410!                          nf_int1_t           i1vals(1))
3411      external        nf_put_vars_int1
3412
3413      integer         nf_get_vars_int1
3414!                         (integer             ncid,
3415!                          integer             varid,
3416!                          integer             start(1),
3417!                          integer             count(1),
3418!                          integer             stride(1),
3419!                          nf_int1_t           i1vals(1))
3420      external        nf_get_vars_int1
3421
3422      integer         nf_put_vars_int2
3423!                         (integer             ncid,
3424!                          integer             varid,
3425!                          integer             start(1),
3426!                          integer             count(1),
3427!                          integer             stride(1),
3428!                          nf_int2_t           i2vals(1))
3429      external        nf_put_vars_int2
3430
3431      integer         nf_get_vars_int2
3432!                         (integer             ncid,
3433!                          integer             varid,
3434!                          integer             start(1),
3435!                          integer             count(1),
3436!                          integer             stride(1),
3437!                          nf_int2_t           i2vals(1))
3438      external        nf_get_vars_int2
3439
3440      integer         nf_put_vars_int
3441!                         (integer             ncid,
3442!                          integer             varid,
3443!                          integer             start(1),
3444!                          integer             count(1),
3445!                          integer             stride(1),
3446!                          integer             ivals(1))
3447      external        nf_put_vars_int
3448
3449      integer         nf_get_vars_int
3450!                         (integer             ncid,
3451!                          integer             varid,
3452!                          integer             start(1),
3453!                          integer             count(1),
3454!                          integer             stride(1),
3455!                          integer             ivals(1))
3456      external        nf_get_vars_int
3457
3458      integer         nf_put_vars_real
3459!                         (integer             ncid,
3460!                          integer             varid,
3461!                          integer             start(1),
3462!                          integer             count(1),
3463!                          integer             stride(1),
3464!                          real                rvals(1))
3465      external        nf_put_vars_real
3466
3467      integer         nf_get_vars_real
3468!                         (integer             ncid,
3469!                          integer             varid,
3470!                          integer             start(1),
3471!                          integer             count(1),
3472!                          integer             stride(1),
3473!                          real                rvals(1))
3474      external        nf_get_vars_real
3475
3476      integer         nf_put_vars_double
3477!                         (integer             ncid,
3478!                          integer             varid,
3479!                          integer             start(1),
3480!                          integer             count(1),
3481!                          integer             stride(1),
3482!                          doubleprecision     dvals(1))
3483      external        nf_put_vars_double
3484
3485      integer         nf_get_vars_double
3486!                         (integer             ncid,
3487!                          integer             varid,
3488!                          integer             start(1),
3489!                          integer             count(1),
3490!                          integer             stride(1),
3491!                          doubleprecision     dvals(1))
3492      external        nf_get_vars_double
3493
3494!
3495! mapped variable put/get routines:
3496!
3497
3498      integer         nf_put_varm_text
3499!                         (integer             ncid,
3500!                          integer             varid,
3501!                          integer             start(1),
3502!                          integer             count(1),
3503!                          integer             stride(1),
3504!                          integer             imap(1),
3505!                          character(*)        text)
3506      external        nf_put_varm_text
3507
3508      integer         nf_get_varm_text
3509!                         (integer             ncid,
3510!                          integer             varid,
3511!                          integer             start(1),
3512!                          integer             count(1),
3513!                          integer             stride(1),
3514!                          integer             imap(1),
3515!                          character(*)        text)
3516      external        nf_get_varm_text
3517
3518      integer         nf_put_varm_int1
3519!                         (integer             ncid,
3520!                          integer             varid,
3521!                          integer             start(1),
3522!                          integer             count(1),
3523!                          integer             stride(1),
3524!                          integer             imap(1),
3525!                          nf_int1_t           i1vals(1))
3526      external        nf_put_varm_int1
3527
3528      integer         nf_get_varm_int1
3529!                         (integer             ncid,
3530!                          integer             varid,
3531!                          integer             start(1),
3532!                          integer             count(1),
3533!                          integer             stride(1),
3534!                          integer             imap(1),
3535!                          nf_int1_t           i1vals(1))
3536      external        nf_get_varm_int1
3537
3538      integer         nf_put_varm_int2
3539!                         (integer             ncid,
3540!                          integer             varid,
3541!                          integer             start(1),
3542!                          integer             count(1),
3543!                          integer             stride(1),
3544!                          integer             imap(1),
3545!                          nf_int2_t           i2vals(1))
3546      external        nf_put_varm_int2
3547
3548      integer         nf_get_varm_int2
3549!                         (integer             ncid,
3550!                          integer             varid,
3551!                          integer             start(1),
3552!                          integer             count(1),
3553!                          integer             stride(1),
3554!                          integer             imap(1),
3555!                          nf_int2_t           i2vals(1))
3556      external        nf_get_varm_int2
3557
3558      integer         nf_put_varm_int
3559!                         (integer             ncid,
3560!                          integer             varid,
3561!                          integer             start(1),
3562!                          integer             count(1),
3563!                          integer             stride(1),
3564!                          integer             imap(1),
3565!                          integer             ivals(1))
3566      external        nf_put_varm_int
3567
3568      integer         nf_get_varm_int
3569!                         (integer             ncid,
3570!                          integer             varid,
3571!                          integer             start(1),
3572!                          integer             count(1),
3573!                          integer             stride(1),
3574!                          integer             imap(1),
3575!                          integer             ivals(1))
3576      external        nf_get_varm_int
3577
3578      integer         nf_put_varm_real
3579!                         (integer             ncid,
3580!                          integer             varid,
3581!                          integer             start(1),
3582!                          integer             count(1),
3583!                          integer             stride(1),
3584!                          integer             imap(1),
3585!                          real                rvals(1))
3586      external        nf_put_varm_real
3587
3588      integer         nf_get_varm_real
3589!                         (integer             ncid,
3590!                          integer             varid,
3591!                          integer             start(1),
3592!                          integer             count(1),
3593!                          integer             stride(1),
3594!                          integer             imap(1),
3595!                          real                rvals(1))
3596      external        nf_get_varm_real
3597
3598      integer         nf_put_varm_double
3599!                         (integer             ncid,
3600!                          integer             varid,
3601!                          integer             start(1),
3602!                          integer             count(1),
3603!                          integer             stride(1),
3604!                          integer             imap(1),
3605!                          doubleprecision     dvals(1))
3606      external        nf_put_varm_double
3607
3608      integer         nf_get_varm_double
3609!                         (integer             ncid,
3610!                          integer             varid,
3611!                          integer             start(1),
3612!                          integer             count(1),
3613!                          integer             stride(1),
3614!                          integer             imap(1),
3615!                          doubleprecision     dvals(1))
3616      external        nf_get_varm_double
3617
3618
3619!     NetCDF-2.
3620!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
3621! begin netcdf 2.4 backward compatibility:
3622!
3623
3624!     
3625! functions in the fortran interface
3626!
3627      integer nccre
3628      integer ncopn
3629      integer ncddef
3630      integer ncdid
3631      integer ncvdef
3632      integer ncvid
3633      integer nctlen
3634      integer ncsfil
3635
3636      external nccre
3637      external ncopn
3638      external ncddef
3639      external ncdid
3640      external ncvdef
3641      external ncvid
3642      external nctlen
3643      external ncsfil
3644
3645
3646      integer ncrdwr
3647      integer nccreat
3648      integer ncexcl
3649      integer ncindef
3650      integer ncnsync
3651      integer nchsync
3652      integer ncndirty
3653      integer nchdirty
3654      integer nclink
3655      integer ncnowrit
3656      integer ncwrite
3657      integer ncclob
3658      integer ncnoclob
3659      integer ncglobal
3660      integer ncfill
3661      integer ncnofill
3662      integer maxncop
3663      integer maxncdim
3664      integer maxncatt
3665      integer maxncvar
3666      integer maxncnam
3667      integer maxvdims
3668      integer ncnoerr
3669      integer ncebadid
3670      integer ncenfile
3671      integer nceexist
3672      integer nceinval
3673      integer nceperm
3674      integer ncenotin
3675      integer nceindef
3676      integer ncecoord
3677      integer ncemaxds
3678      integer ncename
3679      integer ncenoatt
3680      integer ncemaxat
3681      integer ncebadty
3682      integer ncebadd
3683      integer ncests
3684      integer nceunlim
3685      integer ncemaxvs
3686      integer ncenotvr
3687      integer nceglob
3688      integer ncenotnc
3689      integer ncfoobar
3690      integer ncsyserr
3691      integer ncfatal
3692      integer ncverbos
3693      integer ncentool
3694
3695
3696!
3697! netcdf data types:
3698!
3699      integer ncbyte
3700      integer ncchar
3701      integer ncshort
3702      integer nclong
3703      integer ncfloat
3704      integer ncdouble
3705
3706      parameter(ncbyte = 1)
3707      parameter(ncchar = 2)
3708      parameter(ncshort = 3)
3709      parameter(nclong = 4)
3710      parameter(ncfloat = 5)
3711      parameter(ncdouble = 6)
3712
3713!     
3714!     masks for the struct nc flag field; passed in as 'mode' arg to
3715!     nccreate and ncopen.
3716!     
3717
3718!     read/write, 0 => readonly
3719      parameter(ncrdwr = 1)
3720!     in create phase, cleared by ncendef
3721      parameter(nccreat = 2)
3722!     on create destroy existing file
3723      parameter(ncexcl = 4)
3724!     in define mode, cleared by ncendef
3725      parameter(ncindef = 8)
3726!     synchronise numrecs on change (x'10')
3727      parameter(ncnsync = 16)
3728!     synchronise whole header on change (x'20')
3729      parameter(nchsync = 32)
3730!     numrecs has changed (x'40')
3731      parameter(ncndirty = 64) 
3732!     header info has changed (x'80')
3733      parameter(nchdirty = 128)
3734!     prefill vars on endef and increase of record, the default behavior
3735      parameter(ncfill = 0)
3736!     do not fill vars on endef and increase of record (x'100')
3737      parameter(ncnofill = 256)
3738!     isa link (x'8000')
3739      parameter(nclink = 32768)
3740
3741!     
3742!     'mode' arguments for nccreate and ncopen
3743!     
3744      parameter(ncnowrit = 0)
3745      parameter(ncwrite = ncrdwr)
3746      parameter(ncclob = nf_clobber)
3747      parameter(ncnoclob = nf_noclobber)
3748
3749!     
3750!     'size' argument to ncdimdef for an unlimited dimension
3751!     
3752      integer ncunlim
3753      parameter(ncunlim = 0)
3754
3755!     
3756!     attribute id to put/get a global attribute
3757!     
3758      parameter(ncglobal  = 0)
3759
3760!     
3761!     advisory maximums:
3762!     
3763      parameter(maxncop = 64)
3764      parameter(maxncdim = 1024)
3765      parameter(maxncatt = 8192)
3766      parameter(maxncvar = 8192)
3767!     not enforced
3768      parameter(maxncnam = 256)
3769      parameter(maxvdims = maxncdim)
3770
3771!     
3772!     global netcdf error status variable
3773!     initialized in error.c
3774!     
3775
3776!     no error
3777      parameter(ncnoerr = nf_noerr)
3778!     not a netcdf id
3779      parameter(ncebadid = nf_ebadid)
3780!     too many netcdfs open
3781      parameter(ncenfile = -31)   ! nc_syserr
3782!     netcdf file exists && ncnoclob
3783      parameter(nceexist = nf_eexist)
3784!     invalid argument
3785      parameter(nceinval = nf_einval)
3786!     write to read only
3787      parameter(nceperm = nf_eperm)
3788!     operation not allowed in data mode
3789      parameter(ncenotin = nf_enotindefine )   
3790!     operation not allowed in define mode
3791      parameter(nceindef = nf_eindefine)   
3792!     coordinates out of domain
3793      parameter(ncecoord = nf_einvalcoords)
3794!     maxncdims exceeded
3795      parameter(ncemaxds = nf_emaxdims)
3796!     string match to name in use
3797      parameter(ncename = nf_enameinuse)   
3798!     attribute not found
3799      parameter(ncenoatt = nf_enotatt)
3800!     maxncattrs exceeded
3801      parameter(ncemaxat = nf_emaxatts)
3802!     not a netcdf data type
3803      parameter(ncebadty = nf_ebadtype)
3804!     invalid dimension id
3805      parameter(ncebadd = nf_ebaddim)
3806!     ncunlimited in the wrong index
3807      parameter(nceunlim = nf_eunlimpos)
3808!     maxncvars exceeded
3809      parameter(ncemaxvs = nf_emaxvars)
3810!     variable not found
3811      parameter(ncenotvr = nf_enotvar)
3812!     action prohibited on ncglobal varid
3813      parameter(nceglob = nf_eglobal)
3814!     not a netcdf file
3815      parameter(ncenotnc = nf_enotnc)
3816      parameter(ncests = nf_ests)
3817      parameter (ncentool = nf_emaxname) 
3818      parameter(ncfoobar = 32)
3819      parameter(ncsyserr = -31)
3820
3821!     
3822!     global options variable. used to determine behavior of error handler.
3823!     initialized in lerror.c
3824!     
3825      parameter(ncfatal = 1)
3826      parameter(ncverbos = 2)
3827
3828!
3829!     default fill values.  these must be the same as in the c interface.
3830!
3831      integer filbyte
3832      integer filchar
3833      integer filshort
3834      integer fillong
3835      real filfloat
3836      doubleprecision fildoub
3837
3838      parameter (filbyte = -127)
3839      parameter (filchar = 0)
3840      parameter (filshort = -32767)
3841      parameter (fillong = -2147483647)
3842      parameter (filfloat = 9.9692099683868690e+36)
3843      parameter (fildoub = 9.9692099683868690d+36)
3844
3845!     NetCDF-4.
3846!     This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT
3847!     file for distribution information.
3848
3849!     Netcdf version 4 fortran interface.
3850
3851!     $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $
3852
3853!     New netCDF-4 types.
3854      integer nf_ubyte
3855      integer nf_ushort
3856      integer nf_uint
3857      integer nf_int64
3858      integer nf_uint64
3859      integer nf_string
3860      integer nf_vlen
3861      integer nf_opaque
3862      integer nf_enum
3863      integer nf_compound
3864
3865      parameter (nf_ubyte = 7)
3866      parameter (nf_ushort = 8)
3867      parameter (nf_uint = 9)
3868      parameter (nf_int64 = 10)
3869      parameter (nf_uint64 = 11)
3870      parameter (nf_string = 12)
3871      parameter (nf_vlen = 13)
3872      parameter (nf_opaque = 14)
3873      parameter (nf_enum = 15)
3874      parameter (nf_compound = 16)
3875
3876!     New netCDF-4 fill values.
3877      integer           nf_fill_ubyte
3878      integer           nf_fill_ushort
3879!      real              nf_fill_uint
3880!      real              nf_fill_int64
3881!      real              nf_fill_uint64
3882      parameter (nf_fill_ubyte = 255)
3883      parameter (nf_fill_ushort = 65535)
3884
3885!     New constants.
3886      integer nf_format_netcdf4
3887      parameter (nf_format_netcdf4 = 3)
3888
3889      integer nf_format_netcdf4_classic
3890      parameter (nf_format_netcdf4_classic = 4)
3891
3892      integer nf_netcdf4
3893      parameter (nf_netcdf4 = 4096)
3894
3895      integer nf_classic_model
3896      parameter (nf_classic_model = 256)
3897
3898      integer nf_chunk_seq
3899      parameter (nf_chunk_seq = 0)
3900      integer nf_chunk_sub
3901      parameter (nf_chunk_sub = 1)
3902      integer nf_chunk_sizes
3903      parameter (nf_chunk_sizes = 2)
3904
3905      integer nf_endian_native
3906      parameter (nf_endian_native = 0)
3907      integer nf_endian_little
3908      parameter (nf_endian_little = 1)
3909      integer nf_endian_big
3910      parameter (nf_endian_big = 2)
3911
3912!     For NF_DEF_VAR_CHUNKING
3913      integer nf_chunked
3914      parameter (nf_chunked = 0)
3915      integer nf_contiguous
3916      parameter (nf_contiguous = 1)
3917
3918!     For NF_DEF_VAR_FLETCHER32
3919      integer nf_nochecksum
3920      parameter (nf_nochecksum = 0)
3921      integer nf_fletcher32
3922      parameter (nf_fletcher32 = 1)
3923
3924!     For NF_DEF_VAR_DEFLATE
3925      integer nf_noshuffle
3926      parameter (nf_noshuffle = 0)
3927      integer nf_shuffle
3928      parameter (nf_shuffle = 1)
3929
3930!     For NF_DEF_VAR_SZIP
3931      integer nf_szip_ec_option_mask
3932      parameter (nf_szip_ec_option_mask = 4)
3933      integer nf_szip_nn_option_mask
3934      parameter (nf_szip_nn_option_mask = 32)
3935
3936!     For parallel I/O.
3937      integer nf_mpiio     
3938      parameter (nf_mpiio = 8192)
3939      integer nf_mpiposix
3940      parameter (nf_mpiposix = 16384)
3941      integer nf_pnetcdf
3942      parameter (nf_pnetcdf = 32768)
3943
3944!     For NF_VAR_PAR_ACCESS.
3945      integer nf_independent
3946      parameter (nf_independent = 0)
3947      integer nf_collective
3948      parameter (nf_collective = 1)
3949
3950!     New error codes.
3951      integer nf_ehdferr        ! Error at HDF5 layer.
3952      parameter (nf_ehdferr = -101)
3953      integer nf_ecantread      ! Can't read.
3954      parameter (nf_ecantread = -102)
3955      integer nf_ecantwrite     ! Can't write.
3956      parameter (nf_ecantwrite = -103)
3957      integer nf_ecantcreate    ! Can't create.
3958      parameter (nf_ecantcreate = -104)
3959      integer nf_efilemeta      ! Problem with file metadata.
3960      parameter (nf_efilemeta = -105)
3961      integer nf_edimmeta       ! Problem with dimension metadata.
3962      parameter (nf_edimmeta = -106)
3963      integer nf_eattmeta       ! Problem with attribute metadata.
3964      parameter (nf_eattmeta = -107)
3965      integer nf_evarmeta       ! Problem with variable metadata.
3966      parameter (nf_evarmeta = -108)
3967      integer nf_enocompound    ! Not a compound type.
3968      parameter (nf_enocompound = -109)
3969      integer nf_eattexists     ! Attribute already exists.
3970      parameter (nf_eattexists = -110)
3971      integer nf_enotnc4        ! Attempting netcdf-4 operation on netcdf-3 file.   
3972      parameter (nf_enotnc4 = -111)
3973      integer nf_estrictnc3     ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file.   
3974      parameter (nf_estrictnc3 = -112)
3975      integer nf_enotnc3        ! Attempting netcdf-3 operation on netcdf-4 file.   
3976      parameter (nf_enotnc3 = -113)
3977      integer nf_enopar         ! Parallel operation on file opened for non-parallel access.   
3978      parameter (nf_enopar = -114)
3979      integer nf_eparinit       ! Error initializing for parallel access.   
3980      parameter (nf_eparinit = -115)
3981      integer nf_ebadgrpid      ! Bad group ID.   
3982      parameter (nf_ebadgrpid = -116)
3983      integer nf_ebadtypid      ! Bad type ID.   
3984      parameter (nf_ebadtypid = -117)
3985      integer nf_etypdefined    ! Type has already been defined and may not be edited.
3986      parameter (nf_etypdefined = -118)
3987      integer nf_ebadfield      ! Bad field ID.   
3988      parameter (nf_ebadfield = -119)
3989      integer nf_ebadclass      ! Bad class.   
3990      parameter (nf_ebadclass = -120)
3991      integer nf_emaptype       ! Mapped access for atomic types only.   
3992      parameter (nf_emaptype = -121)
3993      integer nf_elatefill      ! Attempt to define fill value when data already exists.
3994      parameter (nf_elatefill = -122)
3995      integer nf_elatedef       ! Attempt to define var properties, like deflate, after enddef.
3996      parameter (nf_elatedef = -123)
3997      integer nf_edimscale      ! Probem with HDF5 dimscales.
3998      parameter (nf_edimscale = -124)
3999      integer nf_enogrp       ! No group found.
4000      parameter (nf_enogrp = -125)
4001
4002
4003!     New functions.
4004
4005!     Parallel I/O.
4006      integer nf_create_par
4007      external nf_create_par
4008
4009      integer nf_open_par
4010      external nf_open_par
4011
4012      integer nf_var_par_access
4013      external nf_var_par_access
4014
4015!     Functions to handle groups.
4016      integer nf_inq_ncid
4017      external nf_inq_ncid
4018
4019      integer nf_inq_grps
4020      external nf_inq_grps
4021
4022      integer nf_inq_grpname
4023      external nf_inq_grpname
4024
4025      integer nf_inq_grpname_full
4026      external nf_inq_grpname_full
4027
4028      integer nf_inq_grpname_len
4029      external nf_inq_grpname_len
4030
4031      integer nf_inq_grp_parent
4032      external nf_inq_grp_parent
4033
4034      integer nf_inq_grp_ncid
4035      external nf_inq_grp_ncid
4036
4037      integer nf_inq_grp_full_ncid
4038      external nf_inq_grp_full_ncid
4039
4040      integer nf_inq_varids
4041      external nf_inq_varids
4042
4043      integer nf_inq_dimids
4044      external nf_inq_dimids
4045
4046      integer nf_def_grp
4047      external nf_def_grp
4048
4049!     New options for netCDF variables.
4050      integer nf_def_var_deflate
4051      external nf_def_var_deflate
4052
4053      integer nf_inq_var_deflate
4054      external nf_inq_var_deflate
4055
4056      integer nf_def_var_fletcher32
4057      external nf_def_var_fletcher32
4058
4059      integer nf_inq_var_fletcher32
4060      external nf_inq_var_fletcher32
4061
4062      integer nf_def_var_chunking
4063      external nf_def_var_chunking
4064
4065      integer nf_inq_var_chunking
4066      external nf_inq_var_chunking
4067
4068      integer nf_def_var_fill
4069      external nf_def_var_fill
4070
4071      integer nf_inq_var_fill
4072      external nf_inq_var_fill
4073
4074      integer nf_def_var_endian
4075      external nf_def_var_endian
4076
4077      integer nf_inq_var_endian
4078      external nf_inq_var_endian
4079
4080!     User defined types.
4081      integer nf_inq_typeids
4082      external nf_inq_typeids
4083
4084      integer nf_inq_typeid
4085      external nf_inq_typeid
4086
4087      integer nf_inq_type
4088      external nf_inq_type
4089
4090      integer nf_inq_user_type
4091      external nf_inq_user_type
4092
4093!     User defined types - compound types.
4094      integer nf_def_compound
4095      external nf_def_compound
4096
4097      integer nf_insert_compound
4098      external nf_insert_compound
4099
4100      integer nf_insert_array_compound
4101      external nf_insert_array_compound
4102
4103      integer nf_inq_compound
4104      external nf_inq_compound
4105
4106      integer nf_inq_compound_name
4107      external nf_inq_compound_name
4108
4109      integer nf_inq_compound_size
4110      external nf_inq_compound_size
4111
4112      integer nf_inq_compound_nfields
4113      external nf_inq_compound_nfields
4114
4115      integer nf_inq_compound_field
4116      external nf_inq_compound_field
4117
4118      integer nf_inq_compound_fieldname
4119      external nf_inq_compound_fieldname
4120
4121      integer nf_inq_compound_fieldindex
4122      external nf_inq_compound_fieldindex
4123
4124      integer nf_inq_compound_fieldoffset
4125      external nf_inq_compound_fieldoffset
4126
4127      integer nf_inq_compound_fieldtype
4128      external nf_inq_compound_fieldtype
4129
4130      integer nf_inq_compound_fieldndims
4131      external nf_inq_compound_fieldndims
4132
4133      integer nf_inq_compound_fielddim_sizes
4134      external nf_inq_compound_fielddim_sizes
4135
4136!     User defined types - variable length arrays.
4137      integer nf_def_vlen
4138      external nf_def_vlen
4139
4140      integer nf_inq_vlen
4141      external nf_inq_vlen
4142
4143      integer nf_free_vlen
4144      external nf_free_vlen
4145
4146!     User defined types - enums.
4147      integer nf_def_enum
4148      external nf_def_enum
4149
4150      integer nf_insert_enum
4151      external nf_insert_enum
4152
4153      integer nf_inq_enum
4154      external nf_inq_enum
4155
4156      integer nf_inq_enum_member
4157      external nf_inq_enum_member
4158
4159      integer nf_inq_enum_ident
4160      external nf_inq_enum_ident
4161
4162!     User defined types - opaque.
4163      integer nf_def_opaque
4164      external nf_def_opaque
4165
4166      integer nf_inq_opaque
4167      external nf_inq_opaque
4168
4169!     Write and read attributes of any type, including user defined
4170!     types.
4171      integer nf_put_att
4172      external nf_put_att
4173      integer nf_get_att
4174      external nf_get_att
4175
4176!     Write and read variables of any type, including user defined
4177!     types.
4178      integer nf_put_var
4179      external nf_put_var
4180      integer nf_put_var1
4181      external nf_put_var1
4182      integer nf_put_vara
4183      external nf_put_vara
4184      integer nf_put_vars
4185      external nf_put_vars
4186      integer nf_get_var
4187      external nf_get_var
4188      integer nf_get_var1
4189      external nf_get_var1
4190      integer nf_get_vara
4191      external nf_get_vara
4192      integer nf_get_vars
4193      external nf_get_vars
4194
4195!     64-bit int functions.
4196      integer nf_put_var1_int64
4197      external nf_put_var1_int64
4198      integer nf_put_vara_int64
4199      external nf_put_vara_int64
4200      integer nf_put_vars_int64
4201      external nf_put_vars_int64
4202      integer nf_put_varm_int64
4203      external nf_put_varm_int64
4204      integer nf_put_var_int64
4205      external nf_put_var_int64
4206      integer nf_get_var1_int64
4207      external nf_get_var1_int64
4208      integer nf_get_vara_int64
4209      external nf_get_vara_int64
4210      integer nf_get_vars_int64
4211      external nf_get_vars_int64
4212      integer nf_get_varm_int64
4213      external nf_get_varm_int64
4214      integer nf_get_var_int64
4215      external nf_get_var_int64
4216
4217!     For helping F77 users with VLENs.
4218      integer nf_get_vlen_element
4219      external nf_get_vlen_element
4220      integer nf_put_vlen_element
4221      external nf_put_vlen_element
4222
4223!     For dealing with file level chunk cache.
4224      integer nf_set_chunk_cache
4225      external nf_set_chunk_cache
4226      integer nf_get_chunk_cache
4227      external nf_get_chunk_cache
4228
4229!     For dealing with per variable chunk cache.
4230      integer nf_set_var_chunk_cache
4231      external nf_set_var_chunk_cache
4232      integer nf_get_var_chunk_cache
4233      external nf_get_var_chunk_cache
4234!
4235! $Id: comvert.h 1654 2012-09-24 15:07:18Z aslmd $
4236!
4237!-----------------------------------------------------------------------
4238!   INCLUDE 'comvert.h'
4239
4240      COMMON/comvertr/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm),     &
4241     &               pa,preff,nivsigs(llm),nivsig(llm+1),               &
4242     &               aps(llm),bps(llm),scaleheight,pseudoalt(llm)
4243
4244      common/comverti/disvert_type, pressure_exner
4245
4246      real ap     ! hybrid pressure contribution at interlayers
4247      real bp     ! hybrid sigma contribution at interlayer
4248      real presnivs ! (reference) pressure at mid-layers
4249      real dpres
4250      real pa     ! reference pressure (Pa) at which hybrid coordinates
4251                  ! become purely pressure
4252      real preff  ! reference surface pressure (Pa)
4253      real nivsigs
4254      real nivsig
4255      real aps    ! hybrid pressure contribution at mid-layers
4256      real bps    ! hybrid sigma contribution at mid-layers
4257      real scaleheight ! atmospheric (reference) scale height (km)
4258      real pseudoalt ! pseudo-altitude of model levels (km), based on presnivs(),
4259                     ! preff and scaleheight
4260
4261      integer disvert_type ! type of vertical discretization:
4262                           ! 1: Earth (default for planet_type==earth),
4263                           !     automatic generation
4264                           ! 2: Planets (default for planet_type!=earth),
4265                           !     using 'z2sig.def' (or 'esasig.def) file
4266
4267      logical pressure_exner
4268!     compute pressure inside layers using Exner function, else use mean
4269!     of pressure values at interfaces
4270
4271 !-----------------------------------------------------------------------
4272!
4273! $Header$
4274!
4275!CDK comgeom
4276      COMMON/comgeom/                                                   &
4277     & cu(ip1jmp1),cv(ip1jm),unscu2(ip1jmp1),unscv2(ip1jm),             &
4278     & aire(ip1jmp1),airesurg(ip1jmp1),aireu(ip1jmp1),                  &
4279     & airev(ip1jm),unsaire(ip1jmp1),apoln,apols,                       &
4280     & unsairez(ip1jm),airuscv2(ip1jm),airvscu2(ip1jm),                 &
4281     & aireij1(ip1jmp1),aireij2(ip1jmp1),aireij3(ip1jmp1),              &
4282     & aireij4(ip1jmp1),alpha1(ip1jmp1),alpha2(ip1jmp1),                &
4283     & alpha3(ip1jmp1),alpha4(ip1jmp1),alpha1p2(ip1jmp1),               &
4284     & alpha1p4(ip1jmp1),alpha2p3(ip1jmp1),alpha3p4(ip1jmp1),           &
4285     & fext(ip1jm),constang(ip1jmp1),rlatu(jjp1),rlatv(jjm),            &
4286     & rlonu(iip1),rlonv(iip1),cuvsurcv(ip1jm),cvsurcuv(ip1jm),         &
4287     & cvusurcu(ip1jmp1),cusurcvu(ip1jmp1),cuvscvgam1(ip1jm),           &
4288     & cuvscvgam2(ip1jm),cvuscugam1(ip1jmp1),                           &
4289     & cvuscugam2(ip1jmp1),cvscuvgam(ip1jm),cuscvugam(ip1jmp1),         &
4290     & unsapolnga1,unsapolnga2,unsapolsga1,unsapolsga2,                 &
4291     & unsair_gam1(ip1jmp1),unsair_gam2(ip1jmp1),unsairz_gam(ip1jm),    &
4292     & aivscu2gam(ip1jm),aiuscv2gam(ip1jm),xprimu(iip1),xprimv(iip1)
4293
4294!
4295        REAL                                                            &
4296     & cu,cv,unscu2,unscv2,aire,airesurg,aireu,airev,unsaire,apoln     ,&
4297     & apols,unsairez,airuscv2,airvscu2,aireij1,aireij2,aireij3,aireij4,&
4298     & alpha1,alpha2,alpha3,alpha4,alpha1p2,alpha1p4,alpha2p3,alpha3p4 ,&
4299     & fext,constang,rlatu,rlatv,rlonu,rlonv,cuvscvgam1,cuvscvgam2     ,&
4300     & cvuscugam1,cvuscugam2,cvscuvgam,cuscvugam,unsapolnga1,unsapolnga2&
4301     & ,unsapolsga1,unsapolsga2,unsair_gam1,unsair_gam2,unsairz_gam    ,&
4302     & aivscu2gam ,aiuscv2gam,cuvsurcv,cvsurcuv,cvusurcu,cusurcvu,xprimu&
4303     & , xprimv
4304!
4305!
4306! $Id: temps.h 1577 2011-10-20 15:06:47Z fairhead $
4307!
4308!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
4309!                 veillez  n'utiliser que des ! pour les commentaires
4310!                 et  bien positionner les & des lignes de continuation
4311!                 (les placer en colonne 6 et en colonne 73)
4312!
4313!
4314! jD_ref = jour julien de la date de reference (lancement de l'experience)
4315! hD_ref = "heure" julienne de la date de reference
4316!-----------------------------------------------------------------------
4317! INCLUDE 'temps.h'
4318
4319      COMMON/temps_r/dt,jD_ref,jH_ref,start_time,hour_ini
4320      COMMON/temps_i/day_ini,day_end,annee_ref,day_ref,                 &
4321     &             itau_dyn,itau_phy,itaufin
4322      COMMON/temps_c/calend
4323
4324
4325      INTEGER   itaufin ! total number of dynamical steps for the run
4326      INTEGER   itau_dyn, itau_phy
4327      INTEGER   day_ini ! initial day # of simulation sequence
4328      INTEGER   day_end ! final day # ; i.e. day # when this simulation ends
4329      INTEGER   annee_ref
4330      INTEGER   day_ref
4331      REAL      dt ! (dynamics) time step (changes if doing Matsuno or LF step)
4332      REAL      jD_ref, jH_ref, start_time
4333      CHARACTER (len=10) :: calend
4334
4335      ! Additionnal Mars stuff:
4336      real hour_ini ! initial fraction of day of simulation sequence (0=<hour_ini<1)
4337
4338!-----------------------------------------------------------------------
4339!
4340! $Header$
4341!
4342!
4343! gestion des impressions de sorties et de débogage
4344! lunout:    unité du fichier dans lequel se font les sorties
4345!                           (par defaut 6, la sortie standard)
4346! prt_level: niveau d'impression souhaité (0 = minimum)
4347!
4348      INTEGER lunout, prt_level
4349      COMMON /comprint/ lunout, prt_level
4350
4351      INTEGER l
4352      REAL vcov(iip1,jjm,llm),ucov(iip1, jjp1,llm) 
4353      REAL teta(iip1, jjp1,llm)                   
4354      REAL ps(iip1, jjp1),masse(iip1, jjp1,llm)                   
4355      REAL q(iip1, jjp1, llm, nqtot)
4356      CHARACTER*(*) fichnom
4357     
4358      REAL time
4359      INTEGER nid, nvarid, nid_trac, nvarid_trac
4360      REAL trac_tmp(ip1jmp1,llm)     
4361      INTEGER ierr, ierr_file 
4362      INTEGER iq
4363      INTEGER length
4364      PARAMETER (length = 100)
4365      REAL tab_cntrl(length) ! tableau des parametres du run
4366      character(len=*),parameter :: modname='dynredem1'
4367      character*80 abort_message
4368c
4369      INTEGER nb
4370      SAVE nb
4371      DATA nb / 0 /
4372
4373      logical exist_file
4374      character(len=12) :: start_file_type="earth" ! default start file type
4375
4376      if ((planet_type.eq."generic").or.(planet_type.eq."mars")) then
4377          write(lunout,*) trim(modname),' : Planeto-like start file'
4378          start_file_type="planeto"
4379      else
4380          write(lunout,*) trim(modname),' : Earth-like start file'
4381      endif
4382
4383      call Gather_Field(ucov,ip1jmp1,llm,0)
4384      call Gather_Field(vcov,ip1jm,llm,0)
4385      call Gather_Field(teta,ip1jmp1,llm,0)
4386      call Gather_Field(masse,ip1jmp1,llm,0)
4387      call Gather_Field(ps,ip1jmp1,1,0)
4388     
4389      do iq=1,nqtot
4390        call Gather_Field(q(:,:,:,iq),ip1jmp1,llm,0)
4391      enddo
4392     
4393     
4394      if (mpi_rank==0) then
4395     
4396      ierr = NF_OPEN(fichnom, NF_WRITE, nid)
4397      IF (ierr .NE. NF_NOERR) THEN
4398         PRINT*, "dynredem1: Pb. d ouverture "//trim(fichnom)
4399         CALL abort
4400      ENDIF
4401
4402c  Ecriture/extension de la coordonnee temps
4403
4404      nb = nb + 1
4405      if (start_file_type.eq."earth") then
4406        ierr = NF_INQ_VARID(nid, "temps", nvarid)
4407        IF (ierr .NE. NF_NOERR) THEN
4408          write(lunout,*) NF_STRERROR(ierr)
4409          abort_message='Variable temps n est pas definie'
4410          CALL abort_gcm(modname,abort_message,ierr)
4411        ENDIF
4412      else
4413        ierr = NF_INQ_VARID(nid,"Time", nvarid)
4414        IF (ierr .NE. NF_NOERR) THEN
4415          write(lunout,*) NF_STRERROR(ierr)
4416          abort_message='Variable Time not found'
4417          CALL abort_gcm(modname,abort_message,ierr)
4418        ENDIF
4419      endif ! of if (start_file_type.eq."earth")
4420      call NF95_PUT_VAR(nid,nvarid,time,start=(/nb/))
4421      PRINT*, "Enregistrement pour ", nb, time
4422
4423c
4424c  Re-ecriture du tableau de controle, itaufin n'est plus defini quand
4425c  on passe dans dynredem0
4426      ierr = NF_INQ_VARID (nid, "controle", nvarid)
4427      IF (ierr .NE. NF_NOERR) THEN
4428         abort_message="dynredem1: Le champ <controle> est absent"
4429         ierr = 1
4430         CALL abort_gcm(modname,abort_message,ierr)
4431      ENDIF
4432      ierr = NF90_GET_VAR(nid, nvarid, tab_cntrl)
4433      if (start_file_type=="earth") then
4434        tab_cntrl(31) = REAL(itau_dyn + itaufin)
4435      else
4436        tab_cntrl(31) = 0
4437      endif
4438      call NF95_PUT_VAR(nid,nvarid,tab_cntrl)
4439
4440c  Ecriture des champs
4441c
4442      ierr = NF_INQ_VARID(nid, "ucov", nvarid)
4443      IF (ierr .NE. NF_NOERR) THEN
4444         PRINT*, "Variable ucov n est pas definie"
4445         CALL abort
4446      ENDIF
4447      call NF95_PUT_VAR(nid,nvarid,ucov,start=(/1,1,1,nb/))
4448
4449      ierr = NF_INQ_VARID(nid, "vcov", nvarid)
4450      IF (ierr .NE. NF_NOERR) THEN
4451         PRINT*, "Variable vcov n est pas definie"
4452         CALL abort
4453      ENDIF
4454      call NF95_PUT_VAR(nid,nvarid,vcov,start=(/1,1,1,nb/))
4455
4456      ierr = NF_INQ_VARID(nid, "teta", nvarid)
4457      IF (ierr .NE. NF_NOERR) THEN
4458         PRINT*, "Variable teta n est pas definie"
4459         CALL abort
4460      ENDIF
4461      call NF95_PUT_VAR(nid,nvarid,teta,start=(/1,1,1,nb/))
4462
4463      IF (type_trac == 'inca') THEN
4464! Ajout Anne pour lecture valeurs traceurs dans un fichier start_trac.nc
4465         inquire(FILE="start_trac.nc", EXIST=exist_file)
4466         print *, "EXIST", exist_file
4467         if (exist_file) then
4468            ierr_file = NF_OPEN ("start_trac.nc", NF_NOWRITE,nid_trac)
4469            IF (ierr_file .NE.NF_NOERR) THEN
4470               write(6,*)' Pb d''ouverture du fichier start_trac.nc'
4471               write(6,*)' ierr = ', ierr_file
4472            ENDIF
4473         else
4474            ierr_file = 2
4475         endif
4476      END IF
4477
4478      do iq=1,nqtot
4479
4480         IF (type_trac /= 'inca') THEN
4481            ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
4482            IF (ierr .NE. NF_NOERR) THEN
4483               PRINT*, "Variable  tname(iq) n est pas definie"
4484               CALL abort
4485            ENDIF
4486            call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq),start=(/1,1,1,nb/))
4487        ELSE ! type_trac = inca
4488! lecture de la valeur du traceur dans start_trac.nc
4489           IF (ierr_file .ne. 2) THEN
4490             ierr = NF_INQ_VARID (nid_trac, tname(iq), nvarid_trac)
4491             IF (ierr .NE. NF_NOERR) THEN
4492                PRINT*, tname(iq),"est absent de start_trac.nc"
4493                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
4494                IF (ierr .NE. NF_NOERR) THEN
4495                   PRINT*, "Variable ", tname(iq)," n est pas definie"
4496                   CALL abort
4497                ENDIF
4498                call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq))
4499               
4500             ELSE
4501                PRINT*, tname(iq), "est present dans start_trac.nc"
4502               ierr = NF90_GET_VAR(nid_trac, nvarid_trac, trac_tmp)
4503                IF (ierr .NE. NF_NOERR) THEN
4504                   PRINT*, "Lecture echouee pour", tname(iq)
4505                   CALL abort
4506                ENDIF
4507                ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
4508                IF (ierr .NE. NF_NOERR) THEN
4509                   PRINT*, "Variable ", tname(iq)," n est pas definie"
4510                   CALL abort
4511                ENDIF
4512                call NF95_PUT_VAR(nid, nvarid, trac_tmp)
4513               
4514             ENDIF ! IF (ierr .NE. NF_NOERR)
4515! fin lecture du traceur
4516          ELSE                  ! si il n'y a pas de fichier start_trac.nc
4517!             print *, 'il n y a pas de fichier start_trac'
4518             ierr = NF_INQ_VARID(nid, tname(iq), nvarid)
4519             IF (ierr .NE. NF_NOERR) THEN
4520                PRINT*, "Variable  tname(iq) n est pas definie"
4521                CALL abort
4522             ENDIF
4523             call NF95_PUT_VAR(nid,nvarid,q(:,:,:,iq),
4524     &                  start=(/1,1,1,nb/))
4525          ENDIF ! (ierr_file .ne. 2)
4526       END IF   !type_trac
4527     
4528      ENDDO
4529
4530
4531
4532c
4533      ierr = NF_INQ_VARID(nid, "masse", nvarid)
4534      IF (ierr .NE. NF_NOERR) THEN
4535         PRINT*, "Variable masse n est pas definie"
4536         CALL abort
4537      ENDIF
4538      call NF95_PUT_VAR(nid,nvarid,masse,start=(/1,1,1,nb/))
4539c
4540      ierr = NF_INQ_VARID(nid, "ps", nvarid)
4541      IF (ierr .NE. NF_NOERR) THEN
4542         PRINT*, "Variable ps n est pas definie"
4543         CALL abort
4544      ENDIF
4545      call NF95_PUT_VAR(nid,nvarid,ps,start=(/1,1,nb/))
4546
4547      ierr = NF_CLOSE(nid)
4548c
4549      endif ! mpi_rank==0
4550     
4551      RETURN
4552      END
4553
Note: See TracBrowser for help on using the repository browser.