Philippe 25/03/2016: add kind=IDCDF_KIND for NetCDF integers (necessary to use NetCDF...
authorPhilippe Wautelet <philippe.wautelet@aero.obs-mip.fr>
Fri, 25 Mar 2016 14:04:41 +0000 (14:04 +0000)
committerPhilippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Thu, 19 May 2016 14:44:49 +0000 (16:44 +0200)
15 files changed:
src/LIB/SURCOUCHE/src/modd_netcdf.f90
src/LIB/SURCOUCHE/src/mode_fm.f90
src/LIB/SURCOUCHE/src/mode_io.f90
src/LIB/SURCOUCHE/src/mode_netcdf.f90
src/Makefile
src/Makefile.MESONH.mk
src/Rules.AIX64.mk
src/Rules.BG.mk
src/Rules.BGQ.mk
src/Rules.LXcray.mk
src/Rules.LXg95.mk
src/Rules.LXgfortran.mk
src/Rules.LXifort.mk
src/Rules.LXpgi.mk
src/Rules.SX8.mk

index 64658b3..b38bb0c 100644 (file)
@@ -1,8 +1,12 @@
 MODULE MODD_NETCDF
 IMPLICIT NONE 
 
+INCLUDE 'netcdf.inc'
+
+INTEGER,PARAMETER :: IDCDF_KIND = SELECTED_INT_KIND(8)
+
 TYPE IOCDF
-   INTEGER :: NCID
+   INTEGER(KIND=IDCDF_KIND) :: NCID
    TYPE(DIMCDF), POINTER :: DIMX
    TYPE(DIMCDF), POINTER :: DIMY
    TYPE(DIMCDF), POINTER :: DIMZ
@@ -11,10 +15,10 @@ TYPE IOCDF
 END TYPE IOCDF
 
 TYPE DIMCDF
-   CHARACTER(LEN=8)      :: NAME
-   INTEGER               :: LEN
-   INTEGER               :: ID
-   TYPE(DIMCDF), POINTER :: NEXT
+   CHARACTER(LEN=8)         :: NAME
+   INTEGER(KIND=IDCDF_KIND) :: LEN
+   INTEGER(KIND=IDCDF_KIND) :: ID
+   TYPE(DIMCDF), POINTER    :: NEXT
 END TYPE DIMCDF
 
 END MODULE MODD_NETCDF
index 787588e..6e98986 100644 (file)
@@ -135,6 +135,7 @@ USE MODE_IO_ll, ONLY : OPEN_ll,GCONFIO
 USE MODD_CONFZ,ONLY  : NB_PROCIO_R,NB_PROCIO_W
 !JUANZ
 #if defined(MNH_IOCDF4)
+USE MODD_NETCDF
 USE MODE_NETCDF
 #endif
 CHARACTER(LEN=*),INTENT(IN) ::HFILEM  ! name of the file.
@@ -154,7 +155,7 @@ LOGICAL,         INTENT(IN),  OPTIONAL :: OPARALLELIO
 !
 !   Local variable
 !
-INTEGER                 :: INCERR,IROWF,IRESP,INUMBR,IFMFNL
+INTEGER                 :: IROWF,IRESP,INUMBR,IFMFNL
 CHARACTER(LEN=JPFINL)   :: YFNDES,YFNLFI
 LOGICAL                 :: GSTATS
 LOGICAL, SAVE           :: GSFIRST=.TRUE.
@@ -169,6 +170,9 @@ LOGICAL               :: GNAMFI8,GFATER8,GSTATS8
 INTEGER               :: INB_PROCIO
 !JUAN
 LOGICAL               :: GPARALLELIO
+#if defined(MNH_IOCDF4)
+INTEGER(KIND=IDCDF_KIND) :: INCERR
+#endif
 
 IF ( PRESENT(OPARALLELIO) ) THEN
   GPARALLELIO = OPARALLELIO
index 66614cb..6708457 100644 (file)
@@ -222,6 +222,7 @@ CONTAINS
        KMELEV,&
        OPARALLELIO)
 #if defined(MNH_IOCDF4)
+  USE MODD_NETCDF
   USE MODE_NETCDF
 #endif
   USE MODD_IO_ll
@@ -273,6 +274,7 @@ CONTAINS
     CHARACTER(len=20)    :: YACTION
     CHARACTER(len=20)    :: YMODE
     INTEGER              :: IOS,IERR
+    INTEGER(KIND=IDCDF_KIND) :: IOSCDF
     INTEGER              :: ICOMM
     INTEGER              :: ICMPRES
     TYPE(FD_ll), POINTER :: TZFD, TZFDTEMP
@@ -659,9 +661,9 @@ CONTAINS
                    IF (YACTION == 'READ' .AND. .NOT. LLFIREAD) THEN
                       ! Open NetCDF File for reading
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      IOS = NF_OPEN(TRIM(FILE)//cfile//".nc4", NF_NOWRITE, TZFD_IOZ%CDF%NCID)
-                      IF (IOS /= NF_NOERR) THEN
-                         PRINT *, 'NF_OPEN error : ', NF_STRERROR(IOS)
+                      IOSCDF = NF_OPEN(TRIM(FILE)//cfile//".nc4", NF_NOWRITE, TZFD_IOZ%CDF%NCID)
+                      IF (IOSCDF /= NF_NOERR) THEN
+                         PRINT *, 'NF_OPEN error : ', NF_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
@@ -673,10 +675,10 @@ CONTAINS
                       ! YACTION == 'WRITE'
                       ! Create NetCDF File for writing
                       TZFD_IOZ%CDF => NEWIOCDF()
-                      IOS = NF_CREATE(TRIM(FILE)//cfile//".nc4", &
+                      IOSCDF = NF_CREATE(TRIM(FILE)//cfile//".nc4", &
                            &IOR(NF_CLOBBER,NF_NETCDF4), TZFD_IOZ%CDF%NCID)
-                      IF (IOS /= NF_NOERR) THEN
-                         PRINT *, 'NF_CREATE error : ', NF_STRERROR(IOS)
+                      IF (IOSCDF /= NF_NOERR) THEN
+                         PRINT *, 'NF_CREATE error : ', NF_STRERROR(IOSCDF)
                          STOP
                       ELSE
                          IOS = 0
index d76c32c..475825d 100644 (file)
@@ -20,8 +20,6 @@ INTERFACE NCREAD
         & NCREADC0
 END INTERFACE NCREAD
 
-INCLUDE 'netcdf.inc'
-
 ! Public from netcdf.inc :
 PUBLIC NF_OPEN,NF_CREATE,NF_NOWRITE,NF_CLOBBER,NF_NETCDF4,NF_NOERR,NF_STRERROR
 ! Public from this module :
@@ -54,7 +52,7 @@ END FUNCTION NEWIOCDF
 SUBROUTINE CLEANIOCDF(PIOCDF)
 TYPE(IOCDF),  POINTER :: PIOCDF
 
-INTEGER :: IRESP
+INTEGER(KIND=IDCDF_KIND) :: IRESP
 
 ! Close Netcdf File
 IRESP = NF_CLOSE(PIOCDF%NCID)
@@ -87,7 +85,8 @@ END SUBROUTINE CLEANLIST
 END SUBROUTINE CLEANIOCDF
 
 SUBROUTINE HANDLE_ERR(status,line,text,kresp)
-INTEGER, INTENT(IN) :: status,line
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: status
+INTEGER, INTENT(IN) :: line
 CHARACTER(LEN=*), INTENT(IN) :: text
 INTEGER, OPTIONAL, INTENT(OUT) :: kresp
 
@@ -126,27 +125,28 @@ END FUNCTION str_replace
 
 SUBROUTINE WRITATTR(KNCID, KVARID, TPFMH)
 USE MODD_FM, ONLY : FMHEADER
-INTEGER,        INTENT(IN) :: KNCID
-INTEGER,        INTENT(IN) :: KVARID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KVARID
 TYPE(FMHEADER), INTENT(IN) :: TPFMH
 
-INTEGER :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: IONE = 1
 
 ! GRID attribute definition
 STATUS = NF_PUT_ATT_INT(KNCID, KVARID, 'GRID', &
-     &NF_INT, 1, TPFMH%GRID)
+     &NF_INT, IONE, INT(TPFMH%GRID,KIND=IDCDF_KIND))
 IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF_PUT_ATT_INT]')
 
 ! COMMENT attribute definition
 STATUS = NF_PUT_ATT_TEXT(KNCID, KVARID,'COMMENT', &
-     &LEN_TRIM(TPFMH%COMMENT), TPFMH%COMMENT)
+     &INT(LEN_TRIM(TPFMH%COMMENT),KIND=IDCDF_KIND), TPFMH%COMMENT)
 IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'WRITATTR [NF_PUT_ATT_TEXT]')
 
 END SUBROUTINE WRITATTR
 
 FUNCTION GETDIMCDF(PIOCDF, KLEN, HDIMNAME)
 TYPE(IOCDF), POINTER       :: PIOCDF
-INTEGER,     INTENT(IN)    :: KLEN
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KLEN
 CHARACTER(LEN=*), OPTIONAL :: HDIMNAME ! When provided don't search but
                                        ! simply create with name HDIMNAME
 TYPE(DIMCDF), POINTER   :: GETDIMCDF
@@ -155,7 +155,7 @@ TYPE(DIMCDF), POINTER :: TMP
 INTEGER               :: COUNT
 CHARACTER(LEN=7)      :: YSUFFIX
 CHARACTER(LEN=8)      :: YDIMNAME
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 
 IF (KLEN < 1) THEN
    PRINT *, 'GETDIMCDF Error, KLEN=', KLEN
@@ -196,13 +196,13 @@ END FUNCTION GETDIMCDF
 
 FUNCTION GETSTRDIMID(PIOCDF, KLEN)
 TYPE(IOCDF), POINTER    :: PIOCDF
-INTEGER,     INTENT(IN) :: KLEN
-INTEGER                 :: GETSTRDIMID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KLEN
+INTEGER(KIND=IDCDF_KIND)            :: GETSTRDIMID
 
 TYPE(DIMCDF), POINTER :: TMP
 CHARACTER(LEN=7)      :: YSUFFIX
 CHARACTER(LEN=8)      :: YDIMNAME
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 
 IF (KLEN < 1) THEN
    PRINT *, 'GETSTRDIMID Error, KLEN=', KLEN
@@ -236,9 +236,9 @@ END FUNCTION GETSTRDIMID
 
 SUBROUTINE FILLVDIMS(PIOCDF, KSHAPE, HDIR, KVDIMS)
 TYPE(IOCDF),           POINTER        :: PIOCDF 
-INTEGER, DIMENSION(:), INTENT(IN)     :: KSHAPE
+INTEGER(KIND=IDCDF_KIND), DIMENSION(:), INTENT(IN) :: KSHAPE
 CHARACTER(LEN=*),      INTENT(IN)     :: HDIR
-INTEGER, DIMENSION(:), INTENT(OUT)    :: KVDIMS
+INTEGER(KIND=IDCDF_KIND),DIMENSION(:), INTENT(OUT) :: KVDIMS
 
 INTEGER :: II
 TYPE(DIMCDF), POINTER :: PTDIM
@@ -311,10 +311,11 @@ REAL,                 INTENT(IN) :: PFIELD
 TYPE(FMHEADER),       INTENT(IN) :: TPFMH
 INTEGER,              INTENT(OUT):: KRESP
 
-INTEGER           :: STATUS
-INTEGER           :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30) :: YVARNAME
-INTEGER           :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: IZERO = 0
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -329,7 +330,7 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Define the scalar variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, 0, 0, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, IZERO, IZERO, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX0[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -352,11 +353,11 @@ REAL, DIMENSION(:),   INTENT(IN) :: PFIELD
 TYPE(FMHEADER),       INTENT(IN) :: TPFMH
 INTEGER,              INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -371,10 +372,10 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX1[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -398,11 +399,15 @@ REAL, DIMENSION(:,:), INTENT(IN) :: PFIELD
 TYPE(FMHEADER),       INTENT(IN) :: TPFMH
 INTEGER,              INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: SHUFFLE = 0
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE = 1
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: DEFLATE_LEVEL = 2
+
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -417,14 +422,14 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
    
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF_DEF_VAR]')
    IF (LDEFLATEX2) THEN
       ! Compress the variable with deflate level 2
-      STATUS = NF_DEF_VAR_DEFLATE(INCID, IVARID, 0, 1, 2)
+      STATUS = NF_DEF_VAR_DEFLATE(INCID, IVARID, SHUFFLE, DEFLATE, DEFLATE_LEVEL)
       IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX2[NF_DEF_VAR_DEFLATE]')
    END IF
    CALL WRITATTR(INCID, IVARID, TPFMH)
@@ -448,11 +453,11 @@ REAL, DIMENSION(:,:,:),INTENT(IN) :: PFIELD
 TYPE(FMHEADER),        INTENT(IN) :: TPFMH
 INTEGER,               INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -467,10 +472,10 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX3[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -493,11 +498,11 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PFIELD
 TYPE(FMHEADER),           INTENT(IN) :: TPFMH
 INTEGER,                  INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -512,10 +517,10 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX4[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -538,11 +543,11 @@ REAL, DIMENSION(:,:,:,:,:), INTENT(IN) :: PFIELD
 TYPE(FMHEADER),             INTENT(IN) :: TPFMH
 INTEGER,                    INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -557,10 +562,10 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX5[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -583,11 +588,11 @@ REAL, DIMENSION(:,:,:,:,:,:), INTENT(IN) :: PFIELD
 TYPE(FMHEADER),               INTENT(IN) :: TPFMH
 INTEGER,                      INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -602,10 +607,10 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(PFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(PFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
    
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_DOUBLE, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITX6[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -630,10 +635,11 @@ INTEGER,              INTENT(IN) :: KFIELD
 TYPE(FMHEADER),       INTENT(IN) :: TPFMH
 INTEGER,              INTENT(OUT):: KRESP
 
-INTEGER           :: STATUS
-INTEGER           :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30) :: YVARNAME
-INTEGER           :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: IZERO = 0
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -648,7 +654,11 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Define the scalar variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, 0, 0, IVARID)
+#ifndef MNH_INT8
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, IZERO, IZERO, IVARID)
+#else
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, IZERO, IZERO, IVARID)
+#endif
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -656,8 +666,13 @@ ELSE
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, KFIELD)
+#ifndef MNH_INT8
+STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
 IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_PUT_VAR_INT]',IRESP)
+#else
+STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
+IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN0[NF_PUT_VAR_INT64]',IRESP)
+#endif
 !
 ! Use IMAX, JMAX, KMAX to define DIMX, DIMY, DIMZ
 ! /!\ Can only work if IMAX, JMAX or KMAX are written before any array
@@ -672,7 +687,7 @@ IF (YVARNAME == 'JMAX' .AND. .NOT. ASSOCIATED(PZCDF%DIMY)) THEN
    END IF
 END IF
 #endif
-IF (YVARNAME == 'KMAX' .AND. .NOT. ASSOCIATED(PZCDF%DIMZ)) PZCDF%DIMZ=>GETDIMCDF(PZCDF,KFIELD+2*JPVEXT,'Z')
+IF (YVARNAME == 'KMAX' .AND. .NOT. ASSOCIATED(PZCDF%DIMZ)) PZCDF%DIMZ=>GETDIMCDF(PZCDF,INT(KFIELD+2*JPVEXT,KIND=IDCDF_KIND),'Z')
  
 KRESP = IRESP
 END SUBROUTINE NCWRITN0
@@ -686,11 +701,11 @@ INTEGER, DIMENSION(:), INTENT(IN) :: KFIELD
 TYPE(FMHEADER),        INTENT(IN) :: TPFMH
 INTEGER,               INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -705,19 +720,27 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(KFIELD), HDIR, IVDIMS)
-   ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, SIZE(IVDIMS), IVDIMS, IVARID)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
+! Define the variable 
+#ifndef MNH_INT8
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+#else
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+#endif
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_DEF_VAR] '//TRIM(YVARNAME))
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
    PRINT *,'NCWRITN1 : ', TRIM(YVARNAME), ' already defined !'
 END IF
 
-
 ! Write the data
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, KFIELD)
+#ifndef MNH_INT8
+STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
 IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_PUT_VAR_INT]',IRESP)
+#else
+STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
+IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN1[NF_PUT_VAR_INT64]',IRESP)
+#endif
 
 KRESP = IRESP 
 END SUBROUTINE NCWRITN1
@@ -731,11 +754,11 @@ INTEGER, DIMENSION(:,:),INTENT(IN) :: KFIELD
 TYPE(FMHEADER),         INTENT(IN) :: TPFMH
 INTEGER,                INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
 INTEGER               :: IRESP
 
 IRESP = 0
@@ -750,10 +773,14 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
-   CALL FILLVDIMS(PZCDF, SHAPE(KFIELD), HDIR, IVDIMS)
+   CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, SIZE(IVDIMS), IVDIMS, IVARID)
+#ifndef MNH_INT8
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+#else
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
+#endif
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -761,8 +788,13 @@ ELSE
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VAR_INT(INCID, IVARID, KFIELD)
+#ifndef MNH_INT8
+STATUS = NF_PUT_VAR_INT(INCID, IVARID, INT(KFIELD,KIND=IDCDF_KIND))
 IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_PUT_VAR_INT]',IRESP)
+#else
+STATUS = NF_PUT_VAR_INT64(INCID, IVARID, KFIELD)
+IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITN2[NF_PUT_VAR_INT64]',IRESP)
+#endif
 
 KRESP = IRESP
 END SUBROUTINE NCWRITN2
@@ -776,11 +808,11 @@ CHARACTER(LEN=*),      INTENT(IN) :: HFIELD
 TYPE(FMHEADER),        INTENT(IN) :: TPFMH
 INTEGER,               INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(1) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(1) :: IVDIMS
 CHARACTER(LEN=32)     :: YSTR
 !CHARACTER(LEN=LEN(HFIELD)) :: YSTR
 INTEGER               :: IRESP
@@ -802,9 +834,9 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf string dimensions id 
-   IVDIMS(1) = GETSTRDIMID(PZCDF, LEN(YSTR))
+   IVDIMS(1) = GETSTRDIMID(PZCDF, INT(LEN(YSTR),KIND=IDCDF_KIND))
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC0[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -827,15 +859,16 @@ CHARACTER(LEN=*),DIMENSION(:),INTENT(IN) :: HFIELD
 TYPE(FMHEADER),               INTENT(IN) :: TPFMH
 INTEGER,                      INTENT(OUT):: KRESP
 
-INTEGER               :: STATUS
-INTEGER               :: INCID
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: INCID
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER, DIMENSION(2) :: IVDIMS
-INTEGER, DIMENSION(1) :: ITMP
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND), DIMENSION(2) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND), DIMENSION(1) :: ITMP
 INTEGER               :: IRESP
-INTEGER               :: ILEN
-INTEGER               :: ISIZE
+INTEGER(KIND=IDCDF_KIND) :: ILEN
+INTEGER(KIND=IDCDF_KIND) :: ISIZE
+INTEGER(KIND=IDCDF_KIND),PARAMETER :: IONE=1
 
 IRESP = 0
 ILEN  = LEN(HFIELD)
@@ -856,7 +889,7 @@ IF (STATUS /= NF_NOERR) THEN
    CALL FILLVDIMS(PZCDF, (/ISIZE/), HDIR, ITMP)
    IVDIMS(2) = ITMP(1)
    ! Define the variable 
-   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, SIZE(IVDIMS), IVDIMS, IVARID)
+   STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_CHAR, INT(SIZE(IVDIMS),KIND=IDCDF_KIND), IVDIMS, IVARID)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF_DEF_VAR]')
    CALL WRITATTR(INCID, IVARID, TPFMH)
 ELSE
@@ -864,7 +897,7 @@ ELSE
 END IF
 
 ! Write the data
-STATUS = NF_PUT_VARA_TEXT(INCID, IVARID, (/1,1/),(/ILEN,ISIZE/), HFIELD)
+STATUS = NF_PUT_VARA_TEXT(INCID, IVARID, (/IONE,IONE/),(/ILEN,ISIZE/), HFIELD)
 IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCWRITC1[NF_PUT_VARA_TEXT]',IRESP)
  
 KRESP = IRESP
@@ -877,13 +910,13 @@ END SUBROUTINE NCWRITC1
 !
 SUBROUTINE READATTR(KNCID, KVARID, HVAR, TPFMH)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,         INTENT(IN) :: KNCID
-INTEGER,         INTENT(IN) :: KVARID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KVARID
 CHARACTER(LEN=*),INTENT(IN) :: HVAR
 TYPE(FMHEADER),  INTENT(OUT):: TPFMH
 
-INTEGER :: STATUS
-INTEGER :: ICOMLEN
+INTEGER(KIND=IDCDF_KIND) :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN
       
 ! Read variables attributes (GRID and COMMENT)
 STATUS = NF_GET_ATT_INT(KNCID, KVARID, 'GRID', TPFMH%GRID)
@@ -902,18 +935,18 @@ END SUBROUTINE READATTR
 
 SUBROUTINE NCREADX0(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,          INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*), INTENT(IN) :: HVARNAME
 REAL,             INTENT(OUT):: PFIELD
 TYPE(FMHEADER),   INTENT(OUT):: TPFMH
 INTEGER,          INTENT(OUT):: KRESP  ! return-code
 
-INTEGER           :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30) :: YVARNAME
-INTEGER           :: IVARID
-INTEGER           :: ITYPE   ! variable type
-INTEGER           :: IDIMS   ! number of dimensions
-INTEGER           :: ICOMLEN ! comment length
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -954,20 +987,21 @@ END SUBROUTINE NCREADX0
 
 SUBROUTINE NCREADX1(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,            INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),   INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),     INTENT(OUT):: TPFMH
 INTEGER,            INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1024,20 +1058,21 @@ END SUBROUTINE NCREADX1
 
 SUBROUTINE NCREADX2(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,              INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),     INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:,:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),       INTENT(OUT):: TPFMH
 INTEGER,              INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1094,20 +1129,21 @@ END SUBROUTINE NCREADX2
 
 SUBROUTINE NCREADX3(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,                INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),       INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:,:,:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),         INTENT(OUT):: TPFMH
 INTEGER,                INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1164,20 +1200,21 @@ END SUBROUTINE NCREADX3
 
 SUBROUTINE NCREADX4(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,                  INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND), INTENT(IN) :: KNCID
 CHARACTER(LEN=*),         INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:,:,:,:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),           INTENT(OUT):: TPFMH
 INTEGER,                  INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1234,20 +1271,21 @@ END SUBROUTINE NCREADX4
 
 SUBROUTINE NCREADX5(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,                    INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),   INTENT(IN) :: KNCID
 CHARACTER(LEN=*),           INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:,:,:,:,:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),             INTENT(OUT):: TPFMH
 INTEGER,                    INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1304,20 +1342,21 @@ END SUBROUTINE NCREADX5
 
 SUBROUTINE NCREADX6(KNCID, HVARNAME, PFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,                      INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),     INTENT(IN) :: KNCID
 CHARACTER(LEN=*),             INTENT(IN) :: HVARNAME
 REAL, DIMENSION(:,:,:,:,:,:), INTENT(OUT):: PFIELD
 TYPE(FMHEADER),               INTENT(OUT):: TPFMH
 INTEGER,                      INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND), DIMENSION(SIZE(SHAPE(PFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1374,18 +1413,18 @@ END SUBROUTINE NCREADX6
 
 SUBROUTINE NCREADN0(KNCID, HVARNAME, KFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,          INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*), INTENT(IN) :: HVARNAME
 INTEGER,          INTENT(OUT):: KFIELD
 TYPE(FMHEADER),   INTENT(OUT):: TPFMH
 INTEGER,          INTENT(OUT):: KRESP  ! return-code
 
-INTEGER           :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30) :: YVARNAME
-INTEGER           :: IVARID
-INTEGER           :: ITYPE   ! variable type
-INTEGER           :: IDIMS   ! number of dimensions
-INTEGER           :: ICOMLEN ! comment length
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
 INTEGER           :: IRESP
 
 IRESP = 0
@@ -1405,11 +1444,19 @@ IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN0[NF_INQ_VARNDIM
 STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
 IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN0[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
 
+#ifndef MNH_INT8
 IF (IDIMS == 0 .AND. ITYPE == NF_INT) THEN
-   ! Read variable
+#else
+IF (IDIMS == 0 .AND. ITYPE == NF_INT64) THEN
+#endif
+! Read variable
+#ifndef MNH_INT8
    STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
+#else
+   STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
+#endif
    IF (STATUS /= NF_NOERR) THEN
-      CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF_GET_VAR_DOUBLE] '//TRIM(YVARNAME),IRESP)
+      CALL HANDLE_ERR(status,__LINE__,'NCREADN0[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
       GOTO 1000
    END IF
    ! Read variables attributes (GRID and COMMENT)
@@ -1426,20 +1473,21 @@ END SUBROUTINE NCREADN0
 
 SUBROUTINE NCREADN1(KNCID, HVARNAME, KFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,               INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),      INTENT(IN) :: HVARNAME
 INTEGER, DIMENSION(:), INTENT(OUT):: KFIELD
 TYPE(FMHEADER),        INTENT(OUT):: TPFMH
 INTEGER,               INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND),DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1460,7 +1508,11 @@ IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN1[NF_INQ_VARNDIM
 STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
 IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN1[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
 
+#ifndef MNH_INT8
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
+#else
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
+#endif
    ! Check size of variable before reading
    STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
@@ -1473,7 +1525,11 @@ IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
+#ifndef MNH_INT8
       STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
+#else
+      STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
+#endif
       IF (STATUS /= NF_NOERR) THEN
          CALL HANDLE_ERR(status,__LINE__,'NCREADN1[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
@@ -1496,20 +1552,21 @@ END SUBROUTINE NCREADN1
 
 SUBROUTINE NCREADN2(KNCID, HVARNAME, KFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,                 INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),        INTENT(IN) :: HVARNAME
 INTEGER, DIMENSION(:,:), INTENT(OUT):: KFIELD
 TYPE(FMHEADER),          INTENT(OUT):: TPFMH
 INTEGER,                 INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND)  :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGER, DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IVARSIZE, IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND),DIMENSION(SIZE(SHAPE(KFIELD))) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER               :: IVARSIZE
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
@@ -1530,8 +1587,12 @@ IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN2[NF_INQ_VARNDIM
 STATUS = NF_INQ_VARTYPE(KNCID, IVARID, ITYPE)
 IF (STATUS /= NF_NOERR) CALL HANDLE_ERR(STATUS,__LINE__,'NCREADN2[NF_INQ_VARTYPE] '//TRIM(YVARNAME))
 
+#ifndef MNH_INT8
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
-   ! Check size of variable before reading
+#else
+IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
+#endif
+! Check size of variable before reading
    STATUS = NF_INQ_VARDIMID(KNCID, IVARID, IVDIMS)
    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_INQ_VARDIMID] '//TRIM(YVARNAME))
    IVARSIZE = 1
@@ -1543,7 +1604,11 @@ IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
+#ifndef MNH_INT8
       STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
+#else
+      STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
+#endif
       IF (STATUS /= NF_NOERR) THEN
          CALL HANDLE_ERR(status,__LINE__,'NCREADN2[NF_GET_VAR_INT] '//TRIM(YVARNAME),IRESP)
          GOTO 1000
@@ -1566,22 +1631,22 @@ END SUBROUTINE NCREADN2
 
 SUBROUTINE NCREADC0(KNCID, HVARNAME, HFIELD, TPFMH, KRESP)
 USE MODD_FM, ONLY : FMHEADER, JPXKRK
-INTEGER,               INTENT(IN) :: KNCID
+INTEGER(KIND=IDCDF_KIND),INTENT(IN) :: KNCID
 CHARACTER(LEN=*),      INTENT(IN) :: HVARNAME
 CHARACTER(LEN=*),      INTENT(OUT):: HFIELD
 TYPE(FMHEADER),        INTENT(OUT):: TPFMH
 INTEGER,               INTENT(OUT):: KRESP  ! return-code
 
-INTEGER               :: STATUS
+INTEGER(KIND=IDCDF_KIND) :: STATUS
 CHARACTER(LEN=30)     :: YVARNAME
-INTEGER               :: IVARID
-INTEGER               :: ITYPE   ! variable type
-INTEGER               :: IDIMS   ! number of dimensions
-INTEGERDIMENSION(1) :: IVDIMS
+INTEGER(KIND=IDCDF_KIND) :: IVARID
+INTEGER(KIND=IDCDF_KIND) :: ITYPE   ! variable type
+INTEGER(KIND=IDCDF_KIND) :: IDIMS   ! number of dimensions
+INTEGER(KIND=IDCDF_KIND),DIMENSION(1) :: IVDIMS
 CHARACTER(LEN=32)     :: YSTR
 !CHARACTER(LEN=LEN(HFIELD))     :: YSTR
-INTEGER               :: ICOMLEN ! comment length
-INTEGER               :: IDIMLEN
+INTEGER(KIND=IDCDF_KIND) :: ICOMLEN ! comment length
+INTEGER(KIND=IDCDF_KIND) :: IDIMLEN
 INTEGER               :: II
 INTEGER               :: IRESP
 
index 01f6982..baeec25 100644 (file)
@@ -329,12 +329,15 @@ gribapi_clean :
 ##########################################################
 ifeq "$(VER_CDF)" "CDFAUTO"
 #
+HDF_OPT    = ${OPT_BASE_I4:-$OPT_BASE}
+NETCDF_OPT = ${OPT_BASE_I4:-$OPT_BASE}
+#
 cdf : $(CDF_INC)
 $(CDF_INC) : 
        cd ${DIR_HDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-zlib=no \
-       FC="$(FC)" FCFLAGS="$(OPT_BASE)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean
+       FC="$(FC)" FCFLAGS="$(HDF_OPT)" CPPFLAGS="-DpgiFortran" ${HDF_CONF} && make && make install && $(MAKE) -j 1 clean
        cd ${DIR_CDF} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-cxx --disable-f90 --disable-dap \
-       FC="$(FC)" FCFLAGS="$(OPT_BASE)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
+       FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" CPPFLAGS="-DpgiFortran ${INC_NETCDF}" ${CDF_CONF} LDFLAGS=" -L${CDF_PATH}/lib64" && make && make install && $(MAKE) -j 1 clean
 
 cleanmaster : cleancdf
 cleancdf :
@@ -507,4 +510,3 @@ ifeq "$(DO_COMP_USER)" "YES"
 include  filedepalluser
 endif 
 
-
index 5e3775c..8ba6fff 100644 (file)
@@ -43,6 +43,10 @@ DIR_MASTER += $(DIR_MNH)
 CPPFLAGS   += $(CPPFLAGS_MNH)
 INC        += $(INC_MNH)
 
+ifeq "$(MNH_INT)" "8"
+CPPFLAGS   += -DMNH_INT8
+endif
+
 OBJS_NOCB +=  spll_dxf.o spll_dxm.o spll_dyf.o spll_dym.o \
         spll_dzf.o spll_dzm.o spll_mxf.o \
         spll_mxm.o spll_myf.o spll_mym.o spll_mzf.o \
index b4e3685..3b3f35d 100644 (file)
@@ -27,8 +27,9 @@ OPT_I8    = -qintsize=8
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -125,3 +126,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index 06b7620..a891082 100644 (file)
@@ -32,8 +32,9 @@ OPT_I4      = -qintsize=4
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -138,3 +139,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index 2357a87..27073ed 100644 (file)
@@ -35,6 +35,7 @@ OPT_I4      = -qintsize=4 -qxlf77=intarg
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE) $(OPT_I4)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE         += $(OPT_I8)
 LFI_INT           ?=8
@@ -197,3 +198,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index 5c3efb0..cb25144 100644 (file)
@@ -24,6 +24,7 @@ OPT_I8     =  -sdefault64
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 #OPT_BASE         += $(OPT_I8)
 OPT_BASE           = -sdefault64 -hpic -em -ef
@@ -130,6 +131,11 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
 #mpi.mod : 
 #      ln -sf /opt/cray/mpt/5.6.3/gni/mpich2-cray/74/include/MPI.mod $(OBJDIR_MASTER)/mpi.mod
 
index 73c604c..fc00ece 100644 (file)
@@ -20,8 +20,9 @@ OPT_I8     =  -i8
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -100,3 +101,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index 7a01c28..7cb87b2 100644 (file)
@@ -30,6 +30,7 @@ OPT_BASE           += $(OPT_R8)
 CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
@@ -111,3 +112,9 @@ ifneq "$(findstring 8,$(LFI_INT))" ""
 OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
+
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index e02af53..20156c3 100644 (file)
@@ -28,8 +28,9 @@ OPT_BASE           += $(OPT_R8)
 CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -157,3 +158,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index b7958f1..e1ab3e7 100644 (file)
@@ -37,8 +37,9 @@ OPT_BASE           += $(OPT_R8)
 CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -146,3 +147,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+
index 2931d8c..48fd2ab 100644 (file)
@@ -26,8 +26,9 @@ OPT_I8    = -ew
 MNH_INT   ?=4
 LFI_RECL  ?=512
 #
+OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-OPT_BASE         += $(OPT_I8)
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 MNH_MPI_RANK_KIND ?=8
 else
@@ -123,3 +124,8 @@ OBJS_I8=spll_NEWLFI_ALL.o
 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
+