diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 88648415ee53febf9330a15b603c6e04292eb40a..18475b01bba231b9a8474758f2931fd751fdf1f1 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 @@ -1,10 +1,11 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 01/08/2019: allow merge of entire Z-split files +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !----------------------------------------------------------------- MODULE mode_util USE MODD_IO_ll, ONLY: TFILE_ELT, TFILEDATA @@ -36,12 +37,12 @@ MODULE mode_util LOGICAL :: LSPLIT = .FALSE. ! TRUE if variable is split by vertical level INTEGER :: NSIZE = 0 ! Size of the variable (in number of elements) INTEGER :: NSRC = 0 ! Number of variables used to compute the variable (needed only if calc=.true.) - INTEGER :: NDIMS_FILE ! Number of dims (as present in input file) - INTEGER,DIMENSION(:),ALLOCATABLE :: NDIMSIZES_FILE ! Dimensions sizes (as present in input file) + INTEGER(kind=IDCDF_KIND) :: NDIMS_FILE ! Number of dims (as present in input file) + INTEGER(kind=IDCDF_KIND), DIMENSION(:),ALLOCATABLE :: NDIMSIZES_FILE ! Dimensions sizes (as present in input file) CHARACTER(LEN=NF90_MAX_NAME),DIMENSION(:),ALLOCATABLE :: CDIMNAMES_FILE ! Dimensions names (as present in input file) CHARACTER(LEN=40) :: CUNITS_FILE = '' ! Units (as present in input file) INTEGER :: NGRID_FILE ! Grid number (as present in input file) - INTEGER :: NTYPE_FILE ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file) + INTEGER(kind=IDCDF_KIND) :: NTYPE_FILE ! netCDF datatype (NF90_CHAR, NF90_INT...) (as present in input file) INTEGER,DIMENSION(MAXRAW) :: src ! List of variables used to compute the variable (needed only if calc=.true.) INTEGER :: tgt ! Target: id of the variable that use it (calc variable) TYPE(TFIELDDATA) :: TFIELD ! Metadata about the field @@ -616,7 +617,8 @@ END DO END SUBROUTINE parse_infiles SUBROUTINE HANDLE_ERR(status,line) - INTEGER :: status,line + integer(kind=IDCDF_KIND), intent(in) :: status + integer , intent(in) :: line IF (status /= NF90_NOERR) THEN PRINT *, 'line ',line,': ',NF90_STRERROR(status) @@ -636,7 +638,8 @@ END DO CHARACTER(LEN=16) :: YMNHVERSION CHARACTER(LEN=:),ALLOCATABLE :: YHISTORY - INTEGER :: ilen, ji + integer :: ji + INTEGER(kind=IDCDF_KIND) :: ilen INTEGER(KIND=IDCDF_KIND) :: status INTEGER(KIND=IDCDF_KIND) :: kcdf_id @@ -1209,8 +1212,8 @@ END DO character(len=:), allocatable :: YSPLIT character(len=:), allocatable :: YTIMEDEP integer :: iblocks - INTEGER :: ILENG - INTEGER :: JDIM + INTEGER(kind=IDCDF_KIND) :: ILENG + INTEGER(kind=IDCDF_KIND) :: JDIM INTEGER(KIND=IDCDF_KIND) :: ISTATUS INTEGER(KIND=IDCDF_KIND) :: IFILE_ID INTEGER(KIND=IDCDF_KIND) :: IVAR_ID diff --git a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 index 5c895f79129b1b4e0abcc18143a6637332c52b64..fd061221c57bda1e0e217c3f7b9fe4fb8c401f3f 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_file_nc4.f90 @@ -14,6 +14,7 @@ ! + move management of NNCID and NLFIFLU to the nc4 and lfi subroutines ! Philippe Wautelet: 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages ! P. Wautelet 07/03/2019: bugfix: io_set_mnhversion must be called by all the processes +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) ! !----------------------------------------------------------------- #if defined(MNH_IOCDF4) @@ -67,8 +68,8 @@ end subroutine io_create_file_nc4 subroutine io_close_file_nc4(tpfile,kstatus) use mode_io_tools_nc4, only: cleaniocdf - type(tfiledata), intent(inout) :: tpfile - integer(kind=IDCDF_KIND), optional, intent(out) :: kstatus + type(tfiledata), intent(inout) :: tpfile + integer, optional, intent(out) :: kstatus integer(kind=IDCDF_KIND) :: istatus @@ -90,7 +91,7 @@ subroutine io_close_file_nc4(tpfile,kstatus) end if end if - if (present(kstatus)) kstatus = istatus + if (present(kstatus)) kstatus = int ( istatus, kind=kind(kstatus) ) end subroutine io_close_file_nc4 diff --git a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 index dbaf49d89b435e743931cb4e2db391cf2634e40c..5e0f8a2c94c7a47228676cc4f95711ceae2b86be 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_read_nc4.f90 @@ -10,6 +10,7 @@ ! P. Wautelet 13/12/2018: split of mode_netcdf into multiple modules/files ! P. Wautelet 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages ! P. Wautelet 21/02/2019: bugfix: intent of read fields: OUT->INOUT to keep initial value if not found in file +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !----------------------------------------------------------------- #if defined(MNH_IOCDF4) module mode_io_read_nc4 @@ -57,8 +58,8 @@ INTEGER, INTENT(OUT) :: KRESP ! return-code CHARACTER(LEN=*),OPTIONAL,INTENT(IN) :: HCALENDAR ! INTEGER :: IERRLEVEL -INTEGER :: ILEN INTEGER :: IGRID +INTEGER(KIND=IDCDF_KIND) :: ILEN INTEGER(KIND=IDCDF_KIND) :: INCID INTEGER(KIND=IDCDF_KIND) :: STATUS CHARACTER(LEN=12) :: YVAL_FILE, YVAL_MEM diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 index b66011fac5d08bdc6fc9e122c8a7b89aa67d52eb..af19c01cbaae45ce2bd1e241a3143176a6b5d115 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_tools_nc4.f90 @@ -6,9 +6,10 @@ ! Modifications: ! P. Wautelet : may 2016 : use NetCDF Fortran module ! J.Escobar : 14/12/2017 : Correction for MNH_INT=8 -! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -! P. Wautelet : 13/12/2018 : split of mode_netcdf into multiple modules/files -! Philippe Wautelet: 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 13/12/2018 : split of mode_netcdf into multiple modules/files +! P. Wautelet 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !----------------------------------------------------------------- #if defined(MNH_IOCDF4) module mode_io_tools_nc4 @@ -75,7 +76,7 @@ TYPE(DIMCDF),DIMENSION(:), INTENT(OUT) :: TPDIMS INTEGER, INTENT(OUT) :: KRESP ! INTEGER :: IGRID -INTEGER :: ILEN, ISIZE +INTEGER(kind=IDCDF_KIND) :: ILEN, ISIZE INTEGER :: JI CHARACTER(LEN=32) :: YINT CHARACTER(LEN=2) :: YDIR @@ -109,7 +110,7 @@ IF (IGRID==0) THEN ILEN = 1 END IF CASE (1) - PTDIM => GETDIMCDF(TPFILE,KLEN) + PTDIM => GETDIMCDF( TPFILE, int( KLEN, kind=IDCDF_KIND ) ) TPDIMS(1) = PTDIM ILEN = PTDIM%LEN CASE DEFAULT @@ -162,7 +163,7 @@ ELSE ELSE IF ( YDIR == 'ZZ' ) THEN PTDIM => TPFILE%TNCCOORDS(3,IGRID)%TDIM ELSE IF (JI==TPFIELD%NDIMS) THEN !Guess last dimension - PTDIM => GETDIMCDF(TPFILE, KLEN) + PTDIM => GETDIMCDF(TPFILE, int( KLEN, kind=IDCDF_KIND ) ) END IF ILEN = PTDIM%LEN TPDIMS(JI) = PTDIM @@ -260,16 +261,16 @@ IIU_ll = NIMAX_ll + 2*JPHEXT IJU_ll = NJMAX_ll + 2*JPHEXT IKU = NKMAX + 2*JPVEXT -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI)) PIOCDF%DIM_NI => GETDIMCDF(TPFILE, IIU_ll, 'ni') -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ)) PIOCDF%DIM_NJ => GETDIMCDF(TPFILE, IJU_ll, 'nj') -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U)) PIOCDF%DIM_NI_U => GETDIMCDF(TPFILE, IIU_ll, 'ni_u') -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U)) PIOCDF%DIM_NJ_U => GETDIMCDF(TPFILE, IJU_ll, 'nj_u') -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V)) PIOCDF%DIM_NI_V => GETDIMCDF(TPFILE, IIU_ll, 'ni_v') -IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V)) PIOCDF%DIM_NJ_V => GETDIMCDF(TPFILE, IJU_ll, 'nj_v') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI)) PIOCDF%DIM_NI => GETDIMCDF(TPFILE, int( IIU_ll, kind=IDCDF_KIND ), 'ni') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ)) PIOCDF%DIM_NJ => GETDIMCDF(TPFILE, int( IJU_ll, kind=IDCDF_KIND ), 'nj') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_U)) PIOCDF%DIM_NI_U => GETDIMCDF(TPFILE, int( IIU_ll, kind=IDCDF_KIND ), 'ni_u') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_U)) PIOCDF%DIM_NJ_U => GETDIMCDF(TPFILE, int( IJU_ll, kind=IDCDF_KIND ), 'nj_u') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NI_V)) PIOCDF%DIM_NI_V => GETDIMCDF(TPFILE, int( IIU_ll, kind=IDCDF_KIND ), 'ni_v') +IF (.NOT. ASSOCIATED(PIOCDF%DIM_NJ_V)) PIOCDF%DIM_NJ_V => GETDIMCDF(TPFILE, int( IJU_ll, kind=IDCDF_KIND ), 'nj_v') IF (TRIM(YPROGRAM)/='PGD' .AND. TRIM(YPROGRAM)/='NESPGD' .AND. TRIM(YPROGRAM)/='ZOOMPG' & .AND. .NOT.(TRIM(YPROGRAM)=='REAL' .AND. CSTORAGE_TYPE=='SU') ) THEN !condition to detect PREP_SURFEX - IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL)) PIOCDF%DIM_LEVEL => GETDIMCDF(TPFILE, IKU , 'level') - IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => GETDIMCDF(TPFILE, IKU , 'level_w') + IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL)) PIOCDF%DIM_LEVEL => GETDIMCDF(TPFILE, int( IKU, kind=IDCDF_KIND ), 'level') + IF (.NOT. ASSOCIATED(PIOCDF%DIM_LEVEL_W)) PIOCDF%DIM_LEVEL_W => GETDIMCDF(TPFILE, int( IKU, kind=IDCDF_KIND ), 'level_w') IF (.NOT. ASSOCIATED(PIOCDF%DIMTIME)) PIOCDF%DIMTIME => GETDIMCDF(TPFILE, NF90_UNLIMITED, 'time') ELSE !PGD and SURFEX files for MesoNH have no vertical levels or time scale diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index 89e094e5a0dbad36bd6928301482b05de701d288..d47fe20c03fd05d3baf7980963a6956a3576e3e4 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -6,11 +6,12 @@ ! Modifications: ! P. Wautelet : may 2016 : use NetCDF Fortran module ! J.Escobar : 14/12/2017 : Correction for MNH_INT=8 -! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -! P. Wautelet : 13/12/2018 : split of mode_netcdf into multiple modules/files -! Philippe Wautelet: 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages -! P. Wautelet : 11/01/2019 : NVERB_INFO->NVERB_WARNING for zero size fields -! P. Wautelet : 01/02/2019 : IO_WRITE_COORDVAR_NC4: bug: use of non-associated pointers (PIOCDF%DIM_Nx_y) +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 13/12/2018: split of mode_netcdf into multiple modules/files +! P. Wautelet 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages +! P. Wautelet 11/01/2019: NVERB_INFO->NVERB_WARNING for zero size fields +! P. Wautelet 01/02/2019: IO_WRITE_COORDVAR_NC4: bug: use of non-associated pointers (PIOCDF%DIM_Nx_y) +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !----------------------------------------------------------------- #if defined(MNH_IOCDF4) module mode_io_write_nc4 @@ -2081,6 +2082,7 @@ INTEGER,PARAMETER :: YEAR=1, MONTH=2, DAY=3, HH=5, MM=6, SS=7 CHARACTER(len=5) :: YZONE CHARACTER(LEN=:),ALLOCATABLE :: YCMD, YHISTORY, YHISTORY_NEW, YHISTORY_PREV INTEGER :: ILEN_CMD, ILEN_PREV +INTEGER(KIND=IDCDF_KIND) :: ILEN_NC INTEGER(KIND=IDCDF_KIND) :: ISTATUS INTEGER,DIMENSION(8) :: IDATETIME ! @@ -2090,7 +2092,8 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_APPEND_HISTORY_NC4','called for file '//TRIM ! IF (TPFILE%LMASTER) THEN !Check if history attribute already exists in file and read it - ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_PREV) + ISTATUS = NF90_INQUIRE_ATTRIBUTE(TPFILE%NNCID, NF90_GLOBAL, 'history', LEN=ILEN_NC) + ILEN_PREV = int( ILEN_NC, kind=kind(ILEN_PREV) ) IF (ISTATUS == NF90_NOERR) THEN ALLOCATE(CHARACTER(LEN=ILEN_PREV) :: YHISTORY_PREV) ISTATUS = NF90_GET_ATT(TPFILE%NNCID, NF90_GLOBAL, 'history', YHISTORY_PREV) diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index e0b13e74f435bc2a8c22ebe4f02d639d407c4bf1..edab8b96bb03dde59c0403f1752ae292aa7859de 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -93,6 +93,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n !! & initialize INBLIGHT on all proc for filling/saving AREA* arrays !! Philippe Wautelet: 10/01/2019: use NEWUNIT argument of OPEN !! Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics!! +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -2736,7 +2737,7 @@ END SUBROUTINE N8INTERCHANGE_SORT SUBROUTINE MNH_RANDOM_NUMBER(ZRANDOM) REAL :: ZRANDOM - INTEGER ,SAVE :: NSEED_MNH = 26032012 + INTEGER ( kind = 4 ), SAVE :: NSEED_MNH = 26032012 ZRANDOM = r8_uniform_01 (NSEED_MNH) diff --git a/src/MNH/read_chem_data_netcdf_case.f90 b/src/MNH/read_chem_data_netcdf_case.f90 index bd59e32da499c994d3ebc072492a7cc04f331d2f..ac7677680307055ba7fcd09802ff522e52451211 100644 --- a/src/MNH/read_chem_data_netcdf_case.f90 +++ b/src/MNH/read_chem_data_netcdf_case.f90 @@ -84,6 +84,7 @@ END MODULE MODI_READ_CHEM_DATA_NETCDF_CASE !! A. Berger 20/03/12 adapt whatever the chemical mechanism in BASIC !! P. Wautelet 30/10/17 use F90 module for netCDF !! J.Pianezzej 13/02/2019 : correction for use of MEGAN +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -167,7 +168,7 @@ REAL,DIMENSION(:,:),ALLOCATABLE :: ZVALUE ! Intermediate array REAL,DIMENSION(:),ALLOCATABLE :: ZVALUE1D ! Intermediate array REAL,DIMENSION(:,:),ALLOCATABLE :: ZOUT ! Intermediate arrays REAL,DIMENSION(:),ALLOCATABLE :: ZOUT1D ! Intermediate arrays -INTEGER :: ind_netcdf ! Indice for netcdf var. +INTEGER(kind=IDCDF_KIND) :: ind_netcdf ! Indice for netcdf var. !chemistry field infile MOZ1.nam INTEGER :: ICHANNEL CHARACTER(LEN=8) :: YMOZ="MOZ1.nam" @@ -194,13 +195,14 @@ integer(kind=IDCDF_KIND) :: lat_varid, lon_varid, lev_varid, time_varid integer(kind=IDCDF_KIND) :: hyam_varid, hybm_varid, p0_varid, t_varid, q_varid, ps_varid integer(kind=IDCDF_KIND) :: recid, latid, lonid, levid, timeid integer(kind=IDCDF_KIND) :: latlen, lonlen, levlen, nrecs,timelen -integer(kind=IDCDF_KIND) :: itimeindex, KILEN, jrec +integer(kind=IDCDF_KIND) :: itimeindex +integer :: KILEN CHARACTER(LEN=40) :: recname REAL, DIMENSION(:), ALLOCATABLE :: lats REAL, DIMENSION(:), ALLOCATABLE :: lons REAL, DIMENSION(:), ALLOCATABLE :: levs -INTEGER, DIMENSION(:), ALLOCATABLE :: count3d, start3d -INTEGER, DIMENSION(:), ALLOCATABLE :: count2d, start2d +INTEGER(kind=IDCDF_KIND), DIMENSION(:), ALLOCATABLE :: count3d, start3d +INTEGER(kind=IDCDF_KIND), DIMENSION(:), ALLOCATABLE :: count2d, start2d REAL, DIMENSION(:), ALLOCATABLE :: time, hyam, hybm REAL :: p0 INTEGER, DIMENSION(:), ALLOCATABLE :: kinlo @@ -571,7 +573,7 @@ DO JI = 1,IMOZ !for every MNH species existing in MOZ1.nam JLOOP1 = JLOOP1+lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & + int(latlen,kind=kind(1)),kinlo,KILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.) CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & @@ -652,7 +654,7 @@ DO JI = 1,IMOZ !for every MNH species existing in MOZ1.nam JLOOP1 = JLOOP1+lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & + int(latlen,kind=kind(1)),kinlo,KILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.TRUE.) CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & @@ -676,7 +678,7 @@ DO JK = 1, levlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & + int(latlen,kind=kind(1)),kinlo,KILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! @@ -692,7 +694,7 @@ DO JK = 1, levlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & + int(latlen,kind=kind(1)),kinlo,KILEN, & ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! @@ -707,7 +709,7 @@ DO JJ = 1, latlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & + int(latlen,kind=kind(1)),kinlo,KILEN, & ZVALUE1D(:),INO,ZLONOUT,ZLATOUT, & ZOUT1D(:),.FALSE.,PTIME_HORI,.FALSE.) ! diff --git a/src/MNH/tools_c.f90 b/src/MNH/tools_c.f90 index 224b55f4b35635b90713b04322b55aa7eca85b59..60fd4147b3a74545404600df297ae2890b8615cf 100644 --- a/src/MNH/tools_c.f90 +++ b/src/MNH/tools_c.f90 @@ -19,15 +19,34 @@ module modi_tools_c ! ! P. Wautelet 04/12/2018 ! +! Modifications: +! P. Wautelet 18/09/2019: correct support of 64bit integers (MNH_INT=8) + use, intrinsic :: iso_c_binding implicit none + private + + public :: sleep_c + interface - subroutine sleep_c(ksec) bind(c, name="sleep") + subroutine sleep_c_intern(ksec) bind(c, name="sleep") import C_INT integer(kind=C_INT), VALUE :: ksec - end subroutine sleep_c + end subroutine sleep_c_intern end interface +contains + + subroutine sleep_c(ksec) + integer, intent(in) :: ksec + + integer(kind=C_INT) :: isec_c + + isec_c = int( ksec, kind=C_INT ) + + call sleep_c_intern( isec_c ) + end subroutine + end module modi_tools_c