source: NEMO/trunk/ext/IOIPSL/src/nc4interface.F90 @ 9596

Last change on this file since 9596 was 3294, checked in by rblod, 10 years ago

Merge of 3.4beta into the trunk

File size: 5.0 KB
Line 
1MODULE 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
24CONTAINS
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
73CONTAINS
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!------------------
124END MODULE nc4interface
Note: See TracBrowser for help on using the repository browser.