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