From b242de9402ec80cf1ef1d8f2a9cd280e93161ed0 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Thu, 2 Feb 2023 09:08:38 +0100 Subject: [PATCH] Philippe 02/02/2023: fixes for MNH_INT=8 --- src/MNH/read_chem_data_cams_case.f90 | 37 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/MNH/read_chem_data_cams_case.f90 b/src/MNH/read_chem_data_cams_case.f90 index a8487d33a..05335fc92 100644 --- a/src/MNH/read_chem_data_cams_case.f90 +++ b/src/MNH/read_chem_data_cams_case.f90 @@ -1,4 +1,4 @@ -!iMNH_LIC Copyright 2012-2017 CNRS, Meteo-France and Universite Paul Sabatier +!iMNH_LIC Copyright 2012-2023 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 for details. version 1. @@ -89,6 +89,7 @@ END MODULE MODI_READ_CHEM_DATA_CAMS_CASE !! M. Leriche 26/02/2021 : add initialization for dust and sea salt !! P. Tulet 01/02/2022 : unit conversion for aerosols (SALTCAMn, AEROCAMn, DUSTCAMn) !! M. Leriche 02/02/2022 : compute air density from CAMS +! P. Wautelet 02/02/2023: correct support of 64bit integers (MNH_INT=8) !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -183,7 +184,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=CDFINT) :: ind_netcdf ! Indice for netcdf var. !chemistry field infile CAM1.nam INTEGER :: ICHANNEL CHARACTER(LEN=8) :: YCAM="CAM1.nam" @@ -213,15 +214,15 @@ integer(kind=CDFINT) :: lat_varid, lon_varid, lev_varid integer(kind=CDFINT) :: t_varid, q_varid, ps_varid integer(kind=CDFINT) :: recid, latid, lonid, levid integer(kind=CDFINT) :: latlen, lonlen, levlen -integer(kind=CDFINT) :: KILEN -integer :: mmr_dust1_varid, mmr_dust2_varid, mmr_dust3_varid ! for init. dust -integer :: mmr_seasalt1_varid, mmr_seasalt2_varid, mmr_seasalt3_varid ! for init sea salt +integer :: KILEN +integer(kind=CDFINT) :: mmr_dust1_varid, mmr_dust2_varid, mmr_dust3_varid ! for init. dust +integer(kind=CDFINT) :: mmr_seasalt1_varid, mmr_seasalt2_varid, mmr_seasalt3_varid ! for init sea salt 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=CDFINT), DIMENSION(:), ALLOCATABLE :: count3d, start3d +INTEGER(kind=CDFINT), DIMENSION(:), ALLOCATABLE :: count2d, start2d INTEGER, DIMENSION(:), ALLOCATABLE :: kinlo REAL, DIMENSION(:,:,:), ALLOCATABLE :: vartemp3d,vartemp3dbis,vartemp3dter REAL, DIMENSION(:,:,:), ALLOCATABLE :: vartemp3dquater @@ -503,7 +504,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.) ! @@ -518,8 +519,8 @@ DO JK = 1, levlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & - ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & + int(latlen,kind=kind(1)),kinlo,KILEN, & + ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & @@ -533,8 +534,8 @@ DO JK = 1, levlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & - ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & + int(latlen,kind=kind(1)),kinlo,KILEN, & + ZVALUE(JK,:),INO,ZLONOUT,ZLATOUT, & ZOUT(JK,:),.FALSE.,PTIME_HORI,.FALSE.) ! CALL ARRAY_1D_TO_2D(INO,ZOUT(JK,:),IIU,IJU, & @@ -547,8 +548,8 @@ DO JJ = 1, latlen JLOOP1 = JLOOP1 + lonlen ENDDO CALL HORIBL(lats(1),lons(1),lats(latlen),lons(lonlen), & - latlen,kinlo,KILEN, & - ZVALUE1D(:),INO,ZLONOUT,ZLATOUT, & + int(latlen,kind=kind(1)),kinlo,KILEN, & + ZVALUE1D(:),INO,ZLONOUT,ZLATOUT, & ZOUT1D(:),.FALSE.,PTIME_HORI,.FALSE.) ! CALL ARRAY_1D_TO_2D(INO,ZOUT1D(:),IIU,IJU, & @@ -737,7 +738,7 @@ IF (OUSECHEM) THEN 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, & @@ -841,7 +842,7 @@ IF (OUSECHEM) THEN 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, & @@ -904,7 +905,7 @@ IF (LDUST .AND. LDSTCAMS) THEN 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,ZMASS2(:,:,JK,JN)) @@ -956,7 +957,7 @@ IF (LSALT .AND. LSLTCAMS) THEN 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,ZMASS2(:,:,JK,JN)) -- GitLab