source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/dyn3d_common/dynetat0.f @ 224

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