From 1663d24f477f952f021f3d30f3f64c86653b3316 Mon Sep 17 00:00:00 2001
From: Juan Escobar <escj@aero.obs-mip.fr>
Date: Thu, 14 Dec 2017 15:51:49 +0100
Subject: [PATCH] Juan 14/12/2017: Correction for compilation with MNH_INT=8
 <-> MNH in integer*8

---
 src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 27 ++++++++++++++-------------
 src/Makefile.MESONH.mk                |  8 +++++---
 src/Rules.LXgfortran.mk               |  5 +++--
 src/Rules.LXifort.mk                  |  6 ++++--
 4 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
index 060c71ca0..e1270372b 100644
--- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90
+++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90
@@ -3,7 +3,8 @@ MODULE MODE_NETCDF
 !!
 !!      Original  14/04/2015 D. Gazen
 !!      D.Gazen & J.Escobar 24/03/2107 : Correction for compilation of netcdf4IO in REAL*4 <=> MNH_REAL=R4  
-!!      J.Escobar 30/06/2017 : Add activation of ZLIB compression in NCWRITX3    
+!!      J.Escobar 30/06/2017 : Add activation of ZLIB compression in NCWRITX3 
+!!      J.Escobar 14/12/2017 : Correction for MNH_INT=8   
 !!
 USE MODD_NETCDF
 
@@ -739,7 +740,7 @@ YVARNAME = str_replace(YVARNAME, '.', '--')
 STATUS = NF_INQ_VARID(INCID, YVARNAME, IVARID)
 IF (STATUS /= NF_NOERR) THEN
    ! Define the scalar variable 
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
    STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT, IZERO, IZERO, IVARID)
 #else
    STATUS = NF_DEF_VAR(INCID, YVARNAME, NF_INT64, IZERO, IZERO, IVARID)
@@ -751,7 +752,7 @@ ELSE
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
 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
@@ -807,7 +808,7 @@ IF (STATUS /= NF_NOERR) THEN
    ! Get the netcdf dimensions
    CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 ! Define the variable 
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
    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)
@@ -819,7 +820,7 @@ ELSE
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
 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
@@ -861,7 +862,7 @@ IF (STATUS /= NF_NOERR) THEN
    CALL FILLVDIMS(PZCDF, INT(SHAPE(KFIELD),KIND=IDCDF_KIND), HDIR, IVDIMS)
 
    ! Define the variable 
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
    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)
@@ -873,7 +874,7 @@ ELSE
 END IF
 
 ! Write the data
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
 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
@@ -1591,13 +1592,13 @@ 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 ( MNH_INT == 4 )
 IF (IDIMS == 0 .AND. ITYPE == NF_INT) THEN
 #else
 IF (IDIMS == 0 .AND. ITYPE == NF_INT64) THEN
 #endif
 ! Read variable
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
    STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
 #else
    STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
@@ -1655,7 +1656,7 @@ 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 ( MNH_INT == 4 )
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
 #else
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
@@ -1672,7 +1673,7 @@ IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
       STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
 #else
       STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
@@ -1734,7 +1735,7 @@ 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 ( MNH_INT == 4 )
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT) THEN
 #else
 IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
@@ -1751,7 +1752,7 @@ IF (IDIMS == SIZE(SHAPE(KFIELD)) .AND. ITYPE == NF_INT64) THEN
    
    IF (IVARSIZE == SIZE(KFIELD)) THEN
       ! Read variable
-#ifndef MNH_INT8
+#if ( MNH_INT == 4 )
       STATUS = NF_GET_VAR_INT(KNCID, IVARID, KFIELD)
 #else
       STATUS = NF_GET_VAR_INT64(KNCID, IVARID, KFIELD)
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index 1c74c732f..e2a435b35 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -49,9 +49,11 @@ DIR_MASTER += $(DIR_MNH)
 CPPFLAGS   += $(CPPFLAGS_MNH)
 INC        += $(INC_MNH)
 
-ifeq "$(MNH_INT)" "8"
-CPPFLAGS   += -DMNH_INT=8
-endif
+#
+# MNH integer 4/8
+#
+CPPFLAGS   += -DMNH_INT=$(MNH_INT)
+#
 
 #
 #  Len of HREC characters 
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index dec164ce1..b11b8f9fc 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -99,9 +99,10 @@ HDF_CONF= CFLAGS=-std=c99
 ## LIBTOOLS flags
 #
 #if MNH_TOOLS exists => compile the tools if gfortran >= 5.X
-#ifeq ($(shell test $$( gfortran -dumpversion | cut -b1 ) -ge 5 ; echo $$?),0)
+ifeq "$(MNH_INT)" "4"
 ifeq ($(shell test $(GFV) -ge 500 ; echo $$?),0)
- MNH_TOOLS = yes
+MNH_TOOLS=yes
+endif
 endif
 #
 #
diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk
index 92f8e8b52..92c9a4960 100644
--- a/src/Rules.LXifort.mk
+++ b/src/Rules.LXifort.mk
@@ -13,7 +13,7 @@ OPT_BASE   =  -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -
 OPT_PERF0  =  -O0
 OPT_PERF2  =  -O2
 OPT_PERF3  =  -O3 -xHost
-OPT_CHECK  =  -CB -ftrapuv 
+OPT_CHECK  =  -CB -ftrapuv -debug-parameters all
 OPT_I8     =  -i8
 OPT_R8     =  -r8
 #
@@ -130,7 +130,9 @@ CNAME_GRIBEX=ifort
 # LIBTOOLS flags
 #
 #if MNH_TOOLS exists => compile the tools
-MNH_TOOLS = yes
+ifeq "$(MNH_INT)" "4"
+MNH_TOOLS=yes
+endif
 #
 ##########################################################
 #                                                        #
-- 
GitLab