From 42c9d61070abcaf8a56f06c9808d3a01f5ad3581 Mon Sep 17 00:00:00 2001 From: Philippe Wautelet <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 25 Mar 2016 14:04:41 +0000 Subject: [PATCH] Philippe 25/03/2016: add kind=IDCDF_KIND for NetCDF integers (necessary to use NetCDF with 32-bit integers even when MNH_INT=8) + adaptation of the make rules --- src/LIB/SURCOUCHE/src/modd_netcdf.f90 | 14 +- src/LIB/SURCOUCHE/src/mode_fm.f90 | 6 +- src/LIB/SURCOUCHE/src/mode_io.f90 | 14 +- src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 435 +++++++++++++++----------- src/Makefile | 8 +- src/Makefile.MESONH.mk | 4 + src/Rules.AIX64.mk | 8 +- src/Rules.BG.mk | 8 +- src/Rules.BGQ.mk | 6 + src/Rules.LXcray.mk | 6 + src/Rules.LXg95.mk | 8 +- src/Rules.LXgfortran.mk | 7 + src/Rules.LXifort.mk | 8 +- src/Rules.LXpgi.mk | 8 +- src/Rules.SX8.mk | 8 +- 15 files changed, 342 insertions(+), 206 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_netcdf.f90 b/src/LIB/SURCOUCHE/src/modd_netcdf.f90 index 64658b353..b38bb0c6a 100644 --- a/src/LIB/SURCOUCHE/src/modd_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/modd_netcdf.f90 @@ -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 diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index 787588e10..6e9898686 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -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 diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 66614cb49..6708457e0 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -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 diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 index d76c32cf6..475825da3 100644 --- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 @@ -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 -INTEGER, DIMENSION(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 diff --git a/src/Makefile b/src/Makefile index 01f69823a..baeec252b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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 - diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk index 5e3775c06..8ba6fff00 100644 --- a/src/Makefile.MESONH.mk +++ b/src/Makefile.MESONH.mk @@ -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 \ diff --git a/src/Rules.AIX64.mk b/src/Rules.AIX64.mk index b4e3685d6..3b3f35dd9 100644 --- a/src/Rules.AIX64.mk +++ b/src/Rules.AIX64.mk @@ -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 + diff --git a/src/Rules.BG.mk b/src/Rules.BG.mk index 06b762085..a89108248 100644 --- a/src/Rules.BG.mk +++ b/src/Rules.BG.mk @@ -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 + diff --git a/src/Rules.BGQ.mk b/src/Rules.BGQ.mk index 2357a873f..27073eda6 100644 --- a/src/Rules.BGQ.mk +++ b/src/Rules.BGQ.mk @@ -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 + diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk index 5c3efb0b4..cb25144a8 100644 --- a/src/Rules.LXcray.mk +++ b/src/Rules.LXcray.mk @@ -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 diff --git a/src/Rules.LXg95.mk b/src/Rules.LXg95.mk index 73c604cd1..fc00eceed 100644 --- a/src/Rules.LXg95.mk +++ b/src/Rules.LXg95.mk @@ -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 + diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk index 7a01c286b..7cb87b2ba 100644 --- a/src/Rules.LXgfortran.mk +++ b/src/Rules.LXgfortran.mk @@ -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 + diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk index e02af5381..20156c3de 100644 --- a/src/Rules.LXifort.mk +++ b/src/Rules.LXifort.mk @@ -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 + diff --git a/src/Rules.LXpgi.mk b/src/Rules.LXpgi.mk index b7958f15f..e1ab3e7e7 100644 --- a/src/Rules.LXpgi.mk +++ b/src/Rules.LXpgi.mk @@ -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 + diff --git a/src/Rules.SX8.mk b/src/Rules.SX8.mk index 2931d8cf3..48fd2ab69 100644 --- a/src/Rules.SX8.mk +++ b/src/Rules.SX8.mk @@ -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 + -- GitLab