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

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