GCC Code Coverage Report


Directory: ./
File: phys/iotd_ini.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 66 0.0%
Branches: 0 14 0.0%

Line Branch Exec Source
1 SUBROUTINE iotd_ini(fichnom,iim,jjm,llm,prlon,prlat,pcoordv,jour0,mois0,an0,t0,timestep,calendrier)
2 IMPLICIT NONE
3
4 !=======================================================================
5 !
6 ! Auteur: F. Hourdin
7 ! -------
8 !
9 ! Objet:
10 ! ------
11 ! Light interface for netcdf outputs. can be used outside LMDZ
12 !
13 !=======================================================================
14 !-----------------------------------------------------------------------
15 ! Declarations:
16 ! -------------
17
18 ! NetCDF-3.
19 !
20 ! netcdf version 3 fortran interface:
21 !
22
23 !
24 ! external netcdf data types:
25 !
26 integer nf_byte
27 integer nf_int1
28 integer nf_char
29 integer nf_short
30 integer nf_int2
31 integer nf_int
32 integer nf_float
33 integer nf_real
34 integer nf_double
35
36 parameter (nf_byte = 1)
37 parameter (nf_int1 = nf_byte)
38 parameter (nf_char = 2)
39 parameter (nf_short = 3)
40 parameter (nf_int2 = nf_short)
41 parameter (nf_int = 4)
42 parameter (nf_float = 5)
43 parameter (nf_real = nf_float)
44 parameter (nf_double = 6)
45
46 !
47 ! default fill values:
48 !
49 integer nf_fill_byte
50 integer nf_fill_int1
51 integer nf_fill_char
52 integer nf_fill_short
53 integer nf_fill_int2
54 integer nf_fill_int
55 real nf_fill_float
56 real nf_fill_real
57 doubleprecision nf_fill_double
58
59 parameter (nf_fill_byte = -127)
60 parameter (nf_fill_int1 = nf_fill_byte)
61 parameter (nf_fill_char = 0)
62 parameter (nf_fill_short = -32767)
63 parameter (nf_fill_int2 = nf_fill_short)
64 parameter (nf_fill_int = -2147483647)
65 parameter (nf_fill_float = 9.9692099683868690e+36)
66 parameter (nf_fill_real = nf_fill_float)
67 parameter (nf_fill_double = 9.9692099683868690e+36)
68
69 !
70 ! mode flags for opening and creating a netcdf dataset:
71 !
72 integer nf_nowrite
73 integer nf_write
74 integer nf_clobber
75 integer nf_noclobber
76 integer nf_fill
77 integer nf_nofill
78 integer nf_lock
79 integer nf_share
80 integer nf_64bit_offset
81 integer nf_sizehint_default
82 integer nf_align_chunk
83 integer nf_format_classic
84 integer nf_format_64bit
85
86 parameter (nf_nowrite = 0)
87 parameter (nf_write = 1)
88 parameter (nf_clobber = 0)
89 parameter (nf_noclobber = 4)
90 parameter (nf_fill = 0)
91 parameter (nf_nofill = 256)
92 parameter (nf_lock = 1024)
93 parameter (nf_share = 2048)
94 parameter (nf_64bit_offset = 512)
95 parameter (nf_sizehint_default = 0)
96 parameter (nf_align_chunk = -1)
97 parameter (nf_format_classic = 1)
98 parameter (nf_format_64bit = 2)
99
100 !
101 ! size argument for defining an unlimited dimension:
102 !
103 integer nf_unlimited
104 parameter (nf_unlimited = 0)
105
106 !
107 ! global attribute id:
108 !
109 integer nf_global
110 parameter (nf_global = 0)
111
112 !
113 ! implementation limits:
114 !
115 integer nf_max_dims
116 integer nf_max_attrs
117 integer nf_max_vars
118 integer nf_max_name
119 integer nf_max_var_dims
120
121 parameter (nf_max_dims = 1024)
122 parameter (nf_max_attrs = 8192)
123 parameter (nf_max_vars = 8192)
124 parameter (nf_max_name = 256)
125 parameter (nf_max_var_dims = nf_max_dims)
126
127 !
128 ! error codes:
129 !
130 integer nf_noerr
131 integer nf_ebadid
132 integer nf_eexist
133 integer nf_einval
134 integer nf_eperm
135 integer nf_enotindefine
136 integer nf_eindefine
137 integer nf_einvalcoords
138 integer nf_emaxdims
139 integer nf_enameinuse
140 integer nf_enotatt
141 integer nf_emaxatts
142 integer nf_ebadtype
143 integer nf_ebaddim
144 integer nf_eunlimpos
145 integer nf_emaxvars
146 integer nf_enotvar
147 integer nf_eglobal
148 integer nf_enotnc
149 integer nf_ests
150 integer nf_emaxname
151 integer nf_eunlimit
152 integer nf_enorecvars
153 integer nf_echar
154 integer nf_eedge
155 integer nf_estride
156 integer nf_ebadname
157 integer nf_erange
158 integer nf_enomem
159 integer nf_evarsize
160 integer nf_edimsize
161 integer nf_etrunc
162
163 parameter (nf_noerr = 0)
164 parameter (nf_ebadid = -33)
165 parameter (nf_eexist = -35)
166 parameter (nf_einval = -36)
167 parameter (nf_eperm = -37)
168 parameter (nf_enotindefine = -38)
169 parameter (nf_eindefine = -39)
170 parameter (nf_einvalcoords = -40)
171 parameter (nf_emaxdims = -41)
172 parameter (nf_enameinuse = -42)
173 parameter (nf_enotatt = -43)
174 parameter (nf_emaxatts = -44)
175 parameter (nf_ebadtype = -45)
176 parameter (nf_ebaddim = -46)
177 parameter (nf_eunlimpos = -47)
178 parameter (nf_emaxvars = -48)
179 parameter (nf_enotvar = -49)
180 parameter (nf_eglobal = -50)
181 parameter (nf_enotnc = -51)
182 parameter (nf_ests = -52)
183 parameter (nf_emaxname = -53)
184 parameter (nf_eunlimit = -54)
185 parameter (nf_enorecvars = -55)
186 parameter (nf_echar = -56)
187 parameter (nf_eedge = -57)
188 parameter (nf_estride = -58)
189 parameter (nf_ebadname = -59)
190 parameter (nf_erange = -60)
191 parameter (nf_enomem = -61)
192 parameter (nf_evarsize = -62)
193 parameter (nf_edimsize = -63)
194 parameter (nf_etrunc = -64)
195 !
196 ! error handling modes:
197 !
198 integer nf_fatal
199 integer nf_verbose
200
201 parameter (nf_fatal = 1)
202 parameter (nf_verbose = 2)
203
204 !
205 ! miscellaneous routines:
206 !
207 character*80 nf_inq_libvers
208 external nf_inq_libvers
209
210 character*80 nf_strerror
211 ! (integer ncerr)
212 external nf_strerror
213
214 logical nf_issyserr
215 ! (integer ncerr)
216 external nf_issyserr
217
218 !
219 ! control routines:
220 !
221 integer nf_inq_base_pe
222 ! (integer ncid,
223 ! integer pe)
224 external nf_inq_base_pe
225
226 integer nf_set_base_pe
227 ! (integer ncid,
228 ! integer pe)
229 external nf_set_base_pe
230
231 integer nf_create
232 ! (character*(*) path,
233 ! integer cmode,
234 ! integer ncid)
235 external nf_create
236
237 integer nf__create
238 ! (character*(*) path,
239 ! integer cmode,
240 ! integer initialsz,
241 ! integer chunksizehint,
242 ! integer ncid)
243 external nf__create
244
245 integer nf__create_mp
246 ! (character*(*) path,
247 ! integer cmode,
248 ! integer initialsz,
249 ! integer basepe,
250 ! integer chunksizehint,
251 ! integer ncid)
252 external nf__create_mp
253
254 integer nf_open
255 ! (character*(*) path,
256 ! integer mode,
257 ! integer ncid)
258 external nf_open
259
260 integer nf__open
261 ! (character*(*) path,
262 ! integer mode,
263 ! integer chunksizehint,
264 ! integer ncid)
265 external nf__open
266
267 integer nf__open_mp
268 ! (character*(*) path,
269 ! integer mode,
270 ! integer basepe,
271 ! integer chunksizehint,
272 ! integer ncid)
273 external nf__open_mp
274
275 integer nf_set_fill
276 ! (integer ncid,
277 ! integer fillmode,
278 ! integer old_mode)
279 external nf_set_fill
280
281 integer nf_set_default_format
282 ! (integer format,
283 ! integer old_format)
284 external nf_set_default_format
285
286 integer nf_redef
287 ! (integer ncid)
288 external nf_redef
289
290 integer nf_enddef
291 ! (integer ncid)
292 external nf_enddef
293
294 integer nf__enddef
295 ! (integer ncid,
296 ! integer h_minfree,
297 ! integer v_align,
298 ! integer v_minfree,
299 ! integer r_align)
300 external nf__enddef
301
302 integer nf_sync
303 ! (integer ncid)
304 external nf_sync
305
306 integer nf_abort
307 ! (integer ncid)
308 external nf_abort
309
310 integer nf_close
311 ! (integer ncid)
312 external nf_close
313
314 integer nf_delete
315 ! (character*(*) ncid)
316 external nf_delete
317
318 !
319 ! general inquiry routines:
320 !
321
322 integer nf_inq
323 ! (integer ncid,
324 ! integer ndims,
325 ! integer nvars,
326 ! integer ngatts,
327 ! integer unlimdimid)
328 external nf_inq
329
330 integer nf_inq_ndims
331 ! (integer ncid,
332 ! integer ndims)
333 external nf_inq_ndims
334
335 integer nf_inq_nvars
336 ! (integer ncid,
337 ! integer nvars)
338 external nf_inq_nvars
339
340 integer nf_inq_natts
341 ! (integer ncid,
342 ! integer ngatts)
343 external nf_inq_natts
344
345 integer nf_inq_unlimdim
346 ! (integer ncid,
347 ! integer unlimdimid)
348 external nf_inq_unlimdim
349
350 integer nf_inq_format
351 ! (integer ncid,
352 ! integer format)
353 external nf_inq_format
354
355 !
356 ! dimension routines:
357 !
358
359 integer nf_def_dim
360 ! (integer ncid,
361 ! character(*) name,
362 ! integer len,
363 ! integer dimid)
364 external nf_def_dim
365
366 integer nf_inq_dimid
367 ! (integer ncid,
368 ! character(*) name,
369 ! integer dimid)
370 external nf_inq_dimid
371
372 integer nf_inq_dim
373 ! (integer ncid,
374 ! integer dimid,
375 ! character(*) name,
376 ! integer len)
377 external nf_inq_dim
378
379 integer nf_inq_dimname
380 ! (integer ncid,
381 ! integer dimid,
382 ! character(*) name)
383 external nf_inq_dimname
384
385 integer nf_inq_dimlen
386 ! (integer ncid,
387 ! integer dimid,
388 ! integer len)
389 external nf_inq_dimlen
390
391 integer nf_rename_dim
392 ! (integer ncid,
393 ! integer dimid,
394 ! character(*) name)
395 external nf_rename_dim
396
397 !
398 ! general attribute routines:
399 !
400
401 integer nf_inq_att
402 ! (integer ncid,
403 ! integer varid,
404 ! character(*) name,
405 ! integer xtype,
406 ! integer len)
407 external nf_inq_att
408
409 integer nf_inq_attid
410 ! (integer ncid,
411 ! integer varid,
412 ! character(*) name,
413 ! integer attnum)
414 external nf_inq_attid
415
416 integer nf_inq_atttype
417 ! (integer ncid,
418 ! integer varid,
419 ! character(*) name,
420 ! integer xtype)
421 external nf_inq_atttype
422
423 integer nf_inq_attlen
424 ! (integer ncid,
425 ! integer varid,
426 ! character(*) name,
427 ! integer len)
428 external nf_inq_attlen
429
430 integer nf_inq_attname
431 ! (integer ncid,
432 ! integer varid,
433 ! integer attnum,
434 ! character(*) name)
435 external nf_inq_attname
436
437 integer nf_copy_att
438 ! (integer ncid_in,
439 ! integer varid_in,
440 ! character(*) name,
441 ! integer ncid_out,
442 ! integer varid_out)
443 external nf_copy_att
444
445 integer nf_rename_att
446 ! (integer ncid,
447 ! integer varid,
448 ! character(*) curname,
449 ! character(*) newname)
450 external nf_rename_att
451
452 integer nf_del_att
453 ! (integer ncid,
454 ! integer varid,
455 ! character(*) name)
456 external nf_del_att
457
458 !
459 ! attribute put/get routines:
460 !
461
462 integer nf_put_att_text
463 ! (integer ncid,
464 ! integer varid,
465 ! character(*) name,
466 ! integer len,
467 ! character(*) text)
468 external nf_put_att_text
469
470 integer nf_get_att_text
471 ! (integer ncid,
472 ! integer varid,
473 ! character(*) name,
474 ! character(*) text)
475 external nf_get_att_text
476
477 integer nf_put_att_int1
478 ! (integer ncid,
479 ! integer varid,
480 ! character(*) name,
481 ! integer xtype,
482 ! integer len,
483 ! nf_int1_t i1vals(1))
484 external nf_put_att_int1
485
486 integer nf_get_att_int1
487 ! (integer ncid,
488 ! integer varid,
489 ! character(*) name,
490 ! nf_int1_t i1vals(1))
491 external nf_get_att_int1
492
493 integer nf_put_att_int2
494 ! (integer ncid,
495 ! integer varid,
496 ! character(*) name,
497 ! integer xtype,
498 ! integer len,
499 ! nf_int2_t i2vals(1))
500 external nf_put_att_int2
501
502 integer nf_get_att_int2
503 ! (integer ncid,
504 ! integer varid,
505 ! character(*) name,
506 ! nf_int2_t i2vals(1))
507 external nf_get_att_int2
508
509 integer nf_put_att_int
510 ! (integer ncid,
511 ! integer varid,
512 ! character(*) name,
513 ! integer xtype,
514 ! integer len,
515 ! integer ivals(1))
516 external nf_put_att_int
517
518 integer nf_get_att_int
519 ! (integer ncid,
520 ! integer varid,
521 ! character(*) name,
522 ! integer ivals(1))
523 external nf_get_att_int
524
525 integer nf_put_att_real
526 ! (integer ncid,
527 ! integer varid,
528 ! character(*) name,
529 ! integer xtype,
530 ! integer len,
531 ! real rvals(1))
532 external nf_put_att_real
533
534 integer nf_get_att_real
535 ! (integer ncid,
536 ! integer varid,
537 ! character(*) name,
538 ! real rvals(1))
539 external nf_get_att_real
540
541 integer nf_put_att_double
542 ! (integer ncid,
543 ! integer varid,
544 ! character(*) name,
545 ! integer xtype,
546 ! integer len,
547 ! double dvals(1))
548 external nf_put_att_double
549
550 integer nf_get_att_double
551 ! (integer ncid,
552 ! integer varid,
553 ! character(*) name,
554 ! double dvals(1))
555 external nf_get_att_double
556
557 !
558 ! general variable routines:
559 !
560
561 integer nf_def_var
562 ! (integer ncid,
563 ! character(*) name,
564 ! integer datatype,
565 ! integer ndims,
566 ! integer dimids(1),
567 ! integer varid)
568 external nf_def_var
569
570 integer nf_inq_var
571 ! (integer ncid,
572 ! integer varid,
573 ! character(*) name,
574 ! integer datatype,
575 ! integer ndims,
576 ! integer dimids(1),
577 ! integer natts)
578 external nf_inq_var
579
580 integer nf_inq_varid
581 ! (integer ncid,
582 ! character(*) name,
583 ! integer varid)
584 external nf_inq_varid
585
586 integer nf_inq_varname
587 ! (integer ncid,
588 ! integer varid,
589 ! character(*) name)
590 external nf_inq_varname
591
592 integer nf_inq_vartype
593 ! (integer ncid,
594 ! integer varid,
595 ! integer xtype)
596 external nf_inq_vartype
597
598 integer nf_inq_varndims
599 ! (integer ncid,
600 ! integer varid,
601 ! integer ndims)
602 external nf_inq_varndims
603
604 integer nf_inq_vardimid
605 ! (integer ncid,
606 ! integer varid,
607 ! integer dimids(1))
608 external nf_inq_vardimid
609
610 integer nf_inq_varnatts
611 ! (integer ncid,
612 ! integer varid,
613 ! integer natts)
614 external nf_inq_varnatts
615
616 integer nf_rename_var
617 ! (integer ncid,
618 ! integer varid,
619 ! character(*) name)
620 external nf_rename_var
621
622 integer nf_copy_var
623 ! (integer ncid_in,
624 ! integer varid,
625 ! integer ncid_out)
626 external nf_copy_var
627
628 !
629 ! entire variable put/get routines:
630 !
631
632 integer nf_put_var_text
633 ! (integer ncid,
634 ! integer varid,
635 ! character(*) text)
636 external nf_put_var_text
637
638 integer nf_get_var_text
639 ! (integer ncid,
640 ! integer varid,
641 ! character(*) text)
642 external nf_get_var_text
643
644 integer nf_put_var_int1
645 ! (integer ncid,
646 ! integer varid,
647 ! nf_int1_t i1vals(1))
648 external nf_put_var_int1
649
650 integer nf_get_var_int1
651 ! (integer ncid,
652 ! integer varid,
653 ! nf_int1_t i1vals(1))
654 external nf_get_var_int1
655
656 integer nf_put_var_int2
657 ! (integer ncid,
658 ! integer varid,
659 ! nf_int2_t i2vals(1))
660 external nf_put_var_int2
661
662 integer nf_get_var_int2
663 ! (integer ncid,
664 ! integer varid,
665 ! nf_int2_t i2vals(1))
666 external nf_get_var_int2
667
668 integer nf_put_var_int
669 ! (integer ncid,
670 ! integer varid,
671 ! integer ivals(1))
672 external nf_put_var_int
673
674 integer nf_get_var_int
675 ! (integer ncid,
676 ! integer varid,
677 ! integer ivals(1))
678 external nf_get_var_int
679
680 integer nf_put_var_real
681 ! (integer ncid,
682 ! integer varid,
683 ! real rvals(1))
684 external nf_put_var_real
685
686 integer nf_get_var_real
687 ! (integer ncid,
688 ! integer varid,
689 ! real rvals(1))
690 external nf_get_var_real
691
692 integer nf_put_var_double
693 ! (integer ncid,
694 ! integer varid,
695 ! doubleprecision dvals(1))
696 external nf_put_var_double
697
698 integer nf_get_var_double
699 ! (integer ncid,
700 ! integer varid,
701 ! doubleprecision dvals(1))
702 external nf_get_var_double
703
704 !
705 ! single variable put/get routines:
706 !
707
708 integer nf_put_var1_text
709 ! (integer ncid,
710 ! integer varid,
711 ! integer index(1),
712 ! character*1 text)
713 external nf_put_var1_text
714
715 integer nf_get_var1_text
716 ! (integer ncid,
717 ! integer varid,
718 ! integer index(1),
719 ! character*1 text)
720 external nf_get_var1_text
721
722 integer nf_put_var1_int1
723 ! (integer ncid,
724 ! integer varid,
725 ! integer index(1),
726 ! nf_int1_t i1val)
727 external nf_put_var1_int1
728
729 integer nf_get_var1_int1
730 ! (integer ncid,
731 ! integer varid,
732 ! integer index(1),
733 ! nf_int1_t i1val)
734 external nf_get_var1_int1
735
736 integer nf_put_var1_int2
737 ! (integer ncid,
738 ! integer varid,
739 ! integer index(1),
740 ! nf_int2_t i2val)
741 external nf_put_var1_int2
742
743 integer nf_get_var1_int2
744 ! (integer ncid,
745 ! integer varid,
746 ! integer index(1),
747 ! nf_int2_t i2val)
748 external nf_get_var1_int2
749
750 integer nf_put_var1_int
751 ! (integer ncid,
752 ! integer varid,
753 ! integer index(1),
754 ! integer ival)
755 external nf_put_var1_int
756
757 integer nf_get_var1_int
758 ! (integer ncid,
759 ! integer varid,
760 ! integer index(1),
761 ! integer ival)
762 external nf_get_var1_int
763
764 integer nf_put_var1_real
765 ! (integer ncid,
766 ! integer varid,
767 ! integer index(1),
768 ! real rval)
769 external nf_put_var1_real
770
771 integer nf_get_var1_real
772 ! (integer ncid,
773 ! integer varid,
774 ! integer index(1),
775 ! real rval)
776 external nf_get_var1_real
777
778 integer nf_put_var1_double
779 ! (integer ncid,
780 ! integer varid,
781 ! integer index(1),
782 ! doubleprecision dval)
783 external nf_put_var1_double
784
785 integer nf_get_var1_double
786 ! (integer ncid,
787 ! integer varid,
788 ! integer index(1),
789 ! doubleprecision dval)
790 external nf_get_var1_double
791
792 !
793 ! variable array put/get routines:
794 !
795
796 integer nf_put_vara_text
797 ! (integer ncid,
798 ! integer varid,
799 ! integer start(1),
800 ! integer count(1),
801 ! character(*) text)
802 external nf_put_vara_text
803
804 integer nf_get_vara_text
805 ! (integer ncid,
806 ! integer varid,
807 ! integer start(1),
808 ! integer count(1),
809 ! character(*) text)
810 external nf_get_vara_text
811
812 integer nf_put_vara_int1
813 ! (integer ncid,
814 ! integer varid,
815 ! integer start(1),
816 ! integer count(1),
817 ! nf_int1_t i1vals(1))
818 external nf_put_vara_int1
819
820 integer nf_get_vara_int1
821 ! (integer ncid,
822 ! integer varid,
823 ! integer start(1),
824 ! integer count(1),
825 ! nf_int1_t i1vals(1))
826 external nf_get_vara_int1
827
828 integer nf_put_vara_int2
829 ! (integer ncid,
830 ! integer varid,
831 ! integer start(1),
832 ! integer count(1),
833 ! nf_int2_t i2vals(1))
834 external nf_put_vara_int2
835
836 integer nf_get_vara_int2
837 ! (integer ncid,
838 ! integer varid,
839 ! integer start(1),
840 ! integer count(1),
841 ! nf_int2_t i2vals(1))
842 external nf_get_vara_int2
843
844 integer nf_put_vara_int
845 ! (integer ncid,
846 ! integer varid,
847 ! integer start(1),
848 ! integer count(1),
849 ! integer ivals(1))
850 external nf_put_vara_int
851
852 integer nf_get_vara_int
853 ! (integer ncid,
854 ! integer varid,
855 ! integer start(1),
856 ! integer count(1),
857 ! integer ivals(1))
858 external nf_get_vara_int
859
860 integer nf_put_vara_real
861 ! (integer ncid,
862 ! integer varid,
863 ! integer start(1),
864 ! integer count(1),
865 ! real rvals(1))
866 external nf_put_vara_real
867
868 integer nf_get_vara_real
869 ! (integer ncid,
870 ! integer varid,
871 ! integer start(1),
872 ! integer count(1),
873 ! real rvals(1))
874 external nf_get_vara_real
875
876 integer nf_put_vara_double
877 ! (integer ncid,
878 ! integer varid,
879 ! integer start(1),
880 ! integer count(1),
881 ! doubleprecision dvals(1))
882 external nf_put_vara_double
883
884 integer nf_get_vara_double
885 ! (integer ncid,
886 ! integer varid,
887 ! integer start(1),
888 ! integer count(1),
889 ! doubleprecision dvals(1))
890 external nf_get_vara_double
891
892 !
893 ! strided variable put/get routines:
894 !
895
896 integer nf_put_vars_text
897 ! (integer ncid,
898 ! integer varid,
899 ! integer start(1),
900 ! integer count(1),
901 ! integer stride(1),
902 ! character(*) text)
903 external nf_put_vars_text
904
905 integer nf_get_vars_text
906 ! (integer ncid,
907 ! integer varid,
908 ! integer start(1),
909 ! integer count(1),
910 ! integer stride(1),
911 ! character(*) text)
912 external nf_get_vars_text
913
914 integer nf_put_vars_int1
915 ! (integer ncid,
916 ! integer varid,
917 ! integer start(1),
918 ! integer count(1),
919 ! integer stride(1),
920 ! nf_int1_t i1vals(1))
921 external nf_put_vars_int1
922
923 integer nf_get_vars_int1
924 ! (integer ncid,
925 ! integer varid,
926 ! integer start(1),
927 ! integer count(1),
928 ! integer stride(1),
929 ! nf_int1_t i1vals(1))
930 external nf_get_vars_int1
931
932 integer nf_put_vars_int2
933 ! (integer ncid,
934 ! integer varid,
935 ! integer start(1),
936 ! integer count(1),
937 ! integer stride(1),
938 ! nf_int2_t i2vals(1))
939 external nf_put_vars_int2
940
941 integer nf_get_vars_int2
942 ! (integer ncid,
943 ! integer varid,
944 ! integer start(1),
945 ! integer count(1),
946 ! integer stride(1),
947 ! nf_int2_t i2vals(1))
948 external nf_get_vars_int2
949
950 integer nf_put_vars_int
951 ! (integer ncid,
952 ! integer varid,
953 ! integer start(1),
954 ! integer count(1),
955 ! integer stride(1),
956 ! integer ivals(1))
957 external nf_put_vars_int
958
959 integer nf_get_vars_int
960 ! (integer ncid,
961 ! integer varid,
962 ! integer start(1),
963 ! integer count(1),
964 ! integer stride(1),
965 ! integer ivals(1))
966 external nf_get_vars_int
967
968 integer nf_put_vars_real
969 ! (integer ncid,
970 ! integer varid,
971 ! integer start(1),
972 ! integer count(1),
973 ! integer stride(1),
974 ! real rvals(1))
975 external nf_put_vars_real
976
977 integer nf_get_vars_real
978 ! (integer ncid,
979 ! integer varid,
980 ! integer start(1),
981 ! integer count(1),
982 ! integer stride(1),
983 ! real rvals(1))
984 external nf_get_vars_real
985
986 integer nf_put_vars_double
987 ! (integer ncid,
988 ! integer varid,
989 ! integer start(1),
990 ! integer count(1),
991 ! integer stride(1),
992 ! doubleprecision dvals(1))
993 external nf_put_vars_double
994
995 integer nf_get_vars_double
996 ! (integer ncid,
997 ! integer varid,
998 ! integer start(1),
999 ! integer count(1),
1000 ! integer stride(1),
1001 ! doubleprecision dvals(1))
1002 external nf_get_vars_double
1003
1004 !
1005 ! mapped variable put/get routines:
1006 !
1007
1008 integer nf_put_varm_text
1009 ! (integer ncid,
1010 ! integer varid,
1011 ! integer start(1),
1012 ! integer count(1),
1013 ! integer stride(1),
1014 ! integer imap(1),
1015 ! character(*) text)
1016 external nf_put_varm_text
1017
1018 integer nf_get_varm_text
1019 ! (integer ncid,
1020 ! integer varid,
1021 ! integer start(1),
1022 ! integer count(1),
1023 ! integer stride(1),
1024 ! integer imap(1),
1025 ! character(*) text)
1026 external nf_get_varm_text
1027
1028 integer nf_put_varm_int1
1029 ! (integer ncid,
1030 ! integer varid,
1031 ! integer start(1),
1032 ! integer count(1),
1033 ! integer stride(1),
1034 ! integer imap(1),
1035 ! nf_int1_t i1vals(1))
1036 external nf_put_varm_int1
1037
1038 integer nf_get_varm_int1
1039 ! (integer ncid,
1040 ! integer varid,
1041 ! integer start(1),
1042 ! integer count(1),
1043 ! integer stride(1),
1044 ! integer imap(1),
1045 ! nf_int1_t i1vals(1))
1046 external nf_get_varm_int1
1047
1048 integer nf_put_varm_int2
1049 ! (integer ncid,
1050 ! integer varid,
1051 ! integer start(1),
1052 ! integer count(1),
1053 ! integer stride(1),
1054 ! integer imap(1),
1055 ! nf_int2_t i2vals(1))
1056 external nf_put_varm_int2
1057
1058 integer nf_get_varm_int2
1059 ! (integer ncid,
1060 ! integer varid,
1061 ! integer start(1),
1062 ! integer count(1),
1063 ! integer stride(1),
1064 ! integer imap(1),
1065 ! nf_int2_t i2vals(1))
1066 external nf_get_varm_int2
1067
1068 integer nf_put_varm_int
1069 ! (integer ncid,
1070 ! integer varid,
1071 ! integer start(1),
1072 ! integer count(1),
1073 ! integer stride(1),
1074 ! integer imap(1),
1075 ! integer ivals(1))
1076 external nf_put_varm_int
1077
1078 integer nf_get_varm_int
1079 ! (integer ncid,
1080 ! integer varid,
1081 ! integer start(1),
1082 ! integer count(1),
1083 ! integer stride(1),
1084 ! integer imap(1),
1085 ! integer ivals(1))
1086 external nf_get_varm_int
1087
1088 integer nf_put_varm_real
1089 ! (integer ncid,
1090 ! integer varid,
1091 ! integer start(1),
1092 ! integer count(1),
1093 ! integer stride(1),
1094 ! integer imap(1),
1095 ! real rvals(1))
1096 external nf_put_varm_real
1097
1098 integer nf_get_varm_real
1099 ! (integer ncid,
1100 ! integer varid,
1101 ! integer start(1),
1102 ! integer count(1),
1103 ! integer stride(1),
1104 ! integer imap(1),
1105 ! real rvals(1))
1106 external nf_get_varm_real
1107
1108 integer nf_put_varm_double
1109 ! (integer ncid,
1110 ! integer varid,
1111 ! integer start(1),
1112 ! integer count(1),
1113 ! integer stride(1),
1114 ! integer imap(1),
1115 ! doubleprecision dvals(1))
1116 external nf_put_varm_double
1117
1118 integer nf_get_varm_double
1119 ! (integer ncid,
1120 ! integer varid,
1121 ! integer start(1),
1122 ! integer count(1),
1123 ! integer stride(1),
1124 ! integer imap(1),
1125 ! doubleprecision dvals(1))
1126 external nf_get_varm_double
1127
1128
1129 ! NetCDF-2.
1130 !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1131 ! begin netcdf 2.4 backward compatibility:
1132 !
1133
1134 !
1135 ! functions in the fortran interface
1136 !
1137 integer nccre
1138 integer ncopn
1139 integer ncddef
1140 integer ncdid
1141 integer ncvdef
1142 integer ncvid
1143 integer nctlen
1144 integer ncsfil
1145
1146 external nccre
1147 external ncopn
1148 external ncddef
1149 external ncdid
1150 external ncvdef
1151 external ncvid
1152 external nctlen
1153 external ncsfil
1154
1155
1156 integer ncrdwr
1157 integer nccreat
1158 integer ncexcl
1159 integer ncindef
1160 integer ncnsync
1161 integer nchsync
1162 integer ncndirty
1163 integer nchdirty
1164 integer nclink
1165 integer ncnowrit
1166 integer ncwrite
1167 integer ncclob
1168 integer ncnoclob
1169 integer ncglobal
1170 integer ncfill
1171 integer ncnofill
1172 integer maxncop
1173 integer maxncdim
1174 integer maxncatt
1175 integer maxncvar
1176 integer maxncnam
1177 integer maxvdims
1178 integer ncnoerr
1179 integer ncebadid
1180 integer ncenfile
1181 integer nceexist
1182 integer nceinval
1183 integer nceperm
1184 integer ncenotin
1185 integer nceindef
1186 integer ncecoord
1187 integer ncemaxds
1188 integer ncename
1189 integer ncenoatt
1190 integer ncemaxat
1191 integer ncebadty
1192 integer ncebadd
1193 integer ncests
1194 integer nceunlim
1195 integer ncemaxvs
1196 integer ncenotvr
1197 integer nceglob
1198 integer ncenotnc
1199 integer ncfoobar
1200 integer ncsyserr
1201 integer ncfatal
1202 integer ncverbos
1203 integer ncentool
1204
1205
1206 !
1207 ! netcdf data types:
1208 !
1209 integer ncbyte
1210 integer ncchar
1211 integer ncshort
1212 integer nclong
1213 integer ncfloat
1214 integer ncdouble
1215
1216 parameter(ncbyte = 1)
1217 parameter(ncchar = 2)
1218 parameter(ncshort = 3)
1219 parameter(nclong = 4)
1220 parameter(ncfloat = 5)
1221 parameter(ncdouble = 6)
1222
1223 !
1224 ! masks for the struct nc flag field; passed in as 'mode' arg to
1225 ! nccreate and ncopen.
1226 !
1227
1228 ! read/write, 0 => readonly
1229 parameter(ncrdwr = 1)
1230 ! in create phase, cleared by ncendef
1231 parameter(nccreat = 2)
1232 ! on create destroy existing file
1233 parameter(ncexcl = 4)
1234 ! in define mode, cleared by ncendef
1235 parameter(ncindef = 8)
1236 ! synchronise numrecs on change (x'10')
1237 parameter(ncnsync = 16)
1238 ! synchronise whole header on change (x'20')
1239 parameter(nchsync = 32)
1240 ! numrecs has changed (x'40')
1241 parameter(ncndirty = 64)
1242 ! header info has changed (x'80')
1243 parameter(nchdirty = 128)
1244 ! prefill vars on endef and increase of record, the default behavior
1245 parameter(ncfill = 0)
1246 ! do not fill vars on endef and increase of record (x'100')
1247 parameter(ncnofill = 256)
1248 ! isa link (x'8000')
1249 parameter(nclink = 32768)
1250
1251 !
1252 ! 'mode' arguments for nccreate and ncopen
1253 !
1254 parameter(ncnowrit = 0)
1255 parameter(ncwrite = ncrdwr)
1256 parameter(ncclob = nf_clobber)
1257 parameter(ncnoclob = nf_noclobber)
1258
1259 !
1260 ! 'size' argument to ncdimdef for an unlimited dimension
1261 !
1262 integer ncunlim
1263 parameter(ncunlim = 0)
1264
1265 !
1266 ! attribute id to put/get a global attribute
1267 !
1268 parameter(ncglobal = 0)
1269
1270 !
1271 ! advisory maximums:
1272 !
1273 parameter(maxncop = 64)
1274 parameter(maxncdim = 1024)
1275 parameter(maxncatt = 8192)
1276 parameter(maxncvar = 8192)
1277 ! not enforced
1278 parameter(maxncnam = 256)
1279 parameter(maxvdims = maxncdim)
1280
1281 !
1282 ! global netcdf error status variable
1283 ! initialized in error.c
1284 !
1285
1286 ! no error
1287 parameter(ncnoerr = nf_noerr)
1288 ! not a netcdf id
1289 parameter(ncebadid = nf_ebadid)
1290 ! too many netcdfs open
1291 parameter(ncenfile = -31) ! nc_syserr
1292 ! netcdf file exists && ncnoclob
1293 parameter(nceexist = nf_eexist)
1294 ! invalid argument
1295 parameter(nceinval = nf_einval)
1296 ! write to read only
1297 parameter(nceperm = nf_eperm)
1298 ! operation not allowed in data mode
1299 parameter(ncenotin = nf_enotindefine )
1300 ! operation not allowed in define mode
1301 parameter(nceindef = nf_eindefine)
1302 ! coordinates out of domain
1303 parameter(ncecoord = nf_einvalcoords)
1304 ! maxncdims exceeded
1305 parameter(ncemaxds = nf_emaxdims)
1306 ! string match to name in use
1307 parameter(ncename = nf_enameinuse)
1308 ! attribute not found
1309 parameter(ncenoatt = nf_enotatt)
1310 ! maxncattrs exceeded
1311 parameter(ncemaxat = nf_emaxatts)
1312 ! not a netcdf data type
1313 parameter(ncebadty = nf_ebadtype)
1314 ! invalid dimension id
1315 parameter(ncebadd = nf_ebaddim)
1316 ! ncunlimited in the wrong index
1317 parameter(nceunlim = nf_eunlimpos)
1318 ! maxncvars exceeded
1319 parameter(ncemaxvs = nf_emaxvars)
1320 ! variable not found
1321 parameter(ncenotvr = nf_enotvar)
1322 ! action prohibited on ncglobal varid
1323 parameter(nceglob = nf_eglobal)
1324 ! not a netcdf file
1325 parameter(ncenotnc = nf_enotnc)
1326 parameter(ncests = nf_ests)
1327 parameter (ncentool = nf_emaxname)
1328 parameter(ncfoobar = 32)
1329 parameter(ncsyserr = -31)
1330
1331 !
1332 ! global options variable. used to determine behavior of error handler.
1333 ! initialized in lerror.c
1334 !
1335 parameter(ncfatal = 1)
1336 parameter(ncverbos = 2)
1337
1338 !
1339 ! default fill values. these must be the same as in the c interface.
1340 !
1341 integer filbyte
1342 integer filchar
1343 integer filshort
1344 integer fillong
1345 real filfloat
1346 doubleprecision fildoub
1347
1348 parameter (filbyte = -127)
1349 parameter (filchar = 0)
1350 parameter (filshort = -32767)
1351 parameter (fillong = -2147483647)
1352 parameter (filfloat = 9.9692099683868690e+36)
1353 parameter (fildoub = 9.9692099683868690e+36)
1354 !=======================================================================
1355 !
1356 ! Auteur: F. Hourdin
1357 ! -------
1358 !
1359 ! Objet:
1360 ! ------
1361 ! Light interface for netcdf outputs. can be used outside LMDZ
1362 !
1363 !=======================================================================
1364
1365 integer imax,jmax,lmax,nid
1366 INTEGER dim_coord(4)
1367 real iotd_ts,iotd_t0
1368 integer :: n_names_iotd_def
1369 character*20, dimension(200) :: names_iotd_def
1370 character*20 :: un_nom
1371
1372 common/iotd_ca/imax,jmax,lmax,nid,dim_coord,iotd_t0,iotd_ts
1373 common/iotd_cb/n_names_iotd_def,names_iotd_def
1374 !$OMP THREADPRIVATE(/iotd_ca/)
1375 !$OMP THREADPRIVATE(/iotd_cb/)
1376
1377 ! Arguments:
1378 ! ----------
1379
1380 integer iim,jjm,llm
1381 real prlon(iim),prlat(jjm),pcoordv(llm),timestep,t0
1382 INTEGER id_FOCE
1383 INTEGER jour0,mois0,an0
1384 CHARACTER*(*) calendrier
1385
1386 integer corner(4),edges(4),ndim
1387 real px(1000)
1388 character (len=10) :: nom
1389 real*4 rlon(iim),rlat(jjm),coordv(llm)
1390
1391 ! Local:
1392 ! ------
1393 CHARACTER*3,DIMENSION(12) :: cmois=(/'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'/)
1394 CHARACTER*10 date0
1395 CHARACTER*11 date0b
1396
1397 INTEGER :: ierr
1398
1399 integer :: nvarid
1400 integer, dimension(2) :: id
1401
1402 character*(*) fichnom
1403
1404 real pi
1405
1406 iotd_ts=timestep
1407 iotd_t0=t0
1408 print*,'iotd_ini, ',timestep,iotd_ts
1409 imax=iim
1410 jmax=jjm
1411 lmax=llm
1412 ! Utile pour passer en real*4 pour les ecritures
1413 rlon=prlon
1414 rlat=prlat
1415 coordv=pcoordv
1416
1417
1418 !-----------------------------------------------------------------------
1419 ! Possibilité de spécifier une liste de variables à sortir
1420 ! dans iotd.def
1421 ! Si iotd.def existe et est non vide,
1422 ! seules les variables faisant à la fois l'objet d'un call iotd_ecrit
1423 ! et étant spécifiées dans iotd.def sont sorties.
1424 ! Sinon, toutes les variables faisant l'objet d'un call iotd_ecrit
1425 ! sont sorties
1426 !-----------------------------------------------------------------------
1427 n_names_iotd_def=0
1428 open(99,file='iotd.def',form='formatted',status='old',iostat=ierr)
1429 if ( ierr.eq.0 ) then
1430 ierr=0
1431 do while (ierr==0)
1432 read(99,*,iostat=ierr) un_nom
1433 if (ierr==0) then
1434 n_names_iotd_def=n_names_iotd_def+1
1435 names_iotd_def(n_names_iotd_def)=un_nom
1436 endif
1437 enddo
1438 endif
1439 print*,n_names_iotd_def,names_iotd_def(1:n_names_iotd_def)
1440 close(99)
1441
1442
1443 pi=2.*asin(1.)
1444
1445 ! Define dimensions
1446
1447 ! Create the NetCDF file
1448 ierr=NF_CREATE(fichnom, NF_CLOBBER, nid)
1449 ierr=NF_DEF_DIM(nid, "lon", iim, dim_coord(1))
1450 ierr=NF_DEF_DIM(nid, "lat", jjm, dim_coord(2))
1451 ierr=NF_DEF_DIM(nid, "lev", llm, dim_coord(3))
1452 ierr=NF_DEF_DIM(nid,"time",NF_UNLIMITED,dim_coord(4))
1453 ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'Conventions',6,"CF-1.1")
1454 !ierr = NF_PUT_ATT_TEXT(nid,NF_GLOBAL,'file_name',TRIM(fname))
1455 ierr=NF_ENDDEF(nid)
1456
1457 ! Switch out of NetCDF Define mode
1458
1459
1460 ierr=NF_ENDDEF(nid)
1461 !
1462 ! Contol parameters for this run
1463 ! ---- longitude -----------
1464
1465 ierr=NF_REDEF(nid)
1466 ierr=NF_DEF_VAR(nid,"lon", NF_FLOAT, 1, dim_coord(1),nvarid)
1467 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'X')
1468 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east")
1469 ierr=NF_ENDDEF(nid)
1470 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlon)
1471 print*,ierr
1472
1473 ! ---- latitude ------------
1474 ierr=NF_REDEF(nid)
1475 ierr=NF_DEF_VAR(nid, "lat", NF_FLOAT, 1, dim_coord(2),nvarid)
1476 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'Y')
1477 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north")
1478 ierr=NF_ENDDEF(nid)
1479 ierr=NF_PUT_VAR_REAL(nid,nvarid,rlat)
1480 !
1481 ! ---- vertical ------------
1482 ierr=NF_REDEF(nid)
1483 ierr=NF_DEF_VAR(nid, "lev", NF_FLOAT, 1,dim_coord(3),nvarid)
1484 ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"vert level")
1485 if ( coordv(2)>coordv(1) ) then
1486 ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",10,"pseudo-alt")
1487 ierr=NF_PUT_ATT_TEXT(nid,nvarid,'positive',2,"up")
1488 else
1489 ierr=NF_PUT_ATT_TEXT(nid,nvarid,"long_name",8,"pressure")
1490 ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',4,"down")
1491 endif
1492 ierr=NF_ENDDEF(nid)
1493 ierr=NF_PUT_VAR_REAL(nid,nvarid,coordv)
1494
1495 !
1496 ! ---- time ----------------
1497 ierr=NF_REDEF(nid)
1498 ! Define the 'time' variable
1499 ierr=NF_DEF_VAR(nid, "time", NF_FLOAT, 1, dim_coord(4),nvarid)
1500 ! ! Add attributes
1501 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'axis',1,'T')
1502 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'standard_name',4,'time')
1503 WRITE(date0,'(i4.4,"-",i2.2,"-",i2.2)') an0,mois0,jour0
1504 ierr=NF_PUT_ATT_TEXT(nid, nvarid,'units',33, &
1505 & "seconds since "//date0//" 00:00:00")
1506 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',9,calendrier)
1507 !ierr = NF_PUT_ATT_TEXT(nid,nvarid,'calendar',4,'360d')
1508 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'title',4,'Time')
1509 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'long_name',9,'Time axis')
1510 WRITE(date0b,'(i4.4,"-",a3,"-",i2.2)') an0,cmois(mois0),jour0
1511 ierr = NF_PUT_ATT_TEXT(nid,nvarid,'time_origin',20, &
1512 & date0b//' 00:00:00')
1513 ierr=NF_ENDDEF(nid)
1514
1515
1516 END
1517