1 | MODULE nc4interface |
---|
2 | !- |
---|
3 | !- |
---|
4 | ! This software is governed by the CeCILL license |
---|
5 | ! See IOIPSL/IOIPSL_License_CeCILL.txt |
---|
6 | !--------------------------------------------------------------------- |
---|
7 | #if ! defined key_netcdf4 |
---|
8 | !!-------------------------------------------------------------------- |
---|
9 | !! NOT 'key_netcdf4' Defines dummy routines for netcdf4 |
---|
10 | !! calls when compiling without netcdf4 libraries |
---|
11 | !!-------------------------------------------------------------------- |
---|
12 | !- netcdf4 chunking control structure |
---|
13 | !- (optional on histbeg and histend calls) |
---|
14 | TYPE, PUBLIC :: snc4_ctl |
---|
15 | SEQUENCE |
---|
16 | INTEGER :: ni |
---|
17 | INTEGER :: nj |
---|
18 | INTEGER :: nk |
---|
19 | LOGICAL :: luse |
---|
20 | END TYPE snc4_ctl |
---|
21 | |
---|
22 | CONTAINS |
---|
23 | !=== |
---|
24 | SUBROUTINE GET_NF90_SYMBOL(sym_name, ivalue) |
---|
25 | CHARACTER(len=*), INTENT(in) :: sym_name |
---|
26 | INTEGER, INTENT(out) :: ivalue |
---|
27 | ivalue = -999 |
---|
28 | END SUBROUTINE GET_NF90_SYMBOL |
---|
29 | INTEGER FUNCTION SET_NF90_DEF_VAR_CHUNKING(idum1, idum2, idum3, iarr1) |
---|
30 | !!-------------------------------------------------------------------- |
---|
31 | !! *** SUBROUTINE NF90_DEF_VAR_CHUNKING *** |
---|
32 | !! |
---|
33 | !! ** Purpose : Dummy NetCDF4 routine to enable compiling with NetCDF3 libraries |
---|
34 | !!-------------------------------------------------------------------- |
---|
35 | INTEGER, INTENT(in) :: idum1, idum2, idum3 |
---|
36 | INTEGER, DIMENSION(4), INTENT(in) :: iarr1 |
---|
37 | WRITE(*,*) 'Warning: Attempt to chunk output variable without NetCDF4 support' |
---|
38 | SET_NF90_DEF_VAR_CHUNKING = -1 |
---|
39 | END FUNCTION SET_NF90_DEF_VAR_CHUNKING |
---|
40 | |
---|
41 | INTEGER FUNCTION SET_NF90_DEF_VAR_DEFLATE(idum1, idum2, idum3, idum4, idum5) |
---|
42 | !!-------------------------------------------------------------------- |
---|
43 | !! *** SUBROUTINE NF90_DEF_VAR_DEFLATE *** |
---|
44 | !! |
---|
45 | !! ** Purpose : Dummy NetCDF4 routine to enable compiling with NetCDF3 libraries |
---|
46 | !!-------------------------------------------------------------------- |
---|
47 | INTEGER, INTENT(in) :: idum1, idum2, idum3, idum4, idum5 |
---|
48 | WRITE(*,*) 'Warning: Attempt to compress output variable without NetCDF4 support' |
---|
49 | SET_NF90_DEF_VAR_DEFLATE = -1 |
---|
50 | END FUNCTION SET_NF90_DEF_VAR_DEFLATE |
---|
51 | #else |
---|
52 | !!-------------------------------------------------------------------- |
---|
53 | !! 'key_netcdf4' Dummy module (usually defines dummy routines for netcdf4 |
---|
54 | !! calls when compiling without netcdf4 libraries |
---|
55 | !!-------------------------------------------------------------------- |
---|
56 | |
---|
57 | USE netcdf |
---|
58 | |
---|
59 | !- netcdf4 chunking control structure |
---|
60 | !- (optional on histbeg and histend calls) |
---|
61 | !$AGRIF_DO_NOT_TREAT |
---|
62 | TYPE, PUBLIC :: snc4_ctl |
---|
63 | SEQUENCE |
---|
64 | INTEGER :: ni |
---|
65 | INTEGER :: nj |
---|
66 | INTEGER :: nk |
---|
67 | LOGICAL :: luse |
---|
68 | END TYPE snc4_ctl |
---|
69 | !$AGRIF_END_DO_NOT_TREAT |
---|
70 | |
---|
71 | CONTAINS |
---|
72 | INTEGER FUNCTION SET_NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) |
---|
73 | !!-------------------------------------------------------------------- |
---|
74 | !! *** SUBROUTINE NF90_DEF_VAR_CHUNKING *** |
---|
75 | !! |
---|
76 | !! ** Purpose : Interface NetCDF4 routine to enable compiling with NetCDF4 libraries |
---|
77 | !! but no key_netcdf4 |
---|
78 | !!-------------------------------------------------------------------- |
---|
79 | INTEGER, INTENT(in) :: nfid |
---|
80 | INTEGER, INTENT(in) :: nvid |
---|
81 | INTEGER, INTENT(in) :: ichunkalg |
---|
82 | INTEGER, DIMENSION(:), INTENT(in) :: ichunksz |
---|
83 | !! |
---|
84 | INTEGER :: iret |
---|
85 | !! |
---|
86 | iret = NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) |
---|
87 | SET_NF90_DEF_VAR_CHUNKING = iret |
---|
88 | END FUNCTION SET_NF90_DEF_VAR_CHUNKING |
---|
89 | |
---|
90 | INTEGER FUNCTION SET_NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) |
---|
91 | !!-------------------------------------------------------------------- |
---|
92 | !! *** SUBROUTINE NF90_DEF_VAR_DEFLATE *** |
---|
93 | !! |
---|
94 | !! ** Purpose : Interface NetCDF4 routine to enable compiling with NetCDF4 libraries |
---|
95 | !! but no key_netcdf4 |
---|
96 | !!-------------------------------------------------------------------- |
---|
97 | INTEGER, INTENT(in) :: nfid |
---|
98 | INTEGER, INTENT(in) :: nvid |
---|
99 | INTEGER, INTENT(in) :: ishuffle |
---|
100 | INTEGER, INTENT(in) :: ideflate |
---|
101 | INTEGER, INTENT(in) :: ideflate_level |
---|
102 | !! |
---|
103 | INTEGER :: iret |
---|
104 | !! |
---|
105 | iret = NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) |
---|
106 | SET_NF90_DEF_VAR_DEFLATE = iret |
---|
107 | END FUNCTION SET_NF90_DEF_VAR_DEFLATE |
---|
108 | |
---|
109 | SUBROUTINE GET_NF90_SYMBOL(sym_name, ivalue) |
---|
110 | CHARACTER(len=*), INTENT(in) :: sym_name |
---|
111 | INTEGER, INTENT(out) :: ivalue |
---|
112 | SELECT CASE (sym_name) |
---|
113 | CASE ("NF90_HDF5") |
---|
114 | ivalue = NF90_HDF5 |
---|
115 | CASE DEFAULT |
---|
116 | WRITE(*,*) "Warning: unknown case in GET_NF90_SYMBOL" |
---|
117 | END SELECT |
---|
118 | END SUBROUTINE GET_NF90_SYMBOL |
---|
119 | #endif |
---|
120 | |
---|
121 | !------------------ |
---|
122 | END MODULE nc4interface |
---|