GCC Code Coverage Report


Directory: ./
File: phys/iotd_ecrit.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 50 0.0%
Branches: 0 28 0.0%

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