source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/phys/iniwritesoil.f90 @ 224

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