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

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