diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90 index 613aa8f280036112a77b8a467fe6b90a26a0a26d..631362f1caf295c21d3f16bac589772a8db11818 100644 --- a/src/LIB/SURCOUCHE/src/mode_gather.f90 +++ b/src/LIB/SURCOUCHE/src/mode_gather.f90 @@ -4,17 +4,17 @@ !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! Modifications: -! J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE -! with MPI_STATUS_IGNORE -! J.Escobar 22/05/2012 : Bug in ISEND with non-contiguous buffer , reintroduce intermediate buffer -! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! J. Escobar 10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE +! J. Escobar 22/05/2012: bug in ISEND with non-contiguous buffer: reintroduce intermediate buffer +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications ! !----------------------------------------------------------------- MODULE MODE_GATHER_ll USE MODD_MPIF -use modd_precision, only: MNHREAL_MPI +use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD IMPLICIT NONE @@ -134,7 +134,7 @@ ELSE PRINT *,'Error GATHERALL_N1' END IF ! KRECV variable of IROOT processor contains the global field -CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP) +CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP) END SUBROUTINE GATHERALL_N1 @@ -157,7 +157,7 @@ ELSE PRINT *,'Error GATHERALL_N2' END IF ! KRECV variable of IROOT processor contains the global field -CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP) +CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP) END SUBROUTINE GATHERALL_N2 @@ -181,7 +181,7 @@ ELSE KRESP = -1 END IF ! ORECV variable of IROOT processor contains the global field -CALL MPI_BCAST(ORECV,SIZE(ORECV),MPI_LOGICAL,IROOT-1,NMNH_COMM_WORLD,KRESP) +CALL MPI_BCAST(ORECV,SIZE(ORECV),MNHLOG_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP) END SUBROUTINE GATHERALL_L3 @@ -598,7 +598,7 @@ IF (ISP == KROOT) THEN IF (JI == KROOT) THEN ITP = KSEND(IXO:IXE) ELSE - CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN @@ -606,7 +606,7 @@ IF (ISP == KROOT) THEN IF (JI==KROOT) THEN ITP = KSEND(IYO:IYE) ELSE - CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -618,10 +618,10 @@ ELSE IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN ITP=>KSEND(IXO:IXE) - CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN ITP=>KSEND(IYO:IYE) - CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -661,7 +661,7 @@ IF (ISP == KROOT) THEN IF (JI == KROOT) THEN ITP = KSEND(IXO:IXE,:) ELSE - CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN @@ -669,7 +669,7 @@ IF (ISP == KROOT) THEN IF (JI==KROOT) THEN ITP = KSEND(IYO:IYE,:) ELSE - CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -681,10 +681,10 @@ ELSE IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN ITP=>KSEND(IXO:IXE,:) - CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN ITP=>KSEND(IYO:IYE,:) - CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -722,7 +722,7 @@ IF (ISP == KROOT) THEN IF (JI == KROOT) THEN IP = KSEND(IXO:IXE,:,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN @@ -730,7 +730,7 @@ IF (ISP == KROOT) THEN IF (JI==KROOT) THEN IP = KSEND(IYO:IYE,:,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -742,10 +742,10 @@ ELSE IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN IP=>KSEND(IXO:IXE,:,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN IP=>KSEND(IYO:IYE,:,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -784,7 +784,7 @@ IF (ISP == KROOT) THEN IF (JI == KROOT) THEN GTP = OSEND(IXO:IXE) ELSE - CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN @@ -792,7 +792,7 @@ IF (ISP == KROOT) THEN IF (JI==KROOT) THEN GTP = OSEND(IYO:IYE) ELSE - CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -804,10 +804,10 @@ ELSE IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN GTP=>OSEND(IXO:IXE) - CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR) ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN GTP=>OSEND(IYO:IYE) - CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -845,7 +845,7 @@ IF (ISP == KROOT) THEN IF (JI == KROOT) THEN IP = OSEND(IXO:IXE,:,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN @@ -853,7 +853,7 @@ IF (ISP == KROOT) THEN IF (JI==KROOT) THEN IP = OSEND(IYO:IYE,:,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -865,10 +865,10 @@ ELSE IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN IP=>OSEND(IXO:IXE,:,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR) ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN IP=>OSEND(IYO:IYE,:,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -1117,14 +1117,14 @@ IF (ISP == KROOT) THEN CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE) ITP = KSEND(IXO:IXE,IYO:IYE) ELSE - CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END DO ELSE ! Other processors CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE) ITP=>KSEND(IXO:IXE,IYO:IYE) - CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END SUBROUTINE GATHERXY_N2 @@ -1155,7 +1155,7 @@ IF (ISP == KROOT) THEN CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER) IP = KSEND(IXO:IXE,IYO:IYE,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -1164,7 +1164,7 @@ ELSE CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER) IF (IXO /= 0) THEN ! intersection is not empty IP=>KSEND(IXO:IXE,IYO:IYE,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF @@ -1196,7 +1196,7 @@ IF (ISP == KROOT) THEN CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER) IP = OSEND(IXO:IXE,IYO:IYE,:) ELSE - CALL MPI_RECV(IP,SIZE(IP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) + CALL MPI_RECV(IP,SIZE(IP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR) END IF END IF END DO @@ -1205,7 +1205,7 @@ ELSE CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER) IF (IXO /= 0) THEN ! intersection is not empty IP=>OSEND(IXO:IXE,IYO:IYE,:) - CALL MPI_BSEND(IP,SIZE(IP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR) + CALL MPI_BSEND(IP,SIZE(IP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR) END IF END IF diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 index 5f97e45f608226807385b7b3056e2ab092ffad46..0b68891388f7088c75bca9392ca291d6eb8d0c2e 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 @@ -13,13 +13,14 @@ ! P. Wautelet 05/03/2019: rename IO subroutines and modules ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 12/04/2019: use MNHTIME for time measurement variables +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !----------------------------------------------------------------- MODULE MODE_IO_FIELD_READ ! USE MODD_IO, ONLY : NVERB_FATAL,NVERB_ERROR,NVERB_WARNING,NVERB_INFO,NVERB_DEBUG,TFILEDATA USE MODD_MPIF -use modd_precision, only: MNHREAL_MPI, MNHTIME +use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNHTIME ! USE MODE_FIELD USE MODE_IO_READ_LFI @@ -107,9 +108,9 @@ CALL MPI_BCAST(TPFIELD%CUNITS, LEN(TPFIELD%CUNITS), MPI_CHARACTER,TPFILE%NMA CALL MPI_BCAST(TPFIELD%CDIR, LEN(TPFIELD%CDIR), MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) CALL MPI_BCAST(TPFIELD%CLBTYPE, LEN(TPFIELD%CLBTYPE), MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) CALL MPI_BCAST(TPFIELD%CCOMMENT, LEN(TPFIELD%CCOMMENT), MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) -CALL MPI_BCAST(TPFIELD%NGRID, 1, MPI_INTEGER, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) -CALL MPI_BCAST(TPFIELD%NTYPE, 1, MPI_INTEGER, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) -CALL MPI_BCAST(TPFIELD%NDIMS, 1, MPI_INTEGER, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) +CALL MPI_BCAST(TPFIELD%NGRID, 1, MNHINT_MPI, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) +CALL MPI_BCAST(TPFIELD%NTYPE, 1, MNHINT_MPI, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) +CALL MPI_BCAST(TPFIELD%NDIMS, 1, MNHINT_MPI, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! END SUBROUTINE IO_Field_metadata_bcast @@ -172,7 +173,7 @@ IF (IRESP==0) THEN END IF END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -270,7 +271,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -405,7 +406,7 @@ IF (IRESP==0) THEN CALL SECOND_MNH2(T1) TIMEZ%T_READ2D_READ=TIMEZ%T_READ2D_READ + T1 - T0 ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -590,7 +591,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -668,7 +669,7 @@ IF (IRESP==0) THEN END DO CALL GA_SYNC ! - CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR) IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error" ! ! get the columun data in this proc @@ -741,7 +742,7 @@ IF (IRESP==0) THEN TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + T2 - T1 END IF ! - CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR) IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error" TZFILE => NULL() END DO @@ -919,7 +920,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1044,7 +1045,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1157,7 +1158,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1242,13 +1243,13 @@ IF (IRESP==0) THEN END IF END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! - CALL MPI_BCAST(KFIELD,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(KFIELD,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF END IF ! @@ -1329,7 +1330,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1337,7 +1338,7 @@ IF (IRESP==0) THEN ! IF (TPFIELD%CDIR /= 'XX' .AND. TPFIELD%CDIR /='YY') THEN ! Broadcast Field - CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ELSE !Scatter Field CALL SCATTER_XXFIELD(TPFIELD%CDIR,IFIELDP,KFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM) @@ -1445,7 +1446,7 @@ IF (IRESP==0) THEN GALLOC = .TRUE. END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1467,7 +1468,7 @@ IF (IRESP==0) THEN END IF ELSE IF (ISP == TPFILE%NMASTER_RANK) KFIELD = IFIELDP - CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF END IF END IF @@ -1539,13 +1540,13 @@ IF (IRESP==0) THEN END IF END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! - CALL MPI_BCAST(OFIELD,1,MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(OFIELD,1,MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF END IF ! @@ -1614,13 +1615,13 @@ IF (IRESP==0) THEN END IF END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! - CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) END IF END IF ! @@ -1689,7 +1690,7 @@ IF (IRESP==0) THEN END IF END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx @@ -1768,14 +1769,14 @@ IF (IRESP==0) THEN ITDATE(3) = TPDATA%TDATE%DAY END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD) ! - CALL MPI_BCAST(ITDATE, 3,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) - CALL MPI_BCAST(TPDATA%TIME,1,MNHREAL_MPI, TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST( ITDATE, 3, MNHINT_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR ) + CALL MPI_BCAST( TPDATA%TIME, 1, MNHREAL_MPI, TPFILE%NMASTER_RANK-1, TPFILE%NMPICOMM, IERR ) TPDATA%TDATE%YEAR = ITDATE(1) TPDATA%TDATE%MONTH = ITDATE(2) TPDATA%TDATE%DAY = ITDATE(3) @@ -1935,7 +1936,7 @@ IF (IRESP==0) THEN TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + T1 - T0 END IF ! - CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) + CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR) ! !Broadcast header only if IRESP==-111 !because metadata of field has been modified in IO_Field_read_xxx diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 index 460962753e1ae4d0c34b386e4b2ec7171c896fe1..a07d0ce2278d157104e1ce9be7e923a48f896125 100644 --- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 @@ -20,6 +20,7 @@ MODULE MODE_MPPDB ! Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics ! Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !----------------------------------------------------------------- ! use ISO_FORTRAN_ENV, only: OUTPUT_UNIT @@ -299,7 +300,8 @@ MODULE MODE_MPPDB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SUBROUTINE MPPDB_CHECK1D_INT(KTAB,MESSAGE) ! - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + use modd_precision, only: MNHINT_MPI ! USE MODE_DEVICE ! @@ -327,7 +329,7 @@ MODULE MODE_MPPDB #else IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN !get the global size of KTAB - CALL MPI_ALLREDUCE(SIZE(KTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(KTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! CALL MPPDB_BARRIER() @@ -353,7 +355,7 @@ MODULE MODE_MPPDB ! NPAS = 1 IF (G_KTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) ! IF (NPAS_ll>NMAXPAS) THEN NPAS_ll = NMAXPAS @@ -366,11 +368,11 @@ MODULE MODE_MPPDB IF(MPPDB_FATHER_WORLD) THEN IF (MPPDB_IRANK_WORLD.EQ.0) THEN I_FIRST_SON = MPPDB_NBPROC_WORLD - CALL MPI_SENDRECV(SIZE(ITAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, & - ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, & + CALL MPI_SENDRECV(SIZE(ITAB), 1,MNHINT_MPI,I_FIRST_SON,NTAG, & + ISIZEOTHER ,1,MNHINT_MPI,I_FIRST_SON,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(ITAB)==ISIZEOTHER) THEN - CALL MPI_RECV(ITAB_SON,SIZE(ITAB_SON),MPI_INTEGER,I_FIRST_SON, & + CALL MPI_RECV(ITAB_SON,SIZE(ITAB_SON),MNHINT_MPI,I_FIRST_SON, & NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) INUMDIFF(IPAS) = COUNT( ITAB(:)/=ITAB_SON(:) ) IF ( INUMDIFF(IPAS)>0 ) THEN @@ -382,11 +384,11 @@ MODULE MODE_MPPDB END IF ELSE I_FIRST_FATHER = 0 - CALL MPI_SENDRECV(SIZE(ITAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & - ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & + CALL MPI_SENDRECV(SIZE(ITAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & + ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(ITAB)==ISIZEOTHER) THEN - CALL MPI_SEND(ITAB,SIZE(ITAB),MPI_INTEGER,I_FIRST_FATHER, & + CALL MPI_SEND(ITAB,SIZE(ITAB),MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF @@ -475,7 +477,8 @@ MODULE MODE_MPPDB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SUBROUTINE MPPDB_CHECK1D_LOG(OTAB,MESSAGE) ! - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + use modd_precision, only: MNHINT_MPI, MNHLOG_MPI ! USE MODE_DEVICE ! @@ -503,7 +506,7 @@ MODULE MODE_MPPDB #else IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN !get the global size of OTAB - CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! CALL MPPDB_BARRIER() @@ -529,7 +532,7 @@ MODULE MODE_MPPDB ! NPAS = 1 IF (G_OTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) ! IF (NPAS_ll>NMAXPAS) THEN NPAS_ll = NMAXPAS @@ -542,11 +545,11 @@ MODULE MODE_MPPDB IF(MPPDB_FATHER_WORLD) THEN IF (MPPDB_IRANK_WORLD.EQ.0) THEN I_FIRST_SON = MPPDB_NBPROC_WORLD - CALL MPI_SENDRECV(SIZE(GTAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, & - ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, & + CALL MPI_SENDRECV(SIZE(GTAB),1,MNHINT_MPI,I_FIRST_SON,NTAG, & + ISIZEOTHER,1,MNHINT_MPI,I_FIRST_SON,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(GTAB)==ISIZEOTHER) THEN - CALL MPI_RECV(GTAB_SON,SIZE(GTAB_SON),MPI_LOGICAL,I_FIRST_SON, & + CALL MPI_RECV(GTAB_SON,SIZE(GTAB_SON),MNHLOG_MPI,I_FIRST_SON, & NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) INUMDIFF(IPAS) = COUNT( GTAB(:).NEQV.GTAB_SON(:) ) IF ( INUMDIFF(IPAS)>0 ) THEN @@ -558,11 +561,11 @@ MODULE MODE_MPPDB END IF ELSE I_FIRST_FATHER = 0 - CALL MPI_SENDRECV(SIZE(GTAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & - ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & + CALL MPI_SENDRECV(SIZE(GTAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & + ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(GTAB)==ISIZEOTHER) THEN - CALL MPI_SEND(GTAB,SIZE(GTAB),MPI_LOGICAL,I_FIRST_FATHER, & + CALL MPI_SEND(GTAB,SIZE(GTAB),MNHLOG_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF @@ -651,8 +654,8 @@ MODULE MODE_MPPDB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SUBROUTINE MPPDB_CHECK1D_REAL(PTAB,MESSAGE,PPRECISION) ! - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX - use modd_precision, only: MNHREAL_MPI + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI ! USE MODE_DEVICE ! @@ -690,7 +693,7 @@ MODULE MODE_MPPDB END IF ! !get the global size of PTAB - CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! CALL MPPDB_BARRIER() @@ -716,7 +719,7 @@ MODULE MODE_MPPDB ! NPAS = 1 IF (G_PTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) ! IF (NPAS_ll>NMAXPAS) THEN NPAS_ll = NMAXPAS @@ -731,8 +734,8 @@ MODULE MODE_MPPDB IF(MPPDB_FATHER_WORLD) THEN IF (MPPDB_IRANK_WORLD.EQ.0) THEN I_FIRST_SON = MPPDB_NBPROC_WORLD - CALL MPI_SENDRECV(SIZE(ZTAB),1,MPI_INTEGER,I_FIRST_SON,NTAG, & - ISIZEOTHER ,1,MPI_INTEGER,I_FIRST_SON,NTAG, & + CALL MPI_SENDRECV(SIZE(ZTAB),1,MNHINT_MPI,I_FIRST_SON,NTAG, & + ISIZEOTHER,1,MNHINT_MPI,I_FIRST_SON,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(ZTAB)==ISIZEOTHER) THEN CALL MPI_RECV(ZTAB_SON,SIZE(ZTAB_SON),MNHREAL_MPI,I_FIRST_SON, & @@ -755,8 +758,8 @@ MODULE MODE_MPPDB END IF ELSE I_FIRST_FATHER = 0 - CALL MPI_SENDRECV(SIZE(ZTAB),1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & - ISIZEOTHER,1,MPI_INTEGER,I_FIRST_FATHER,NTAG, & + CALL MPI_SENDRECV(SIZE(ZTAB),1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & + ISIZEOTHER,1,MNHINT_MPI,I_FIRST_FATHER,NTAG, & MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) IF (SIZE(ZTAB)==ISIZEOTHER) THEN CALL MPI_SEND(ZTAB,SIZE(ZTAB),MNHREAL_MPI,I_FIRST_FATHER, & @@ -850,7 +853,8 @@ MODULE MODE_MPPDB SUBROUTINE MPPDB_CHECK3D_LOG(OTAB,MESSAGE) ! USE MODD_PARAMETERS_ll, ONLY: JPHEXT - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + use modd_precision, only: MNHINT_MPI, MNHLOG_MPI ! USE MODE_DEVICE USE MODE_GATHER_ll @@ -888,7 +892,7 @@ MODULE MODE_MPPDB #else IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN !get the global size of OTAB - CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEOTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(OTAB), IGLBSIZEOTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEOTAB == 0 ) RETURN ! CALL CHECK_ISXYSIZE(SIZE(OTAB,1),SIZE(OTAB,2),GISXYSIZE_GLOB) @@ -916,7 +920,7 @@ MODULE MODE_MPPDB ! NPAS = 1 IF (G_OTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) ! IF (NPAS_ll>NMAXPAS) THEN NPAS_ll = NMAXPAS @@ -950,7 +954,7 @@ MODULE MODE_MPPDB ! ! receive JPHEXT from son if different ! - CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, & + CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, & NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) ! IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll @@ -959,7 +963,7 @@ MODULE MODE_MPPDB ! IF (.NOT. ALLOCATED(TAB_SON_ll)) ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll,IKU_SON_ll)) ! - CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_LOGICAL,I_FIRST_SON, & + CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHLOG_MPI,I_FIRST_SON, & NTAG,MPPDB_INTRA_COMM,MPI_STATUS_IGNORE,IINFO_ll) ! TAB_ll = TAB_ll.NEQV.TAB_SON_ll @@ -1030,10 +1034,10 @@ MODULE MODE_MPPDB ! I_FIRST_FATHER = 0 IHEXT_SON_ll = JPHEXT - CALL MPI_SEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & + CALL MPI_SEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) ! - CALL MPI_SEND(TAB_ll,SIZE(TAB_ll),MPI_LOGICAL,I_FIRST_FATHER, & + CALL MPI_SEND(TAB_ll,SIZE(TAB_ll),MNHLOG_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF @@ -1120,9 +1124,9 @@ MODULE MODE_MPPDB SUBROUTINE MPPDB_CHECK3D_REAL(PTAB,MESSAGE,PPRECISION) ! - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_SUM, MPI_MAX USE MODD_PARAMETERS_ll, ONLY: JPHEXT - use modd_precision, only: MNHREAL_MPI + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI ! USE MODE_DEVICE USE MODE_GATHER_ll @@ -1168,7 +1172,7 @@ MODULE MODE_MPPDB END IF ! !get the global size of PTAB - CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1, MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! CALL CHECK_ISXYSIZE(SIZE(PTAB,1),SIZE(PTAB,2),GISXYSIZE_GLOB) @@ -1196,7 +1200,7 @@ MODULE MODE_MPPDB NPAS = 1 IF (G_PTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) MAX_DIFF(:) = 0.0 @@ -1230,7 +1234,7 @@ MODULE MODE_MPPDB ! ! receive JPHEXT from son if different ! - CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, & + CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, & NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) !IHEXT_SON_ll = JPHEXT @@ -1317,7 +1321,7 @@ MODULE MODE_MPPDB ! I_FIRST_FATHER = 0 IHEXT_SON_ll = JPHEXT - CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & + CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, & @@ -1437,9 +1441,9 @@ MODULE MODE_MPPDB SUBROUTINE MPPDB_CHECK2D_REAL(PTAB,MESSAGE,PPRECISION) ! - USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_STATUS_IGNORE, MPI_LAND, MPI_SUM, MPI_MAX + USE MODD_MPIF, ONLY: MPI_CHARACTER, MPI_STATUS_IGNORE, MPI_LAND, MPI_SUM, MPI_MAX USE MODD_PARAMETERS_ll, ONLY: JPHEXT - use modd_precision, only: MNHREAL_MPI + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI ! USE MODE_DEVICE USE MODE_GATHER_ll @@ -1487,7 +1491,7 @@ MODULE MODE_MPPDB END IF ! !get the global size of PTAB - CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! CALL CHECK_ISXYSIZE(SIZE(PTAB,1),SIZE(PTAB,2),GISXYSIZE_GLOB) @@ -1516,7 +1520,7 @@ MODULE MODE_MPPDB NPAS = 1 IF (G_PTAB_ON_DEVICE) NPAS=2 - CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MPI_INTEGER,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(NPAS,NPAS_ll,1,MNHINT_MPI,MPI_MAX,MPPDB_INTRA_COMM,IINFO_ll) MAX_DIFF(:) = 0.0 @@ -1561,7 +1565,7 @@ MODULE MODE_MPPDB ! receive JPHEXT from son if different ! IF (GISXYSIZE_GLOB) THEN - CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, & + CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, & NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) !IHEXT_SON_ll = JPHEXT @@ -1668,7 +1672,7 @@ MODULE MODE_MPPDB I_FIRST_FATHER = 0 IF (GISXYSIZE_GLOB) THEN IHEXT_SON_ll = JPHEXT - CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & + CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) END IF @@ -1753,10 +1757,10 @@ MODULE MODE_MPPDB SUBROUTINE MPPDB_CHECKLB(PLB,MESSAGE,PPRECISION,HLBTYPE,KRIM) USE MODD_IO, ONLY: GSMONOPROC, ISP, ISNPROC, L2D, LPACK - USE MODD_MPIF, ONLY: MPI_INTEGER, MPI_STATUS_IGNORE + USE MODD_MPIF, ONLY: MPI_STATUS_IGNORE USE MODD_PARAMETERS_ll, ONLY: JPHEXT USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD - use modd_precision, only: MNHREAL_MPI + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODE_DISTRIB_LB USE MODE_TOOLS_ll, ONLY: GET_GLOBALDIMS_ll @@ -1852,7 +1856,7 @@ MODULE MODE_MPPDB ! ! receive JPHEXT from son if different ! - CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, & + CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, & NTAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll @@ -1918,7 +1922,7 @@ MODULE MODE_MPPDB ! I_FIRST_FATHER = 0 IHEXT_SON_ll = JPHEXT - CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & + CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) CALL MPI_BSEND(PLB,SIZE(PLB),MNHREAL_MPI,I_FIRST_FATHER, & NTAG, MPPDB_INTRA_COMM, IINFO_ll) @@ -2036,8 +2040,9 @@ MODULE MODE_MPPDB USE MODI_GET_SURF_MASK_n USE MODD_IO_SURF_MNH, ONLY : NHALO USE MODD_CONFZ , ONLY : MPI_BUFFER_SIZE - USE MODD_MPIF , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM + USE MODD_MPIF , ONLY : MPI_STATUS_IGNORE, MPI_SUM USE MODD_MNH_SURFEX_n + use modd_precision, only: MNHINT_MPI ! IMPLICIT NONE ! @@ -2064,7 +2069,7 @@ MODULE MODE_MPPDB INTEGER :: IINFO_ll ! IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN - CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll) + CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll) IF ( IGLBSIZEPTAB == 0 ) RETURN ! IF ( SIZE(PTAB) == 0 ) THEN !if the local size of the field is 0, we need to define ZFIELD3D filled with default value 1e20 @@ -2170,7 +2175,8 @@ MODULE MODE_MPPDB ! SUBROUTINE CHECK_ISXYSIZE(KX,KY,OISXYSIZE_GLOB) ! - USE MODD_MPIF, ONLY: MPI_LOGICAL, MPI_LAND + USE MODD_MPIF, ONLY: MPI_LAND + use modd_precision, only: MNHLOG_MPI ! IMPLICIT NONE ! @@ -2188,7 +2194,7 @@ MODULE MODE_MPPDB GISXYSIZE = .FALSE. END IF ! - CALL MPI_ALLREDUCE(GISXYSIZE,OISXYSIZE_GLOB,1,MPI_LOGICAL,MPI_LAND,MPPDB_INTER_COMM,IINFO_ll) + CALL MPI_ALLREDUCE(GISXYSIZE,OISXYSIZE_GLOB,1,MNHLOG_MPI,MPI_LAND,MPPDB_INTER_COMM,IINFO_ll) ! END SUBROUTINE CHECK_ISXYSIZE ! diff --git a/src/LIB/SURCOUCHE/src/mode_scatter.f90 b/src/LIB/SURCOUCHE/src/mode_scatter.f90 index 12518db8bd6a1bd8222d637aee2de2264bf163a3..f16f8f6145411a02a68b86cfa0947bf777adbd92 100644 --- a/src/LIB/SURCOUCHE/src/mode_scatter.f90 +++ b/src/LIB/SURCOUCHE/src/mode_scatter.f90 @@ -3,16 +3,15 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- +! Modifications: +! J. Escobar 10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +!----------------------------------------------------------------- MODULE MODE_SCATTER_ll -! -! J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE -! with MPI_STATUS_IGNORE -! - USE MODD_MPIF -use modd_precision, only: MNHREAL_MPI +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI IMPLICIT NONE @@ -322,14 +321,14 @@ IF (ISP == KROOT) THEN END IF IF (ISP /= JI) THEN - CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM& + CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM& & ,IERR) ELSE KRECV(:) = TI2DP(:) END IF END DO ELSE - CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM& + CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM& & ,MPI_STATUS_IGNORE,IERR) END IF @@ -359,14 +358,14 @@ IF (ISP == KROOT) THEN END IF IF (ISP /= JI) THEN - CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM& + CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM& & ,IERR) ELSE KRECV(:,:) = TI2DP(:,:) END IF END DO ELSE - CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM& + CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM& & ,MPI_STATUS_IGNORE,IERR) END IF @@ -572,14 +571,14 @@ IF (ISP == KROOT) THEN TI3DP=>KSEND(IXO:IXE,IYO:IYE) IF (ISP /= JI) THEN - CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM& + CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM& & ,IERR) ELSE KRECV(:,:) = TI3DP(:,:) END IF END DO ELSE - CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM& + CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM& & ,MPI_STATUS_IGNORE,IERR) END IF diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 index 23638d194e3273217719c90a1de448a05a7ec9e0..77d08c6866ce897efa35164f450f5b2ed04e74b3 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 @@ -3,6 +3,9 @@ !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 26/04/2019: use modd_precision parameters for datatypes of MPI communications +!----------------------------------------------------------------- ! ################### MODULE MODE_SUM2_ll @@ -581,7 +584,7 @@ ENDIF ! !* 0. DECLARATIONS ! - use modd_precision, only: MNH2REAL_MPI + use modd_precision, only: MNH2REAL_MPI, MNHINT_MPI USE MODD_VAR_ll, ONLY: IP ! IMPLICIT NONE @@ -627,7 +630,7 @@ ENDIF IPROCMAX = ZBUFOUT(2) IMAXLOC = KLOCALMAX ISIZE=SIZE(KLOCALMAX) - CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, & + CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, & NMNH_COMM_WORLD, INFO_ll) ! KPROC=IPROCMAX @@ -680,7 +683,7 @@ ENDIF ! !* 0. DECLARATIONS ! - use modd_precision, only: MNH2REAL_MPI + use modd_precision, only: MNH2REAL_MPI, MNHINT_MPI USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll USE MODD_VAR_ll, ONLY: IP, TCRRT_PROCONF ! @@ -732,7 +735,7 @@ ENDIF ! IPROCMAX = ZBUFOUT(2) IMAXLOC = KLOCALMAX - CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, & + CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, & NMNH_COMM_WORLD, INFO_ll) ! !------------------------------------------------------------------------------- diff --git a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 index ab948ab80cc8311b44593bde0ce70afcce6fedf4..6e9bfb3a5ec5955fb2e00360209d53ab23be3e4f 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 @@ -3,8 +3,9 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!Correction : -! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +! Modifications: +! J. Escobar 15/09/2015: WENO5 & JPHEXT <> 1 +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !----------------------------------------------------------------- ! ################## @@ -57,7 +58,7 @@ !------------------------------------------------------------------------------ ! USE MODD_MPIF - use modd_precision, only: MNHREAL_MPI + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD ! CONTAINS @@ -1305,8 +1306,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 1.5 Get global begin and end ! - CALL MPI_ALLREDUCE(IB, IGB, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IERR) - CALL MPI_ALLREDUCE(IE, IGE, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLREDUCE(IB, IGB, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLREDUCE(IE, IGE, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR) ! !------------------------------------------------------------------------------- ! @@ -1316,10 +1317,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !* 2.1 Have the sizes and global positions known by all procs ! ISIZE = IE - IB + 1 - CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, & NMNH_COMM_WORLD, IERR) ! - CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MPI_INTEGER, IDISPL, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MNHINT_MPI, IDISPL, 1, MNHINT_MPI, & NMNH_COMM_WORLD, IERR) ! !* 2.2 Get the global field @@ -2829,7 +2830,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !* 1. CALL THE MPI_ALLREDUCE ROUTINE ! ------------------------------ ! - CALL MPI_ALLREDUCE(PRES, ZRES, 1, MPI_INTEGER, & + CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -2892,7 +2893,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !* 1. CALL THE MPI_ALLREDUCE ROUTINE ! ------------------------------ ! - CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MPI_INTEGER, & + CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -2959,7 +2960,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll ! IDIM = SIZE(PRES,1) * SIZE(PRES,2) ! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, & + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -3027,7 +3028,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll ! IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) ! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, & + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, & NMNH_COMM_WORLD, KINFO) ! PRES = ZRES diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 index 2626c5dc320d42fff1c13d1c1e50ede919782de8..8378386e1c732809ab0d9849611e476bbed47304 100644 --- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 @@ -6,6 +6,7 @@ ! Modifications: ! J. Escobar 15/09/2015: WENO5 & JPHEXT <> 1 ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !----------------------------------------------------------------- ! #################### @@ -47,7 +48,7 @@ ! J. Escobar 27/06/2011 correction for gridnesting with different SHAPE ! USE MODD_MPIF - use modd_precision, only: MNHREAL_MPI + use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_STRUCTURE_ll !JUANZ USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD @@ -1274,8 +1275,8 @@ ENDIF ! !* 2.3 Gather values of INUMPROC ! - CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, & - MPI_INTEGER, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, & + MNHINT_MPI, NMNH_COMM_WORLD, IERR) ! !* 2.4 Get MPI world group ! @@ -1308,7 +1309,7 @@ ENDIF ! ALLOCATE(ISIZES(ICOUNT)) ISIZES = 0 - CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, & ICOMM_GLOBALSLICE, IERR) ! !* 3.2 Compute array of displacements in the slice relative to the @@ -1355,7 +1356,7 @@ ENDIF ! IF (ICOMM .NE. MPI_COMM_NULL) THEN ! - CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) + CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR) CALL MPI_BCAST(PGLOBALSLICE(IDISPL1+1), IGLOBALSLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) ! @@ -1601,8 +1602,8 @@ ENDIF ! !* 2.3 Gather values of INUMPROC ! - CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, & - MPI_INTEGER, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, & + MNHINT_MPI, NMNH_COMM_WORLD, IERR) ! !* 2.4 Get MPI world group ! @@ -1637,7 +1638,7 @@ ENDIF ! ALLOCATE(ISIZES(ICOUNT)) ISIZES = 0 - CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, & ICOMM_GLOBALSLICE, IERR) ! !* 3.2 Compute array of displacements in the slice relative to the @@ -1689,7 +1690,7 @@ ENDIF ! IF (ICOMM .NE. MPI_COMM_NULL) THEN ! - CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) + CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR) DO JK = 1, IGLOBALSLICEHEIGHT CALL MPI_BCAST(PGLOBALSLICE(1,JK), IGLOBALSLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) @@ -1956,7 +1957,7 @@ ENDIF ! !* 2.3 Gather values of INUMPROC ! - CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, & NMNH_COMM_WORLD, IERR) ! !* 2.4 Get MPI world group @@ -1990,7 +1991,7 @@ ENDIF ! ALLOCATE(ISIZES(ICOUNT)) ISIZES = 0 - CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, & ICOMM_SLICE, IERR) ! !* 3.2 Compute array of displacements in the slice relative to the @@ -2039,7 +2040,7 @@ ENDIF ! IF (ICOMM .NE. MPI_COMM_NULL) THEN ! - CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) + CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR) CALL MPI_BCAST(ITOTALSLICE, ISLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) CALL MPI_COMM_FREE(ICOMM, IERR) @@ -2309,7 +2310,7 @@ ENDIF ! !* 2.3 Gather values of INUMPROC ! - CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, & NMNH_COMM_WORLD, IERR) ! !* 2.4 Get MPI world group @@ -2343,7 +2344,7 @@ ENDIF ! ALLOCATE(ISIZES(ICOUNT)) ISIZES = 0 - CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, & + CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, & ICOMM_SLICE, IERR) ! !* 3.2 Compute array of displacements in the slice relative to the @@ -2395,7 +2396,7 @@ ENDIF ! IF (ICOMM .NE. MPI_COMM_NULL) THEN ! - CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) + CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR) DO JK = 1, ISLICEHEIGHT CALL MPI_BCAST(ITOTALSLICE(1,JK), ISLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) diff --git a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 index a4ac0bcac29aa2115a31e0b7751e557c9c5da432..08781bb4ba2dacb067c16d41e3b5c94efcbf027a 100644 --- a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 +++ b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 @@ -1,4 +1,4 @@ -!SURFEX_LIC Copyright 1994-2014 Meteo-France +!SURFEX_LIC Copyright 2015-2019 Meteo-France !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SURFEX_LIC for details. version 1. @@ -40,6 +40,7 @@ !! M.Moge 08/2015 calling ABORT if local subdomain is of size < NHALO !! (this causes problems on the boundary of the domain) !! M.Moge 08/2015 bug fix : changing the computation of IISIZE +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg !------------------------------------------------------------------------------- ! @@ -51,6 +52,7 @@ USE YOMHOOK, ONLY: LHOOK, DR_HOOK ! USE MODD_MPIF USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT +use modd_precision, only: MNHINT_MPI USE MODD_STRUCTURE_ll, ONLY: ZONE_ll, CRSPD_ll USE MODD_SURF_PAR, ONLY: NUNDEF USE MODD_VAR_ll, ONLY: NPROC, IP, YSPLITTING, NMNH_COMM_WORLD @@ -174,10 +176,10 @@ DO JI = 1, NPROC IDISPLS( JI ) = JI-1 ENDDO IRECVCOUNTS(:) = 1 -CALL MPI_ALLGATHERV( KXOR, 1, MPI_INTEGER, IXORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLGATHERV( KXEND, 1, MPI_INTEGER, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLGATHERV( KYOR, 1, MPI_INTEGER, IYORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLGATHERV( KYEND, 1, MPI_INTEGER, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLGATHERV( KXOR, 1, MNHINT_MPI, IXORARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll ) +CALL MPI_ALLGATHERV( KXEND, 1, MNHINT_MPI, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll ) +CALL MPI_ALLGATHERV( KYOR, 1, MNHINT_MPI, IYORARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll ) +CALL MPI_ALLGATHERV( KYEND, 1, MNHINT_MPI, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll ) ! DO JI = 1, NPROC TZSPLITTING_PHYS(JI)%NUMBER = JI diff --git a/src/MNH/aer_wet_dep_kmt_warm.f90 b/src/MNH/aer_wet_dep_kmt_warm.f90 index 9061ff769f9ef4fe75fdd6d4ca1949acde97e8af..450f34b47cf6f4e8b53db7187701f291bebf420c 100644 --- a/src/MNH/aer_wet_dep_kmt_warm.f90 +++ b/src/MNH/aer_wet_dep_kmt_warm.f90 @@ -1,7 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2007-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. +!----------------------------------------------------------------- ! ################################ MODULE MODI_AER_WET_DEP_KMT_WARM !! ################################ @@ -114,6 +115,7 @@ END MODULE MODI_AER_WET_DEP_KMT_WARM !! MODIFICATIONS !! ------------- !! Original 09/05/07 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -539,7 +541,7 @@ INTEGER :: JKAQ ! counter for acquous aerosols !------------------------------------------------------------------------------- ! !* Time splitting initialization -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! ZW(:,:,:)=0. ZRRS(:,:,:) = MAX(PRRS(:,:,:), 0.) diff --git a/src/MNH/aerohb.f b/src/MNH/aerohb.f index ce6dafd73bcb06390518c52612d31354361a1575..5174f8a04d6456effbd8cb611021295305bdcbd5 100644 --- a/src/MNH/aerohb.f +++ b/src/MNH/aerohb.f @@ -1,12 +1,10 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2006-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 aerosol 2006/05/18 13:07:25 +! Modifications: +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- subroutine aeroeq(gas,caero,tempk,rh,ICOLUMN,err) C*********************************************************************** @@ -137,10 +135,10 @@ c Reserve the old aerosol concentrations enddo enddo c Calculate mass transport factor - delmu=(alog(Dpup)-alog(Dplow))/float(nasect) + delmu=(alog(Dpup)-alog(Dplow))/real(nasect) fact = 0. do inasect = 1, nasect - Dp=alog(Dplow)+(float(inasect)-0.5)*delmu + Dp=alog(Dplow)+(real(inasect)-0.5)*delmu Dp=exp(Dp)*1.e-6 DPINDEX(INASECT) = dp totmass=0. @@ -215,7 +213,7 @@ c moving sections to the fixed caero(i,j) enddo c do inasect = 1, nasect - Dp=alog(Dplow)+(float(inasect)-0.5)*delmu + Dp=alog(Dplow)+(real(inasect)-0.5)*delmu Dp=exp(Dp)*1.e-6 newvol = Dp**3 + 6./pi*dmass(inasect)/NN(inasect)*1.e-12/densp if(newvol .lt. 0.) newvol = 0. @@ -225,9 +223,9 @@ c write(6,*)icolumn,inasect,Dp*1.e6,Dp1 Dp1 = max(Dp1, Dplow) Dpmove = (alog(Dp1) - alog(Dplow))/delmu + 0.5 if(Dpmove .lt. 1.) Dpmove = 1.000001 - if(Dpmove .gt. float(nasect)) Dpmove = float(nasect)+0.000001 + if(Dpmove .gt. real(nasect)) Dpmove = real(nasect)+0.000001 imove = int(Dpmove) - distr = Dpmove - float(imove) + distr = Dpmove - real(imove) do j = 1, naspec caero(imove,j)=caero(imove,j) + (1.-distr)*caero0(inasect,j) if(imove .ne. nasect) caero(imove+1,j) = caero(imove+1,j) diff --git a/src/MNH/aeroparam.f b/src/MNH/aeroparam.f index b69cccc8fde3590c8795c5eb6cf416655c24e464..769c26d3c396ece84a9a57fb114b5c53469bcfca 100644 --- a/src/MNH/aeroparam.f +++ b/src/MNH/aeroparam.f @@ -1,12 +1,10 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2006-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 aerosol 2006/05/18 13:07:25 +! Modifications: +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- subroutine aeroparam(tempE, iaero, Ustar, Kn, Sc, St, Vsett) C This subroutine calculates the Knudson, Schmidt, and Stokes numbers @@ -47,8 +45,8 @@ C Ustar : Friction velocity data KBolzm,grav/1.38e-23, 9.80/ data alfa,beta,gama/1.257,0.40,-1.10/ tempK = tempE + 273.15 - delmu=(alog(Dpup)-alog(Dplow))/float(nasect) - Dp1=alog(Dplow)+(float(iaero)-1.0)*delmu + delmu=(alog(Dpup)-alog(Dplow))/real(nasect) + Dp1=alog(Dplow)+(real(iaero)-1.0)*delmu Dp2=Dp1+delmu Dp1=exp(Dp1)*1.e-6 Dp2=exp(Dp2)*1.e-6 diff --git a/src/MNH/aerozon.f90 b/src/MNH/aerozon.f90 index 41989f6b5f98b04486338f0b416b1bf47ba2c313..190ff0298cf04f85457e0617205156d8fd0ed9c8 100644 --- a/src/MNH/aerozon.f90 +++ b/src/MNH/aerozon.f90 @@ -139,6 +139,7 @@ END MODULE MODI_AEROZON !! ------------- !! (P.Peyrille) 20/07/04 : add LFIX_DAT to have perpetual day !! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -273,18 +274,18 @@ END DO ! IF ( LFIX_DAT ) THEN IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = FLOAT(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = FLOAT(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF ELSE IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = FLOAT(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = FLOAT(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF END IF diff --git a/src/MNH/ares.f b/src/MNH/ares.f index 369f93348e863454dc4e20a63c5318914ab2fa8d..3fd41e2b9bac4782d0b53f6df1eb606206cf6c31 100644 --- a/src/MNH/ares.f +++ b/src/MNH/ares.f @@ -3,6 +3,9 @@ !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 26/04/2019: replace non-standard FLOAT function by REAL function +!----------------------------------------------------------------- c///////////////////////////////////////////////////////////////////////////// C Calculate the aerosol chemical speciation and water content. @@ -1246,7 +1249,7 @@ c *** check range of per cent relative humidity irh = irhx irh = max(1,irh) irh = min(irh,100) - aw = float(irh) / 100.0 ! water activity = fractional relative humidity + aw = real(irh) / 100.0 ! water activity = fractional relative humidity tso4 = max( mso4 , 0.0 ) tnh4 = max( mnh4 , 0.0 ) tno3 = max( mno3 , 0.0 ) diff --git a/src/MNH/bhmie.f90 b/src/MNH/bhmie.f90 index 8aeb78f034168f8f402e5f1edb9e4c9f96cd92d6..fc482f80239e2cee355f772ed3f6790c145a3de9 100644 --- a/src/MNH/bhmie.f90 +++ b/src/MNH/bhmie.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- ! ################# MODULE MODI_BHMIE ! ################# @@ -65,6 +66,7 @@ END MODULE MODI_BHMIE !! 93/06/01 (BTD): Changed AMAX1 to generic function MAX ! P. Wautelet 22/01/2019: correct kind of complex datatype ! P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !!*********************************************************************** ! !* 0. DECLARATIONS @@ -118,9 +120,9 @@ ISTOP = INT(ZSIZE_PARAM_STOP) ! ALLOCATE(ZTAU(KNANG)) ALLOCATE(ZAMU(KNANG)) -ZDELTA_ANGLE = 0.5*XPI/FLOAT(KNANG-1) +ZDELTA_ANGLE = 0.5*XPI/REAL(KNANG-1) DO J = 1,KNANG - ZAMU(J) = COS( ZDELTA_ANGLE*FLOAT(J-1) ) + ZAMU(J) = COS( ZDELTA_ANGLE*REAL(J-1) ) ENDDO ! ALLOCATE(ZPI(KNANG)) @@ -141,7 +143,7 @@ ZZD(INMX) = (0.,0.) ! DO J = 1,INMX-1 IEN = INMX-J+1 - ZZEN = FLOAT(IEN)/ZZY + ZZEN = REAL(IEN)/ZZY ZZD(INMX-J) = ZZEN-(1.0/(ZZD(IEN)+ZZEN)) ENDDO ! @@ -158,7 +160,7 @@ ZONE = -1. ZZAN1 = CMPLX(0.0d0,0.0d0,kind=kind(ZZAN1)) ZZBN1 = CMPLX(0.0d0,0.0d0,kind=kind(ZZBN1)) DO J = 1,ISTOP - ZEN = FLOAT(J) + ZEN = REAL(J) ZFN = (2.0*ZEN+1.0)/(ZEN*(ZEN+1.0)) ! ! for given N, ZPSI = psi_n ZCHI = chi_n diff --git a/src/MNH/bhmie_bhcoat.f90 b/src/MNH/bhmie_bhcoat.f90 index c235f2ab1bbdb94b9b7aa90b53c1f8207c08033a..154e6c42457f8d64d94086b0094ed17d1424130f 100644 --- a/src/MNH/bhmie_bhcoat.f90 +++ b/src/MNH/bhmie_bhcoat.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- ! ######################## MODULE MODI_BHMIE_BHCOAT ! ######################## @@ -47,6 +48,7 @@ END MODULE MODI_BHMIE_BHCOAT !! History: !! 92/11/24 (BTD) Explicit declaration of all variables ! P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !!*********************************************************************** ! !* 0. DECLARATIONS @@ -128,7 +130,7 @@ ZZBAK = (0.0,0.0) ZONE = 1.0 IFLAG = 0 DO JJ = 1,ISTOP - ZEN = FLOAT(JJ) + ZEN = REAL(JJ) ZPSIY = (2.0*ZEN-1.)*ZPSI1Y/PSIZE_PARAM_COAT - ZPSI0Y ZCHIY = (2.0*ZEN-1.)*ZCHI1Y/PSIZE_PARAM_COAT - ZCHI0Y ZZXIY = CMPLX(ZPSIY,-ZCHIY,kind=kind(ZZXIY)) diff --git a/src/MNH/bhmie_water.f90 b/src/MNH/bhmie_water.f90 index 1a6a6fb208cfdd58dfc032eb9b6fc8b93988a7c9..433942a3a30f10487d962ea92e1bd6c9df46437a 100644 --- a/src/MNH/bhmie_water.f90 +++ b/src/MNH/bhmie_water.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2007-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. +!----------------------------------------------------------------- ! ####################### MODULE MODI_BHMIE_WATER ! ####################### @@ -71,6 +72,7 @@ END MODULE MODI_BHMIE_WATER !! MODIFICATIONS !! ------------- !! Original 01/04/07 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -118,7 +120,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZABSCISSI,ZWEIGHTS ! !------------------------------------------------------------------------------- ! -ZDELTANGLE=0.5E0*XPI/FLOAT(KANGLE-1) +ZDELTANGLE=0.5E0*XPI/REAL(KANGLE-1) ALLOCATE(ZZS1(2*KANGLE-1)) ALLOCATE(ZZS2(2*KANGLE-1)) PEXTINCTION_COEF = 0.0 diff --git a/src/MNH/ch_aer_sedimn.f90 b/src/MNH/ch_aer_sedimn.f90 index a100e700d7e6b25c873fbb7fee59e9e1b46142ce..3f728fceb8af2bb3400b4a06a7584e7df2ab36df 100644 --- a/src/MNH/ch_aer_sedimn.f90 +++ b/src/MNH/ch_aer_sedimn.f90 @@ -1,13 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 chimie 2006/10/18 12:20:58 -!----------------------------------------------------------------- !! ############################## MODULE MODI_CH_AER_SEDIM_n !! ############################## @@ -52,7 +47,8 @@ END MODULE MODI_CH_AER_SEDIM_n !! MODIFICATIONS !! ------------- !! Original -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! ! Entry variables: ! ! PM(IN) -Array of moments @@ -184,7 +180,7 @@ DO JN=1,JPIN ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1 ISPLITA = MIN(50, ISPLITA) ! - ZTSPLITR = PDTMONITOR / FLOAT(ISPLITA) + ZTSPLITR = PDTMONITOR / REAL(ISPLITA) ! DO JT=1,ISPLITA ZFLUXSED(:,:,1:ILU+1,JN)= ZVGK(:,:,1:ILU+1,JN)* ZPM(:,:,1:ILU+1,JN) diff --git a/src/MNH/ch_aqueous_sedim1mom.f90 b/src/MNH/ch_aqueous_sedim1mom.f90 index cd0cf2e146b3e3350801ed6264a93aa9f496a87a..86e4772967af19b30268c9d24dd277ddf9c4cf4c 100644 --- a/src/MNH/ch_aqueous_sedim1mom.f90 +++ b/src/MNH/ch_aqueous_sedim1mom.f90 @@ -2,6 +2,7 @@ !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. +!------------------------------------------------------------------------------- ! ################################ MODULE MODI_CH_AQUEOUS_SEDIM1MOM ! ################################ @@ -80,7 +81,8 @@ END MODULE MODI_CH_AQUEOUS_SEDIM1MOM !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! 16/12/15 (M Leriche) compute instantaneous rain at the surface ! P. Wautelet 12/02/2019: bugfix: ZRR_SEDIM was not initialized everywhere -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -231,7 +233,7 @@ END IF firstcall ! !* 3.2 time splitting loop initialization ! -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) ! Small time step +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! Small time step ! !* 3.3 compute the fluxes ! diff --git a/src/MNH/ch_aqueous_sedim2mom.f90 b/src/MNH/ch_aqueous_sedim2mom.f90 index eef9eff0a4d3270823052fe442499af27db22e26..926a552b3e28b8ea9f1f66f40a891319e7591f40 100644 --- a/src/MNH/ch_aqueous_sedim2mom.f90 +++ b/src/MNH/ch_aqueous_sedim2mom.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2008-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. +!----------------------------------------------------------------- ! ################################ MODULE MODI_CH_AQUEOUS_SEDIM2MOM ! ################################ @@ -79,6 +80,7 @@ END MODULE MODI_CH_AQUEOUS_SEDIM2MOM !! 12/15 M.Leriche : compute instantaneous rain at the surface !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! 01/16 M. Leriche : Fusion C2R2 and KHKO +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !------------------------------------------------------------------------------- ! @@ -178,7 +180,7 @@ PINPRR(:,:) = 0. ! initialize instantaneous precip. ! !* 3.1 time splitting loop initialization ! -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) ! Small time step +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! Small time step ! ! !* 3.2 compute the sedimentation velocities for rain diff --git a/src/MNH/ch_aqueous_sedimc2r2.f90JPP b/src/MNH/ch_aqueous_sedimc2r2.f90JPP index 44e309035006c7ab6e55dd143b5309e56ab8b0fe..b34aae9d1b891feac3466e10dfc00a99fca3e224 100644 --- a/src/MNH/ch_aqueous_sedimc2r2.f90JPP +++ b/src/MNH/ch_aqueous_sedimc2r2.f90JPP @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2014 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. ! ################################ MODULE MODI_CH_AQUEOUS_SEDIMC2R2 @@ -192,7 +192,7 @@ firstcall : IF (GSFIRSTCALL) THEN ZDZMIN = MINVAL(PZZ(IIB:IIE,IJB:IJE,IKB+1:IKE+1)-PZZ(IIB:IIE,IJB:IJE,IKB:IKE)) ISPLITR = 1 SPLIT : DO - ZT = PTSTEP / FLOAT(ISPLITR) + ZT = PTSTEP / REAL(ISPLITR) IF ( ZT * ZVTRMAX / ZDZMIN .LT. 1.) EXIT SPLIT ISPLITR = ISPLITR + 1 END DO SPLIT @@ -212,7 +212,7 @@ END IF firstcall ! !* 3.3 time splitting loop initialization ! -ZTSPLITR = PTSTEP / FLOAT(ISPLITR) ! Small time step +ZTSPLITR = PTSTEP / REAL(ISPLITR) ! Small time step ! !* 3.4 compute the fluxes ! diff --git a/src/MNH/ch_aqueous_tmicice.f90 b/src/MNH/ch_aqueous_tmicice.f90 index 969909f6082f338238d6c926bb15eb3b7becdc6b..213f6cdf58d5d8ca744a26d6423154b7a259d3f9 100644 --- a/src/MNH/ch_aqueous_tmicice.f90 +++ b/src/MNH/ch_aqueous_tmicice.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2008-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. +!----------------------------------------------------------------- ! #################################### MODULE MODI_CH_AQUEOUS_TMICICE ! #################################### @@ -101,6 +102,7 @@ END MODULE MODI_CH_AQUEOUS_TMICICE !! Juan 24/09/2012: for BUG Pgi rewrite PACK function on mode_pack_pgi !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! M.Leriche 2015 correction bug +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !------------------------------------------------------------------------------- ! @@ -551,10 +553,10 @@ IF( IMICRO >= 1 ) THEN ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001, & + ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001, & XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! ! 6.2.3 perform the linear interpolation of the normalized ! "2+XDS"-moment of the incomplete gamma function @@ -697,15 +699,15 @@ IF( IMICRO >= 1 ) THEN ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001, & + ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001, & XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) ) - ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) ) + ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) ) ! - ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001, & + ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001, & XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) ) - ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) ) + ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) ) ! ! 6.3.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel @@ -940,15 +942,15 @@ IF( IMICRO >= 1 ) THEN ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001, & XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! ! 6.5.5 perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -1004,15 +1006,15 @@ IF( IMICRO >= 1 ) THEN ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001, & XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! ! 6.5.10 perform the bilinear interpolation of the normalized ! RDRYG-kernel diff --git a/src/MNH/ch_f77.fx90 b/src/MNH/ch_f77.fx90 index 9a8388966ef3e1fdb095d86476d1bca823c81414..9935889845b4345f3f627c0c8011457f39a3f981 100644 --- a/src/MNH/ch_f77.fx90 +++ b/src/MNH/ch_f77.fx90 @@ -23,6 +23,7 @@ C real(kind(0.0d0)) (to allow compilation by NAG compiler) C**MODIFIED: 08/02/2019 (P.Wautelet) bug fixes: missing argument C + wrong use of an non initialized value C**MODIFIED: P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +C P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function C! C! C! @@ -5457,9 +5458,9 @@ c INCLUDE 'params' wlabel = 'equal spacing' nw = nwint + 1 - wincr = (wstop - wstart) / FLOAT (nwint) + wincr = (wstop - wstart) / REAL (nwint) DO iw = 1, nw-1 - wl(iw) = wstart + wincr*FLOAT(iw-1) + wl(iw) = wstart + wincr*REAL(iw-1) wu(iw) = wl(iw) + wincr wc(iw) = ( wl(iw) + wu(iw) )/2. ENDDO @@ -5562,7 +5563,7 @@ c wlabel = 'isaksen.grid' DO i = 1, 3859 iw = 3859 - i + 39 wn(iw) = 10000 + 10*(i-1) - wl(iw) = 1.E7/float(wn(iw)) + wl(iw) = 1.E7/real(wn(iw)) ENDDO nw = 3859 + 38 @@ -5598,9 +5599,9 @@ c wlabel = 'isaksen.grid' wlabel = 'grid in air wavelengths' nw = nwint + 1 - wincr = (wstop - wstart) / FLOAT (nwint) + wincr = (wstop - wstart) / REAL (nwint) DO iw = 1, nw-1 - wl(iw) = wstart + wincr*FLOAT(iw-1) + wl(iw) = wstart + wincr*REAL(iw-1) wu(iw) = wl(iw) + wincr wc(iw) = ( wl(iw) + wu(iw) )/2. ENDDO @@ -5822,10 +5823,10 @@ c wlabel = 'isaksen.grid' 1 CONTINUE WRITE(*,*) 'equally spaced z-grid' - zincr = (zstop - zstart) / FLOAT(nz - 1) + zincr = (zstop - zstart) / REAL(nz - 1) z(1) = zstart DO i = 2, nz - z(i) = z(1) + zincr*FLOAT(i-1) + z(i) = z(1) + zincr*REAL(i-1) ENDDO GOTO 10 @@ -5834,7 +5835,7 @@ c wlabel = 'isaksen.grid' 2 CONTINUE WRITE(*,*) 'equally spaced z-grid' - zincr = (zstop - zstart) / FLOAT(nz - 1) + zincr = (zstop - zstart) / REAL(nz - 1) nlev = nz-1 n = 1 CALL buildz(zincr, nlev, n, z) @@ -5921,19 +5922,19 @@ c wlabel = 'isaksen.grid' nz = 99 z(1) = zstart DO i = 2, 41 - z(i) = z(1) + 0.1*FLOAT(i-1) + z(i) = z(1) + 0.1*REAL(i-1) ENDDO DO i = 42, 61 - z(i) = z(41) + 0.2*FLOAT(i-41) + z(i) = z(41) + 0.2*REAL(i-41) ENDDO DO i = 62, 83 - z(i) = z(61) + 1.*FLOAT(i-61) + z(i) = z(61) + 1.*REAL(i-61) ENDDO DO i = 84, 93 - z(i) = z(83) + 2.*FLOAT(i-83) + z(i) = z(83) + 2.*REAL(i-83) ENDDO DO i = 94, 99 - z(i) = z(93) + 5.*FLOAT(i-93) + z(i) = z(93) + 5.*REAL(i-93) ENDDO GOTO 10 @@ -6100,7 +6101,7 @@ c INCLUDE 'params' j = 0 DO i = n + 1, n + nlev j = j + 1 - z(i) = z(n) + FLOAT(j)*zincr + z(i) = z(n) + REAL(j)*zincr ENDDO n = n + nlev @@ -6210,11 +6211,11 @@ c c IF(nt .EQ. 1) THEN c dt = 0. c ELSE -c dt = (tstop - tstart) / FLOAT(nt - 1) +c dt = (tstop - tstart) / REAL(nt - 1) c ENDIF c c DO 10 it = 1, nt -c t(it) = tstart + dt * FLOAT(it - 1) +c t(it) = tstart + dt * REAL(it - 1) c c * solar zenith angle calculation: c * If lzenit = .TRUE., use selected solar zenith angles, also @@ -9549,7 +9550,7 @@ c c INCLUDE 'params' n = 559*10 DO 13, i = 1, n - lambda_hi(i)=120.5 + FLOAT(i-1)*.05 + lambda_hi(i)=120.5 + REAL(i-1)*.05 irrad_hi(i) = irrad_hi(i) / 1000. 13 CONTINUE *_______________________________________________________________________ @@ -11499,7 +11500,7 @@ c INCLUDE 'params' n = 135 DO i = 1, n READ(UNIT=ilu,FMT=*) idum, y1(i) - x1(i) = FLOAT(idum) + x1(i) = REAL(idum) ENDDO CLOSe(UNIT=ilu) @@ -15080,7 +15081,7 @@ c .. External Subroutines .. c .. c .. Intrinsic Functions .. - INTRINSIC FLOAT, SQRT + INTRINSIC REAL, SQRT c .. SAVE SQT, PASS1 DATA PASS1 / .TRUE. / @@ -15091,7 +15092,7 @@ c .. PASS1 = .FALSE. DO 10 NS = 1, MAXSQT - SQT( NS ) = SQRT( FLOAT( NS ) ) + SQT( NS ) = SQRT( REAL( NS ) ) 10 CONTINUE END IF @@ -15520,7 +15521,7 @@ c .. External Subroutines .. c .. c .. Intrinsic Functions .. - INTRINSIC ABS, ASIN, COS, FLOAT, MOD, TAN + INTRINSIC ABS, ASIN, COS, MOD, REAL, TAN c .. SAVE PI, TOL @@ -15549,7 +15550,7 @@ c .. EN = M NP1 = M + 1 NNP1 = M*NP1 - CONA = FLOAT( M - 1 ) / ( 8*M**3 ) + CONA = REAL( M - 1 ) / ( 8*M**3 ) LIM = M / 2 @@ -19101,24 +19102,24 @@ C ############################## *= I - INTEGER, identifies the machine constant (0<I<5) (I) =* *= D1MACH - REAL, machine constant in single precision (O) =* *= I=1 - the smallest non-vanishing normalized floating-point =* -*= power of the radix, i.e., D1MACH=FLOAT(IBETA)**MINEXP =* +*= power of the radix, i.e., D1MACH=REAL(IBETA)**MINEXP =* *= I=2 - the largest finite floating-point number. In =* -*= particular D1MACH=(1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP =* +*= particular D1MACH=(1.0-EPSNEG)*REAL(IBETA)**MAXEXP =* *= Note - on some machines D1MACH will be only the =* *= second, or perhaps third, largest number, being =* *= too small by 1 or 2 units in the last digit of =* *= the significand. =* *= I=3 - A small positive floating-point number such that =* *= 1.0-D1MACH .NE. 1.0. In particular, if IBETA = 2 =* -*= or IRND = 0, D1MACH = FLOAT(IBETA)**NEGEPS. =* +*= or IRND = 0, D1MACH = REAL(IBETA)**NEGEPS. =* *= Otherwise, D1MACH = (IBETA**NEGEPS)/2. Because =* *= NEGEPS is bounded below by -(IT+3), D1MACH may not =* *= be the smallest number that can alter 1.0 by =* *= subtraction. =* *= I=4 - the smallest positive floating-point number such =* *= that 1.0+D1MACH .NE. 1.0. In particular, if either =* -*= IBETA = 2 or IRND = 0, D1MACH=FLOAT(IBETA)**MACHEP. =* -*= Otherwise, D1MACH=(FLOAT(IBETA)**MACHEP)/2 =* +*= IBETA = 2 or IRND = 0, D1MACH=REAL(IBETA)**MACHEP. =* +*= Otherwise, D1MACH=(REAL(IBETA)**MACHEP)/2 =* *= (see routine T665D for more information on different constants) =* *-----------------------------------------------------------------------------* @@ -19366,24 +19367,24 @@ C---------- LAST CARD OF T665D ---------- *= I - INTEGER, identifies the machine constant (0<I<5) (I) =* *= R1MACH - REAL, machine constant in single precision (O) =* *= I=1 - the smallest non-vanishing normalized floating-point =* -*= power of the radix, i.e., R1MACH=FLOAT(IBETA)**MINEXP =* +*= power of the radix, i.e., R1MACH=REAL(IBETA)**MINEXP =* *= I=2 - the largest finite floating-point number. In =* -*= particular R1MACH=(1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP =* +*= particular R1MACH=(1.0-EPSNEG)*REAL(IBETA)**MAXEXP =* *= Note - on some machines R1MACH will be only the =* *= second, or perhaps third, largest number, being =* *= too small by 1 or 2 units in the last digit of =* *= the significand. =* *= I=3 - A small positive floating-point number such that =* *= 1.0-R1MACH .NE. 1.0. In particular, if IBETA = 2 =* -*= or IRND = 0, R1MACH = FLOAT(IBETA)**NEGEPS. =* +*= or IRND = 0, R1MACH = REAL(IBETA)**NEGEPS. =* *= Otherwise, R1MACH = (IBETA**NEGEPS)/2. Because =* *= NEGEPS is bounded below by -(IT+3), R1MACH may not =* *= be the smallest number that can alter 1.0 by =* *= subtraction. =* *= I=4 - the smallest positive floating-point number such =* *= that 1.0+R1MACH .NE. 1.0. In particular, if either =* -*= IBETA = 2 or IRND = 0, R1MACH=FLOAT(IBETA)**MACHEP. =* -*= Otherwise, R1MACH=(FLOAT(IBETA)**MACHEP)/2 =* +*= IBETA = 2 or IRND = 0, R1MACH=REAL(IBETA)**MACHEP. =* +*= Otherwise, R1MACH=(REAL(IBETA)**MACHEP)/2 =* *= (see routine T665R for more information on different constants) =* *-----------------------------------------------------------------------------* @@ -19459,33 +19460,33 @@ C than IT base IBETA digits participate in the C post-normalization shift of the floating-point C significand in multiplication. C MACHEP - the largest negative integer such that -C 1.0+FLOAT(IBETA)**MACHEP .NE. 1.0, except that +C 1.0+REAL(IBETA)**MACHEP .NE. 1.0, except that C MACHEP is bounded below by -(IT+3) C NEGEPS - the largest negative integer such that -C 1.0-FLOAT(IBETA)**NEGEPS .NE. 1.0, except that +C 1.0-REAL(IBETA)**NEGEPS .NE. 1.0, except that C NEGEPS is bounded below by -(IT+3) C IEXP - the number of bits (decimal places if IBETA = 10) C reserved for the representation of the exponent C (including the bias or sign) of a floating-point C number C MINEXP - the largest in magnitude negative integer such that -C FLOAT(IBETA)**MINEXP is positive and normalized +C REAL(IBETA)**MINEXP is positive and normalized C MAXEXP - the smallest positive power of BETA that overflows C EPS - the smallest positive floating-point number such C that 1.0+EPS .NE. 1.0. In particular, if either -C IBETA = 2 or IRND = 0, EPS = FLOAT(IBETA)**MACHEP. -C Otherwise, EPS = (FLOAT(IBETA)**MACHEP)/2 +C IBETA = 2 or IRND = 0, EPS = REAL(IBETA)**MACHEP. +C Otherwise, EPS = (REAL(IBETA)**MACHEP)/2 C EPSNEG - A small positive floating-point number such that C 1.0-EPSNEG .NE. 1.0. In particular, if IBETA = 2 -C or IRND = 0, EPSNEG = FLOAT(IBETA)**NEGEPS. +C or IRND = 0, EPSNEG = REAL(IBETA)**NEGEPS. C Otherwise, EPSNEG = (IBETA**NEGEPS)/2. Because C NEGEPS is bounded below by -(IT+3), EPSNEG may not C be the smallest number that can alter 1.0 by C subtraction. C XMIN - the smallest non-vanishing normalized floating-point -C power of the radix, i.e., XMIN = FLOAT(IBETA)**MINEXP +C power of the radix, i.e., XMIN = REAL(IBETA)**MINEXP C XMAX - the largest finite floating-point number. In -C particular XMAX = (1.0-EPSNEG)*FLOAT(IBETA)**MAXEXP +C particular XMAX = (1.0-EPSNEG)*REAL(IBETA)**MAXEXP C Note - on some machines XMAX will be only the C second, or perhaps third, largest number, being C too small by 1 or 2 units in the last digit of @@ -20573,7 +20574,7 @@ c INCLUDE 'params' CLOSE (UNIT=ilu) DO i = 1, n y1(i) = y1(i) * 1.E-19 - x1(i) = 400. + 1.*FLOAT(i-1) + x1(i) = 400. + 1.*REAL(i-1) ENDDO CALL addpnt(x1,y1,kdata,n,x1(1)*(1.-deltax),0.) @@ -35296,7 +35297,7 @@ c INCLUDE 'params' CLOSE(UNIT=ilu) DO m = 1, 12 - tmp(m) = 190. + 10.*FLOAT(m-1) + tmp(m) = 190. + 10.*REAL(m-1) IF(m .EQ. 1) tmp(m) = 180. DO i = 1, nn @@ -40664,7 +40665,7 @@ c INCLUDE 'params' WRITE(kout,*)'aerosols: Elterman (1968) continental profile' nd = 51 DO 22, i = 1, nd - zd(i) = FLOAT(i-1) + zd(i) = REAL(i-1) 22 CONTINUE * assume these are point values (at each level), so find column diff --git a/src/MNH/ch_init_jvalues.f90 b/src/MNH/ch_init_jvalues.f90 index df8e26e72607081300dc8a4427b1e032ed103dcf..68080578b1fa12d756472238ebf0ee8c670f8bfe 100644 --- a/src/MNH/ch_init_jvalues.f90 +++ b/src/MNH/ch_init_jvalues.f90 @@ -64,6 +64,7 @@ END MODULE MODI_CH_INIT_JVALUES !! interpolation !! 01/12/04 (P. Tulet) update for arome !! 19/06/2014(J.Escobar & M.Leriche) write(kout,...) to OUTPUT_LISTING file +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -123,7 +124,7 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB)) ! IF (.NOT. ALLOCATED(XSZA_JVAL)) ALLOCATE(XSZA_JVAL(NSZA_INCR)) DO JSZA = 1, NSZA_INCR - XSZA_JVAL(JSZA) = FLOAT(JSZA-1) + XSZA_JVAL(JSZA) = REAL(JSZA-1) ENDDO ! !* Ozone Column @@ -136,10 +137,10 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB)) ! !* Vertical Levels ! - ZDZ = ZMAX / FLOAT(NZZ_JVAL - 1) + ZDZ = ZMAX / REAL(NZZ_JVAL - 1) IF(.NOT.ALLOCATED(XZZ_JVAL)) ALLOCATE(XZZ_JVAL(NZZ_JVAL)) DO JKLEV = 1, NZZ_JVAL - XZZ_JVAL(JKLEV) = FLOAT(JKLEV-1) * ZDZ + XZZ_JVAL(JKLEV) = REAL(JKLEV-1) * ZDZ ZLWC(JKLEV)= 0.0 ENDDO ! @@ -147,7 +148,7 @@ IF (.NOT.ALLOCATED(XJDATA)) ALLOCATE(XJDATA(NSZA_INCR,NZZ_JVAL,JPJVMAX,NBALB)) ! -------------- ! DO JALB=1,NBALB - ZALBLOOP=0.02+0.20*FLOAT(JALB-1)/FLOAT(NBALB-1) + ZALBLOOP=0.02+0.20*REAL(JALB-1)/REAL(NBALB-1) DO JSZA = 1, NSZA_INCR ZSZALOOP = XSZA_JVAL(JSZA) CALL TUVMAIN( ZSZALOOP, IDATE, & diff --git a/src/MNH/ch_interp_jvalues.f90 b/src/MNH/ch_interp_jvalues.f90 index b643e7d6d4a63aa0e5f4b5e59bddd143937d1f60..5dd98d62cfd4f1bb0471a633776bfb4ad7d68f77 100644 --- a/src/MNH/ch_interp_jvalues.f90 +++ b/src/MNH/ch_interp_jvalues.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 chimie 2006/07/20 11:45:57 -!----------------------------------------------------------------- ! ############################# MODULE MODI_CH_INTERP_JVALUES ! ############################# @@ -63,6 +58,7 @@ USE MODD_CH_INIT_JVALUES, ONLY : JPJVMAX !! P. Tulet 01/11/03 externalisation surface/ UV albedos from ! radiations !! P. Tulet 01/06/05 updates for arome +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !!------------------------------------------------------------------------------ !! @@ -243,8 +239,8 @@ PJVALUES(:,:,:,:) = ZJDATAALB(:,:,:,:,1) ! DO JALB=1,NBALB-1 - ZALB1(:,:) = 0.02+0.20*FLOAT(JALB-1)/FLOAT(NBALB-1) - ZALB2(:,:) = 0.02+0.20*FLOAT(JALB )/FLOAT(NBALB-1) + ZALB1(:,:) = 0.02+0.20*REAL(JALB-1)/REAL(NBALB-1) + ZALB2(:,:) = 0.02+0.20*REAL(JALB )/REAL(NBALB-1) DO JJVAL = 1, JPJVMAX DO JH = IKB, IKE diff --git a/src/MNH/ch_make_lookup.f90 b/src/MNH/ch_make_lookup.f90 index aac6f60374547d6ea71d3c516754ed42b194b6af..3e1b6ce308d67583a72a93b5d0b4ca4b549369f2 100644 --- a/src/MNH/ch_make_lookup.f90 +++ b/src/MNH/ch_make_lookup.f90 @@ -53,6 +53,7 @@ !! ------------- !! Original 01/03/99 !! Philippe Wautelet: 10/01/2019: use newunit argument to open files +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -100,14 +101,14 @@ NAMELIST /NAM_TUV/ ALAT, ALONG, IDATE, ALBNEW, DOBNEW ! ------------------- ! ! initialize az and atime -DZ = ZMAX / FLOAT(NLEVEL - 1) +DZ = ZMAX / REAL(NLEVEL - 1) DO J = 1, NLEVEL - AZ(J) = FLOAT(J-1) * DZ + AZ(J) = REAL(J-1) * DZ LWC(J)= 0.0 ENDDO -DT = 24.00 / FLOAT(NTIME - 1) +DT = 24.00 / REAL(NTIME - 1) DO I = 1, NTIME - ATIME(I) = FLOAT(I-1) * DT + ATIME(I) = REAL(I-1) * DT ENDDO ! ! initialize default values diff --git a/src/MNH/ch_meteo_trans_c2r2.f90 b/src/MNH/ch_meteo_trans_c2r2.f90 index 02c25bb7121a6322473a5dadc016198d286298dd..8ee2d933402524f3d46e14e48042813ca6764879 100644 --- a/src/MNH/ch_meteo_trans_c2r2.f90 +++ b/src/MNH/ch_meteo_trans_c2r2.f90 @@ -98,6 +98,7 @@ SUBROUTINE CH_METEO_TRANS_C2R2(KL, PRHODJ, PRHODREF, PRTSM, PCCTSM, PCRTSM, & !! 05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme !! 05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -327,9 +328,9 @@ DO JM=0,KVECNPT-1 ! ! "Current date" ! - TPM(JM+1)%XMETEOVAR(8) = FLOAT(KYEAR) - TPM(JM+1)%XMETEOVAR(9) = FLOAT(KMONTH) - TPM(JM+1)%XMETEOVAR(10)= FLOAT(KDAY) + TPM(JM+1)%XMETEOVAR(8) = REAL(KYEAR) + TPM(JM+1)%XMETEOVAR(9) = REAL(KMONTH) + TPM(JM+1)%XMETEOVAR(10)= REAL(KDAY) ! ! "Rain water (kg/kg)" ! diff --git a/src/MNH/ch_meteo_trans_kess.f90 b/src/MNH/ch_meteo_trans_kess.f90 index 74bd129b6cfcc6b745181566ad3e48e21e7d1771..a539ebebb40124f14bd4ba09e1bbae588334f73a 100644 --- a/src/MNH/ch_meteo_trans_kess.f90 +++ b/src/MNH/ch_meteo_trans_kess.f90 @@ -96,6 +96,7 @@ SUBROUTINE CH_METEO_TRANS_KESS(KL, PRHODJ, PRHODREF, PRTSM, PTHT, PABST, & !! 05/06/08 (M. Leriche) calculate LWC and LWR in coherence with time spliting scheme !! 05/11/08 (M. Leriche) split in two routines for 1-moment and 2-moment cloud schemes ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -329,9 +330,9 @@ DO JM=0,KVECNPT-1 ! ! "Current date" ! - TPM(JM+1)%XMETEOVAR(8) = FLOAT(KYEAR) - TPM(JM+1)%XMETEOVAR(9) = FLOAT(KMONTH) - TPM(JM+1)%XMETEOVAR(10)= FLOAT(KDAY) + TPM(JM+1)%XMETEOVAR(8) = REAL(KYEAR) + TPM(JM+1)%XMETEOVAR(9) = REAL(KMONTH) + TPM(JM+1)%XMETEOVAR(10)= REAL(KDAY) ! ! "Rain water (kg/kg)" ! diff --git a/src/MNH/ch_model0d.f90 b/src/MNH/ch_model0d.f90 index e93cb849380821c0c1e048459efa72d0f50a4465..c2b4fb45727db9663e58f0c26b1a9bf6a853f702 100644 --- a/src/MNH/ch_model0d.f90 +++ b/src/MNH/ch_model0d.f90 @@ -43,6 +43,7 @@ !! 24/24/14 (M. Leriche) add ReLACS3 !! M.Leriche 2015 : masse molaire Black carbon à 12 g/mol !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -354,10 +355,10 @@ DO JI=1,11 IBIS(JI) = INOBIS(JI)+1 END DO IF( MOD(IYEAR,4).EQ.0 ) THEN - ZDATE = FLOAT(IDAY + IBIS(IMONTH-1)) - 1 + ZDATE = REAL(IDAY + IBIS(IMONTH-1)) - 1 ZAD = 2.0*ZPI*ZDATE/366.0 ELSE - ZDATE = FLOAT(IDAY + INOBIS(IMONTH-1)) - 1 + ZDATE = REAL(IDAY + INOBIS(IMONTH-1)) - 1 ZAD = 2.0*ZPI*ZDATE/365.0 END IF ZDECSOL = 0.006918-0.399912*COS(ZAD) +0.070257*SIN(ZAD) & diff --git a/src/MNH/ch_ph_polyroot.f90 b/src/MNH/ch_ph_polyroot.f90 index 1ae312322653d95160aca63c61bb343769fc91e3..6b4f9458a8023ceacc6baacd77f045744b761c1a 100644 --- a/src/MNH/ch_ph_polyroot.f90 +++ b/src/MNH/ch_ph_polyroot.f90 @@ -1,6 +1,6 @@ !MNH_LIC Copyright 2007-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. ! ########################## MODULE MODI_CH_PH_POLYROOT @@ -35,6 +35,7 @@ END MODULE MODI_CH_PH_POLYROOT !! ------------- !! Original 26/03/07 ! P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -143,7 +144,7 @@ CONTAINS ZZG = ZZD/ZZB ZZG2 = ZZG*ZZG ZZH = ZZG2 - 2.0*(ZZF/ZZB) - ZZSQ = SQRT( FLOAT(IM-1)*(FLOAT(IM)*ZZH-ZZG2) ) + ZZSQ = SQRT( REAL(IM-1)*(REAL(IM)*ZZH-ZZG2) ) ZZGP = ZZG + ZZSQ ZZGM = ZZG - ZZSQ ! @@ -153,7 +154,7 @@ CONTAINS ZZGP = ZZGM END IF IF(MAX(ZABP,ZABM) > 0.0) THEN - ZZDX = FLOAT(IM)/ZZGP + ZZDX = REAL(IM)/ZZGP ELSE ZZDX = EXP(CMPLX(LOG(1.0+ZABX),REAL(JITER,kind=kind(ZZDX)),kind=kind(ZZDX))) END IF diff --git a/src/MNH/ch_solve_ph.f90 b/src/MNH/ch_solve_ph.f90 index 5662675448f93e31415070fdd57f08e60b6e1b5e..34db6d207675381e044f41da5df3e78a39cd0bc7 100644 --- a/src/MNH/ch_solve_ph.f90 +++ b/src/MNH/ch_solve_ph.f90 @@ -60,6 +60,7 @@ END MODULE MODI_CH_SOLVE_PH !! J.-P. Pinty 11/07/07 add CO3-- and SO3-- !! M. Leriche 05/06/08 add sum of ions ! P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !! !! EXTERNAL !! -------- @@ -249,7 +250,7 @@ END DO IF( .not.GPH_TOT ) THEN WRITE(UNIT=KLUOUT,FMT='("CH_SOLVE_PH: no convergence in the range ", & & "0<pH<12, Nunber of case =",F6.2," %")') & - 100.0*( 1.0-(FLOAT(ITRUE)/FLOAT(KLW)) ) + 100.0*( 1.0-(REAL(ITRUE)/REAL(KLW)) ) ENDIF ! DEALLOCATE(ZCOEFS) diff --git a/src/MNH/clustering.f90 b/src/MNH/clustering.f90 index 882de5a753ef9996e2b6b0aaed370d1d39bfd646..f1dfe3383c6783497882fc53b91efca61d74bbaf 100644 --- a/src/MNH/clustering.f90 +++ b/src/MNH/clustering.f90 @@ -60,15 +60,15 @@ END MODULE MODI_CLUSTERING !! Modified 13/11/14 T. Dauhut adding property field analyse !! Modified 13/06/17 T. Dauhut to start volume scan from top !! Modified 04/10/17 T. Dauhut to be added to next MNH versions -!! +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ USE MODD_ARGSLIST_ll, ONLY: LIST_ll USE MODD_DYN_n, ONLY: XDXHATM, XDYHATM -USE MODD_MPIF , ONLY: MPI_INTEGER -use MODD_PRECISION, only: MNHREAL_MPI +use MODD_PRECISION, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY: NPROC, IP, NMNH_COMM_WORLD ! USE MODE_ll @@ -643,7 +643,7 @@ DEALLOCATE(ZLOCLISTFLD) !PRINT *,IRANK,'concatenate non-redundant 1D table' ! ALLOCATE(ICLUSNBR(NPROC)) ! number of clusters in each proc's local domain -CALL MPI_ALLGATHER(ICPT, 1, MPI_INTEGER, ICLUSNBR, 1, MPI_INTEGER, NMNH_COMM_WORLD, INFO) +CALL MPI_ALLGATHER(ICPT, 1, MNHINT_MPI, ICLUSNBR, 1, MNHINT_MPI, NMNH_COMM_WORLD, INFO) ! each processor knows now how many clusters appear in all other processor domains ! !PRINT *,IRANK,'build IPROCDPL' @@ -669,11 +669,11 @@ IGLBLISTSEC=0 ZGLBLISTFLD=0. ! !PRINT *,IRANK,'call all-gatherv' -CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MPI_INTEGER, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MPI_INTEGER, & +CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MNHINT_MPI, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MNHINT_MPI, & NMNH_COMM_WORLD, INFO) -CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MPI_INTEGER, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MPI_INTEGER, & +CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MNHINT_MPI, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MNHINT_MPI, & NMNH_COMM_WORLD, INFO) -CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MPI_INTEGER, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MPI_INTEGER, & +CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MNHINT_MPI, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MNHINT_MPI, & NMNH_COMM_WORLD, INFO) CALL MPI_ALLGATHERV(ZLOCLISTFLD2, ICPT, MNHREAL_MPI, ZGLBLISTFLD, ICLUSNBR, IPROCDPL, MNHREAL_MPI, & NMNH_COMM_WORLD, INFO) diff --git a/src/MNH/fft.f b/src/MNH/fft.f index b0fa5e744f3412393c4203053420bed13b5b414d..7a9e69545e8812c434477cf976486af6cba2229c 100644 --- a/src/MNH/fft.f +++ b/src/MNH/fft.f @@ -5,6 +5,7 @@ !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 22/02/2019: replace Hollerith edit descriptor (deleted from Fortran 95 standard) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- SUBROUTINE SET99(TRIGS,IFAX,N) IMPLICIT LOGICAL (L) @@ -20,11 +21,11 @@ C C IXXX=1 C - DEL=4.0*ASIN(1.0)/FLOAT(N) + DEL=4.0*ASIN(1.0)/REAL(N) NIL=0 NHL=(N/2)-1 DO 10 K=NIL,NHL - ANGLE=FLOAT(K)*DEL + ANGLE=REAL(K)*DEL TRIGS(2*K+1)=COS(ANGLE) TRIGS(2*K+2)=SIN(ANGLE) 10 CONTINUE @@ -1225,7 +1226,7 @@ CDIR$ IVDEP GO TO 900 C 290 CONTINUE - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) DO 294 JL=1,ILA I=IBASE J=JBASE @@ -1338,7 +1339,7 @@ CDIR$ IVDEP GO TO 900 C 390 CONTINUE - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) ZSIN60=Z*SIN60 DO 394 JL=1,ILA I=IBASE @@ -1467,7 +1468,7 @@ CDIR$ IVDEP GO TO 900 C 490 CONTINUE - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) DO 494 JL=1,ILA I=IBASE J=JBASE @@ -1630,7 +1631,7 @@ CDIR$ IVDEP GO TO 900 C 590 CONTINUE - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) ZQRT5=Z*QRT5 ZSIN36=Z*SIN36 ZSIN72=Z*SIN72 @@ -1806,7 +1807,7 @@ CDIR$ IVDEP GO TO 900 C 690 CONTINUE - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) ZSIN60=Z*SIN60 DO 694 JL=1,ILA I=IBASE @@ -1849,7 +1850,7 @@ C ------------------- JC=JB+2*M*INC2 JD=JC+2*M*INC2 JE=JD+2*M*INC2 - Z=1.0/FLOAT(N) + Z=1.0/REAL(N) ZSIN45=Z*SQRT(0.5) C DO 820 JL=1,ILA diff --git a/src/MNH/fft55.f90 b/src/MNH/fft55.f90 index 42ed1433d878b10a5ebefd4385901cec80f22444..7f73c201a3ea25f8aeb187d94805e787460e5bdf 100644 --- a/src/MNH/fft55.f90 +++ b/src/MNH/fft55.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1987-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 solver 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ######spl SUBROUTINE FFT55(PA,PWORK,PTRIGS,KIFAX,KINC,KJUMP,KN,KLOT,KISIGN) ! ################################################################# @@ -68,6 +63,7 @@ !! RFFTMLT by the arpege routine FFT991 !! Revision J. Stein and P. Jabouille (juillet 96) extend the pre- !! and post-processing to the odd number +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -137,7 +133,7 @@ IF (KISIGN.EQ.1) THEN ! 2.1 preprocessing ! ------------- ! - ZSCALE=0.5*FLOAT(KN) + ZSCALE=0.5*REAL(KN) ! this loop works for odd and even case DO JK=1,(KN-1)/2 IJA=JK+1 @@ -261,7 +257,7 @@ ELSE ! 3.3 postprocessing ! -------------- ! - ZSCALE=0.5/FLOAT(KN) + ZSCALE=0.5/REAL(KN) ! this loop works for odd and even case DO JK=1,(KN-1)/2 IIA=JK+1 diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index b7686962ca5cf08e65b81f7a756e6901aea622be..3538f4b3e1530b693666d6c7602d8d5650134739 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -97,6 +97,8 @@ END MODULE MODI_FLASH_GEOM_ELEC_n ! P. Wautelet 22/02/2019: use MOD intrinsics with same kind for all arguments (to respect Fortran standard) ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 19/04/2019: use modd_precision kinds +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -121,7 +123,7 @@ USE MODD_LMA_SIMULATOR USE MODD_METRICS_n, ONLY: XDXX, XDYY, XDZZ ! in linox_production USE MODD_NSV, ONLY: NSV_ELECBEG, NSV_ELECEND, NSV_ELEC USE MODD_PARAMETERS, ONLY: JPHEXT, JPVEXT -use MODD_PRECISION, only: MNHREAL_MPI +use MODD_PRECISION, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI USE MODD_RAIN_ICE_DESCR, ONLY: XLBR, XLBEXR, XLBS, XLBEXS, & XLBG, XLBEXG, XLBH, XLBEXH, & XRTMIN @@ -499,7 +501,7 @@ DO WHILE (.NOT. GEND_DOMAIN .AND. INB_CELL .LT. NMAX_CELL) ICELL_LOC(4,INB_CELL) = IPROC_CELL ! ! Broadcast the center of the cell to all procs - CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MPI_INTEGER, IPROC_CELL, & + CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MNHINT_MPI, IPROC_CELL, & NMNH_COMM_WORLD, IERR) ! ! @@ -855,11 +857,11 @@ ENDIF CALL MPPDB_CHECK3DM("flash:: 5. ZFLASH(IL)",PRECISION,& ZFLASH(:,:,:,IL)) ! - CALL MPI_BCAST (GNEW_FLASH(IL),1, MPI_LOGICAL, IPROC_TRIG(IL), & + CALL MPI_BCAST (GNEW_FLASH(IL),1, MNHLOG_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (ZEM_TRIG(IL), 1, MNHREAL_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) - CALL MPI_BCAST (INB_FL_REAL(IL), 1, MPI_INTEGER, IPROC_TRIG(IL), & + CALL MPI_BCAST (INB_FL_REAL(IL), 1, MNHINT_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) END IF END DO ! end loop il @@ -978,7 +980,7 @@ ENDIF ! DO IM = 1, IDELTA_IND IF (IHIST_GLOB(IM) .GT. 0) THEN - ZHIST_PERCENT(IM) = FLOAT(IHIST_LOC(IM)) / FLOAT(IHIST_GLOB(IM)) + ZHIST_PERCENT(IM) = REAL(IHIST_LOC(IM)) / REAL(IHIST_GLOB(IM)) END IF ! ! @@ -990,7 +992,7 @@ ENDIF !* 8.1 max number of branches at distance d from the triggering point ! ZMAX_BRANCH(IM) = (XDFRAC_L / ZMEAN_GRID) * & - FLOAT(IIND_MIN+IM-1)**(XDFRAC_ECLAIR - 1.) + REAL(IIND_MIN+IM-1)**(XDFRAC_ECLAIR - 1.) ZMAX_BRANCH(IM) = ANINT(ZMAX_BRANCH(IM)) ! all procs know the max total number of branches at distance d ! => the max number of branches / proc is proportional to the percentage of @@ -1061,7 +1063,7 @@ ENDIF END IF ! IF (GNEUTRALIZATION .AND. (.NOT. GCG) .AND. ZQNET .NE. 0.) THEN - ZQNET = ZQNET / FLOAT(INB_NEUT) + ZQNET = ZQNET / REAL(INB_NEUT) WHERE (ZSIGLOB(IIB:IIE,IJB:IJE,IKB:IKE) .GE. ZSIGMIN .AND. & ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) .NE. 0.) ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) = ZQFLASH(IIB:IIE,IJB:IJE,IKB:IKE) - & @@ -1148,15 +1150,15 @@ ENDIF INB_NEUT_OK = INB_NEUT_OK + INB_NEUT END IF ! - CALL MPI_BCAST (INB_NEUT_OK,1, MPI_INTEGER, IPROC_TRIG(IL), & + CALL MPI_BCAST (INB_NEUT_OK,1, MNHINT_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) ! !* 9.5 Gather lightning information from all processes !* Save the particule charge and total pos/neg charge neutralization points. !* the coordinates of all flash branch points ! - CALL MPI_ALLGATHER(INBSEG(IL), 1, MPI_INTEGER, & - INBSEG_PROC, 1, MPI_INTEGER, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLGATHER(INBSEG(IL), 1, MNHINT_MPI, & + INBSEG_PROC, 1, MNHINT_MPI, NMNH_COMM_WORLD, IERR) INBSEG_ALL(IL) = INBSEG(IL) CALL SUM_ELEC_ll(INBSEG_ALL(IL)) @@ -1473,7 +1475,7 @@ ENDIF ! implicit END IF CALL SUM_ELEC_ll (XLNOX_ECLAIR) - XLNOX_ECLAIR = XLNOX_ECLAIR / (XAVOGADRO * FLOAT(IFLASH_COUNT_GLOB)) + XLNOX_ECLAIR = XLNOX_ECLAIR / (XAVOGADRO * REAL(IFLASH_COUNT_GLOB)) END IF DEALLOCATE (ZLNOX) END IF @@ -1694,11 +1696,11 @@ DO IL = 1, INB_CELL CALL MPI_BCAST (ZEM_TRIG(IL), 1, & MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (ZCOORD_TRIG(:,IL), 3, & MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (ISIGNE_EZ(IL), 1, & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) ! ! !* 5. CHECK IF THE FLASH CAN DEVELOP @@ -1711,9 +1713,9 @@ DO IL = 1, INB_CELL ! GNEW_FLASH(IL) = .TRUE. GNEW_FLASH_GLOB = .TRUE. - CALL MPI_BCAST (GNEW_FLASH(IL),1, MPI_LOGICAL, IPROC_TRIG(IL), & + CALL MPI_BCAST (GNEW_FLASH(IL),1, MNHLOG_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) - CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MPI_LOGICAL, IPROC_TRIG(IL), & + CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MNHLOG_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) END IF END IF @@ -1884,18 +1886,18 @@ END IF ! only iproc_trig was working ! --------------------------------------- ! CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (ITYPE(IL), 1, & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (GCG, 1, & - MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (GCG_POS, 1, & - MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (NNB_CG, 1, & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) CALL MPI_BCAST (NNB_CG_POS, 1, & - MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) ! CALL MPPDB_CHECK3DM("flash:: one_leader end ZFLASH",PRECISION,ZFLASH(:,:,:,IL)) @@ -1953,10 +1955,10 @@ DO IL = 1, INB_CELL IKBL = ISEG_LOC(IIDECAL+3,IL) ! IF (ZQMTOT(IIBL_LOC,IJBL_LOC,IKBL) .GT. 0. .AND. GPOSITIVE) THEN - ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = 1. * FLOAT(IL) + ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = 1. * REAL(IL) ZSIGN(IL) = ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) ELSE IF (ZQMTOT(IIBL_LOC,IJBL_LOC,IKBL) .LT. 0. .AND. .NOT.GPOSITIVE) THEN - ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = -1. * FLOAT(IL) + ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) = -1. * REAL(IL) ZSIGN(IL) = ZSIGN_AREA(IIBL_LOC,IJBL_LOC,IKBL) END IF END DO @@ -2148,8 +2150,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1) ! IF (IMAX_BRANCH(IM) .GT. 0) THEN INBPT_PROC(:) = 0 - CALL MPI_ALLGATHER(IPT_DIST, 1, MPI_INTEGER, & - INBPT_PROC, 1, MPI_INTEGER, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLGATHER(IPT_DIST, 1, MNHINT_MPI, & + INBPT_PROC, 1, MNHINT_MPI, NMNH_COMM_WORLD, IERR) ! IDISPL(1) = 0 DO JI=2, NPROC+1 @@ -2180,8 +2182,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1) ALLOCATE(IORDER_LL(IPT_DIST_GLOB)) CALL MPI_ALLGATHERV(I8VECT,IPT_DIST, MNHINT64_MPI,I8VECT_LL , & INBPT_PROC, IDISPL, MNHINT64_MPI, NMNH_COMM_WORLD, IERR) - CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MPI_INTEGER,IRANK_LL , & - INBPT_PROC, IDISPL, MPI_INTEGER, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MNHINT_MPI,IRANK_LL , & + INBPT_PROC, IDISPL, MNHINT_MPI, NMNH_COMM_WORLD, IERR) CALL N8QUICK_SORT(I8VECT_LL, IORDER_LL) ! DO IPOINT = 1, MIN(IMAX_BRANCH(IM), INB_SEG_TO_BRANCH) @@ -2371,8 +2373,8 @@ IF (LLMA) THEN ! ALLOCATE (IRECV(3*INSEGCELL)) ! - CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MPI_INTEGER, IRECV, INBSEG_PROC_X3, & - IDECAL3, MPI_INTEGER, 0, NMNH_COMM_WORLD, IERR) + CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MNHINT_MPI, IRECV, INBSEG_PROC_X3, & + IDECAL3, MNHINT_MPI, 0, NMNH_COMM_WORLD, IERR) ! IF (IPROC .EQ. 0) THEN ILMA_SEG_ALL(1:3*INSEGCELL,IL) = IRECV(1:3*INSEGCELL) diff --git a/src/MNH/forc_squall_line.f90 b/src/MNH/forc_squall_line.f90 index f813c63af15f07777683da98590ad17d1aca8429..87ac9643848aa61edaec46d037aabca9461bbab3 100644 --- a/src/MNH/forc_squall_line.f90 +++ b/src/MNH/forc_squall_line.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2008-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. !----------------------------------------------------------------- -!--------------- special set of characters for SCCS information -!----------------------------------------------------------------- -! %Z% Lib:%F%, Version:%I%, Date:%D%, Last modified:%E% -!----------------------------------------------------------------- ! ############################ MODULE MODI_FORC_SQUALL_LINE ! ############################ @@ -51,6 +47,8 @@ END MODULE MODI_FORC_SQUALL_LINE !! ------ !! J-P Pinty, Lab. Aerologie, 25/01/08 !! +! Modifications: +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -82,7 +80,7 @@ INTEGER :: JIBEG,JIEND ! Loop indexes for the cooling area ! ! SIZE OF THE COLD POOL ! -JIBEG = INT(XDUMMY4*FLOAT(SIZE(PDXHAT))) +JIBEG = INT(XDUMMY4*REAL(SIZE(PDXHAT))) JIEND = JIBEG + NINT(XDUMMY3/PDXHAT(JIBEG)) ! DO JK = 1+JPVEXT,SIZE(PZHAT)-JPVEXT diff --git a/src/MNH/free_atm_profile.f90 b/src/MNH/free_atm_profile.f90 index d4ae43d2aa19eddc034fb1df77ad6f75ee4d091e..631577f0f97398c35903ce6ca4b07a7c6645e944 100644 --- a/src/MNH/free_atm_profile.f90 +++ b/src/MNH/free_atm_profile.f90 @@ -86,6 +86,7 @@ END MODULE MODI_FREE_ATM_PROFILE !! C.Lac 04/2016 Modification of the free atm gradient when the top of !! the model is too low !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -343,7 +344,7 @@ END DO ! modified ! IWK_BL_TOP(:,:)=IK_BL_TOP(:,:) -ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:)) +ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:)) CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.1:ZK_BL_TOP",PRECISION) ! !!$DO JI=1,IIU @@ -360,13 +361,13 @@ CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.1:ZK_BL_TOP",PRECISION) !!$END DO !!$IK_BL_TOP(:,:)=IWK_BL_TOP(:,:) -ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:)) +ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:)) CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:8.2:ZK_BL_TOP",PRECISION) ! !* 8.2 spatial filtering is applied (4 times) for boundary layer top ! ------------------------------------------------------------- ! -ZK_BL_TOP(:,:)=FLOAT(IK_BL_TOP(:,:)) +ZK_BL_TOP(:,:)=REAL(IK_BL_TOP(:,:)) CALL PGDFILTER(ZK_BL_TOP(:,:),4) CALL MPPDB_CHECK2D(ZK_BL_TOP,"FREE_ATM_PROFILE:ZK_BL_TOP",PRECISION) IK_BL_TOP(:,:)=NINT(ZK_BL_TOP(:,:)) diff --git a/src/MNH/gamma_inc.f90 b/src/MNH/gamma_inc.f90 index 0de61815eb3d260b949afc31973f77bca6a96679..083bf6d471c7f9c91a0a537dc172b05491bfb3c6 100644 --- a/src/MNH/gamma_inc.f90 +++ b/src/MNH/gamma_inc.f90 @@ -61,6 +61,7 @@ END MODULE MODI_GAMMA_INC !! ------------- !! Original 7/12/95 ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! !* 0. DECLARATIONS ! ------------ @@ -117,7 +118,7 @@ IF( (PX.LT.PA+1.0) ) THEN JN = 1 ! LOOP_FRACTION: DO - ZAN = -FLOAT(JN)*(FLOAT(JN)-PA) + ZAN = -REAL(JN)*(REAL(JN)-PA) ZB = ZB + 2.0 ZD = ZAN*ZD + ZB IF( ABS(ZD).LT.TINY(PX) ) THEN diff --git a/src/MNH/gauher.f b/src/MNH/gauher.f index fad1963384e9eb4df877b5b36a5a20bd6274b08c..d87de6c975c022f77d024938c10cb650b9060d20 100644 --- a/src/MNH/gauher.f +++ b/src/MNH/gauher.f @@ -1,7 +1,11 @@ -!MNH_LIC Copyright 1994-2014 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 26/04/2019: replace non-standard FLOAT function by REAL function +!----------------------------------------------------------------- SUBROUTINE gauher(x,w,n) INTEGER n,MAXIT REAL w(n),x(n) @@ -15,7 +19,7 @@ C m=(n+1)/2 do 13 i=1,m if(i.eq.1)then - z=sqrt(float(2*n+1))-1.85575*(2*n+1)**(-.16667) + z=sqrt(real(2*n+1))-1.85575*(2*n+1)**(-.16667) else if(i.eq.2)then z=z-1.14*n**.426/z else if (i.eq.3)then diff --git a/src/MNH/gaulag.f b/src/MNH/gaulag.f index 1702c67567fd31e99a1377a9c4f8748c463dc5cf..f05491c50a40f4d24b23a1c7a9e797f8090e00f8 100644 --- a/src/MNH/gaulag.f +++ b/src/MNH/gaulag.f @@ -1,7 +1,11 @@ -!MNH_LIC Copyright 1994-2014 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 26/04/2019: replace non-standard FLOAT function by REAL function +!----------------------------------------------------------------- SUBROUTINE gaulag(x,w,n,alf) INTEGER n,MAXIT REAL alf,w(n),x(n) @@ -38,7 +42,7 @@ C if(abs(z-z1).le.EPS)goto 1 12 continue 1 x(i)=z - w(i)=-exp(gammln(alf+n)-gammln(float(n)))/(pp*n*p2) + w(i)=-exp(gammln(alf+n)-gammln(real(n)))/(pp*n*p2) 13 continue C C NORMALISATION diff --git a/src/MNH/hypser.f90 b/src/MNH/hypser.f90 index 75e1be79bce58a4e4656a389ea509e67d8188006..3a8bed13e8414d79e75eb4aa8d0b999aad0a36fb 100644 --- a/src/MNH/hypser.f90 +++ b/src/MNH/hypser.f90 @@ -63,6 +63,7 @@ END MODULE MODI_HYPSER !! ------------- !! Original 31/12/96 ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! !------------------------------------------------------------------------------ ! @@ -99,7 +100,7 @@ ZZC = PC JFLAG = 0 SERIE: DO JN = 1,5000 ZFAC = ZFAC * ZZA * ZZB / ZZC - ZFAC = ZFAC * ZXH / FLOAT(JN) + ZFAC = ZFAC * ZXH / REAL(JN) PHYP = ZTEMP + ZFAC IF (ABS(PHYP-ZTEMP).LE.ZPREC) THEN JFLAG = 1 diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90 index ad8cf052571dfe52ac2374fafa8e40d187b0e2a7..28b9911e46bae0e1a32e0398d9c0a4eb12eab952 100644 --- a/src/MNH/ice4_fast_rg.f90 +++ b/src/MNH/ice4_fast_rg.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- MODULE MODI_ICE4_FAST_RG INTERFACE SUBROUTINE ICE4_FAST_RG(KSIZE, LDSOFT, LDCOMPUTE, KRR, & @@ -91,6 +92,7 @@ SUBROUTINE ICE4_FAST_RG(KSIZE, LDSOFT, LDCOMPUTE, KRR, & !! MODIFICATIONS !! ------------- !! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! ! !* 0. DECLARATIONS @@ -392,23 +394,23 @@ ELSE ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(1:IGDRY)=MAX(1.00001, MIN(FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY)=MAX(1.00001, MIN(REAL(NDRYLBDAG)-0.00001, & #ifndef MNH_BITREP XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) #else XDRYINTP1G*BR_LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) #endif IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY)) + ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY)) ! - ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001, & + ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAS)-0.00001, & #ifndef MNH_BITREP XDRYINTP1S*LOG(ZVEC2(1:IGDRY))+XDRYINTP2S)) #else XDRYINTP1S*BR_LOG(ZVEC2(1:IGDRY))+XDRYINTP2S)) #endif IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY)) - ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY)) + ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY)) ! !* 6.2.5 perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -507,23 +509,23 @@ ELSE ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & #ifndef MNH_BITREP XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) #else XDRYINTP1G*BR_LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) #endif IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY)) - ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY)) + ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY)) ! - ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001, & + ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAR)-0.00001, & #ifndef MNH_BITREP XDRYINTP1R*LOG(ZVEC2(1:IGDRY))+XDRYINTP2R)) #else XDRYINTP1R*BR_LOG(ZVEC2(1:IGDRY))+XDRYINTP2R)) #endif IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY)) - ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY)) + ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY)) ! !* 6.2.10 perform the bilinear interpolation of the normalized ! RDRYG-kernel diff --git a/src/MNH/ice4_fast_rh.f90 b/src/MNH/ice4_fast_rh.f90 index 5eaa5e4c7603e891ddc60be67ffbaca7d9f2639c..07f6275e9ad070aa50e6442a9216417f66bf3a57 100644 --- a/src/MNH/ice4_fast_rh.f90 +++ b/src/MNH/ice4_fast_rh.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- MODULE MODI_ICE4_FAST_RH INTERFACE SUBROUTINE ICE4_FAST_RH(KSIZE, LDSOFT, LDCOMPUTE, LDWETG, & @@ -81,6 +82,7 @@ SUBROUTINE ICE4_FAST_RH(KSIZE, LDSOFT, LDCOMPUTE, LDWETG, & !! MODIFICATIONS !! ------------- !! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! ! !* 0. DECLARATIONS @@ -322,23 +324,23 @@ ELSE ! in the geometrical set of (Lbda_h,Lbda_s) couplet use to ! tabulate the SWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001, & #ifndef MNH_BITREP XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) #else XWETINTP1H * BR_LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) #endif IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001, & #ifndef MNH_BITREP XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) ) #else XWETINTP1S * BR_LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) ) #endif IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.5 perform the bilinear interpolation of the normalized ! SWETH-kernel @@ -436,23 +438,23 @@ ELSE ! in the geometrical set of (Lbda_h,Lbda_g) couplet use to ! tabulate the GWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & #ifndef MNH_BITREP XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) #else XWETINTP1H * BR_LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) #endif IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & #ifndef MNH_BITREP XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) ) #else XWETINTP1G * BR_LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) ) #endif IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.10 perform the bilinear interpolation of the normalized ! GWETH-kernel @@ -555,23 +557,23 @@ ELSE ! in the geometrical set of (Lbda_h,Lbda_r) couplet use to ! tabulate the RWETH-kernel ! - ZVEC1(1:IGWET)=MAX(1.00001, MIN( FLOAT(NWETLBDAH)-0.00001, & + ZVEC1(1:IGWET)=MAX(1.00001, MIN( REAL(NWETLBDAH)-0.00001, & #ifndef MNH_BITREP XWETINTP1H*LOG(ZVEC1(1:IGWET))+XWETINTP2H)) #else XWETINTP1H*BR_LOG(ZVEC1(1:IGWET))+XWETINTP2H)) #endif IVEC1(1:IGWET)=INT(ZVEC1(1:IGWET)) - ZVEC1(1:IGWET)=ZVEC1(1:IGWET)-FLOAT(IVEC1(1:IGWET)) + ZVEC1(1:IGWET)=ZVEC1(1:IGWET)-REAL(IVEC1(1:IGWET)) ! - ZVEC2(1:IGWET)=MAX(1.00001, MIN( FLOAT(NWETLBDAR)-0.00001, & + ZVEC2(1:IGWET)=MAX(1.00001, MIN( REAL(NWETLBDAR)-0.00001, & #ifndef MNH_BITREP XWETINTP1R*LOG(ZVEC2(1:IGWET))+XWETINTP2R)) #else XWETINTP1R*BR_LOG(ZVEC2(1:IGWET))+XWETINTP2R)) #endif IVEC2(1:IGWET)=INT(ZVEC2(1:IGWET)) - ZVEC2(1:IGWET)=ZVEC2(1:IGWET)-FLOAT(IVEC2(1:IGWET)) + ZVEC2(1:IGWET)=ZVEC2(1:IGWET)-REAL(IVEC2(1:IGWET)) ! !* 7.2.14 perform the bilinear interpolation of the normalized ! RWETH-kernel diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90 index ce5262a0cd0454e1c5a79cbe1886a7daded00b82..93a2d4384ae9dd4c59374a2473e0ede0ae0fbee0 100644 --- a/src/MNH/ice4_fast_rs.f90 +++ b/src/MNH/ice4_fast_rs.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- MODULE MODI_ICE4_FAST_RS INTERFACE SUBROUTINE ICE4_FAST_RS(KSIZE, LDSOFT, LDCOMPUTE, & @@ -74,6 +75,7 @@ SUBROUTINE ICE4_FAST_RS(KSIZE, LDSOFT, LDCOMPUTE, & !! MODIFICATIONS !! ------------- !! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! ! !* 0. DECLARATIONS @@ -292,14 +294,14 @@ ELSE ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001, & + ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001, & #ifndef MNH_BITREP XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) #else XRIMINTP1 * BR_LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) #endif IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! ! 5.1.3 perform the linear interpolation of the normalized ! "2+XDS"-moment of the incomplete gamma function @@ -475,23 +477,23 @@ ELSE ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001, & + ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001, & #ifndef MNH_BITREP XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) #else XACCINTP1S * BR_LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) #endif IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) ) - ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) ) + ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) ) ! - ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001, & + ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001, & #ifndef MNH_BITREP XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) #else XACCINTP1R * BR_LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) #endif IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) ) - ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) ) + ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) ) ! ! 5.2.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel diff --git a/src/MNH/ice4_rsrimcg_old.f90 b/src/MNH/ice4_rsrimcg_old.f90 index 9652df7e39ea6d1951a884ad29520b99fd64727a..e015f206491f27d7a1da3ad3a49a13d59a39476c 100644 --- a/src/MNH/ice4_rsrimcg_old.f90 +++ b/src/MNH/ice4_rsrimcg_old.f90 @@ -2,6 +2,7 @@ !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. +!----------------------------------------------------------------- MODULE MODI_ICE4_RSRIMCG_OLD INTERFACE SUBROUTINE ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, ODCOMPUTE, & @@ -41,6 +42,7 @@ SUBROUTINE ICE4_RSRIMCG_OLD(KSIZE, ODSOFT, ODCOMPUTE, & !! MODIFICATIONS !! ------------- !! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! ! !* 0. DECLARATIONS @@ -147,14 +149,14 @@ IF(.NOT. GDSOFT) THEN ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001, & + ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001, & #ifndef MNH_BITREP XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) #else XRIMINTP1 * BR_LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) #endif IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! ! 5.1.5 perform the linear interpolation of the normalized diff --git a/src/MNH/ice4_sedimentation_split_old.f90 b/src/MNH/ice4_sedimentation_split_old.f90 index 42f2b833bc2d97d5c00fb6e20445c3a1d286e2af..777b82a304f3bbd18c04c4d8098bd651245a6b97 100644 --- a/src/MNH/ice4_sedimentation_split_old.f90 +++ b/src/MNH/ice4_sedimentation_split_old.f90 @@ -68,6 +68,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT_OLD(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, !! ------------- !! ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! ! !* 0. DECLARATIONS @@ -151,7 +152,7 @@ INTEGER :: JJ, JK, JN, JL ! O. Initialization of for sedimentation ! ZINVTSTEP=1./PTSTEP -ZTSPLITR=PTSTEP/FLOAT(KSPLITR) +ZTSPLITR=PTSTEP/REAL(KSPLITR) IF (OSEDIC) PINPRC (:,:) = 0. PINPRR (:,:) = 0. PINPRI (:,:) = 0. diff --git a/src/MNH/ini_bikhardtn.f90 b/src/MNH/ini_bikhardtn.f90 index 8f776f74307e08a95c7e5d180b023cb0da3aedb4..8320b0a0b95801c352ceb47c05b2c33278582579 100644 --- a/src/MNH/ini_bikhardtn.f90 +++ b/src/MNH/ini_bikhardtn.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 interpol 2006/05/18 13:07:25 -!----------------------------------------------------------------- !######################## MODULE MODI_INI_BIKHARDT_n !######################## @@ -68,7 +63,8 @@ END MODULE MODI_INI_BIKHARDT_n !! ------------- !! !! Original 10/06/96 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -121,13 +117,13 @@ ALLOCATE (XBFY4(KDYRATIO)) !* 2. Bikhardt interpolation coefficients computation : ! DO JI = 1,KDXRATIO - ZX = FLOAT(JI-1)/FLOAT(KDXRATIO) + ZX = REAL(JI-1)/REAL(KDXRATIO) XBFX1(JI) = -0.5*ZX*ZX*ZX + ZX*ZX -0.5*ZX XBFX2(JI) = 1.5*ZX*ZX*ZX -2.5*ZX*ZX +1. XBFX3(JI) = -1.5*ZX*ZX*ZX +2.0*ZX*ZX +0.5*ZX XBFX4(JI) = 0.5*ZX*ZX*ZX -0.5*ZX*ZX ! - IF (MOD(KDXRATIO,2).EQ.0) ZX = ZX + .5/FLOAT(KDXRATIO) + IF (MOD(KDXRATIO,2).EQ.0) ZX = ZX + .5/REAL(KDXRATIO) XBMX1(JI) = -0.5*ZX*ZX*ZX + ZX*ZX -0.5*ZX XBMX2(JI) = 1.5*ZX*ZX*ZX -2.5*ZX*ZX +1. XBMX3(JI) = -1.5*ZX*ZX*ZX +2.0*ZX*ZX +0.5*ZX @@ -136,13 +132,13 @@ DO JI = 1,KDXRATIO END DO ! DO JJ = 1,KDYRATIO - ZY = FLOAT(JJ-1)/FLOAT(KDYRATIO) + ZY = REAL(JJ-1)/REAL(KDYRATIO) XBFY1(JJ) = -0.5*ZY*ZY*ZY + ZY*ZY -0.5*ZY XBFY2(JJ) = 1.5*ZY*ZY*ZY -2.5*ZY*ZY +1. XBFY3(JJ) = -1.5*ZY*ZY*ZY +2.0*ZY*ZY +0.5*ZY XBFY4(JJ) = 0.5*ZY*ZY*ZY -0.5*ZY*ZY ! - IF (MOD(KDYRATIO,2).EQ.0) ZY = ZY + .5/FLOAT(KDYRATIO) + IF (MOD(KDYRATIO,2).EQ.0) ZY = ZY + .5/REAL(KDYRATIO) XBMY1(JJ) = -0.5*ZY*ZY*ZY + ZY*ZY -0.5*ZY XBMY2(JJ) = 1.5*ZY*ZY*ZY -2.5*ZY*ZY +1. XBMY3(JJ) = -1.5*ZY*ZY*ZY +2.0*ZY*ZY +0.5*ZY diff --git a/src/MNH/ini_cloud.f90 b/src/MNH/ini_cloud.f90 index e9221f59837d0952c9695a916ff7f238fbe6bb48..2cb05cb5cc8aa23e9e48cda9bc43635f90142ce8 100644 --- a/src/MNH/ini_cloud.f90 +++ b/src/MNH/ini_cloud.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 init 2007/02/19 11:21:57 -!----------------------------------------------------------------- ! ###################### MODULE MODI_INI_CLOUD ! ###################### @@ -92,6 +87,7 @@ END MODULE MODI_INI_CLOUD !! (J.Stein) 30/06/95 use 2*PTSTEP to compute the number of small !! timesteps for the rain sedimentation !! (N. Asencio) 11/08/98 parallel code: PDZMIN is computed outside in ini_modeln +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -204,7 +200,7 @@ ZVTRMAX = 10. ! ------------------------------------------------- KSPLITR = 1 SPLIT : DO - ZT = PTSTEP / FLOAT(KSPLITR) + ZT = PTSTEP / REAL(KSPLITR) IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT KSPLITR = KSPLITR + 1 END DO SPLIT diff --git a/src/MNH/ini_ice_c1r3.f90 b/src/MNH/ini_ice_c1r3.f90 index 5240fc5d409bfcce72945ff924096ee08ad71dcd..b0a35554a88837b36dc5ae44119426abe6a482a6 100644 --- a/src/MNH/ini_ice_c1r3.f90 +++ b/src/MNH/ini_ice_c1r3.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-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 for details. version 1. @@ -89,7 +89,8 @@ END MODULE MODI_INI_ICE_C1R3 !! J.-P. Pinty 05/04/2002 Add computation of the effective radius !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -207,7 +208,7 @@ END IF ! KSPLITG = 1 SPLIT : DO - ZT = 2.* PTSTEP / FLOAT(KSPLITG) + ZT = 2.* PTSTEP / REAL(KSPLITG) IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT KSPLITG = KSPLITG + 1 END DO SPLIT @@ -627,7 +628,7 @@ END IF NGAMINC = 80 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha -ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) ! ALLOCATE( XGAMINC_RIM1(NGAMINC) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) ) @@ -656,7 +657,7 @@ XHM_FACTS = XHM_YIELD*(XHM_COLLCS/XCOLCS) ! XGAMINC_HMC_BOUND_MIN = 1.0E-3 ! Min value of (Lbda * (12,25) microns)**alpha XGAMINC_HMC_BOUND_MAX = 1.0E5 ! Max value of (Lbda * (12,25) microns)**alpha -ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/REAL(NGAMINC-1)) ! ALLOCATE( XGAMINC_HMC(NGAMINC) ) ! @@ -691,13 +692,13 @@ XLBSACCR3 = MOMG(XALPHAS,XNUS,XBS+2.) NACCLBDAS = 40 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1) +ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1) XACCINTP1S = 1.0 / ZRATE XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE NACCLBDAR = 40 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1) +ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1) XACCINTP1R = 1.0 / ZRATE XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE ! @@ -900,19 +901,19 @@ XLBRDRYG3 = MOMG(XALPHAR,XNUR,5.) NDRYLBDAR = 40 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG -ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1) +ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1) XDRYINTP1R = 1.0 / ZRATE XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE NDRYLBDAS = 80 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG -ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1) +ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1) XDRYINTP1S = 1.0 / ZRATE XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE NDRYLBDAG = 40 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1) +ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1) XDRYINTP1G = 1.0 / ZRATE XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE ! diff --git a/src/MNH/ini_lima.f90 b/src/MNH/ini_lima.f90 index 8f4671fb8ba6ed997c1d0c1e5bae5b164231d48d..58257019d57ec24e9097d95dc40c878da1e07e01 100644 --- a/src/MNH/ini_lima.f90 +++ b/src/MNH/ini_lima.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. !----------------------------------------------------------------- ! #################### @@ -44,7 +44,8 @@ END MODULE MODI_INI_LIMA !! ------------- !! Original ??/??/13 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -102,7 +103,7 @@ ZVTRMAX(7) = 30. ! Maximum hail fall speed DO JI=2,7 NSPLITSED(JI) = 1 SPLIT : DO - ZT = PTSTEP / FLOAT(NSPLITSED(JI)) + ZT = PTSTEP / REAL(NSPLITSED(JI)) IF ( ZT * ZVTRMAX(JI) / PDZMIN < 1.0) EXIT SPLIT NSPLITSED(JI) = NSPLITSED(JI) + 1 END DO SPLIT @@ -112,7 +113,7 @@ END DO ! KSPLITR = 1 SPLITR : DO - ZT = PTSTEP / FLOAT(KSPLITR) + ZT = PTSTEP / REAL(KSPLITR) IF ( ZT * ZVTRMAX(7) / PDZMIN < 1.0) EXIT SPLITR KSPLITR = KSPLITR + 1 END DO SPLITR @@ -122,7 +123,7 @@ END DO SPLITR ! KSPLITG = 1 SPLITG : DO - ZT = 2.* PTSTEP / FLOAT(KSPLITG) + ZT = 2.* PTSTEP / REAL(KSPLITG) IF ( ZT * ZVTRMAX(7) / PDZMIN .LT. 1.) EXIT SPLITG KSPLITG = KSPLITG + 1 END DO SPLITG diff --git a/src/MNH/ini_lima_cold_mixed.f90 b/src/MNH/ini_lima_cold_mixed.f90 index 97921618141f0c60e6b440e82c53961baa5903e8..cb427cdb434982b229095adb417eee3d1071b73e 100644 --- a/src/MNH/ini_lima_cold_mixed.f90 +++ b/src/MNH/ini_lima_cold_mixed.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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 for details. version 1. @@ -40,7 +40,8 @@ END MODULE MODI_INI_LIMA_COLD_MIXED !! Original ??/??/13 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -685,7 +686,7 @@ END IF NGAMINC = 80 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha -ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) ! ALLOCATE( XGAMINC_RIM1(NGAMINC) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) ) @@ -714,7 +715,7 @@ XHM_FACTS = XHM_YIELD*(XHM_COLLCS/XCOLCS) ! XGAMINC_HMC_BOUND_MIN = 1.0E-3 ! Min value of (Lbda * (12,25) microns)**alpha XGAMINC_HMC_BOUND_MAX = 1.0E5 ! Max value of (Lbda * (12,25) microns)**alpha -ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_HMC_BOUND_MAX/XGAMINC_HMC_BOUND_MIN)/REAL(NGAMINC-1)) ! ALLOCATE( XGAMINC_HMC(NGAMINC) ) ! @@ -751,13 +752,13 @@ XLBSACCR3 = MOMG(XALPHAS,XNUS,XBS+2.) NACCLBDAS = 40 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1) +ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1) XACCINTP1S = 1.0 / ZRATE XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE NACCLBDAR = 40 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1) +ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1) XACCINTP1R = 1.0 / ZRATE XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE ! @@ -961,19 +962,19 @@ XLBRDRYG3 = MOMG(XALPHAR,XNUR,5.) NDRYLBDAR = 40 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG -ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1) +ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1) XDRYINTP1R = 1.0 / ZRATE XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE NDRYLBDAS = 80 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG -ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1) +ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1) XDRYINTP1S = 1.0 / ZRATE XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE NDRYLBDAG = 40 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1) +ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1) XDRYINTP1G = 1.0 / ZRATE XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE ! @@ -1144,19 +1145,19 @@ XLBGWETH3 = MOMG(XALPHAG,XNUG,XBG+2.) NWETLBDAS = 80 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH -ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/FLOAT(NWETLBDAS-1) +ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/REAL(NWETLBDAS-1) XWETINTP1S = 1.0 / ZRATE XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE NWETLBDAG = 40 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH -ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/FLOAT(NWETLBDAG-1) +ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/REAL(NWETLBDAG-1) XWETINTP1G = 1.0 / ZRATE XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE NWETLBDAH = 40 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH -ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/FLOAT(NWETLBDAH-1) +ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/REAL(NWETLBDAH-1) XWETINTP1H = 1.0 / ZRATE XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE ! diff --git a/src/MNH/ini_lima_warm.f90 b/src/MNH/ini_lima_warm.f90 index b369cbcecd27510bb36d92345174f8b23beec404..0afeea4928ba710840a31261e0f7d62fa44e73c1 100644 --- a/src/MNH/ini_lima_warm.f90 +++ b/src/MNH/ini_lima_warm.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. ! ######################### MODULE MODI_INI_LIMA_WARM @@ -37,7 +37,8 @@ END MODULE MODI_INI_LIMA_WARM !! ------------- !! Original ??/??/13 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -243,12 +244,12 @@ ALLOCATE (XHYPF32( NHYP, NMOD_CCN )) ! ZSMIN = 1.0E-5 ! Minimum supersaturation set at 0.001 % ZSMAX = 5.0E-2 ! Maximum supersaturation set at 5 % -XHYPINTP1 = FLOAT(NHYP-1)/LOG(ZSMAX/ZSMIN) -XHYPINTP2 = FLOAT(NHYP)-XHYPINTP1*LOG(ZSMAX) +XHYPINTP1 = REAL(NHYP-1)/LOG(ZSMAX/ZSMIN) +XHYPINTP2 = REAL(NHYP)-XHYPINTP1*LOG(ZSMAX) ! DO JMOD = 1,NMOD_CCN DO J1 = 1,NHYP - ZSS =ZSMAX*(ZSMIN/ZSMAX)**(FLOAT(NHYP-J1)/FLOAT(NHYP-1)) + ZSS =ZSMAX*(ZSMIN/ZSMAX)**(REAL(NHYP-J1)/REAL(NHYP-1)) XHYPF12(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),& 0.5*XKHEN_MULTI(JMOD)+1.0,XBETAHEN_MULTI(JMOD),ZSS) XHYPF32(J1,JMOD) = HYPGEO(XMUHEN_MULTI(JMOD),0.5*XKHEN_MULTI(JMOD),& @@ -258,7 +259,7 @@ ENDDO ! NAHEN = 81 ! Tabulation for each Kelvin degree in the range XTT-40 to XTT+40 XAHENINTP1 = 1.0 -XAHENINTP2 = 0.5*FLOAT(NAHEN-1) - XTT +XAHENINTP2 = 0.5*REAL(NAHEN-1) - XTT ! ! Compute the tabulation of function of T : ! @@ -279,7 +280,7 @@ ALLOCATE (XPSI1(NAHEN)) ALLOCATE (XPSI3(NAHEN)) XCSTHEN = 1.0 / ( XRHOLW*2.0*XPI ) DO J1 = 1,NAHEN - ZTT = XTT + FLOAT(J1-(NAHEN-1)/2) ! T + ZTT = XTT + REAL(J1-(NAHEN-1)/2) ! T ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT) ! Lv XPSI1(J1) = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.) ! Psi1 XPSI3(J1) = -1*XMV*ZLV/(XMD*XRD*(ZTT**2)) ! Psi3 diff --git a/src/MNH/ini_param_elec.f90 b/src/MNH/ini_param_elec.f90 index ca55b76640b5279dfaa075dbc6a4c3b278d89bba..bdbd3c6d90293a6d4fde0fd28e4d9187e4712642 100644 --- a/src/MNH/ini_param_elec.f90 +++ b/src/MNH/ini_param_elec.f90 @@ -84,7 +84,8 @@ END MODULE MODI_INI_PARAM_ELEC !! J.-P. Pinty jan 2015 tabulate the equations for Saunders !! J. Escobar 8/01/2016 bug , missing YDIR='XY' in READ !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -564,7 +565,7 @@ IF (CNI_CHARGING == 'SAUN1' .OR. CNI_CHARGING == 'SAUN2' .OR. & ALLOCATE(ZT(NIND_TEMP+1)) ! Kelvin ALLOCATE(ZLWCC(NIND_TEMP+1)) DO JTEMP = 1, NIND_TEMP+1 - ZT(JTEMP)=1.0-FLOAT(JTEMP)+XTT + ZT(JTEMP)=1.0-REAL(JTEMP)+XTT END DO ZLWCC(:) = MIN( MAX( -0.49 + 6.64E-2*(XTT-ZT(:)),0.22 ),1.1 ) ! (g m^-3) ALLOCATE(ZEW(NIND_LWC+1)) @@ -574,13 +575,13 @@ IF (CNI_CHARGING == 'SAUN1' .OR. CNI_CHARGING == 'SAUN2' .OR. & ! 0.10 to 0.90 every 0.10 (9 values) ! 1.00 to 10.0 every 1.00 (10 values) DO JLWC = 1, 9 - ZEW(JLWC)=0.01*FLOAT(JLWC) + ZEW(JLWC)=0.01*REAL(JLWC) END DO DO JLWC = 10, 18 - ZEW(JLWC)=0.1 + 0.1*FLOAT(JLWC-10) + ZEW(JLWC)=0.1 + 0.1*REAL(JLWC-10) END DO DO JLWC = 19, NIND_LWC+1 - ZEW(JLWC)=1.0 + FLOAT(JLWC-19) + ZEW(JLWC)=1.0 + REAL(JLWC-19) END DO ! ! @@ -701,17 +702,17 @@ IF (CNI_CHARGING == 'TEEWC' .OR. CNI_CHARGING == 'TERAR') THEN ALLOCATE(ZT(NIND_TEMP+1)) ! Kelvin ALLOCATE(ZEW(NIND_LWC+1)) DO JTEMP = 1, NIND_TEMP+1 - ZT(JTEMP) = 1.0 - FLOAT(JTEMP) + XTT + ZT(JTEMP) = 1.0 - REAL(JTEMP) + XTT END DO DO JLWC = 1, 9 - ZEW(JLWC) = 0.01 * FLOAT(JLWC) + ZEW(JLWC) = 0.01 * REAL(JLWC) END DO DO JLWC = 10, 18 - ZEW(JLWC) = 0.1 + 0.1 * FLOAT(JLWC-10) + ZEW(JLWC) = 0.1 + 0.1 * REAL(JLWC-10) END DO DO JLWC = 19, NIND_LWC+1 - ZEW(JLWC) = 1.0 + FLOAT(JLWC-19) + ZEW(JLWC) = 1.0 + REAL(JLWC-19) END DO ! XTAKA_TM(:,:) = 0.0 diff --git a/src/MNH/ini_radiations.f90 b/src/MNH/ini_radiations.f90 index 640467fbb885d614b658c43189eca2c4d55901ad..c47b99910f656e4f0b4d024e9482bc6df23951c7 100644 --- a/src/MNH/ini_radiations.f90 +++ b/src/MNH/ini_radiations.f90 @@ -108,6 +108,7 @@ END MODULE MODI_INI_RADIATIONS !! but the day stays the same during the whole run !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -205,18 +206,18 @@ DO JI=1,11 END DO IF ( LFIX_DAT ) THEN ! Ajout PP IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = FLOAT(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = FLOAT(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF ELSE IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN - ZDATE = FLOAT(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/366.0 ELSE - ZDATE = FLOAT(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 + ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1 ZAD = 2.0*XPI*ZDATE/365.0 END IF END IF diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90 index cf0ba2ebcb1d701e3940dabaae6285ee7447d037..cf73ab385ef0dd904338bd818d644d3346b48fd2 100644 --- a/src/MNH/ini_radiations_ecmwf.f90 +++ b/src/MNH/ini_radiations_ecmwf.f90 @@ -172,6 +172,7 @@ END MODULE MODI_INI_RADIATIONS_ECMWF !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables ! P. Wautelet 14/02/2019: remove HINIFILE dummy argument +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -326,7 +327,7 @@ CALL INI_STAND_ATM IF(.NOT.LCARTESIAN) THEN ! . global sum ZLATMEAN = SUM_DD_R2_ll( PLAT(IIB:IIE,IJB:IJE)) - ZLATMEAN = ZLATMEAN /FLOAT(IIMAX_ll*IJMAX_ll) + ZLATMEAN = ZLATMEAN /REAL(IIMAX_ll*IJMAX_ll) ELSE ZLATMEAN = XLAT0 ENDIF diff --git a/src/MNH/ini_rain_c2r2.f90 b/src/MNH/ini_rain_c2r2.f90 index ad3c39efbcb9721411306f6367aa634f498e3deb..b436b832df4291f0fcfe3b238435df0f4a5bc845 100644 --- a/src/MNH/ini_rain_c2r2.f90 +++ b/src/MNH/ini_rain_c2r2.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-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. !----------------------------------------------------------------- ! ######################### @@ -89,6 +89,7 @@ END MODULE MODI_INI_RAIN_C2R2 !! G.Delautier 09/2014 fusion MODD_RAIN_C2R2_PARAM et MODD_RAIN_KHKO_PARAM !! M.Mazoyer 10/2016 Constants for Droplet sedimentation adapted to fog for KHKO !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -173,7 +174,7 @@ ZVTRMAX = 30. ! KSPLITR = 1 SPLIT : DO - ZT = PTSTEP / FLOAT(KSPLITR) + ZT = PTSTEP / REAL(KSPLITR) IF ( ZT * ZVTRMAX / PDZMIN < 1.0) EXIT SPLIT KSPLITR = KSPLITR + 1 END DO SPLIT @@ -353,12 +354,12 @@ ALLOCATE (XHYPF32(NHYP)) ! ZSMIN = 1.0E-5 ! soit Smin=0.001 % ZSMAX = 1.0E-1 ! soit Smax= 10 % -XHYPINTP1 = FLOAT(NHYP-1)/LOG(ZSMAX/ZSMIN) -XHYPINTP2 = FLOAT(NHYP)-XHYPINTP1*LOG(ZSMAX) +XHYPINTP1 = REAL(NHYP-1)/LOG(ZSMAX/ZSMIN) +XHYPINTP2 = REAL(NHYP)-XHYPINTP1*LOG(ZSMAX) IF (HPARAM_CCN == 'CPB') THEN ! CPB98's case TAB_HYP : DO J1 = 1,NHYP ! tabulation using a logarithmic scale for the ! supersaturations (0.00001<S<0.1 in "no unit") - ZSS =ZSMAX*(ZSMIN/ZSMAX)**(FLOAT(NHYP-J1)/FLOAT(NHYP-1)) + ZSS =ZSMAX*(ZSMIN/ZSMAX)**(REAL(NHYP-J1)/REAL(NHYP-1)) XHYPF12(J1) = HYPGEO(XMUHEN,XKHEN/2.0,(XKHEN+2.0)/2.0,XBETAHEN, & 100.*ZSS) XHYPF32(J1) = HYPGEO(XMUHEN,XKHEN/2.0,(XKHEN+3.0)/2.0,XBETAHEN*100**2, & @@ -385,7 +386,7 @@ END IF ! NAHEN = 81 ! Tabulation for each Kelvin degree in the range XTT-40 to XTT+40 XAHENINTP1 = 1.0 -XAHENINTP2 = 0.5*FLOAT(NAHEN-1) - XTT +XAHENINTP2 = 0.5*REAL(NAHEN-1) - XTT IF (HPARAM_CCN == 'TFH') THEN ALLOCATE (XAHENY(NAHEN)) ALLOCATE (XAHENF(NAHEN)) @@ -395,7 +396,7 @@ IF (HPARAM_CCN == 'TFH') THEN ! XCSTHEN = 1.0 / ( XRHOLW*4.0*XPI*XCHEN*(100.0)**XKHEN ) DO J1 = 1,NAHEN - ZTT = XTT + FLOAT(J1-(NAHEN-1)/2) ! T + ZTT = XTT + REAL(J1-(NAHEN-1)/2) ! T ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT) ! Lv ZPSI1 = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.) ! Psi1 ZG = 1.E-4*(6.224E-7 + 0.281E-7 * ZTT + 2.320E-10 * ZTT**2) * & ! G @@ -430,7 +431,7 @@ ELSE XCSTHEN = 1.0 / ( XRHOLW*2.0*XPI*XKHEN*XCHEN*(100.0)**XKHEN * & GAMMA(XKHEN/2.0)*GAMMA(3.0/2.0)/GAMMA((XKHEN+3.0)/2.0) ) DO J1 = 1,NAHEN - ZTT = XTT + FLOAT(J1-(NAHEN-1)/2) ! T + ZTT = XTT + REAL(J1-(NAHEN-1)/2) ! T ZLV = XLVTT+(XCPV-XCL)*(ZTT-XTT) ! Lv XPSI1(J1) = (XG/(XRD*ZTT))*(XMV*ZLV/(XMD*XCPD*ZTT)-1.) ! Psi1 XPSI3(J1) = -1*XMV*ZLV/(XMD*XRD*(ZTT**2)) ! Psi3 diff --git a/src/MNH/ini_rain_ice.f90 b/src/MNH/ini_rain_ice.f90 index 9420cb1e70b58ae82df107fe0ca894915dcb8da9..62cabad5b587f48a6cd6d443c088c8c7cea8c2ca 100644 --- a/src/MNH/ini_rain_ice.f90 +++ b/src/MNH/ini_rain_ice.f90 @@ -101,7 +101,8 @@ END MODULE MODI_INI_RAIN_ICE !! J.-P. Pinty 24/11/01 Update ICE3/ICE4 options !! S. Riette 2016-11: new ICE3/ICE4 options !! P. Wautelet 22/01/2019 bug correction: incorrect write -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -219,7 +220,7 @@ END IF KSPLITR = 1 IF (CSEDIM == 'SPLI' .AND. .NOT. LRED ) THEN SPLIT : DO - ZT = PTSTEP / FLOAT(KSPLITR) + ZT = PTSTEP / REAL(KSPLITR) IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT KSPLITR = KSPLITR + 1 END DO SPLIT @@ -670,7 +671,7 @@ END IF NGAMINC = 80 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha -ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) ! IF( .NOT.ALLOCATED(XGAMINC_RIM1) ) ALLOCATE( XGAMINC_RIM1(NGAMINC) ) IF( .NOT.ALLOCATED(XGAMINC_RIM2) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) ) @@ -708,13 +709,13 @@ XLBSACCR3 = MOMG(XALPHAS,XNUS,XBS+2.) NACCLBDAS = 40 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1) +ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1) XACCINTP1S = 1.0 / ZRATE XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE NACCLBDAR = 40 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1) +ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1) XACCINTP1R = 1.0 / ZRATE XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE ! @@ -912,19 +913,19 @@ XLBRDRYG3 = MOMG(XALPHAR,XNUR,5.) NDRYLBDAR = 40 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG -ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/FLOAT(NDRYLBDAR-1) +ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1) XDRYINTP1R = 1.0 / ZRATE XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE NDRYLBDAS = 80 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG -ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/FLOAT(NDRYLBDAS-1) +ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1) XDRYINTP1S = 1.0 / ZRATE XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE NDRYLBDAG = 40 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/FLOAT(NDRYLBDAG-1) +ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1) XDRYINTP1G = 1.0 / ZRATE XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE ! @@ -1110,25 +1111,25 @@ XLBRWETH3 = MOMG(XALPHAR,XNUR,XBR+2.) NWETLBDAS = 80 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH -ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/FLOAT(NWETLBDAS-1) +ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/REAL(NWETLBDAS-1) XWETINTP1S = 1.0 / ZRATE XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE NWETLBDAG = 40 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH -ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/FLOAT(NWETLBDAG-1) +ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/REAL(NWETLBDAG-1) XWETINTP1G = 1.0 / ZRATE XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE NWETLBDAR = 40 XWETLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RWETH XWETLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RWETH -ZRATE = LOG(XWETLBDAR_MAX/XWETLBDAR_MIN)/FLOAT(NWETLBDAR-1) +ZRATE = LOG(XWETLBDAR_MAX/XWETLBDAR_MIN)/REAL(NWETLBDAR-1) XWETINTP1R = 1.0 / ZRATE XWETINTP2R = 1.0 - LOG( XWETLBDAR_MIN ) / ZRATE NWETLBDAH = 40 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH -ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/FLOAT(NWETLBDAH-1) +ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/REAL(NWETLBDAH-1) XWETINTP1H = 1.0 / ZRATE XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE ! diff --git a/src/MNH/ini_rain_ice_elec.f90 b/src/MNH/ini_rain_ice_elec.f90 index d352581f8345e2060623700af764e3be4a43d20a..940caeaeefc96dcda0800b7678b8be775815c116 100644 --- a/src/MNH/ini_rain_ice_elec.f90 +++ b/src/MNH/ini_rain_ice_elec.f90 @@ -86,7 +86,8 @@ END MODULE MODI_INI_RAIN_ICE_ELEC !! Original: 2002 !! Modifications: !! C. Barthe 20/11/09 update to version 4.8.1 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -198,7 +199,7 @@ END IF KSPLITR = 1 IF (CSEDIM == 'SPLI') THEN SPLIT : DO - ZT = PTSTEP / FLOAT(KSPLITR) + ZT = PTSTEP / REAL(KSPLITR) IF (ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT KSPLITR = KSPLITR + 1 END DO SPLIT @@ -620,7 +621,7 @@ END IF NGAMINC = 80 XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha -ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/FLOAT(NGAMINC-1)) +ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) ! IF( .NOT.ALLOCATED(XGAMINC_RIM1) ) ALLOCATE( XGAMINC_RIM1(NGAMINC) ) IF( .NOT.ALLOCATED(XGAMINC_RIM2) ) ALLOCATE( XGAMINC_RIM2(NGAMINC) ) @@ -659,14 +660,14 @@ XLBSACCR3 = MOMG(XALPHAS,XNUS,XBS+2.) NACCLBDAS = 40 XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/FLOAT(NACCLBDAS-1) +ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1) XACCINTP1S = 1.0 / ZRATE XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE ! NACCLBDAR = 40 XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/FLOAT(NACCLBDAR-1) +ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1) XACCINTP1R = 1.0 / ZRATE XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE ! @@ -865,21 +866,21 @@ XLBRDRYG3 = MOMG(XALPHAR,XNUR,5.) NDRYLBDAR = 40 XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG -ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN) / FLOAT(NDRYLBDAR-1) +ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN) / REAL(NDRYLBDAR-1) XDRYINTP1R = 1.0 / ZRATE XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE ! NDRYLBDAS = 80 XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG -ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN) / FLOAT(NDRYLBDAS-1) +ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN) / REAL(NDRYLBDAS-1) XDRYINTP1S = 1.0 / ZRATE XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE ! NDRYLBDAG = 40 XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN) / FLOAT(NDRYLBDAG-1) +ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN) / REAL(NDRYLBDAG-1) XDRYINTP1G = 1.0 / ZRATE XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE ! @@ -1051,19 +1052,19 @@ XLBGWETH3 = MOMG(XALPHAG,XNUG,XBG+2.) NWETLBDAS = 80 XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH -ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN) / FLOAT(NWETLBDAS-1) +ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN) / REAL(NWETLBDAS-1) XWETINTP1S = 1.0 / ZRATE XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE NWETLBDAG = 40 XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH -ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN) / FLOAT(NWETLBDAG-1) +ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN) / REAL(NWETLBDAG-1) XWETINTP1G = 1.0 / ZRATE XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE NWETLBDAH = 40 XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH -ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN) / FLOAT(NWETLBDAH-1) +ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN) / REAL(NWETLBDAH-1) XWETINTP1H = 1.0 / ZRATE XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE ! diff --git a/src/MNH/isocom.f b/src/MNH/isocom.f index b02dbe9f597d2c93ca9f49458d7dfb825558f88c..f2e6503e663a2f39655c053f185dd64501f7421c 100644 --- a/src/MNH/isocom.f +++ b/src/MNH/isocom.f @@ -127,6 +127,7 @@ C Modifications: C P. Wautelet 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q C P. Wautelet 22/01/2019: replace obsolete SNGL intrinsics by REAL intrinsics C P. Wautelet 19/04/2019: use kind(0.0d0) instead of kind=8 +C P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function C======================================================================= C SUBROUTINE ISOROPIA (WI, RHI, TEMPI, CNTRL, @@ -3895,7 +3896,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** C - DX = (RTHI-RTLW)/FLOAT(NDIV) + DX = (RTHI-RTLW)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNC (X2) diff --git a/src/MNH/isofwd.f b/src/MNH/isofwd.f index e068c3ad2f546ff1b0266182666b01971e1ce1e2..7b5fa91c879abcce94904b2af41eb6cef56f487a 100644 --- a/src/MNH/isofwd.f +++ b/src/MNH/isofwd.f @@ -1,6 +1,6 @@ -CMNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +CMNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier CMNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt CMNH_LIC for details. version 1. C======================================================================= C @@ -17,6 +17,7 @@ C C Modifications: C J.Escobar : 10/2017 , for real*4 replace DOUBLE => REAL C Philippe 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q +C P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function C C======================================================================= C @@ -473,7 +474,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (OMEHI-OMELO)/FLOAT(NDIV) + DX = (OMEHI-OMELO)/REAL(NDIV) DO 10 I=1,NDIV X2 = MAX(X1-DX, OMELO) Y2 = FUNCA2 (X2) @@ -759,7 +760,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** C - DZ = (ZHI-ZLO)/FLOAT(NDIV) + DZ = (ZHI-ZLO)/REAL(NDIV) DO 10 I=1,NDIV Z2 = Z1+DZ Y2 = FUNCB3A (Z2, TLC, TNH42S4) @@ -1495,7 +1496,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** C - DX = (KHI-KLO)/FLOAT(NDIV) + DX = (KHI-KLO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCC1 (X2) @@ -1671,7 +1672,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI4HI-PSI4LO)/FLOAT(NDIV) + DX = (PSI4HI-PSI4LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCD3 (X2) @@ -1889,7 +1890,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI4HI-PSI4LO)/FLOAT(NDIV) + DX = (PSI4HI-PSI4LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCD2 (X2) @@ -2212,7 +2213,7 @@ ccc IF (WATER .LE. TINY) RETURN ! No water C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCG5A (X2) @@ -2419,7 +2420,7 @@ CCC IF (WATER .LE. TINY) RETURN ! No water C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCG4A (X2) @@ -2704,7 +2705,7 @@ CCC IF (WATER .LE. TINY) RETURN ! No water C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCG3A (X2) @@ -3005,7 +3006,7 @@ CCC IF (WATER .LE. TINY) GOTO 50 ! No water C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCG2A (X2) @@ -3442,7 +3443,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCH6A (X2) @@ -3659,7 +3660,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCH5A (X2) @@ -3888,7 +3889,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCH4A (X2) @@ -4142,7 +4143,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCH3A (X2) @@ -4451,7 +4452,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI6HI-PSI6LO)/FLOAT(NDIV) + DX = (PSI6HI-PSI6LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1+DX Y2 = FUNCH2A (X2) @@ -4995,7 +4996,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI4HI-PSI4LO)/FLOAT(NDIV) + DX = (PSI4HI-PSI4LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1-DX Y2 = FUNCI5A (X2) @@ -5186,7 +5187,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI4HI-PSI4LO)/FLOAT(NDIV) + DX = (PSI4HI-PSI4LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1-DX Y2 = FUNCI4A (X2) @@ -5438,7 +5439,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI2HI-PSI2LO)/FLOAT(NDIV) + DX = (PSI2HI-PSI2LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = MAX(X1-DX, PSI2LO) Y2 = FUNCI3A (X2) @@ -5532,7 +5533,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI4HI-PSI4LO)/FLOAT(NDIV) + DX = (PSI4HI-PSI4LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = MAX(X1-DX, PSI4LO) Y2 = FUNCI3B (X2) @@ -5781,7 +5782,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI2HI-PSI2LO)/FLOAT(NDIV) + DX = (PSI2HI-PSI2LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = MAX(X1-DX, PSI2LO) Y2 = FUNCI2A (X2) @@ -6163,7 +6164,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI1HI-PSI1LO)/FLOAT(NDIV) + DX = (PSI1HI-PSI1LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1-DX Y2 = FUNCJ2 (X2) @@ -6334,7 +6335,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI1HI-PSI1LO)/FLOAT(NDIV) + DX = (PSI1HI-PSI1LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = X1-DX Y2 = FUNCJ1 (X2) diff --git a/src/MNH/isorev.f b/src/MNH/isorev.f index 75957b2bde25d2c8f8af8d9b7926a385d97331a6..1c1168daa039cd1bcc64cecef500a1e45aaf4095 100644 --- a/src/MNH/isorev.f +++ b/src/MNH/isorev.f @@ -1,6 +1,6 @@ -CMNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +CMNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier CMNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +CMNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt CMNH_LIC for details. version 1. C======================================================================= C @@ -17,6 +17,7 @@ C C Modifications: C J.Escobar : 10/2017 , for real*4 replace DOUBLE => REAL C Philippe 13/02/2018: use ifdef MNH_REAL to prevent problems with intrinsics on Blue Gene/Q +C P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function C C======================================================================= C @@ -769,7 +770,7 @@ C C C *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** C - DX = (PSI1HI-PSI1LO)/FLOAT(NDIV) + DX = (PSI1HI-PSI1LO)/REAL(NDIV) DO 10 I=1,NDIV X2 = MAX(X1-DX, ZERO) Y2 = FUNCN2 (X2) diff --git a/src/MNH/latlon_to_xy.f90 b/src/MNH/latlon_to_xy.f90 index 0b6d8b6584f6b28eae20d160e00abd9ac8de2824..eded99bf5b50b499036ac347716a959a350e790f 100644 --- a/src/MNH/latlon_to_xy.f90 +++ b/src/MNH/latlon_to_xy.f90 @@ -56,6 +56,7 @@ !! + changes call to READ_HGRID !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !---------------------------------------------------------------------------- ! !* 0. DECLARATION @@ -166,8 +167,8 @@ DO ! II=MAX(MIN(COUNT(XPGDXHAT(:)<ZXHAT),NPGDIMAX+2*JPHEXT-1),1) IJ=MAX(MIN(COUNT(XPGDYHAT(:)<ZYHAT),NPGDJMAX+2*JPHEXT-1),1) - ZI=(ZXHAT-XPGDXHAT(II))/(XPGDXHAT(II+1)-XPGDXHAT(II))+FLOAT(II) - ZJ=(ZYHAT-XPGDYHAT(IJ))/(XPGDYHAT(IJ+1)-XPGDYHAT(IJ))+FLOAT(IJ) + ZI=(ZXHAT-XPGDXHAT(II))/(XPGDXHAT(II+1)-XPGDXHAT(II))+REAL(II) + ZJ=(ZYHAT-XPGDYHAT(IJ))/(XPGDYHAT(IJ+1)-XPGDYHAT(IJ))+REAL(IJ) ! IF ( (ZI>=1.) .AND. (ZI<=NPGDIMAX+2*JPHEXT+1) & .AND. (ZJ>=1.) .AND. (ZJ<=NPGDJMAX+2*JPHEXT+1) ) THEN diff --git a/src/MNH/lima_ccn_activation.f90 b/src/MNH/lima_ccn_activation.f90 index 8ddde4450d5882b37d7a0b328e087f00de386202..97b12f95ce27a8e739e7acaf0f03cbe099fbd8cf 100644 --- a/src/MNH/lima_ccn_activation.f90 +++ b/src/MNH/lima_ccn_activation.f90 @@ -88,7 +88,8 @@ END MODULE MODI_LIMA_CCN_ACTIVATION !! ------------- !! Original ??/??/13 ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -277,9 +278,9 @@ IF( INUCT >= 1 ) THEN ! Remark : in LIMA's nucleation parameterization, Smax=0.01 for a supersaturation of 1% ! ! ! - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NAHEN)-0.0001, XAHENINTP1 * ZZT(:) + XAHENINTP2 ) ) + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NAHEN)-0.0001, XAHENINTP1 * ZZT(:) + XAHENINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ALLOCATE(ZSMAX(INUCT)) ! ! @@ -363,9 +364,9 @@ IF( INUCT >= 1 ) THEN ! Modified values for Beta and C (see in init_aerosol_properties) account for that ! WHERE (ZZW5(:) > 0. .AND. ZSMAX(:) > 0.) - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NHYP)-0.0001, XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) ) + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NHYP)-0.0001, XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) END WHERE ZZW6(:) = 0. ! initialize the change of cloud droplet concentration ! @@ -722,10 +723,10 @@ INTEGER :: PIVEC1 ALLOCATE(PFUNCSMAX(NPTS)) ! PFUNCSMAX(:) = 0. -PZVEC1 = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001, & +PZVEC1 = MAX( 1.0001,MIN( REAL(NHYP)-0.0001, & XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) ) PIVEC1 = INT( PZVEC1 ) -PZVEC1 = PZVEC1 - FLOAT( PIVEC1 ) +PZVEC1 = PZVEC1 - REAL( PIVEC1 ) DO JMOD = 1, NMOD_CCN ZHYPF = 0. ! XHYPF32 is tabulated with ZSMAX in [NO UNITS] ZHYPF = XHYPF32( PIVEC1+1,JMOD ) * PZVEC1 & @@ -778,10 +779,10 @@ REAL :: PZVEC1 INTEGER :: PIVEC1 ! PSINGL_FUNCSMAX = 0. -PZVEC1 = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001, & +PZVEC1 = MAX( 1.0001,MIN( REAL(NHYP)-0.0001, & XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) ) PIVEC1 = INT( PZVEC1 ) -PZVEC1 = PZVEC1 - FLOAT( PIVEC1 ) +PZVEC1 = PZVEC1 - REAL( PIVEC1 ) DO JMOD = 1, NMOD_CCN ZHYPF = 0. ! XHYPF32 is tabulated with ZSMAX in [NO UNITS] ZHYPF = XHYPF32( PIVEC1+1,JMOD ) * PZVEC1 & diff --git a/src/MNH/lima_cold_sedimentation.f90 b/src/MNH/lima_cold_sedimentation.f90 index c81d3924ffa5069574a428ad741c75911540f03a..d4e99f68c4b862e4044fba57f5ce79bccb84a98e 100644 --- a/src/MNH/lima_cold_sedimentation.f90 +++ b/src/MNH/lima_cold_sedimentation.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. !----------------------------------------------------------------- ! ################################### @@ -75,7 +75,8 @@ END MODULE MODI_LIMA_COLD_SEDIMENTATION !! Original ??/??/13 !! C. Barthe * LACy * jan. 2014 add budgets !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -170,7 +171,7 @@ IKE=SIZE(PZZ,3) - JPVEXT ALLOCATE(ZRTMIN(SIZE(XRTMIN))) ZRTMIN(:) = XRTMIN(:) / PTSTEP ! -ZTSPLITG= PTSTEP / FLOAT(KSPLITG) +ZTSPLITG= PTSTEP / REAL(KSPLITG) ! PINPRS(:,:) = 0. PINPRG(:,:) = 0. diff --git a/src/MNH/lima_droplets_riming_snow.f90 b/src/MNH/lima_droplets_riming_snow.f90 index 197458b65d2216093c3c0a1b2e38a86486066892..b255295a432345a39639e258f5436bb2ffbe7a9e 100644 --- a/src/MNH/lima_droplets_riming_snow.f90 +++ b/src/MNH/lima_droplets_riming_snow.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. ! ################################# MODULE MODI_LIMA_DROPLETS_RIMING_SNOW @@ -74,7 +74,8 @@ END MODULE MODI_LIMA_DROPLETS_RIMING_SNOW !! MODIFICATIONS !! ------------- !! Original 15/03/2018 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -165,10 +166,10 @@ WHERE( GRIM ) ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XRIMINTP1 * LOG( ZVEC1(:) ) + XRIMINTP2 ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ! ! 2. perform the linear interpolation of the normalized ! "2+XDS"-moment of the incomplete gamma function @@ -217,10 +218,10 @@ GRIM(:) = (PT(:)<XHMTMAX) .AND. (PT(:)>XHMTMIN) .AND. & WHERE ( GRIM ) ! ZVEC1(:) = PLBDC(:) - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XHMLINTP1 * LOG( ZVEC1(:) ) + XHMLINTP2 ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ZVEC1(:) = XGAMINC_HMC( IVEC2(:)+1 )* ZVEC2(:) & - XGAMINC_HMC( IVEC2(:) )*(ZVEC2(:) - 1.0) ZZW4(:) = ZVEC1(:) ! Large droplets diff --git a/src/MNH/lima_functions.f90 b/src/MNH/lima_functions.f90 index f253b700aa334c5879f149748cf21cfa4e489c00..a40d500c0ba5a7b56ee6faa8f50d9340993c8396 100644 --- a/src/MNH/lima_functions.f90 +++ b/src/MNH/lima_functions.f90 @@ -6,6 +6,7 @@ ! Modifications: ! P. Wautelet 22/01/2019: replace double precision declarations by real(kind(0.0d0)) (to allow compilation by NAG compiler) ! P. Wautelet 19/04/2019: use modd_precision kinds +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- !################################# MODULE MODI_LIMA_FUNCTIONS @@ -258,7 +259,7 @@ SUBROUTINE gaulag(x,w,n,alf) if(abs(z-z1).le.EPS)goto 1 12 continue 1 x(i)=z - w(i)=-exp(gammln(alf+n)-gammln(float(n)))/(pp*n*p2) + w(i)=-exp(gammln(alf+n)-gammln(real(n)))/(pp*n*p2) 13 continue ! ! NORMALISATION @@ -293,7 +294,7 @@ SUBROUTINE gauher(x,w,n) m=(n+1)/2 do 13 i=1,m if(i.eq.1)then - z=sqrt(float(2*n+1))-1.85575*(2*n+1)**(-.16667) + z=sqrt(real(2*n+1))-1.85575*(2*n+1)**(-.16667) else if(i.eq.2)then z=z-1.14*n**.426/z else if (i.eq.3)then diff --git a/src/MNH/lima_graupel.f90 b/src/MNH/lima_graupel.f90 index c1d740a479a8580109eb100e5573d70171eef777..ad114da363f6c1616ce45ee6534f929d64845e2f 100644 --- a/src/MNH/lima_graupel.f90 +++ b/src/MNH/lima_graupel.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. +!----------------------------------------------------------------- ! ################################# MODULE MODI_LIMA_GRAUPEL ! ################################# @@ -127,7 +128,8 @@ END MODULE MODI_LIMA_GRAUPEL !! MODIFICATIONS !! ------------- !! Original 15/03/2018 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -303,15 +305,15 @@ WHERE( GDRY ) ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001, & + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001, & XDRYINTP1G * LOG( ZVEC1(:) ) + XDRYINTP2G ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ! - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAS)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAS)-0.0001, & XDRYINTP1S * LOG( ZVEC2(:) ) + XDRYINTP2S ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ! !* perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -352,15 +354,15 @@ WHERE( GDRY ) ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001, & + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001, & XDRYINTP1G * LOG( ZVEC1(:) ) + XDRYINTP2G ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ! - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAR)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NDRYLBDAR)-0.0001, & XDRYINTP1R * LOG( ZVEC2(:) ) + XDRYINTP2R ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ! !* Perform the bilinear interpolation of the normalized ! RDRYG-kernel @@ -478,10 +480,10 @@ IVEC2(:)=0 WHERE( GDRY(:) ) ! ZVEC1(:) = PLBDC(:) - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XHMLINTP1 * LOG( ZVEC1(:) ) + XHMLINTP2 ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ZVEC1(:) = XGAMINC_HMC( IVEC2(:)+1 )* ZVEC2(:) & - XGAMINC_HMC( IVEC2(:) )*(ZVEC2(:) - 1.0) ZZX(:) = ZVEC1(:) ! Large droplets diff --git a/src/MNH/lima_mixed_fast_processes.f90 b/src/MNH/lima_mixed_fast_processes.f90 index 653c46b9ada79b21f834fe07d0cf051c992c004e..fdb9724bcc844fa74054e06b81c066867c806c04 100644 --- a/src/MNH/lima_mixed_fast_processes.f90 +++ b/src/MNH/lima_mixed_fast_processes.f90 @@ -1,3 +1,8 @@ +!MNH_LIC Copyright 2013-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 for details. version 1. +!----------------------------------------------------------------- ! ##################################### MODULE MODI_LIMA_MIXED_FAST_PROCESSES ! ##################################### @@ -135,7 +140,8 @@ END MODULE MODI_LIMA_MIXED_FAST_PROCESSES !! ------------- !! Original ??/??/13 !! C. Barthe * LACy * jan. 2014 add budgets -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -261,10 +267,10 @@ IF( IGRIM>0 ) THEN ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! ! 1.1.3 perform the linear interpolation of the normalized ! "2+XDS"-moment of the incomplete gamma function @@ -353,10 +359,10 @@ IF( IGRIM>0 ) THEN ALLOCATE(IVEC2(IGRIM)) ! ZVEC1(:) = PACK( ZLBDAC(:),MASK=GRIM(:) ) - ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(1:IGRIM) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XHMLINTP1 * LOG( ZVEC1(1:IGRIM) ) + XHMLINTP2 ) ) IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ZVEC1(1:IGRIM) = XGAMINC_HMC( IVEC2(1:IGRIM)+1 )* ZVEC2(1:IGRIM) & - XGAMINC_HMC( IVEC2(1:IGRIM) )*(ZVEC2(1:IGRIM) - 1.0) ZZX(:) = UNPACK( VECTOR=ZVEC1(:),MASK=GRIM,FIELD=0.0 ) ! Large droplets @@ -417,15 +423,15 @@ IF( IGACC>0 .AND. LRAIN) THEN ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(1:IGACC) = MAX( 1.0001, MIN( FLOAT(NACCLBDAS)-0.0001, & + ZVEC1(1:IGACC) = MAX( 1.0001, MIN( REAL(NACCLBDAS)-0.0001, & XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) ) - ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) ) + ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) ) ! - ZVEC2(1:IGACC) = MAX( 1.0001, MIN( FLOAT(NACCLBDAR)-0.0001, & + ZVEC2(1:IGACC) = MAX( 1.0001, MIN( REAL(NACCLBDAR)-0.0001, & XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) ) - ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) ) + ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) ) ! ! 1.3.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel @@ -654,15 +660,15 @@ IF( IGDRY>0 ) THEN ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001, & + ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAS)-0.0001, & + ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAS)-0.0001, & XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! !* 2.2.5 perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -718,15 +724,15 @@ IF( IGDRY>0 ) THEN ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAG)-0.0001, & + ZVEC1(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAG)-0.0001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NDRYLBDAR)-0.0001, & + ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NDRYLBDAR)-0.0001, & XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! !* 2.2.10 perform the bilinear interpolation of the normalized ! RDRYG-kernel @@ -924,10 +930,10 @@ IF( IGDRY>0 ) THEN ALLOCATE(IVEC2(IGDRY)) ! ZVEC1(:) = PACK( ZLBDAC(:),MASK=GDRY(:) ) - ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( FLOAT(NGAMINC)-0.0001, & + ZVEC2(1:IGDRY) = MAX( 1.0001, MIN( REAL(NGAMINC)-0.0001, & XHMLINTP1 * LOG( ZVEC1(1:IGDRY) ) + XHMLINTP2 ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ZVEC1(1:IGDRY) = XGAMINC_HMC( IVEC2(1:IGDRY)+1 )* ZVEC2(1:IGDRY) & - XGAMINC_HMC( IVEC2(1:IGDRY) )*(ZVEC2(1:IGDRY) - 1.0) ZZX(:) = UNPACK( VECTOR=ZVEC1(:),MASK=GDRY,FIELD=0.0 ) ! Large droplets @@ -1055,15 +1061,15 @@ IF( IHAIL>0 ) THEN ! in the geometrical set of (Lbda_h,Lbda_s) couplet use to ! tabulate the SWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAH)-0.0001, & + ZVEC1(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAH)-0.0001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAS)-0.0001, & + ZVEC2(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAS)-0.0001, & XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 3.1.5 perform the bilinear interpolation of the normalized ! SWETH-kernel @@ -1118,15 +1124,15 @@ IF( IHAIL>0 ) THEN ! in the geometrical set of (Lbda_h,Lbda_g) couplet use to ! tabulate the GWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAG)-0.0001, & + ZVEC1(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAG)-0.0001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.0001, MIN( FLOAT(NWETLBDAG)-0.0001, & + ZVEC2(1:IGWET) = MAX( 1.0001, MIN( REAL(NWETLBDAG)-0.0001, & XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 3.1.10 perform the bilinear interpolation of the normalized ! GWETH-kernel diff --git a/src/MNH/lima_precip_scavenging.f90 b/src/MNH/lima_precip_scavenging.f90 index ec318f4c81c8257bed19f4c0ac0e0cb8a428573e..cbbf3f3ddaad69dfc3dd83d7196befe77eb6b6a6 100644 --- a/src/MNH/lima_precip_scavenging.f90 +++ b/src/MNH/lima_precip_scavenging.f90 @@ -1,3 +1,8 @@ +!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 for details. version 1. +!----------------------------------------------------------------- ! ################################## MODULE MODI_LIMA_PRECIP_SCAVENGING ! ################################## @@ -91,6 +96,7 @@ END MODULE MODI_LIMA_PRECIP_SCAVENGING !! Original ??/??/13 !! !! Philippe Wautelet 28/05/2018: corrected truncated integer division (3/2 -> 1.5) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0.DECLARATIONS @@ -700,7 +706,7 @@ firstcall : IF (GSFIRSTCALL) THEN ZDZMIN = MINVAL(PZZ(IIB:IIE,IJB:IJE,IKB+1:IKE+1)-PZZ(IIB:IIE,IJB:IJE,IKB:IKE)) ISPLITR = 1 SPLIT : DO - ZT = 2.* PTSTEP / FLOAT(ISPLITR) + ZT = 2.* PTSTEP / REAL(ISPLITR) IF ( ZT * ZVTRMAX / ZDZMIN .LT. 1.) EXIT SPLIT ISPLITR = ISPLITR + 1 END DO SPLIT @@ -712,10 +718,10 @@ END IF firstcall !* 2.2 time splitting loop initialization ! IF( (KTCOUNT==1) .AND. (CCONF=='START') ) THEN - ZTSPLITR = PTSTEP / FLOAT(ISPLITR) ! Small time step + ZTSPLITR = PTSTEP / REAL(ISPLITR) ! Small time step ZTSTEP = PTSTEP ! Large time step ELSE - ZTSPLITR= 2. * PTSTEP / FLOAT(ISPLITR) + ZTSPLITR= 2. * PTSTEP / REAL(ISPLITR) ZTSTEP = 2. * PTSTEP END IF ! diff --git a/src/MNH/lima_rain_accr_snow.f90 b/src/MNH/lima_rain_accr_snow.f90 index 18a62a528f026cff2fb57a908ca4eaced767b442..60817d81741a913204da6857f538a1bfd4c13c22 100644 --- a/src/MNH/lima_rain_accr_snow.f90 +++ b/src/MNH/lima_rain_accr_snow.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. +!----------------------------------------------------------------- ! ################################# MODULE MODI_LIMA_RAIN_ACCR_SNOW ! ################################# @@ -66,7 +67,8 @@ END MODULE MODI_LIMA_RAIN_ACCR_SNOW !! MODIFICATIONS !! ------------- !! Original 15/03/2018 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -160,15 +162,15 @@ WHERE( GACC ) ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NACCLBDAS)-0.0001, & + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NACCLBDAS)-0.0001, & XACCINTP1S * LOG( ZVEC1(:) ) + XACCINTP2S ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ! - ZVEC2(:) = MAX( 1.0001, MIN( FLOAT(NACCLBDAR)-0.0001, & + ZVEC2(:) = MAX( 1.0001, MIN( REAL(NACCLBDAR)-0.0001, & XACCINTP1R * LOG( ZVEC2(:) ) + XACCINTP2R ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) ! ! 1.3.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel : for small rain drops transformed into snow diff --git a/src/MNH/lima_sedimentation.f90 b/src/MNH/lima_sedimentation.f90 index b64244b29ae182f4d547ac1c934697da9653f3c5..a4e82471390a836e5b0d8cf0084fd16e68582c36 100644 --- a/src/MNH/lima_sedimentation.f90 +++ b/src/MNH/lima_sedimentation.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. +!----------------------------------------------------------------- ! ################################### MODULE MODI_LIMA_SEDIMENTATION ! ################################### @@ -62,6 +63,7 @@ END MODULE MODI_LIMA_SEDIMENTATION !! Original 15/03/2018 !! !! B.Vie 02/2019 Desactivate (comment) the heat transport by droplets +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -131,7 +133,7 @@ REAL :: ZC ! Cpl or Cpi ! ! Time splitting ! -ZTSPLITG= PTSTEP / FLOAT(NSPLITSED(KID)) +ZTSPLITG= PTSTEP / REAL(NSPLITSED(KID)) ! ZWDT=0. PINPR(:,:) = 0. diff --git a/src/MNH/lima_warm_nucl.f90 b/src/MNH/lima_warm_nucl.f90 index abe784f5633f24ef36507bee97f0fd8a80bae368..6887edea9ec7505f0dc072ebbaef71b4225c2763 100644 --- a/src/MNH/lima_warm_nucl.f90 +++ b/src/MNH/lima_warm_nucl.f90 @@ -103,7 +103,8 @@ END MODULE MODI_LIMA_WARM_NUCL !! J. Escobar : 10/2017 , for real*4 use XMNH_EPSILON !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -332,10 +333,10 @@ IF( INUCT >= 1 ) THEN ! Remark : in LIMA's nucleation parameterization, Smax=0.01 for a supersaturation of 1% ! ! ! - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NAHEN)-0.0001, & + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NAHEN)-0.0001, & XAHENINTP1 * ZZT(:) + XAHENINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ALLOCATE(ZSMAX(INUCT)) ! ! @@ -419,10 +420,10 @@ IF( INUCT >= 1 ) THEN ! Modified values for Beta and C (see in init_aerosol_properties) account for that ! WHERE (ZZW5(:) > 0. .AND. ZSMAX(:) > 0.) - ZVEC1(:) = MAX( 1.0001, MIN( FLOAT(NHYP)-0.0001, & + ZVEC1(:) = MAX( 1.0001, MIN( REAL(NHYP)-0.0001, & XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) END WHERE ZZW6(:) = 0. ! initialize the change of cloud droplet concentration ! @@ -789,10 +790,10 @@ INTEGER :: PIVEC1 ALLOCATE(PFUNCSMAX(NPTS)) ! PFUNCSMAX(:) = 0. -PZVEC1 = MAX( ( 1.0 + 10.0 * XMNH_EPSILON ) ,MIN( FLOAT(NHYP)*( 1.0 - 10.0 * XMNH_EPSILON ) , & +PZVEC1 = MAX( ( 1.0 + 10.0 * XMNH_EPSILON ) ,MIN( REAL(NHYP)*( 1.0 - 10.0 * XMNH_EPSILON ) , & XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) ) PIVEC1 = INT( PZVEC1 ) -PZVEC1 = PZVEC1 - FLOAT( PIVEC1 ) +PZVEC1 = PZVEC1 - REAL( PIVEC1 ) DO JMOD = 1, NMOD_CCN ZHYPF = 0. ! XHYPF32 is tabulated with ZSMAX in [NO UNITS] ZHYPF = XHYPF32( PIVEC1+1,JMOD ) * PZVEC1 & @@ -845,10 +846,10 @@ REAL :: PZVEC1 INTEGER :: PIVEC1 ! PSINGL_FUNCSMAX = 0. -PZVEC1 = MAX( 1.0001,MIN( FLOAT(NHYP)-0.0001, & +PZVEC1 = MAX( 1.0001,MIN( REAL(NHYP)-0.0001, & XHYPINTP1*LOG(PPZSMAX)+XHYPINTP2 ) ) PIVEC1 = INT( PZVEC1 ) -PZVEC1 = PZVEC1 - FLOAT( PIVEC1 ) +PZVEC1 = PZVEC1 - REAL( PIVEC1 ) DO JMOD = 1, NMOD_CCN ZHYPF = 0. ! XHYPF32 is tabulated with ZSMAX in [NO UNITS] ZHYPF = XHYPF32( PIVEC1+1,JMOD ) * PZVEC1 & diff --git a/src/MNH/lima_warm_sedimentation.f90 b/src/MNH/lima_warm_sedimentation.f90 index f52838161410316a2fcc3a3a500f40a63c3ff07c..4aa56b4b440a605a24bed1b58c1bfe1bceea2d54 100644 --- a/src/MNH/lima_warm_sedimentation.f90 +++ b/src/MNH/lima_warm_sedimentation.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 2013-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-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. +!----------------------------------------------------------------- ! ################################### MODULE MODI_LIMA_WARM_SEDIMENTATION ! ################################### @@ -89,7 +90,8 @@ END MODULE MODI_LIMA_WARM_SEDIMENTATION !! MODIFICATIONS !! ------------- !! Original ??/??/13 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -198,7 +200,7 @@ IJE=SIZE(PZZ,2) - JPHEXT IKB=1+JPVEXT IKE=SIZE(PZZ,3) - JPVEXT ! -ZTSPLITR= PTSTEP / FLOAT(KSPLITR) +ZTSPLITR= PTSTEP / REAL(KSPLITR) ! PINPRC(:,:) = 0. PINPRR(:,:) = 0. diff --git a/src/MNH/mnh2lpdm_ech.f90 b/src/MNH/mnh2lpdm_ech.f90 index 462bd2ae40152741e1e3a3278a32995461bbef7b..7602cbaedeb897c40394f7621d8ef34b8278d706 100644 --- a/src/MNH/mnh2lpdm_ech.f90 +++ b/src/MNH/mnh2lpdm_ech.f90 @@ -14,6 +14,7 @@ ! Modifications: ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! Philippe Wautelet 28/05/2018: corrected truncated integer division (1/3 -> 1./3.) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------------- ! !* 0. DECLARATIONS. @@ -87,7 +88,7 @@ ICURMM=TZDTCUR%TDATE%MONTH ICURJJ=TZDTCUR%TDATE%DAY ICURSS=NINT(TZDTCUR%TIME) ! -ICURMN = NINT( (FLOAT(ICURSS)/60.0)/5.0 )*5 ! Heure arrondie a 5 minutes pres. +ICURMN = NINT( (REAL(ICURSS)/60.0)/5.0 )*5 ! Heure arrondie a 5 minutes pres. ICURSS = 0 ICURHH =ICURMN/60 ICURMN =ICURMN-ICURHH*60 diff --git a/src/MNH/mnh2lpdm_ini.f90 b/src/MNH/mnh2lpdm_ini.f90 index 7c185cfde09ae595c16b0e79bf8b048c1a379b90..0d317661df0526b0141eab771a1efda2892fba32 100644 --- a/src/MNH/mnh2lpdm_ini.f90 +++ b/src/MNH/mnh2lpdm_ini.f90 @@ -2,6 +2,7 @@ !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. +!-------------------------------------------------------------------------- ! ######spl SUBROUTINE MNH2LPDM_INI(TPFILE1,TPFILE2,TPLOGFILE,TPGRIDFILE,TPDATEFILE) !-------------------------------------------------------------------------- @@ -20,6 +21,7 @@ ! ! Modifications: ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !-------------------------------------------------------------------------- ! ! @@ -136,7 +138,7 @@ NMDLSS=NINT(TZDTEXP1%TIME) ! !* Heure du modele arrondie a 5 minutes pres. ! -NMDLMN = NINT( (FLOAT(NMDLSS)/60.0)/5.0 )*5 +NMDLMN = NINT( (REAL(NMDLSS)/60.0)/5.0 )*5 NMDLSS = 0 NMDLHH =NMDLMN/60 NMDLMN =NMDLMN-NMDLHH*60 diff --git a/src/MNH/modd_precision.f90 b/src/MNH/modd_precision.f90 index e302e46b96e79d9a950ebb5a1cf3f9f39db68547..b7cec6c0ef345fa9f69cb7fbbd7528234dc99e3b 100644 --- a/src/MNH/modd_precision.f90 +++ b/src/MNH/modd_precision.f90 @@ -8,6 +8,7 @@ ! Modifications: ! P. Wautelet 22/03/2019: add MNHINT/REAL32/64_MPI, MNH2REAL32/64_MPI + more public parameters ! P. Wautelet 27/03/2019: add MNHTIME and MNHTIME_MPI +! P. Wautelet 26/04/2019: add MNHLOG and MNHLOG_MPI/MNHLOG32_MPI/MNHLOG64_MPI !----------------------------------------------------------------- module modd_precision @@ -24,11 +25,12 @@ private public :: MNHINT32, MNHINT64, MNHREAL32, MNHREAL64, MNHREAL128 public :: MNHINT32_MPI, MNHINT64_MPI +public :: MNHLOG32_MPI, MNHLOG64_MPI public :: MNHREAL32_MPI, MNHREAL64_MPI public :: MNH2REAL32_MPI, MNH2REAL64_MPI -public :: MNHINT, MNHREAL -public :: MNHINT_MPI, MNHREAL_MPI, MNH2REAL_MPI +public :: MNHINT, MNHLOG, MNHREAL +public :: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNH2REAL_MPI public :: MNHTIME, MNHTIME_MPI public :: LFIINT @@ -37,10 +39,13 @@ public :: LFIINT public :: CDFINT, MNHINT_NF90, MNHREAL_NF90 #endif - integer, parameter :: MNHINT32 = selected_int_kind( r = 9 ) integer, parameter :: MNHINT64 = selected_int_kind( r = 18 ) +! There is no standard way to define a 32 or 64-bit logical +! Therefore, we define only the default MNHLOG type +integer, parameter :: MNHLOG = kind( .true. ) + integer, parameter :: MNHREAL32 = selected_real_kind( p = 6, r = 37 ) integer, parameter :: MNHREAL64 = selected_real_kind( p = 15, r = 307 ) integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 ) @@ -48,6 +53,9 @@ integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 ) integer, parameter :: MNHINT32_MPI = MPI_INTEGER4 integer, parameter :: MNHINT64_MPI = MPI_INTEGER8 +integer, parameter :: MNHLOG32_MPI = MPI_LOGICAL4 +integer, parameter :: MNHLOG64_MPI = MPI_LOGICAL8 + integer, parameter :: MNHREAL32_MPI = MPI_REAL4 integer, parameter :: MNHREAL64_MPI = MPI_REAL8 @@ -56,12 +64,16 @@ integer, parameter :: MNH2REAL64_MPI = MPI_2DOUBLE_PRECISION ! Kinds for MesoNH + +!For logicals, all compilers seem to set the same default size for INTEGER and LOGICAL #if ( MNH_INT == 4 ) integer, parameter :: MNHINT = MNHINT32 integer, parameter :: MNHINT_MPI = MNHINT32_MPI +integer, parameter :: MNHLOG_MPI = MNHLOG32_MPI #elif ( MNH_INT == 8 ) integer, parameter :: MNHINT = MNHINT64 integer, parameter :: MNHINT_MPI = MNHINT64_MPI +integer, parameter :: MNHLOG_MPI = MNHLOG64_MPI #else #error "Invalid MNH_INT" #endif diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90 index 0f613fff81e6cdac7597973e73827849d8cf4fd6..084db39dd5ecec2f1b48f1e743e95d9ef328d23c 100644 --- a/src/MNH/mode_elec_ll.f90 +++ b/src/MNH/mode_elec_ll.f90 @@ -21,18 +21,16 @@ !! Modifications !! ------------- !! Original 08/02/2010 -!! +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! !------------------------------------------------------------------------ ! USE MODD_MPIF -use modd_precision, only: MNHREAL_MPI +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD ! IMPLICIT NONE ! -!include "mpif.h" -! -! INTEGER, PARAMETER :: IFIRST_PROC = 0 ! 0/1 to increase numerotation of proc number ! ! @@ -166,7 +164,7 @@ ENDIF ! !* 1.3 broadcast to all proc ! -CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, & +CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE RMIN0_ELEC_ll @@ -216,7 +214,7 @@ ENDIF ! !* 1.3 broadcast to all proc ! -CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, & +CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE RMAX0_ELEC_ll @@ -253,7 +251,7 @@ INFO = -1 ! !* 1.1 min(Proc) ! -CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MNHINT_MPI, & MPI_MIN, NMNH_COMM_WORLD, INFO) ! !* 1.2 find the proc number of the maximum @@ -266,7 +264,7 @@ ENDIF ! !* 1.3 broadcast to all proc ! -CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MNHINT_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE IMIN0_ELEC_ll @@ -303,7 +301,7 @@ INFO = -1 ! !* 1.1 min(Proc) ! -CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MNHINT_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! !* 1.2 find the proc number of the maximum @@ -316,7 +314,7 @@ ENDIF ! !* 1.3 brodcast to all proc ! -CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MNHINT_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE IMAX0_ELEC_ll @@ -351,7 +349,7 @@ INFO = -1 ! !* 1.1 sum(Proc) ! -CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, & MPI_SUM, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE ISUM_ELEC_ll @@ -386,7 +384,7 @@ INFO = -1 ! !* 1.1 sum(Proc) ! -CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, & +CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, & MPI_SUM, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE ISUM0_ELEC_ll @@ -477,8 +475,8 @@ JCENT_GLOB = IYOR + JCENT_LOC - 1 ! ! The proc with the center of the cell broadcast the global coord of the cell ! -CALL MPI_BCAST(ICENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR) -CALL MPI_BCAST(JCENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR) +CALL MPI_BCAST(ICENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR) +CALL MPI_BCAST(JCENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR) ! IS_GLOB = KIS + IXOR -1 IE_GLOB = KIE + IXOR -1 diff --git a/src/MNH/mode_tmat.f90 b/src/MNH/mode_tmat.f90 index 6c22fdabbe8eecbd80297423af55e4db1c8a246c..2196eefd4dd609d9067140fde2e272db9e4a262f 100644 --- a/src/MNH/mode_tmat.f90 +++ b/src/MNH/mode_tmat.f90 @@ -19,6 +19,7 @@ ! P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision) ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 19/04/2019: use kind(0.0d0) instead of kind=8 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! !**************************************************************************** @@ -593,7 +594,7 @@ TI1NN=XTI1(N,N) TR1NN1=XTR1(N1,N1) TI1NN1=XTI1(N1,N1) - DN1=FLOAT(2*N+1) + DN1=REAL(2*N+1) QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+& TR1NN1*TR1NN1+TI1NN1*TI1NN1) QEXT=QEXT+(TR1NN+TR1NN1)*DN1 @@ -601,7 +602,7 @@ ! TI1NN=TI1(N,N) ! TR1NN1=TR1(N1,N1) ! TI1NN1=TI1(N1,N1) -! DN1=FLOAT(2*N+1) +! DN1=REAL(2*N+1) ! QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+& ! TR1NN1*TR1NN1+TI1NN1*TI1NN1) ! QEXT=QEXT+(TR1NN+TR1NN1)*DN1 @@ -654,7 +655,7 @@ TI1NN=XTI1(N,N) TR1NN1=XTR1(N1,N1) TI1NN1=XTI1(N1,N1) - DN1=FLOAT(2*N+1) + DN1=REAL(2*N+1) QSCA=QSCA+DN1*(TR1NN*TR1NN+TI1NN*TI1NN+& TR1NN1*TR1NN1+TI1NN1*TI1NN1) QEXT=QEXT+(TR1NN+TR1NN1)*DN1 @@ -1107,7 +1108,7 @@ !****mclock gives the time of execution (CPU)in centieme of second !c ITIME=MCLOCK() -!c TIME=FLOAT(ITIME)/6000D0 +!c TIME=REAL(ITIME)/6000D0 !C WRITE(10,1001)TIME !c 1001 FORMAT (' time =',F8.2,' min') @@ -1355,8 +1356,8 @@ DO NN=1,NMAX DO N=1,NMAX CN=CI**(NN-N-1) - DNN=FLOAT((2*N+1)*(2*NN+1)) - DNN=DNN/FLOAT( N*NN*(N+1)*(NN+1) ) + DNN=REAL((2*N+1)*(2*NN+1)) + DNN=DNN/REAL( N*NN*(N+1)*(NN+1) ) RN=SQRT(DNN) CAL(N,NN)=CN*RN ENDDO @@ -1497,9 +1498,9 @@ D1=1D0 D2=X DO N=1,NMAX - QN=FLOAT(N) - QN1=FLOAT(N+1) - QN2=FLOAT(2*N+1) + QN=REAL(N) + QN1=REAL(N+1) + QN2=REAL(2*N+1) D3=(QN2*X*D2-QN*D1)/QN1 DER=QS1*(QN1*QN/QN2)*(-D1+D3) DV1(N)=D2*DSI @@ -1508,17 +1509,17 @@ D2=D3 ENDDO ELSE - QMM=FLOAT(M*M) + QMM=REAL(M*M) DO I=1,M I2=I*2 - A=A*SQRT(FLOAT(I2-1)/FLOAT(I2))*QS + A=A*SQRT(REAL(I2-1)/REAL(I2))*QS ENDDO D1=0D0 D2=A DO N=M,NMAX - QN=FLOAT(N) - QN2=FLOAT(2*N+1) - QN1=FLOAT(N+1) + QN=REAL(N) + QN2=REAL(2*N+1) + QN1=REAL(N+1) QNM=SQRT(QN*QN-QMM) QNM1=SQRT(QN1*QN1-QMM) D3=(QN2*X*D2-QNM*D1)/QNM1 @@ -1533,7 +1534,7 @@ IF (M.EQ.1) THEN DO N=1,NMAX - DN=FLOAT(N*(N+1)) + DN=REAL(N*(N+1)) DN=0.5D0*SQRT(DN) IF (X.LT.0D0) DN=DN*(-1)**(N+1) DV1(N)=DN @@ -1559,8 +1560,8 @@ DO N=1,NMAX NN=N*(N+1) - AN(N)=FLOAT(NN) - D=SQRT(FLOAT(2*N+1)/FLOAT(NN)) + AN(N)=REAL(NN) + D=SQRT(REAL(2*N+1)/REAL(NN)) DD(N)=D DO N1=1,N DDD=D*DD(N1)*0.5D0 @@ -1637,8 +1638,8 @@ if ( NMAX > NPN1 ) call Print_msg( NVERB_FATAL, 'GEN', 'VARY', 'NMAX > NPN1' ) TB=TA*SQRT(MRR*MRR+MRI*MRI) - TB=MAX(TB,FLOAT(NMAX)) - NNMAX1=1.2D0*SQRT(MAX(TA,FLOAT(NMAX)))+3D0 + TB=MAX(TB,REAL(NMAX)) + NNMAX1=1.2D0*SQRT(MAX(TA,REAL(NMAX)))+3D0 NNMAX2=(TB+4D0*(TB**0.33333D0)+1.2D0*SQRT(TB)) NNMAX2=NNMAX2-NMAX+5 CALL BESS(Z,ZR,ZI,NG,NMAX,NNMAX1,NNMAX2) @@ -1723,12 +1724,12 @@ L=NMAX+NNMAX XX=1D0/X - Z(L)=1D0/(FLOAT(2*L+1)*XX) + Z(L)=1D0/(REAL(2*L+1)*XX) L1=L-1 DO I=1,L1 I1=L-I - Z(I1)=1D0/(FLOAT(2*I1+1)*XX-Z(I1+1)) + Z(I1)=1D0/(REAL(2*I1+1)*XX-Z(I1+1)) ENDDO Z0=1D0/(XX-Z(1)) @@ -1740,7 +1741,7 @@ DO I=2,NMAX YI1=Y(I-1) YI=YI1*Z(I) - U(I)=YI1-FLOAT(I)*YI*XX + U(I)=YI1-REAL(I)*YI*XX Y(I)=YI ENDDO @@ -1764,12 +1765,12 @@ NMAX1=NMAX-1 DO I=2,NMAX1 - Y(I+1)=FLOAT(2*I+1)*X1*Y(I)-Y(I-1) + Y(I+1)=REAL(2*I+1)*X1*Y(I)-Y(I-1) ENDDO V(1)=-X1*(C+Y1) DO I=2,NMAX - V(I)=Y(I-1)-FLOAT(I)*X1*Y(I) + V(I)=Y(I-1)-REAL(I)*X1*Y(I) ENDDO RETURN @@ -1796,14 +1797,14 @@ XRXI=1D0/(XR*XR+XI*XI) CXXR=XR*XRXI CXXI=-XI*XRXI - QF=1D0/FLOAT(2*L+1) + QF=1D0/REAL(2*L+1) CZR(L)=XR*QF CZI(L)=XI*QF L1=L-1 DO I=1,L1 I1=L-I - QF=FLOAT(2*I1+1) + QF=REAL(2*I1+1) AR=QF*CXXR-CZR(I1+1) AI=QF*CXXI-CZI(I1+1) ARI=1D0/(AR*AR+AI*AI) @@ -1838,7 +1839,7 @@ UI(1)=CU1I DO I=2,NMAX - QI=FLOAT(I) + QI=REAL(I) CYI1R=CYR(I-1) CYI1I=CYI(I-1) CYIR=CYI1R*CZR(I)-CYI1I*CZI(I) @@ -2155,7 +2156,7 @@ DEALLOCATE(IG22) !! COMMON /CTT/ QR,QI,RGQR,RGQI MM1=M - QM=FLOAT(M) + QM=REAL(M) QMM=QM*QM !c NG=2*NGAUSS !c NGSS=NG @@ -2471,17 +2472,17 @@ DEALLOCATE(IG22) ENDDO IF (M.NE.0) THEN - QMM=FLOAT(M*M) + QMM=REAL(M*M) DO I=1,M I2=I*2 - A=A*SQRT(FLOAT(I2-1)/FLOAT(I2))*QS + A=A*SQRT(REAL(I2-1)/REAL(I2))*QS ENDDO D1=0D0 D2=A DO N=M,NMAX - QN=FLOAT(N) - QN2=FLOAT(2*N+1) - QN1=FLOAT(N+1) + QN=REAL(N) + QN2=REAL(2*N+1) + QN1=REAL(N+1) QNM=SQRT(QN*QN-QMM) QNM1=SQRT(QN1*QN1-QMM) D3=(QN2*X*D2-QNM*D1)/QNM1 @@ -2495,9 +2496,9 @@ DEALLOCATE(IG22) D1=1D0 D2=X DO N=1,NMAX - QN=FLOAT(N) - QN1=FLOAT(N+1) - QN2=FLOAT(2*N+1) + QN=REAL(N) + QN1=REAL(N+1) + QN2=REAL(2*N+1) D3=(QN2*X*D2-QN*D1)/QN1 DER=QS1*(QN1*QN/QN2)*(-D1+D3) DV1(N)=D2 @@ -2616,7 +2617,7 @@ DEALLOCATE(IG22) INTEGER IPVT(NPN1),IND1(NPN1),IND2(NPN1) NDIM=NPN1 - NN1=(FLOAT(NMAX)-0.1D0)*0.5D0+1D0 + NN1=(REAL(NMAX)-0.1D0)*0.5D0+1D0 NN2=NMAX-NN1 DO I=1,NMAX IND1(I)=2*I-1 @@ -2853,7 +2854,7 @@ DEALLOCATE(IG22) IND=MOD(N,2) K=N/2+IND - F=FLOAT(N) + F=REAL(N) !*****DO 1 DO I=1,K diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 12e6b74feee0ee1690c2041dc1a22c7413841360..128897c87ec0514d20b086e6115ad077790ee6ad 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -259,6 +259,7 @@ END MODULE MODI_MODEL_n ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables ! P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing ! P. Wautelet 19/04/2019: removed unused dummy arguments and variables +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -2171,7 +2172,7 @@ IF (OEXIT) THEN ! ! Timing/ Steps ! - ZTIME_STEP = XT_START / FLOAT(KTCOUNT) + ZTIME_STEP = XT_START / REAL(KTCOUNT) WRITE(YTCOUNT,FMT="(I0)") KTCOUNT CALL TIME_STAT_ll(ZTIME_STEP,ZTOT, ' SECOND/STEP='//YTCOUNT,'=') ! @@ -2179,7 +2180,7 @@ IF (OEXIT) THEN ! IPOINTS = NIMAX_ll*NJMAX_ll*NKMAX WRITE(YPOINTS,FMT="(I0)") IPOINTS - ZTIME_STEP_PTS = ZTIME_STEP / FLOAT(IPOINTS) * 1e6 + ZTIME_STEP_PTS = ZTIME_STEP / REAL(IPOINTS) * 1e6 CALL TIME_STAT_ll(ZTIME_STEP_PTS,ZTOT_PT) CALL TIME_STAT_ll(ZTIME_STEP_PTS,ZTOT_PT, ' MICROSEC/STP/PT='//YPOINTS,'-') ! diff --git a/src/MNH/neighboravg.f90 b/src/MNH/neighboravg.f90 index 903d0ad280a81063f41477bc28e959b2a46f91d4..30504f7ec0ad634ab3677973ace15ae41c38ab1f 100644 --- a/src/MNH/neighboravg.f90 +++ b/src/MNH/neighboravg.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. +!----------------------------------------------------------------- !###################### MODULE MODE_NEIGHBORAVG !###################### @@ -21,7 +22,8 @@ SUBROUTINE BLOCKAVG(PMATIN,KDX,KDY,PMATOUT) !! !! MODIFICATIONS !! ------------- -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -123,7 +125,7 @@ DO II = 1, KDX-1 END DO CALL GET_HALO(ZTMP) -PMATOUT(:,:,:) = ZTMP(:,:,:) / float(KDX*KDY) +PMATOUT(:,:,:) = ZTMP(:,:,:) / real(KDX*KDY) END SUBROUTINE BLOCKAVG @@ -194,7 +196,7 @@ DO IJ = 1 , 2*KDY +1 ISX = - ISX END DO -PMATOUT(:,:,:) = ZSUMP1(:,:,:) / FLOAT((1+2*KDX)*(1+2*KDY)) +PMATOUT(:,:,:) = ZSUMP1(:,:,:) / REAL((1+2*KDX)*(1+2*KDY)) END SUBROUTINE MOVINGAVG diff --git a/src/MNH/num_diff.f90 b/src/MNH/num_diff.f90 index af0265cb623c78bda525b7a84e8929a46a0650cd..e31370e1d27efcd07fc4bf2935357de1c1d4666c 100644 --- a/src/MNH/num_diff.f90 +++ b/src/MNH/num_diff.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! #################### MODULE MODI_NUM_DIFF ! #################### @@ -215,7 +210,8 @@ END MODULE MODI_NUM_DIFF !! 07/09 (C.Lac) Correction on budget calls !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! J.Escobar : 05/12/2017 : Pb SegFault , correct IF(ONUMDIFTH/OZDIFFU) nesting -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -753,7 +749,7 @@ DO JI = IWZ,IEZ 6*PZDIFFU_HALO2%XZZ(JI,JJ,JK) ) ! Weighting factor for z-diffusion ZWGTFAC(JI,JJ,JK) = MAX(0,JK-PZDIFFU_HALO2%NZDI(JI,JJ)+1)/& - FLOAT(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDI(JI,JJ)+1) + REAL(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDI(JI,JJ)+1) ENDDO ENDDO ENDDO @@ -946,7 +942,7 @@ DO JI = IIB-1,IIE+1 6*PZDIFFU_HALO2%XZZ(JI,JJ,JK) ) ! Weighting factor for z-diffusion ZWGTFAC(JI,JJ,JK) = MAX(0,JK-PZDIFFU_HALO2%NZDJ(JI,JJ)+1)/ & - FLOAT(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDJ(JI,JJ)+1) + REAL(PZDIFFU_HALO2%NZDLB-PZDIFFU_HALO2%NZDJ(JI,JJ)+1) ENDDO ENDDO ENDDO diff --git a/src/MNH/paspol.f90 b/src/MNH/paspol.f90 index 1fee61de9e295ec065f9a1c75d76538a32cd60b3..3bdc1e191584b6d285e58cc196337271d0ccebe2 100644 --- a/src/MNH/paspol.f90 +++ b/src/MNH/paspol.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2008-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. !----------------------------------------------------------------- ! ######spl @@ -60,7 +60,8 @@ END MODULE MODI_PASPOL !! C.Lac 11/11 Remove instant M !! P.Wautelet 28/03/2018 Replace TEMPORAL_DIST by DATETIME_DISTANCE !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! -------------------------------------------------------------------------- +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! -------------------------------------------------------------------------- ! !! EXTERNAL !! -------- @@ -218,8 +219,8 @@ IF (GPPFIRSTCALL) THEN CALL SM_XYHAT(XLATORI,XLONORI,XPPLAT(JSV),XPPLON(JSV),ZSRCX,ZSRCY) II=MAX(MIN(COUNT(XXHAT(:)<ZSRCX),IIU-1),1) IJ=MAX(MIN(COUNT(XYHAT(:)<ZSRCY),IJU-1),1) - ZSRCI=(ZSRCX-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II) - ZSRCJ=(ZSRCY-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ) + ZSRCI=(ZSRCX-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II) + ZSRCJ=(ZSRCY-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ) ! IPIGI(JSV)=INT(ZSRCI) IPIGJ(JSV)=INT(ZSRCJ) @@ -275,9 +276,9 @@ IF (GPPFIRSTCALL) THEN ! IF (CPPINIT(JSV)=='9PT') THEN ! ! DO J9PTI= -1,1 -! ZX=ABS(FLOAT(J9PTI)*XPI/4.) +! ZX=ABS(REAL(J9PTI)*XPI/4.) ! DO J9PTJ= -1,1 -! ZY=ABS(FLOAT(J9PTJ)*XPI/4.) +! ZY=ABS(REAL(J9PTJ)*XPI/4.) ! Z9PT(J9PTI,J9PTJ)=COS(ZX)*COS(ZY) ! END DO ! END DO @@ -315,10 +316,10 @@ IF (GPPFIRSTCALL) THEN READ(CPPT2(JSV),'(I4,5I2)') I2YY,I2MM,I2DD,I2HH,I2MN,I2SS READ(CPPT3(JSV),'(I4,5I2)') I3YY,I3MM,I3DD,I3HH,I3MN,I3SS READ(CPPT4(JSV),'(I4,5I2)') I4YY,I4MM,I4DD,I4HH,I4MN,I4SS - Z1SEC=FLOAT(I1SS+I1MN*60+I1HH*3600) - Z2SEC=FLOAT(I2SS+I2MN*60+I2HH*3600) - Z3SEC=FLOAT(I3SS+I3MN*60+I3HH*3600) - Z4SEC=FLOAT(I4SS+I4MN*60+I4HH*3600) + Z1SEC=REAL(I1SS+I1MN*60+I1HH*3600) + Z2SEC=REAL(I2SS+I2MN*60+I2HH*3600) + Z3SEC=REAL(I3SS+I3MN*60+I3HH*3600) + Z4SEC=REAL(I4SS+I4MN*60+I4HH*3600) ! ! Chrono relative au debut du rejet en secondes. ! diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index a722563f12d687a12b26e24453a9b0e8be2c21a8..053f539dbdf11feb18c1e306de71d9aed1e11270 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -233,6 +233,7 @@ END MODULE MODI_PHYS_PARAM_n ! P. Wautelet 28/03/2018: replace TEMPORAL_DIST by DATETIME_DISTANCE ! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -683,7 +684,7 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) ! XFLALWD (:,:) = 300. DO JSWB=1,NSWB_MNH - XDIRFLASWD(:,:,JSWB) = XI0 * MAX(COS(XZENITH(:,:)),0.)/FLOAT(NSWB_MNH) + XDIRFLASWD(:,:,JSWB) = XI0 * MAX(COS(XZENITH(:,:)),0.)/REAL(NSWB_MNH) XSCAFLASWD(:,:,JSWB) = 0. END DO XDTHRAD(:,:,:) = 0. @@ -696,8 +697,8 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) ZTIME = MOD(TDTCUR%TIME +XLON0*240., XDAY) IHOUR = INT( ZTIME/3600. ) IF (IHOUR < 0) IHOUR=IHOUR + 24 - ZDT = ZTIME/3600. - FLOAT(IHOUR) - XDIRFLASWD(:,:,:) =(( ZRG_HOUR(IHOUR+1)-ZRG_HOUR(IHOUR) )*ZDT + ZRG_HOUR(IHOUR)) / FLOAT(NSWB_MNH) + ZDT = ZTIME/3600. - REAL(IHOUR) + XDIRFLASWD(:,:,:) =(( ZRG_HOUR(IHOUR+1)-ZRG_HOUR(IHOUR) )*ZDT + ZRG_HOUR(IHOUR)) / REAL(NSWB_MNH) XFLALWD (:,:) = (ZRAT_HOUR(IHOUR+1)-ZRAT_HOUR(IHOUR))*ZDT + ZRAT_HOUR(IHOUR) DO JSWB=1,NSWB_MNH WHERE(ZCOSZEN(:,:)<0.) XDIRFLASWD(:,:,JSWB) = 0. diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 3422ec0bb0faf09a84b91e15259fc2b29cf7555c..d1cb76877d062a3859452408d7b0c70070885cb4 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -316,6 +316,7 @@ ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables ! P. Wautelet 28/03/2019: use TFILE instead of unit number for set_iluout_timing ! P. Wautelet 19/04/2019: removed unused dummy arguments and variables +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1253,14 +1254,14 @@ ELSE CALL GET_DIM_EXT_ll('B',IXDIM,IYDIM) IBEG = IXOR-JPHEXT-1 IEND = IBEG+IXDIM-1 - XXHAT(:) = (/ (FLOAT(JLOOP)*XDELTAX, JLOOP=IBEG,IEND) /) + XXHAT(:) = (/ (REAL(JLOOP)*XDELTAX, JLOOP=IBEG,IEND) /) IBEG = IYOR-JPHEXT-1 IEND = IBEG+IYDIM-1 - XYHAT(:) = (/ (FLOAT(JLOOP)*XDELTAY, JLOOP=IBEG,IEND) /) + XYHAT(:) = (/ (REAL(JLOOP)*XDELTAY, JLOOP=IBEG,IEND) /) ! ELSE - XXHAT(:) = (/ (FLOAT(JLOOP-NIB)*XDELTAX, JLOOP=1,NIU) /) - XYHAT(:) = (/ (FLOAT(JLOOP-NJB)*XDELTAY, JLOOP=1,NJU) /) + XXHAT(:) = (/ (REAL(JLOOP-NIB)*XDELTAX, JLOOP=1,NIU) /) + XYHAT(:) = (/ (REAL(JLOOP-NJB)*XDELTAY, JLOOP=1,NJU) /) END IF END IF ! @@ -1289,11 +1290,11 @@ IF ( LEN_TRIM(CPGD_FILE) == 0 .OR. .NOT. LREAD_ZS) THEN LFLAT = .FALSE. IF(.NOT.L2D) THEN ! three-dimensional case XZS(:,:) = XHMAX / ( 1. & - + ( (SPREAD(XXHAT(1:NIU),2,NJU) - FLOAT(NIZS) * XDELTAX) /XAX ) **2 & - + ( (SPREAD(XYHAT(1:NJU),1,NIU) - FLOAT(NJZS) * XDELTAY) /XAY ) **2 ) **1.5 + + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2 & + + ( (SPREAD(XYHAT(1:NJU),1,NIU) - REAL(NJZS) * XDELTAY) /XAY ) **2 ) **1.5 ELSE ! two-dimensional case XZS(:,:) = XHMAX / ( 1. & - + ( (SPREAD(XXHAT(1:NIU),2,NJU) - FLOAT(NIZS) * XDELTAX) /XAX ) **2 ) + + ( (SPREAD(XXHAT(1:NIU),2,NJU) - REAL(NIZS) * XDELTAX) /XAX ) **2 ) ENDIF IF(L1D) THEN ! one-dimensional case XZS(:,:) = XHMAX @@ -1303,7 +1304,7 @@ IF ( LEN_TRIM(CPGD_FILE) == 0 .OR. .NOT. LREAD_ZS) THEN LFLAT = .FALSE. IF(L2D) THEN ! two-dimensional case DO JILOOP = 1, NIU - ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX + ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX IF( ABS(ZDIST)<(4.0*XAX) ) THEN XZS(JILOOP,:) = (XHMAX/16.0)*( 1.0 + COS((XPI*ZDIST)/(4.0*XAX)) )**4 ELSE @@ -1316,7 +1317,7 @@ IF ( LEN_TRIM(CPGD_FILE) == 0 .OR. .NOT. LREAD_ZS) THEN LFLAT = .FALSE. IF(L2D) THEN ! two-dimensional case DO JILOOP = 1, NIU - ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX + ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX IF( ABS(ZDIST)<(4.0*XAX) ) THEN XZS(JILOOP,:) = XHMAX*EXP(-(ZDIST/XAY)**2)*COS((XPI*ZDIST)/XAX)**2 ELSE @@ -1328,12 +1329,12 @@ IF ( LEN_TRIM(CPGD_FILE) == 0 .OR. .NOT. LREAD_ZS) THEN LFLAT = .FALSE. IF(L2D) THEN ! two-dimensional case DO JILOOP = 1, NIU - ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX + ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2) END DO ELSE ! three dimensionnal case - infinite profile in y direction DO JILOOP = 1, NIU - ZDIST = XXHAT(JILOOP)-FLOAT(NIZS)*XDELTAX + ZDIST = XXHAT(JILOOP)-REAL(NIZS)*XDELTAX XZS(JILOOP,:) = XHMAX*(XAX**2)/(XAX**2+ZDIST**2) END DO ENDIF diff --git a/src/MNH/prognos.f90 b/src/MNH/prognos.f90 index 569a2aa08c0b7312ed0f4494c4f94895063c5d09..bd1ad8c3ec82b5843ad0d10466ebe3f3c73e9cb8 100644 --- a/src/MNH/prognos.f90 +++ b/src/MNH/prognos.f90 @@ -58,7 +58,8 @@ END MODULE MODI_PROGNOS !! 2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM !! 2015 M.Mazoyer and O.Thouron : Physical tunings !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -120,10 +121,10 @@ IVEC2(:) =0.0 ! DO J1 = 1,4 WHERE (PS0(:).GT.0.0) - ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(NHYP)-0.00001, & + ZVEC2(:) = MAX( 1.00001, MIN( REAL(NHYP)-0.00001, & XHYPINTP1*LOG(PS0(:))+XHYPINTP2 ) ) IVEC2(:) = INT( ZVEC2(:) ) - ZVEC2(:) = ZVEC2(:) - FLOAT( IVEC2(:) ) + ZVEC2(:) = ZVEC2(:) - REAL( IVEC2(:) ) END WHERE END DO ZZW1(:) =0.0 diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 5ba7853d4e07073b95db0db7c42d82e4ddde4e8d..531637f10cc37a1b65b4a345a40860d85a256822 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -120,6 +120,7 @@ CONTAINS !! P.Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1207,7 +1208,7 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN GCLEAR(:,:) = SPREAD( GCLEAR_2D(:),DIM=2,NCOPIES=KFLEV ) ! vertical extension of clear columns 2D map ICLOUD_COL = KDLON - ICLEAR_COL ! number of cloudy columns ! - ZCLEAR_COL_ll = FLOAT(ICLEAR_COL) + ZCLEAR_COL_ll = REAL(ICLEAR_COL) CALL REDUCESUM_ll(ZCLEAR_COL_ll,IINFO_ll) !ZDLON_ll = KDLON !CALL REDUCESUM_ll(ZDLON_ll,IINFO_ll) @@ -2038,7 +2039,7 @@ ELSE ! ! the splitting of the arrays will be performed ! - INUM_CALL = CEILING( FLOAT( IDIM ) / FLOAT( KRAD_COLNBR ) ) + INUM_CALL = CEILING( REAL( IDIM ) / REAL( KRAD_COLNBR ) ) IDIM_RESIDUE = IDIM ! DO JI_SPLIT = 1 , INUM_CALL diff --git a/src/MNH/radtr_satel.f90 b/src/MNH/radtr_satel.f90 index 394f11794c5c952137967648016492cab7b9a1e3..357b7941c06927cdbf7b1ed5e01627d7a97f3adc 100644 --- a/src/MNH/radtr_satel.f90 +++ b/src/MNH/radtr_satel.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2000-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/radtr_satel.f90,v $ $Revision: 1.2.4.1.16.1.2.2 $ -!----------------------------------------------------------------- ! ####################### MODULE MODI_RADTR_SATEL ! ####################### @@ -106,6 +102,7 @@ END MODULE MODI_RADTR_SATEL !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! G.Delautier 04/2016 : BUG JPHEXT !! S. Riette 11/2016 : Condensation interface changed +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -625,7 +622,7 @@ ELSE ! ! the splitting of the arrays will be performed ! - INUM_CALL = CEILING( FLOAT( IDIM ) / FLOAT( KRAD_COLNBR ) ) + INUM_CALL = CEILING( REAL( IDIM ) / REAL( KRAD_COLNBR ) ) IDIM_RESIDUE = IDIM DO JI_SPLIT = 1 , INUM_CALL IDIM_EFF = MIN( IDIM_RESIDUE,KRAD_COLNBR ) diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90 index 9139c89873568bf187fae069ad7787aa6f7557aa..75a99204c9dbc033eaeaaaad7fcff9da866c9705 100644 --- a/src/MNH/rain_c2r2_khko.f90 +++ b/src/MNH/rain_c2r2_khko.f90 @@ -213,6 +213,7 @@ END MODULE MODI_RAIN_C2R2_KHKO !! C.Lac : 07/2016 : Add droplet deposition !! C.Lac : 01/2017 : Correction on droplet deposition !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -522,7 +523,7 @@ IF (LBUDGET_SV) & !* 6.1 Calculation of the mean volumic radius (ZRAY) and ! the terminal vertical velocity ZCC for precipitating clouds ! -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) ! Small time step +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! Small time step ! ! !* 6.2 compute the sedimentation velocities for rain @@ -686,10 +687,10 @@ INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:)) ! !* 3.1.1 compute the constant term (ZZW3) ! - ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NAHEN)-0.00001, & + ZVEC1(:) = MAX( 1.00001, MIN( REAL(NAHEN)-0.00001, & XAHENINTP1 * ZZT(:) + XAHENINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ALLOCATE(ZSMAX(INUCT)) ! ! @@ -771,10 +772,10 @@ INUCT = COUNTJV( GNUCT(:,:,:),I1(:),I2(:),I3(:)) IF( HPARAM_CCN == 'CPB' ) THEN DO J1 = 1,4 WHERE (ZZW5(:) > 0.) - ZVEC1(:) = MAX( 1.00001, MIN( FLOAT(NHYP)-0.00001, & + ZVEC1(:) = MAX( 1.00001, MIN( REAL(NHYP)-0.00001, & XHYPINTP1*LOG(ZSMAX(:))+XHYPINTP2 ) ) IVEC1(:) = INT( ZVEC1(:) ) - ZVEC1(:) = ZVEC1(:) - FLOAT( IVEC1(:) ) + ZVEC1(:) = ZVEC1(:) - REAL( IVEC1(:) ) ZZW2(:) = XHYPF32( IVEC1(:)+1 )* ZVEC1(:) & - XHYPF32( IVEC1(:) )*(ZVEC1(:) - 1.0) ZSMAX(:) = (ZZW3(:)/ZZW2(:))**(1.0/(XKHEN+2.0)) diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90 index ebbe39dde701aa0c48aa31f18a0c07b5311d8532..94b30788ff570b25117a6e7bb67f51d929b3d364 100644 --- a/src/MNH/rain_ice_elec.f90 +++ b/src/MNH/rain_ice_elec.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2002-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-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. !----------------------------------------------------------------- ! ######################### @@ -225,7 +225,8 @@ END MODULE MODI_RAIN_ICE_ELEC !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_ELEC_SLOW with XMNH_HUGE_12_LOG !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1254,7 +1255,7 @@ END IF ! !* 8.1 time splitting loop initialization ! -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! ! IF (CSEDIM == 'STAT') THEN @@ -2974,10 +2975,10 @@ IMPLICIT NONE !* set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001, & + ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001, & XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! !* 5.1.3 perform the linear interpolation of the normalized !* "2+XDS"-moment of the incomplete gamma function @@ -3125,15 +3126,15 @@ IMPLICIT NONE ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001, & + ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001, & XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) ) - ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) ) + ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) ) ! - ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001, & + ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001, & XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) ) - ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) ) + ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) ) ! ! 5.2.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel @@ -3467,15 +3468,15 @@ IMPLICIT NONE ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001, & XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! ! 6.2.3.4 perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -3582,15 +3583,15 @@ IMPLICIT NONE ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001, & XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! ! 6.2.4.4 perform the bilinear interpolation of the normalized ! RDRYG-kernel @@ -3966,15 +3967,15 @@ IMPLICIT NONE ! in the geometrical set of (Lbda_h,Lbda_s) couplet use to ! tabulate the SWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001, & XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.5 perform the bilinear interpolation of the normalized ! SWETH-kernel @@ -4021,15 +4022,15 @@ IMPLICIT NONE ! in the geometrical set of (Lbda_h,Lbda_g) couplet use to ! tabulate the GWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.10 perform the bilinear interpolation of the normalized ! GWETH-kernel @@ -5066,31 +5067,31 @@ REAL, DIMENSION(:), INTENT(INOUT) :: ZDQLWC_AUX ! q= f(RAR or EW,T) in Saunders ZDQLWC_OPT(:) = PACK( ZDQLWC_AUX(:), MASK=GSAUN ) ! ! Temperature index (0C --> -40C) - ZVEC1(1:IGSAUN) = MAX( 1.00001, MIN( FLOAT(NIND_TEMP)-0.00001, & + ZVEC1(1:IGSAUN) = MAX( 1.00001, MIN( REAL(NIND_TEMP)-0.00001, & (ZVEC1(1:IGSAUN) - XTT - 1.)/(-1.) ) ) IVEC1(1:IGSAUN) = INT( ZVEC1(1:IGSAUN) ) - ZVEC1(1:IGSAUN) = ZVEC1(1:IGSAUN) - FLOAT(IVEC1(1:IGSAUN)) + ZVEC1(1:IGSAUN) = ZVEC1(1:IGSAUN) - REAL(IVEC1(1:IGSAUN)) ! ! LWC index (0.01 g.m^-3 --> 10 g.m^-3) WHERE (ZVEC2(:) >= 0.01 .AND. ZVEC2(:) < 0.1) - ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(10)-0.00001, & + ZVEC2(:) = MAX( 1.00001, MIN( REAL(10)-0.00001, & ZVEC2(:) * 100. )) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! WHERE (ZVEC2(:) >= 0.1 .AND. ZVEC2(:) < 1. .AND. IVEC2(:) == 0) - ZVEC2(:) = MAX( 10.00001, MIN( FLOAT(19)-0.00001, & + ZVEC2(:) = MAX( 10.00001, MIN( REAL(19)-0.00001, & ZVEC2(:) * 10. + 9. ) ) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! WHERE ((ZVEC2(:) >= 1.) .AND. ZVEC2(:) <= 10.) - ZVEC2(:) = MAX( 19.00001, MIN( FLOAT(NIND_LWC)-0.00001, & + ZVEC2(:) = MAX( 19.00001, MIN( REAL(NIND_LWC)-0.00001, & ZVEC2(:) + 18. ) ) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! ! Interpolate XSAUNDER @@ -5132,31 +5133,31 @@ REAL, DIMENSION(NIND_LWC+1,NIND_TEMP+1) :: XTAKA_AUX !XMANSELL or XTAKA_TM) ZDQTAKA_OPT(:) = PACK( ZDQTAKA_AUX(:), MASK=GTAKA ) ! ! Temperature index (0C --> -40C) - ZVEC1(1:IGTAKA) = MAX( 1.00001, MIN( FLOAT(NIND_TEMP)-0.00001, & + ZVEC1(1:IGTAKA) = MAX( 1.00001, MIN( REAL(NIND_TEMP)-0.00001, & (ZVEC1(1:IGTAKA) - XTT - 1.)/(-1.) ) ) IVEC1(1:IGTAKA) = INT( ZVEC1(1:IGTAKA) ) - ZVEC1(1:IGTAKA) = ZVEC1(1:IGTAKA) - FLOAT(IVEC1(1:IGTAKA)) + ZVEC1(1:IGTAKA) = ZVEC1(1:IGTAKA) - REAL(IVEC1(1:IGTAKA)) ! ! LWC index (0.01 g.m^-3 --> 10 g.m^-3) WHERE (ZVEC2(:) >= 0.01 .AND. ZVEC2(:) < 0.1) - ZVEC2(:) = MAX( 1.00001, MIN( FLOAT(10)-0.00001, & + ZVEC2(:) = MAX( 1.00001, MIN( REAL(10)-0.00001, & ZVEC2(:) * 100. )) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! WHERE (ZVEC2(:) >= 0.1 .AND. ZVEC2(:) < 1. .AND. IVEC2(:) == 0) - ZVEC2(:) = MAX( 10.00001, MIN( FLOAT(19)-0.00001, & + ZVEC2(:) = MAX( 10.00001, MIN( REAL(19)-0.00001, & ZVEC2(:) * 10. + 9. ) ) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! WHERE (ZVEC2(:) >= 1. .AND. ZVEC2(:) <= 10.) - ZVEC2(:) = MAX( 19.00001, MIN( FLOAT(NIND_LWC)-0.00001, & + ZVEC2(:) = MAX( 19.00001, MIN( REAL(NIND_LWC)-0.00001, & ZVEC2(:) + 18. ) ) IVEC2(:) = INT(ZVEC2(:)) - ZVEC2(:) = ZVEC2(:) - FLOAT(IVEC2(:)) + ZVEC2(:) = ZVEC2(:) - REAL(IVEC2(:)) ENDWHERE ! ! Interpolate XMANSELL or XTAKA_TM diff --git a/src/MNH/rain_ice_fast_rg.f90 b/src/MNH/rain_ice_fast_rg.f90 index 4a7bfd9dbff3b3a74c4e51173a0fc020d9c18870..c6bcad458060b288b5c6807a3fd8fa7c067d4808 100644 --- a/src/MNH/rain_ice_fast_rg.f90 +++ b/src/MNH/rain_ice_fast_rg.f90 @@ -5,6 +5,7 @@ !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- MODULE MODE_RAIN_ICE_FAST_RG @@ -188,15 +189,15 @@ END IF ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! tabulate the SDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAS)-0.00001, & XDRYINTP1S * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2S ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! !* 6.2.5 perform the bilinear interpolation of the normalized ! SDRYG-kernel @@ -251,15 +252,15 @@ END IF ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! tabulate the RDRYG-kernel ! - ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & + ZVEC1(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAG)-0.00001, & XDRYINTP1G * LOG( ZVEC1(1:IGDRY) ) + XDRYINTP2G ) ) IVEC1(1:IGDRY) = INT( ZVEC1(1:IGDRY) ) - ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - FLOAT( IVEC1(1:IGDRY) ) + ZVEC1(1:IGDRY) = ZVEC1(1:IGDRY) - REAL( IVEC1(1:IGDRY) ) ! - ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001, & + ZVEC2(1:IGDRY) = MAX( 1.00001, MIN( REAL(NDRYLBDAR)-0.00001, & XDRYINTP1R * LOG( ZVEC2(1:IGDRY) ) + XDRYINTP2R ) ) IVEC2(1:IGDRY) = INT( ZVEC2(1:IGDRY) ) - ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - FLOAT( IVEC2(1:IGDRY) ) + ZVEC2(1:IGDRY) = ZVEC2(1:IGDRY) - REAL( IVEC2(1:IGDRY) ) ! !* 6.2.10 perform the bilinear interpolation of the normalized ! RDRYG-kernel diff --git a/src/MNH/rain_ice_fast_rh.f90 b/src/MNH/rain_ice_fast_rh.f90 index 5b95f2c1a062a05168e7291202038796e1f4d8ae..178dcc779457fdb1b7bcdf289c00bc87caed6334 100644 --- a/src/MNH/rain_ice_fast_rh.f90 +++ b/src/MNH/rain_ice_fast_rh.f90 @@ -5,6 +5,7 @@ !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- MODULE MODE_RAIN_ICE_FAST_RH @@ -161,15 +162,15 @@ END IF ! in the geometrical set of (Lbda_h,Lbda_s) couplet use to ! tabulate the SWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAH)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAH)-0.00001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAS)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAS)-0.00001, & XWETINTP1S * LOG( ZVEC2(1:IGWET) ) + XWETINTP2S ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.5 perform the bilinear interpolation of the normalized ! SWETH-kernel @@ -223,15 +224,15 @@ END IF ! in the geometrical set of (Lbda_h,Lbda_g) couplet use to ! tabulate the GWETH-kernel ! - ZVEC1(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC1(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & XWETINTP1H * LOG( ZVEC1(1:IGWET) ) + XWETINTP2H ) ) IVEC1(1:IGWET) = INT( ZVEC1(1:IGWET) ) - ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - FLOAT( IVEC1(1:IGWET) ) + ZVEC1(1:IGWET) = ZVEC1(1:IGWET) - REAL( IVEC1(1:IGWET) ) ! - ZVEC2(1:IGWET) = MAX( 1.00001, MIN( FLOAT(NWETLBDAG)-0.00001, & + ZVEC2(1:IGWET) = MAX( 1.00001, MIN( REAL(NWETLBDAG)-0.00001, & XWETINTP1G * LOG( ZVEC2(1:IGWET) ) + XWETINTP2G ) ) IVEC2(1:IGWET) = INT( ZVEC2(1:IGWET) ) - ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - FLOAT( IVEC2(1:IGWET) ) + ZVEC2(1:IGWET) = ZVEC2(1:IGWET) - REAL( IVEC2(1:IGWET) ) ! !* 7.2.10 perform the bilinear interpolation of the normalized ! GWETH-kernel diff --git a/src/MNH/rain_ice_fast_rs.f90 b/src/MNH/rain_ice_fast_rs.f90 index 620c7ecd66a77f750e4e06fc0bcbf571e069825e..335c322b01efb51df04e9e0c4c883c8735df0c3a 100644 --- a/src/MNH/rain_ice_fast_rs.f90 +++ b/src/MNH/rain_ice_fast_rs.f90 @@ -5,6 +5,7 @@ !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- MODULE MODE_RAIN_ICE_FAST_RS @@ -131,10 +132,10 @@ END IF ! set of Lbda_s used to tabulate some moments of the incomplete ! gamma function ! - ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( FLOAT(NGAMINC)-0.00001, & + ZVEC2(1:IGRIM) = MAX( 1.00001, MIN( REAL(NGAMINC)-0.00001, & XRIMINTP1 * LOG( ZVEC1(1:IGRIM) ) + XRIMINTP2 ) ) IVEC2(1:IGRIM) = INT( ZVEC2(1:IGRIM) ) - ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - FLOAT( IVEC2(1:IGRIM) ) + ZVEC2(1:IGRIM) = ZVEC2(1:IGRIM) - REAL( IVEC2(1:IGRIM) ) ! ! 5.1.3 perform the linear interpolation of the normalized ! "2+XDS"-moment of the incomplete gamma function @@ -222,15 +223,15 @@ END IF ! in the geometrical set of (Lbda_s,Lbda_r) couplet use to ! tabulate the RACCSS-kernel ! - ZVEC1(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAS)-0.00001, & + ZVEC1(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAS)-0.00001, & XACCINTP1S * LOG( ZVEC1(1:IGACC) ) + XACCINTP2S ) ) IVEC1(1:IGACC) = INT( ZVEC1(1:IGACC) ) - ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - FLOAT( IVEC1(1:IGACC) ) + ZVEC1(1:IGACC) = ZVEC1(1:IGACC) - REAL( IVEC1(1:IGACC) ) ! - ZVEC2(1:IGACC) = MAX( 1.00001, MIN( FLOAT(NACCLBDAR)-0.00001, & + ZVEC2(1:IGACC) = MAX( 1.00001, MIN( REAL(NACCLBDAR)-0.00001, & XACCINTP1R * LOG( ZVEC2(1:IGACC) ) + XACCINTP2R ) ) IVEC2(1:IGACC) = INT( ZVEC2(1:IGACC) ) - ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - FLOAT( IVEC2(1:IGACC) ) + ZVEC2(1:IGACC) = ZVEC2(1:IGACC) - REAL( IVEC2(1:IGACC) ) ! ! 5.2.3 perform the bilinear interpolation of the normalized ! RACCSS-kernel diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90 index bdcb2b7f11dd170e2e34c931bef1302ba8c6f2ec..a2179af6106a9b0c82f57bb2a29ef6b6e835506b 100644 --- a/src/MNH/rain_ice_sedimentation_split.f90 +++ b/src/MNH/rain_ice_sedimentation_split.f90 @@ -5,6 +5,7 @@ !----------------------------------------------------------------- ! Modifications: ! P. Wautelet 25/02/2019: split rain_ice (cleaner and easier to maintain/debug) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !----------------------------------------------------------------- MODULE MODE_RAIN_ICE_SEDIMENTATION_SPLIT @@ -173,7 +174,7 @@ END IF ! O. Initialization of for sedimentation ! ZINVTSTEP=1./PTSTEP -ZTSPLITR= PTSTEP / FLOAT(KSPLITR) +ZTSPLITR= PTSTEP / REAL(KSPLITR) ! IF (OSEDIC) PINPRC (:,:) = 0. IF (ODEPOSC) PINDEP (:,:) = 0. diff --git a/src/MNH/read_ver_grid.f90 b/src/MNH/read_ver_grid.f90 index e9d83fe22a861c9cdba80ad3e0c4cf3c2abf1221..fb5ee72d1c296ff35af91332ed411b137b151bb0 100644 --- a/src/MNH/read_ver_grid.f90 +++ b/src/MNH/read_ver_grid.f90 @@ -96,6 +96,7 @@ END MODULE MODI_READ_VER_GRID !! Oct, 25, 1996 (V.Masson) deallocations !! Oct. 10, 2001 (I.Mallet) allow namelists in different orders !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -255,7 +256,7 @@ CASE('FUNCTN') IF (.NOT. ASSOCIATED(XZHAT)) ALLOCATE(XZHAT(IKU)) ! IF (ABS(ZDZTOP-ZDZGRD) < 1.E-10) THEN - XZHAT(:) = (/ (FLOAT(JK-IKB)*ZDZGRD, JK=1,IKU) /) + XZHAT(:) = (/ (REAL(JK-IKB)*ZDZGRD, JK=1,IKU) /) ! ELSE IF (ZDZGRD>ZDZTOP) THEN diff --git a/src/MNH/relax.f90 b/src/MNH/relax.f90 index 06a046ebdbe1f1a73e8776ba30f19c70abaeeadb..421ab85c76011d9cff614344b3a3d0f40c54e54c 100644 --- a/src/MNH/relax.f90 +++ b/src/MNH/relax.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 init 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ################## MODULE MODI_RELAX ! ################## @@ -71,6 +66,7 @@ END MODULE MODI_RELAX !! MODIFICATIONS !! ------------- !! Original 18/03/96 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -103,7 +99,7 @@ REAL :: ZFCT ! Peridot coefficient ! Peridot profile ! ZFCT = 0.45339 -ZNBR = FLOAT(KB)*(1.-PA) +ZNBR = REAL(KB)*(1.-PA) PRELAX = MIN(2.,ZFCT**ZNBR) ! !------------------------------------------------------------------------------- diff --git a/src/MNH/relaxdef.f90 b/src/MNH/relaxdef.f90 index d4579df4862ca24ca738fed7fd57f1eb3223f4e8..41665139b06cfe2cdd71187dbf66dba9ac34f17a 100644 --- a/src/MNH/relaxdef.f90 +++ b/src/MNH/relaxdef.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- ! #################### MODULE MODI_RELAXDEF ! #################### @@ -227,6 +228,7 @@ END MODULE MODI_RELAXDEF !! V. Masson, C.Lac 09/2010 reproducibility : replacement of SUM3D_ll to SUMALL_ll !! and of PZZ(IIB,IJB,IKE+1) to PZHAT(IKE+1) !! J.Escobar 30/09/2010 introduction of CPP MACRO(REAL16) for reproductibility test +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -505,12 +507,12 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & !* 4.1 some settings ! IF ( KRIMX /= 0 ) THEN - ZXDEPTH = (1.0/FLOAT(KRIMX))**2 + ZXDEPTH = (1.0/REAL(KRIMX))**2 ELSE ZXDEPTH = 0. END IF IF ( KRIMY /= 0 ) THEN - ZYDEPTH = (1.0/FLOAT(KRIMY))**2 + ZYDEPTH = (1.0/REAL(KRIMY))**2 ELSE ZYDEPTH = 0. END IF @@ -575,14 +577,14 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & ! DO JJ=IJBINT,IJSENDINT ! in global landmarks - ZYUPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll) + 0.5)**2 - ZYVPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll) )**2 - ZYWPOS = (FLOAT(JJ+IORY-1 - IJSEND_ll) + 0.5)**2 + ZYUPOS = (REAL(JJ+IORY-1 - IJSEND_ll) + 0.5)**2 + ZYVPOS = (REAL(JJ+IORY-1 - IJSEND_ll) )**2 + ZYWPOS = (REAL(JJ+IORY-1 - IJSEND_ll) + 0.5)**2 ! DO JI=IIBINT,IIWENDINT-1 - ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH)) PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX) @@ -606,9 +608,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & END DO ! DO JI=IIEENDINT,IIEINT - ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH)) PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX) @@ -642,14 +644,14 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & ! DO JJ=IJNENDINT,IJEINT ! in global landmarks - ZYUPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll) + 0.5)**2 - ZYVPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll) )**2 - ZYWPOS = (FLOAT(JJ+IORY-1 - IJNEND_ll) + 0.5)**2 + ZYUPOS = (REAL(JJ+IORY-1 - IJNEND_ll) + 0.5)**2 + ZYVPOS = (REAL(JJ+IORY-1 - IJNEND_ll) )**2 + ZYWPOS = (REAL(JJ+IORY-1 - IJNEND_ll) + 0.5)**2 ! DO JI=IIBINT,IIWENDINT-1 - ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH)) PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX) @@ -674,9 +676,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & END DO ! DO JI=IIEENDINT,IIEINT - ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH+ZYUPOS*ZYDEPTH)) PKURELAX(JI,JJ) = PRIMKMAX*RELAX(ZPOS,IKRIMAX) @@ -701,9 +703,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & ! intersection limits : IIBINT,IIWENDINT along x and IJSENDINT,IJNENDINT along y ! DO JI=IIBINT,IIWENDINT - ZXUPOS = (FLOAT(JI+IORX-1 - IIWEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIWEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIWEND_ll)+ 0.5)**2 DO JJ=IJSENDINT,IJNENDINT ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH)) @@ -727,9 +729,9 @@ IF ( ANY(GHORELAXR) .OR. ANY(GHORELAXSV) .OR. ANY(OHORELAX_SV) & ! intersection limits : IIENDINT,IIEINT along x and IJSENDINT,IJNENDINT along y ! DO JI=IIEENDINT,IIEINT - ZXUPOS = (FLOAT(JI+IORX-1 - IIEEND_ll) )**2 - ZXVPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 - ZXWPOS = (FLOAT(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXUPOS = (REAL(JI+IORX-1 - IIEEND_ll) )**2 + ZXVPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 + ZXWPOS = (REAL(JI+IORX-1 - IIEEND_ll)+ 0.5)**2 DO JJ=IJSENDINT,IJNENDINT ! ZPOS = MIN(1.,SQRT(ZXUPOS*ZXDEPTH)) diff --git a/src/MNH/removal_vortex.f90 b/src/MNH/removal_vortex.f90 index 5fd49d3819c793db198d6e027e65e94c88f1ed71..5d188015a88b1a1a75ee326c4f61293164ee2725 100644 --- a/src/MNH/removal_vortex.f90 +++ b/src/MNH/removal_vortex.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 2001-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2001-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. !----------------------------------------------------------------- ! ########################## @@ -68,6 +68,7 @@ END MODULE MODI_REMOVAL_VORTEX !! ------------- !! Original 01/12/01 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -226,8 +227,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A)')'localizing the position of the fix given' CALL SM_XYHAT(XLATORI,XLONORI,XLATGUESS,XLONGUESS,ZXHAT,ZYHAT) II=MAX(MIN(COUNT(XXHAT(:)<ZXHAT),IIU-1),1) IJ=MAX(MIN(COUNT(XYHAT(:)<ZYHAT),IJU-1),1) -ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II) -ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ) +ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II) +ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ) IIMIN = INT(ZI) IJMIN = INT(ZJ) IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH grid: I= ',IIMIN,' J= ',IJMIN diff --git a/src/MNH/resolved_elecn.f90 b/src/MNH/resolved_elecn.f90 index 534ba4b34400aa6318c9ea8a2481d2e0742b4689..71ceb8c62dcef75d0bafe62c656747b82f5d598b 100644 --- a/src/MNH/resolved_elecn.f90 +++ b/src/MNH/resolved_elecn.f90 @@ -170,7 +170,8 @@ END MODULE MODI_RESOLVED_ELEC_n ! P. Wautelet 10/01/2019: use NEWUNIT argument of OPEN ! P. Wautelet 22/01/2019: use standard FLUSH statement instead of non standard intrinsics ! P. Wautelet 14/03/2019: bugfix: correct management of files -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -953,7 +954,7 @@ IF (LFLASH_GEOM .AND. LLMA) THEN TDTLMA%TIME = TDTLMA%TIME - XDTLMA WRITE (YNAME,FMT='(3I2.2,A1,3I2.2,A1,I4.4)') & ABS(TDTCUR%TDATE%YEAR-2000),TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY,'_', & - INT(TDTLMA%TIME/3600.),INT(FLOAT(MOD(INT(TDTLMA%TIME),3600))/60.), & + INT(TDTLMA%TIME/3600.),INT(REAL(MOD(INT(TDTLMA%TIME),3600))/60.), & MOD(INT(TDTLMA%TIME),60), '_', INT(XDTLMA) TDTLMA%TIME = MOD(TDTLMA%TIME + XDTLMA,86400.) CLMA_FILE = CEXP//"_SIMLMA_"//YNAME//".dat" diff --git a/src/MNH/retrieve2_nest_infon.f90 b/src/MNH/retrieve2_nest_infon.f90 index b974932530682ad0186d3465847a2dbb0b6597e9..f0a138d1ab356feff300e71e446d891269358052 100644 --- a/src/MNH/retrieve2_nest_infon.f90 +++ b/src/MNH/retrieve2_nest_infon.f90 @@ -90,7 +90,9 @@ END MODULE MODI_RETRIEVE2_NEST_INFO_n !! M.Faivre 2014 !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! J.Escobar : 01/06/2016 : Bug in type of ZBUF INTEGER => REAL & use MNHREAL_MPI for r4/R8 compatibility -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -106,7 +108,7 @@ USE MODD_MPIF USE MODD_PARAMETERS USE MODD_PGDDIM USE MODD_PGDGRID -use modd_precision, only: MNHREAL_MPI +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_STRUCTURE_ll, ONLY: ZONE_ll USE MODD_VAR_ll, ONLY: YSPLITTING, NMNH_COMM_WORLD ! @@ -345,8 +347,8 @@ ENDIF IOR_C(1:1)=0 IOR_C(2:2)=0 ENDIF - CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) - CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) ! !* 1.4 modify coordinates ! so that XXHAT(JPEXT+1) and XYHAT(JPEXT+1) correspond to the coordinates of the closest father grid points east (resp. north) of XXHAT(JPEXT+1) and XYHAT(JPEXT+1) @@ -640,8 +642,8 @@ ELSE IXSUP1(:)=0 IYSUP1(:)=0 ENDIF -CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) IXSUP1(1) = KXSIZE IYSUP1(1) = KYSIZE ! @@ -651,8 +653,8 @@ KYSIZE=IYSUP1(1)-(KYOR_C_ll+JPHEXT)+1 ! ! some more tests ! -CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll) IIUGLB = IIUGLB + 2*JPHEXT IJUGLB = IJUGLB + 2*JPHEXT IF ( KXOR_C_ll<1 .OR. KXOR_C_ll+KXSIZE+2*JPHEXT>IIUGLB & @@ -703,13 +705,13 @@ ZPGDYHAT(0) = 2.* XPGDYHAT(1) - XPGDYHAT(2) #if 0 DO JI=1,NIMAX+2*JPHEXT JIBOX=(JI+KDXRATIO-1-JPHEXT)/KDXRATIO + KXOR_C_ll - ZCOEF= FLOAT(MOD(JI+KDXRATIO-1-JPHEXT,KDXRATIO))/FLOAT(KDXRATIO) + ZCOEF= REAL(MOD(JI+KDXRATIO-1-JPHEXT,KDXRATIO))/REAL(KDXRATIO) ZXHAT(JI)=(1.-ZCOEF)*ZPGDXHAT(JIBOX+JPHEXT-1)+ZCOEF*ZPGDXHAT(JIBOX+JPHEXT) ! +1 END DO ! DO JJ=1,NJMAX+2*JPHEXT JJBOX=(JJ+KDYRATIO-1-JPHEXT)/KDYRATIO + KYOR_C_ll - ZCOEF= FLOAT(MOD(JJ+KDYRATIO-1-JPHEXT,KDYRATIO))/FLOAT(KDYRATIO) + ZCOEF= REAL(MOD(JJ+KDYRATIO-1-JPHEXT,KDYRATIO))/REAL(KDYRATIO) ZYHAT(JJ)=(1.-ZCOEF)*ZPGDYHAT(JJBOX+JPHEXT-1)+ZCOEF*ZPGDYHAT(JJBOX+JPHEXT) ! +1 END DO ! diff --git a/src/MNH/rrcolss.f90 b/src/MNH/rrcolss.f90 index ab89cc99e4c9b81ddbfa5ab1e7c92a0108811471..527165111ecf4d225ce5ec0117c09846d2116b9e 100644 --- a/src/MNH/rrcolss.f90 +++ b/src/MNH/rrcolss.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 init 2006/11/23 10:39:56 -!----------------------------------------------------------------- ! ################### MODULE MODI_RRCOLSS ! ################### @@ -121,7 +116,8 @@ END INTERFACE !! ------------- !! Original 8/11/95 !! -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! ! @@ -221,8 +217,8 @@ ZCST1 = (3.0/XPI)/XRHOLW ! !* 1.1 Compute the growth rate of the slope factors LAMBDA ! -ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/FLOAT(SIZE(PRRCOLSS(:,:),1)-1) ) -ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/FLOAT(SIZE(PRRCOLSS(:,:),2)-1) ) +ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PRRCOLSS(:,:),1)-1) ) +ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PRRCOLSS(:,:),2)-1) ) ! !* 1.2 Scan the slope factors LAMBDAX and LAMBDAZ ! @@ -231,7 +227,7 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1) ! !* 1.3 Compute the diameter steps ! - ZDDS = PDINFTY / (FLOAT(KND) * ZLBDAS) + ZDDS = PDINFTY / (REAL(KND) * ZLBDAS) DO JLBDAR = 1,SIZE(PRRCOLSS(:,:),2) ZLBDAR = PLBDARMIN * ZDLBDAR ** (JLBDAR-1) ! @@ -242,16 +238,16 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1) ! !* 1.5 Compute the diameter steps ! - ZDDSCALR = PDINFTY / (FLOAT(KND) * ZLBDAR) + ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR) ! !* 1.6 Scan over the diameters DS and DR ! DO JDS = 1,KND-1 - ZDS = ZDDS * FLOAT(JDS) + ZDS = ZDDS * REAL(JDS) ZSCALR = 0.0 ZCOLLR = 0.0 DO JDR = 1,KND-1 - ZDR = ZDDSCALR * FLOAT(JDR) + ZDR = ZDDSCALR * REAL(JDR) ! !* 1.7 Compute the normalization factor by integration over the ! dimensional spectrum of rain @@ -273,13 +269,13 @@ DO JLBDAS = 1,SIZE(PRRCOLSS(:,:),1) ! corresponding to a maximal density of the aggregates of XRHOLW IF( ZDRMAX >= 0.5*ZDDSCALR ) THEN INR = CEILING( ZDRMAX/ZDDSCALR ) - ZDDCOLLR = ZDRMAX / FLOAT(INR) + ZDDCOLLR = ZDRMAX / REAL(INR) IF (INR>=KND ) THEN INR = KND ZDDCOLLR = ZDDSCALR END IF DO JDR = 1,INR-1 - ZDR = ZDDCOLLR * FLOAT(JDR) + ZDR = ZDDCOLLR * REAL(JDR) ZCOLLR = ZCOLLR + (ZDS+ZDR)**2 * ZDR**PEXMASSR & * PESR * ABS(PFALLS*ZDS**PEXFALLS-PFALLR*ZDR**PEXFALLR) & * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR) diff --git a/src/MNH/rscolrg.f90 b/src/MNH/rscolrg.f90 index 72d3c86572092729b5572cb31ebd331f89911e44..caa868e91d39cbe12010bfa2c265ffe35304dba4 100644 --- a/src/MNH/rscolrg.f90 +++ b/src/MNH/rscolrg.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 init 2006/11/23 10:43:02 -!----------------------------------------------------------------- ! ################### MODULE MODI_RSCOLRG ! ################### @@ -121,7 +116,8 @@ END INTERFACE !! ------------- !! Original 8/11/95 !! -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! ! @@ -218,8 +214,8 @@ ZCST1 = (3.0/XPI)/XRHOLW ! !* 1.1 Compute the growth rate of the slope factors LAMBDA ! -ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/FLOAT(SIZE(PRSCOLRG(:,:),1)-1) ) -ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/FLOAT(SIZE(PRSCOLRG(:,:),2)-1) ) +ZDLBDAR = EXP( LOG(PLBDARMAX/PLBDARMIN)/REAL(SIZE(PRSCOLRG(:,:),1)-1) ) +ZDLBDAS = EXP( LOG(PLBDASMAX/PLBDASMIN)/REAL(SIZE(PRSCOLRG(:,:),2)-1) ) ! !* 1.2 Scan the slope factors LAMBDAX and LAMBDAZ ! @@ -229,7 +225,7 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1) ! !* 1.3 Compute the diameter steps ! - ZDDSCALR = PDINFTY / (FLOAT(KND) * ZLBDAR) + ZDDSCALR = PDINFTY / (REAL(KND) * ZLBDAR) DO JLBDAS = 1,SIZE(PRSCOLRG(:,:),2) ZLBDAS = PLBDASMIN * ZDLBDAS ** (JLBDAS-1) ! @@ -240,16 +236,16 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1) ! !* 1.5 Compute the diameter steps ! - ZDDS = PDINFTY / (FLOAT(KND) * ZLBDAS) + ZDDS = PDINFTY / (REAL(KND) * ZLBDAS) ! !* 1.6 Scan over the diameters DS and DR ! DO JDS = 1,KND-1 - ZDS = ZDDS * FLOAT(JDS) + ZDS = ZDDS * REAL(JDS) ZSCALR = 0.0 ZCOLLR = 0.0 DO JDR = 1,KND-1 - ZDR = ZDDSCALR * FLOAT(JDR) + ZDR = ZDDSCALR * REAL(JDR) ! !* 1.7 Compute the normalization factor by integration over the ! dimensional spectrum of rain @@ -270,9 +266,9 @@ DO JLBDAR = 1,SIZE(PRSCOLRG(:,:),1) ! corresponding to a maximal density of the aggregates of XRHOLW IF( (ZDRMAX-ZDRMIN) >= 0.5*ZDDSCALR ) THEN INR = CEILING( (ZDRMAX-ZDRMIN)/ZDDSCALR ) - ZDDCOLLR = (ZDRMAX-ZDRMIN) / FLOAT(INR) + ZDDCOLLR = (ZDRMAX-ZDRMIN) / REAL(INR) DO JDR = 1,INR-1 - ZDR = ZDDCOLLR * FLOAT(JDR) + ZDRMIN + ZDR = ZDDCOLLR * REAL(JDR) + ZDRMIN ZCOLLR = ZCOLLR + (ZDS+ZDR)**2 & * GENERAL_GAMMA(PALPHAR,PNUR,ZLBDAR,ZDR) & * PESR * ABS(PFALLS*ZDS**PEXFALLS-PFALLR*ZDR**PEXFALLR) diff --git a/src/MNH/rzcolx.f90 b/src/MNH/rzcolx.f90 index e552f6cc86385ebc1ae0c87ab8d32e02f149ed4d..28658241cf1021a29de694cd5a99b85e9c3340d9 100644 --- a/src/MNH/rzcolx.f90 +++ b/src/MNH/rzcolx.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 init 2006/05/18 13:07:25 -!----------------------------------------------------------------- ! ################## MODULE MODI_RZCOLX ! ################## @@ -125,7 +120,8 @@ END INTERFACE !! ------------- !! Original 8/11/95 !! -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! ! @@ -210,8 +206,8 @@ REAL :: ZFUNC ! Ancillary function ! !* 1.1 Compute the growth rate of the slope factors LAMBDA ! -ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/FLOAT(SIZE(PRZCOLX(:,:),1)-1) ) -ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/FLOAT(SIZE(PRZCOLX(:,:),2)-1) ) +ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/REAL(SIZE(PRZCOLX(:,:),1)-1) ) +ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/REAL(SIZE(PRZCOLX(:,:),2)-1) ) ! !* 1.2 Scan the slope factors LAMBDAX and LAMBDAZ ! @@ -227,18 +223,18 @@ DO JLBDAX = 1,SIZE(PRZCOLX(:,:),1) ! !* 1.4 Compute the diameter steps ! - ZDDX = PDINFTY / (FLOAT(KND) * ZLBDAX) - ZDDZ = PDINFTY / (FLOAT(KND) * ZLBDAZ) + ZDDX = PDINFTY / (REAL(KND) * ZLBDAX) + ZDDZ = PDINFTY / (REAL(KND) * ZLBDAZ) ! !* 1.5 Scan over the diameters DX and DZ ! DO JDX = 1,KND-1 - ZDX = ZDDX * FLOAT(JDX) + ZDX = ZDDX * REAL(JDX) ! ZSCALZ = 0.0 ZCOLLZ = 0.0 DO JDZ = 1,KND-1 - ZDZ = ZDDZ * FLOAT(JDZ) + ZDZ = ZDDZ * REAL(JDZ) ! !* 1.6 Compute the normalization factor by integration over the ! dimensional spectrum of specy Z diff --git a/src/MNH/sedim_blowsnow.f90 b/src/MNH/sedim_blowsnow.f90 index 80edcfdb2309ebf845bc8db4e37f343939f59b40..521bf2059b3c39469bbdebb50e5eae9ddd06f7e7 100644 --- a/src/MNH/sedim_blowsnow.f90 +++ b/src/MNH/sedim_blowsnow.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2018-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. !----------------------------------------------------------------- ! ############################## @@ -58,8 +58,7 @@ END MODULE MODI_SEDIM_BLOWSNOW !! ------------- !! Original !! -!! -!! IMPLICIT ARGUMENTS +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function ! USE MODD_BLOWSNOW USE MODD_CSTS_BLOWSNOW @@ -150,11 +149,11 @@ ZHMIN=MINVAL(ZH(:,:,1:ILU)) ZVSMAX = 2. ISPLITA = 1 SPLIT : DO - ZT = PDTMONITOR / FLOAT(ISPLITA) + ZT = PDTMONITOR / REAL(ISPLITA) IF ( ZT * ZVSMAX / ZHMIN .LT. 1.) EXIT SPLIT ISPLITA = ISPLITA + 1 END DO SPLIT -ZTSPLITR = PDTMONITOR / FLOAT(ISPLITA) +ZTSPLITR = PDTMONITOR / REAL(ISPLITA) ZFLUXSED(:,:,:,:) = 0. ZFLUXMAX(:,:,:,:) = 0. diff --git a/src/MNH/sedim_dust.f90 b/src/MNH/sedim_dust.f90 index f2941c27de9a648e8e26c3f5258b921e4749c3b0..145939e1f3a17796398f5ddc29ccfcd0ffc95fdd 100644 --- a/src/MNH/sedim_dust.f90 +++ b/src/MNH/sedim_dust.f90 @@ -1,12 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- !! ############################## MODULE MODI_SEDIM_DUST !! ############################## @@ -55,7 +51,8 @@ END MODULE MODI_SEDIM_DUST !! MODIFICATIONS !! ------------- !! Original -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! ! Entry variables: ! ! PSVTS(INOUT) -Array of moments included in PSVTS @@ -193,7 +190,7 @@ DO JN=1,NMODE_DST*3 ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1 ISPLITA = MIN(20, ISPLITA) ! - ZTSPLITR = PDTMONITOR / FLOAT(ISPLITA) + ZTSPLITR = PDTMONITOR / REAL(ISPLITA) ! ZFLUXSED(:,:,ILU+1,JN) = 0. diff --git a/src/MNH/sedim_salt.f90 b/src/MNH/sedim_salt.f90 index 961b4822b5be083a309c5c708b9fc8487d614046..43e407a88308b2ce2a49928bb14d1cbd0aba0875 100644 --- a/src/MNH/sedim_salt.f90 +++ b/src/MNH/sedim_salt.f90 @@ -1,12 +1,8 @@ -!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!ORILAM_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier !ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence !ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !ORILAM_LIC for details. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- !! ############################## MODULE MODI_SEDIM_SALT !! ############################## @@ -56,6 +52,8 @@ END MODULE MODI_SEDIM_SALT !! ------------- !! Original !! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! ! Entry variables: ! ! PSVTS(INOUT) -Array of moments included in PSVTS @@ -192,7 +190,7 @@ DO JN=1,NMODE_SLT*3 ISPLITA = INT(ZVSMAX*PDTMONITOR/ZHMIN)+1 ISPLITA = MIN(20, ISPLITA) ! - ZTSPLITR = PDTMONITOR / FLOAT(ISPLITA) + ZTSPLITR = PDTMONITOR / REAL(ISPLITA) ! ZFLUXSED(:,:,ILU+1,JN) = 0. diff --git a/src/MNH/series_cloud_elec.f90 b/src/MNH/series_cloud_elec.f90 index 6bd26c192d27311fc15960e005344dce7e9e7c62..48f463e9955a65a5758880341fc0f8cc06977d14 100644 --- a/src/MNH/series_cloud_elec.f90 +++ b/src/MNH/series_cloud_elec.f90 @@ -81,7 +81,8 @@ END MODULE MODI_SERIES_CLOUD_ELEC !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! 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 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -462,7 +463,7 @@ CALL SUM_ELEC_ll(ZICE_MASS) CALL SUM_ELEC_ll(ICOUNT) ! IF (ICOUNT .GT. 0) THEN - ZIWP = ZIWP + ZICE_MASS / (FLOAT(ICOUNT) * XDXHATM * XDYHATM) + ZIWP = ZIWP + ZICE_MASS / (REAL(ICOUNT) * XDXHATM * XDYHATM) END IF ! ! @@ -546,25 +547,25 @@ IF (JCOUNT == JCOUNT_STOP) THEN ILU = TPFILE_SERIES_CLOUD_ELEC%NLU WRITE (ILU, FMT='(I6,19(E12.4))') & INT(KTCOUNT*PTSTEP), & ! time - ZCTH_REF/FLOAT(JCOUNT), & ! cloud top height from Z - ZCTH_MR/FLOAT(JCOUNT), & ! cloud top height from m.r. - ZDBZMAX/FLOAT(JCOUNT), & ! maximum radar reflectivity - ZWMAX/FLOAT(JCOUNT), & ! maximum vertical velocity - ZVOL_UP5/FLOAT(JCOUNT), & ! updraft volume for W > 5 m/s - ZVOL_UP10/FLOAT(JCOUNT), & ! updraft volume for W > 10 m/s - ZMASS_C/FLOAT(JCOUNT), & ! cloud droplets mass - ZMASS_R/FLOAT(JCOUNT), & ! rain mass - ZMASS_I/FLOAT(JCOUNT), & ! ice crystal mass - ZMASS_S/FLOAT(JCOUNT), & ! snow mass - ZMASS_G/FLOAT(JCOUNT), & ! graupel mass - ZMASS_ICE_P/FLOAT(JCOUNT), & ! precipitation ice mass - ZFLUX_PROD/FLOAT(JCOUNT), & ! ice mass flux product - ZFLUX_PRECIP/FLOAT(JCOUNT), & ! precipitation ice mass flux - ZFLUX_NPRECIP/FLOAT(JCOUNT), & ! non-precipitation ice mass flux - ZIWP/FLOAT(JCOUNT), & ! ice water path - ZCLD_VOL/FLOAT(JCOUNT), & ! cloud volume - ZINPRR/FLOAT(JCOUNT), & ! Rain instant precip - ZMAX_INPRR/FLOAT(JCOUNT) ! maximum rain instant. precip. + ZCTH_REF/REAL(JCOUNT), & ! cloud top height from Z + ZCTH_MR/REAL(JCOUNT), & ! cloud top height from m.r. + ZDBZMAX/REAL(JCOUNT), & ! maximum radar reflectivity + ZWMAX/REAL(JCOUNT), & ! maximum vertical velocity + ZVOL_UP5/REAL(JCOUNT), & ! updraft volume for W > 5 m/s + ZVOL_UP10/REAL(JCOUNT), & ! updraft volume for W > 10 m/s + ZMASS_C/REAL(JCOUNT), & ! cloud droplets mass + ZMASS_R/REAL(JCOUNT), & ! rain mass + ZMASS_I/REAL(JCOUNT), & ! ice crystal mass + ZMASS_S/REAL(JCOUNT), & ! snow mass + ZMASS_G/REAL(JCOUNT), & ! graupel mass + ZMASS_ICE_P/REAL(JCOUNT), & ! precipitation ice mass + ZFLUX_PROD/REAL(JCOUNT), & ! ice mass flux product + ZFLUX_PRECIP/REAL(JCOUNT), & ! precipitation ice mass flux + ZFLUX_NPRECIP/REAL(JCOUNT), & ! non-precipitation ice mass flux + ZIWP/REAL(JCOUNT), & ! ice water path + ZCLD_VOL/REAL(JCOUNT), & ! cloud volume + ZINPRR/REAL(JCOUNT), & ! Rain instant precip + ZMAX_INPRR/REAL(JCOUNT) ! maximum rain instant. precip. FLUSH(UNIT=ILU) END IF ! diff --git a/src/MNH/set_bogus_vortex.f90 b/src/MNH/set_bogus_vortex.f90 index 4cc56703d6fb758eb51589cb2af19b4cf6197424..5f22d60d909fb9459dacea44fab9f59f7a3cce78 100644 --- a/src/MNH/set_bogus_vortex.f90 +++ b/src/MNH/set_bogus_vortex.f90 @@ -67,7 +67,8 @@ END MODULE MODI_SET_BOGUS_VORTEX !! and use modd_hurr_param for Holland's parameters !! 20/02/08 (D.Barbary) Change condition of ZRADBOGMAX !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -179,8 +180,8 @@ IF (NVERB>=5) WRITE(ILUOUT0,'(A)')'Localizing the position of the bogus vortex' CALL SM_XYHAT(XLATORI,XLONORI,XLATBOG,XLONBOG,ZXHAT,ZYHAT) II=MAX(MIN(COUNT(XXHAT(:)<ZXHAT),IIU-1),1) IJ=MAX(MIN(COUNT(XYHAT(:)<ZYHAT),IJU-1),1) -ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+FLOAT(II) -ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+FLOAT(IJ) +ZI=(ZXHAT-XXHAT(II))/(XXHAT(II+1)-XXHAT(II))+REAL(II) +ZJ=(ZYHAT-XYHAT(IJ))/(XYHAT(IJ+1)-XYHAT(IJ))+REAL(IJ) IIBOG = INT(ZI) IJBOG = INT(ZJ) IF (NVERB>=5) WRITE(ILUOUT0,'(A,I3,A,I3)')' equivalent indexes in the Meso-NH grid: I= ',IIBOG,' J= ',IJBOG diff --git a/src/MNH/set_geosbal.f90 b/src/MNH/set_geosbal.f90 index 10287c546607fc73c1514b27bea0e810ece3f539..ac57ba40c6f88f310f314a0812194805aa23f73e 100644 --- a/src/MNH/set_geosbal.f90 +++ b/src/MNH/set_geosbal.f90 @@ -244,6 +244,7 @@ END MODULE MODI_SET_GEOSBAL !! crée à partir de l'ancienne routine set_mass.f90 en prenant la partie !! concernant la balance geostrophique uniquement !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -430,7 +431,7 @@ ZTHV3D(:,:,:) = SPREAD(SPREAD(PTHVM(:),1,IIU),2,IJU) ! initialize with ! compute the anelastic reference state when the geostrophic equilibrium is ! taken into account XTHVREFZ(:)= SUM2D_ll(ZTHV3D,1,2,IINFO_ll,1,1,1,IIU_ll,IJU_ll,IKU) & - /FLOAT(IIU_ll*IJU_ll) + /REAL(IIU_ll*IJU_ll) END IF ! !* 3.1 Integration from I=ILOC to I=IIU diff --git a/src/MNH/set_mass.f90 b/src/MNH/set_mass.f90 index e66add53264a14cdb3864464cddbbe3fb2d041a9..b886c5c22694297077bd0e1201dbdfd9ed99f8cd 100644 --- a/src/MNH/set_mass.f90 +++ b/src/MNH/set_mass.f90 @@ -118,7 +118,8 @@ SUBROUTINE SET_MASS(TPFILE,OPROFILE_IN_PROC, PZFLUX_PROFILE, !! M.Moge 08/2015 add UPDATE_HALO_ll on XTHT, ZTHV3D, XRT(:,:,1,:) after computation !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- !! ! use des modules @@ -284,7 +285,7 @@ ZPMASS_MX(:,:,:)=XP00*(ZHEXNMASS_MX(:,:,:))**(XCPD/XRD) ZRHOD_MX(:,:,:)=ZPMASS_MX(:,:,:)/(ZPMASS_MX(:,:,:)/XP00)**(XRD/XCPD) & /(XRD*ZTHV3D_MX(:,:,:)*(1.+WATER_SUM(ZMR3D_MX(:,:,:,:)))) -XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT(NIMAX_ll*NJMAX_ll) +XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/REAL(NIMAX_ll*NJMAX_ll) !------------------------------ @@ -521,7 +522,7 @@ ELSE CALL COMPUTE_EXNER_FROM_GROUND(ZTHVREF3D,PZFLUX_MX,& ZEXNSURF2D_MX,ZHEXNFLUX,ZHEXNMASS) - XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT(NIMAX_ll*NJMAX_ll) + XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX(IIB:IIE,IJB:IJE,IKE+1))/REAL(NIMAX_ll*NJMAX_ll) ZEXNTOP2D=ZHEXNFLUX(:,:,IKE+1) CALL COMPUTE_EXNER_FROM_TOP(ZTHVREF3D,XZZ,ZEXNTOP2D,ZHEXNFLUX,ZHEXNMASS) diff --git a/src/MNH/set_perturb.f90 b/src/MNH/set_perturb.f90 index 40906e759cfeef7c91e6800571c7435286ff96ce..ef30e87c56598b307c37c5061a9eff04d0071f3e 100644 --- a/src/MNH/set_perturb.f90 +++ b/src/MNH/set_perturb.f90 @@ -97,7 +97,8 @@ END MODULE MODI_SET_PERTURB !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! C.Lac, V.Masson 1/2018 : White noise in the LBC !! Q.Rodier 10/2018 : move allocate(ZWHITE) for NKWH>2 -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -432,7 +433,7 @@ SELECT CASE(CPERT_KIND) END DO DEALLOCATE(ZCX_ll,ZSX_ll,ZCY_ll,ZSY_ll) ! - ZVAR= SUM_DD_R2_ll( (ZWHITE(IIB:IIE,IJB:IJE))**2 )/FLOAT(NIMAX_ll*NJMAX_ll) + ZVAR= SUM_DD_R2_ll( (ZWHITE(IIB:IIE,IJB:IJE))**2 )/REAL(NIMAX_ll*NJMAX_ll) CALL MPPDB_CHECK2D(ZWHITE,"SET_PERTURB::ZWHITE",PRECISION) ZWHITE(:,:) = ZWHITE(:,:)/SQRT(ZVAR) ! @@ -537,9 +538,9 @@ SELECT CASE(CPERT_KIND) ! CASE('SH') ! Shock (Burger's Equation) ! - ZOMEGA = 2.0*XPI/FLOAT(IIE-IIB) + ZOMEGA = 2.0*XPI/REAL(IIE-IIB) DO JI = IIB, IIE - XUT(JI,:,:) = XUT(JI,:,:) + XAMPLIUV*SIN( ZOMEGA*FLOAT(JI-IIB) ) + XUT(JI,:,:) = XUT(JI,:,:) + XAMPLIUV*SIN( ZOMEGA*REAL(JI-IIB) ) END DO XVT(:,:,:) = 0.0 XWT(:,:,:) = 0.0 diff --git a/src/MNH/slow_terms.f90 b/src/MNH/slow_terms.f90 index b8a314e36b1ee4605c85886e42f6a745ec4a591f..3699b5af85b71d9d9c82ee26263c61e84a62f8c7 100644 --- a/src/MNH/slow_terms.f90 +++ b/src/MNH/slow_terms.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -!----------------------------------------------------------------- ! ###################### MODULE MODI_SLOW_TERMS ! ###################### @@ -154,6 +150,7 @@ END MODULE MODI_SLOW_TERMS !! 14/09/97 (V. Masson) removes low rr non-physical values !! 06/11/02 (V. Masson) update the budget calls !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -238,7 +235,7 @@ END DO ! !* 2.1 time splitting loop initialization ! -ZTSPLITR = PTSTEP / FLOAT(KSPLITR) ! Small time step +ZTSPLITR = PTSTEP / REAL(KSPLITR) ! Small time step ! ZW1(:,:,:) = PRRS(:,:,:) * PTSTEP ZW2(:,:,:) = 0. diff --git a/src/MNH/spawn_grid2.f90 b/src/MNH/spawn_grid2.f90 index 1a6e192263046c9860869d72f42ab84a1b25791c..15de26857beed2dd1fa0d811b2c82330722ecdd1 100644 --- a/src/MNH/spawn_grid2.f90 +++ b/src/MNH/spawn_grid2.f90 @@ -148,6 +148,7 @@ END MODULE MODI_SPAWN_GRID2 !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! J.Escobar 05/03/2018 : bypass gridnesting special case KD(X/Y)RATIO == 1 not parallelized +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -359,7 +360,7 @@ PLEN2 = XLEN21 !on the west halo of the son model DO JI = 1,JPHEXT DO JEPSX=1,KDXRATIO - ZPOND2 = FLOAT(KDXRATIO-JEPSX)/FLOAT(KDXRATIO) + ZPOND2 = REAL(KDXRATIO-JEPSX)/REAL(KDXRATIO) ZPOND1 = 1.-ZPOND2 IF( JPHEXT+1-(JI-1)*KDXRATIO-JEPSX > 0 ) THEN PXHAT(JPHEXT+1-(JI-1)*KDXRATIO-JEPSX) = ZPOND1*ZXHAT_EXTENDED_C(JPHEXT+1-JI+1) & @@ -370,7 +371,7 @@ PLEN2 = XLEN21 !on the physical domain of the son model DO JI = 1,IDIMX_C-2*(JPHEXT+1) !the physical size of the son model in the father grid DO JEPSX = 1,KDXRATIO - ZPOND2 = FLOAT(JEPSX-1)/FLOAT(KDXRATIO) + ZPOND2 = REAL(JEPSX-1)/REAL(KDXRATIO) ZPOND1 = 1.-ZPOND2 PXHAT(JPHEXT+JEPSX+(JI-1)*KDXRATIO) = ZPOND1*ZXHAT_EXTENDED_C(JI+IIB_C) & + ZPOND2*ZXHAT_EXTENDED_C(JI+IIB_C+1) @@ -379,7 +380,7 @@ PLEN2 = XLEN21 !on the east halo of the son model DO JI = 1,JPHEXT DO JEPSX=1,KDXRATIO - ZPOND1 = FLOAT(KDXRATIO-JEPSX+1)/FLOAT(KDXRATIO) + ZPOND1 = REAL(KDXRATIO-JEPSX+1)/REAL(KDXRATIO) ZPOND2 = 1.-ZPOND1 IF( SIZE(PXHAT)-JPHEXT+(JI-1)*KDXRATIO+JEPSX <= SIZE(PXHAT) ) THEN PXHAT(SIZE(PXHAT)-JPHEXT+(JI-1)*KDXRATIO+JEPSX) = ZPOND1*ZXHAT_EXTENDED_C(IDIMX_C-JPHEXT+JI-1) & @@ -417,7 +418,7 @@ PLEN2 = XLEN21 !on the south halo of the son model DO JJ = 1,JPHEXT DO JEPSY=1,KDYRATIO - ZPOND2 = FLOAT(KDXRATIO-JEPSY)/FLOAT(KDYRATIO) + ZPOND2 = REAL(KDXRATIO-JEPSY)/REAL(KDYRATIO) ZPOND1 = 1.-ZPOND2 IF( JPHEXT+1-(JJ-1)*KDYRATIO-JEPSY > 0 ) THEN PYHAT(JPHEXT+1-(JJ-1)*KDYRATIO-JEPSY) = ZPOND1*ZYHAT_EXTENDED_C(JPHEXT+1-JJ+1) & @@ -428,7 +429,7 @@ PLEN2 = XLEN21 !on the physical domain of the son model DO JJ = 1,IDIMY_C-2*(JPHEXT+1) !the physical size of the son model in the father grid DO JEPSY = 1,KDYRATIO - ZPOND2 = FLOAT(JEPSY-1)/FLOAT(KDYRATIO) + ZPOND2 = REAL(JEPSY-1)/REAL(KDYRATIO) ZPOND1 = 1.-ZPOND2 PYHAT(JPHEXT+JEPSY+(JJ-1)*KDYRATIO) = ZPOND1*ZYHAT_EXTENDED_C(JJ+JPHEXT+1) & + ZPOND2*ZYHAT_EXTENDED_C(JJ+JPHEXT+1+1) @@ -437,7 +438,7 @@ PLEN2 = XLEN21 !on the north halo of the son model DO JJ = 1,JPHEXT DO JEPSY=1,KDYRATIO - ZPOND1 = FLOAT(KDYRATIO-JEPSY+1)/FLOAT(KDYRATIO) + ZPOND1 = REAL(KDYRATIO-JEPSY+1)/REAL(KDYRATIO) ZPOND2 = 1.-ZPOND1 IF( SIZE(PYHAT)-JPHEXT+(JJ-1)*KDYRATIO+JEPSY <= SIZE(PYHAT) ) THEN PYHAT(SIZE(PYHAT)-JPHEXT+(JJ-1)*KDYRATIO+JEPSY) = ZPOND1*ZYHAT_EXTENDED_C(IDIMY_C-JPHEXT+JJ-1) & @@ -454,7 +455,7 @@ PLEN2 = XLEN21 !!$ ZXHAT_EXTENDED(1:IXSIZE1)=XXHAT1(:) !!$ ZXHAT_EXTENDED(IXSIZE1+1)=2.*XXHAT1(IXSIZE1)-XXHAT1(IXSIZE1-1) !!$ DO JEPSX = 1,KDXRATIO -!!$ ZPOND2 = FLOAT(JEPSX-1)/FLOAT(KDXRATIO) +!!$ ZPOND2 = REAL(JEPSX-1)/REAL(KDXRATIO) !!$ ZPOND1 = 1.-ZPOND2 !!$ DO JI = KXOR,KXEND !!$ IIS = IIB+JEPSX-1+(JI-KXOR-JPHEXT)*KDXRATIO @@ -470,7 +471,7 @@ PLEN2 = XLEN21 !!$ ZYHAT_EXTENDED(1:IYSIZE1)=XYHAT1(:) !!$ ZYHAT_EXTENDED(IYSIZE1+1)=2.*XYHAT1(IYSIZE1)-XYHAT1(IYSIZE1-1) !!$ DO JEPSY = 1,KDYRATIO -!!$ ZPOND2 = FLOAT(JEPSY-1)/FLOAT(KDYRATIO) +!!$ ZPOND2 = REAL(JEPSY-1)/REAL(KDYRATIO) !!$ ZPOND1 = 1.-ZPOND2 !!$ DO JJ = KYOR,KYEND !!$ IJS = IJB+JEPSY-1+(JJ-KYOR-JPHEXT)*KDYRATIO diff --git a/src/MNH/sum_on_all_procs_mnh.f90 b/src/MNH/sum_on_all_procs_mnh.f90 index d4a56c1ea0015fd0c5f22b975d0fe304c7aa8a4d..2f053f3446da53230e5e89fd260c68a0f5a0a68d 100644 --- a/src/MNH/sum_on_all_procs_mnh.f90 +++ b/src/MNH/sum_on_all_procs_mnh.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. +!----------------------------------------------------------------- ! ######### SUBROUTINE SUM_ON_ALL_PROCS_MNH(KSIZE,KIN,KOUT) ! ####################################################### @@ -33,6 +34,7 @@ !! MODIFICATIONS !! ------------- !! Original 07/2011 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -72,7 +74,7 @@ ZIN = 0. DO JJ=1,NJMAX DO JI=1,NIMAX IINDEX = JI + NHALO + (JJ-1+NHALO) * (NIMAX+2*NHALO) - ZIN = ZIN + FLOAT(KIN(IINDEX)) + ZIN = ZIN + REAL(KIN(IINDEX)) END DO END DO ! diff --git a/src/MNH/sum_on_all_procs_mnh_hal.f90 b/src/MNH/sum_on_all_procs_mnh_hal.f90 index 982081140a0954fc85c36382fb3f17779375e27b..6e85cd6b5d96411a2c70c42b0be9d9431783f835 100644 --- a/src/MNH/sum_on_all_procs_mnh_hal.f90 +++ b/src/MNH/sum_on_all_procs_mnh_hal.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2011-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. +!----------------------------------------------------------------- ! ######### SUBROUTINE SUM_ON_ALL_PROCS_MNH_HAL(KSIZE,KIN,KOUT) ! ####################################################### @@ -33,6 +34,7 @@ !! MODIFICATIONS !! ------------- !! Original 07/2011 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -72,7 +74,7 @@ ZIN = 0. DO JJ=1,NJMAX+2*NHALO DO JI=1,NIMAX+2*NHALO IINDEX = JI + (JJ-1) * (NIMAX+2*NHALO) - ZIN = ZIN + FLOAT(KIN(IINDEX)) + ZIN = ZIN + REAL(KIN(IINDEX)) END DO END DO ! diff --git a/src/MNH/ver_interp_to_mixed_grid.f90 b/src/MNH/ver_interp_to_mixed_grid.f90 index dd63ee4930a93e915281f554d08de0426983dcd1..1b2d4d6a0fb5905bb397b94dfcec75e811a99c00 100644 --- a/src/MNH/ver_interp_to_mixed_grid.f90 +++ b/src/MNH/ver_interp_to_mixed_grid.f90 @@ -161,6 +161,7 @@ END MODULE MODI_VER_INTERP_TO_MIXED_GRID !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 22/02/2019: replace Hollerith edit descriptor (deleted from Fortran 95 standard) +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -408,12 +409,12 @@ IF (HFILE=='ATM ') THEN !* 4. COMPUTATION OF THE REFERENCE STATE TOP EXNER FUNCTION ! ----------------------------------------------------- ! -!!$ XEXNTOP=SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/FLOAT((IIE-IIB+1)*(IJE-IJB+1)) +!!$ XEXNTOP=SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1))/REAL((IIE-IIB+1)*(IJE-IJB+1)) !JUAN REALZ !!! XEXNTOP = SUM(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1)) !20131028 in Mymodif --> 20131129 in MNHorig XEXNTOP=SUM_DD_R2_ll(ZHEXNFLUX_MX(IIB:IIE,IJB:IJE,IKE+1)) -ZCOUNT = FLOAT((IIE-IIB+1)*(IJE-IJB+1)) +ZCOUNT = REAL((IIE-IIB+1)*(IJE-IJB+1)) !$20140227 disable reduce no xexntop !! !$ CALL REDUCESUM_ll(XEXNTOP,IINFO_ll) CALL REDUCESUM_ll(ZCOUNT,IINFO_ll) diff --git a/src/MNH/vqzcolx.f90 b/src/MNH/vqzcolx.f90 index 246698aa65548956993a7c1e8c0b1592e6c87fd0..dc5c3e759c92e69a5c759c7df9c725eade80d720 100644 --- a/src/MNH/vqzcolx.f90 +++ b/src/MNH/vqzcolx.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for SCCS information -!----------------------------------------------------------------- -! %Z% Lib:%F%, Version:%I%, Date:%D%, Last modified:%E% -!----------------------------------------------------------------- ! ################### MODULE MODI_VQZCOLX ! ################### @@ -122,7 +118,8 @@ END MODULE MODI_VQZCOLX !! ------------- !! Original 8/11/95 !! -!! +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function +! !------------------------------------------------------------------------------- ! ! @@ -203,8 +200,8 @@ REAL :: ZFUNC ! Ancillary function ! !* 1.1 Compute the growth rate of the slope factors LAMBDA ! -ZDLBDAX = EXP( LOG(PLBDAXMAX / PLBDAXMIN) / FLOAT(SIZE(PRZCOLX(:,:),1) - 1) ) -ZDLBDAZ = EXP( LOG(PLBDAZMAX / PLBDAZMIN) / FLOAT(SIZE(PRZCOLX(:,:),2) - 1) ) +ZDLBDAX = EXP( LOG(PLBDAXMAX / PLBDAXMIN) / REAL(SIZE(PRZCOLX(:,:),1) - 1) ) +ZDLBDAZ = EXP( LOG(PLBDAZMAX / PLBDAZMIN) / REAL(SIZE(PRZCOLX(:,:),2) - 1) ) ! !* 1.2 Scan the slope factors LAMBDAX and LAMBDAZ ! @@ -220,18 +217,18 @@ DO JLBDAX = 1, SIZE(PRZCOLX(:,:),1) ! !* 1.4 Compute the diameter steps ! - ZDDX = PDINFTY / (FLOAT(KND) * ZLBDAX) - ZDDZ = PDINFTY / (FLOAT(KND) * ZLBDAZ) + ZDDX = PDINFTY / (REAL(KND) * ZLBDAX) + ZDDZ = PDINFTY / (REAL(KND) * ZLBDAZ) ! !* 1.5 Scan over the diameters DX and DZ ! DO JDX = 1, KND-1 - ZDX = ZDDX * FLOAT(JDX) + ZDX = ZDDX * REAL(JDX) ! ZSCALZ = 0.0 ZCOLLZ = 0.0 DO JDZ = 1, KND-1 - ZDZ = ZDDZ * FLOAT(JDZ) + ZDZ = ZDDZ * REAL(JDZ) ! !* 1.6 Compute the normalization factor by integration over the ! dimensional spectrum of specy Z diff --git a/src/MNH/xy_to_latlon.f90 b/src/MNH/xy_to_latlon.f90 index 49fa91ab68950f5d1e6ab3a900e503b078828fd4..6d3087710bd30150c94a681090cebdd2b1269ceb 100644 --- a/src/MNH/xy_to_latlon.f90 +++ b/src/MNH/xy_to_latlon.f90 @@ -55,6 +55,7 @@ !! + changes call to READ_HGRID !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !---------------------------------------------------------------------------- ! !* 0. DECLARATION @@ -158,8 +159,8 @@ DO ! II=MAX(MIN(INT(ZI),NPGDIMAX+2*JPHEXT-1),1) IJ=MAX(MIN(INT(ZJ),NPGDJMAX+2*JPHEXT-1),1) - ZXHAT=XPGDXHAT(II) + (ZI-FLOAT(II)) * ( XPGDXHAT(II+1) - XPGDXHAT(II) ) - ZYHAT=XPGDYHAT(IJ) + (ZJ-FLOAT(IJ)) * ( XPGDYHAT(IJ+1) - XPGDYHAT(IJ) ) + ZXHAT=XPGDXHAT(II) + (ZI-REAL(II)) * ( XPGDXHAT(II+1) - XPGDXHAT(II) ) + ZYHAT=XPGDYHAT(IJ) + (ZJ-REAL(IJ)) * ( XPGDYHAT(IJ+1) - XPGDYHAT(IJ) ) ! WRITE(*,*) 'x=', ZXHAT WRITE(*,*) 'y=', ZYHAT diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90 index 40f2b1c795934cd9bf7c22920fd03520900a4a60..b6751b5eaa29f58ca781b51bfac70ec70991f4bf 100644 --- a/src/MNH/zdiffusetup.f90 +++ b/src/MNH/zdiffusetup.f90 @@ -53,23 +53,24 @@ END MODULE MODI_ZDIFFUSETUP ! Modifications: ! J. Escobar 07/10/2015: remove print ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications ! !* 0. DECLARATIONS ! ------------ +USE MODD_ARGSLIST_ll, ONLY: LIST_ll, HALO2LIST_ll +USE MODD_CONF USE MODD_CST USE MODD_PARAMETERS -USE MODD_CONF -USE MODI_RELAX +use modd_precision, only: MNHINT_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD +! USE MODE_ll -USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD -USE MODI_SHUMAN -USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll +USE MODE_SUM_LL +USE MODE_TYPE_ZDIFFU ! +USE MODI_RELAX +USE MODI_SHUMAN ! -!JUAN -USE MODE_TYPE_ZDIFFU -USE MODE_SUM_LL -!JUAN IMPLICIT NONE ! !* 0.1 declarations of arguments @@ -219,7 +220,7 @@ IKMAX_HALO2 = MAX(PZDIFFU_HALO2%NZDI,PZDIFFU_HALO2%NZDJ) PZDIFFU_HALO2%NZDLB = MAXVAL(IKMAX_HALO2) ! Model level, above which a truly horizontal computation of diffusion ! is possible at all grid points !JUAN -CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR) +CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR) !print*,"zdiffusetup:: PZDIFFU_HALO2%NZDLB=",PZDIFFU_HALO2%NZDLB,KZDLB_ll PZDIFFU_HALO2%NZDLB = KZDLB_ll diff --git a/src/MNH/zsect.f90 b/src/MNH/zsect.f90 index 39367d92da6a136235863804795df29553c10344..80abddd4356024cb922872e2e4b47ff85eb6512b 100644 --- a/src/MNH/zsect.f90 +++ b/src/MNH/zsect.f90 @@ -1,12 +1,8 @@ -!MNH_LIC Copyright 1994-2014 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. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ $Date$ -!----------------------------------------------------------------- ! ################# MODULE MODI_ZSECT ! ################# @@ -63,6 +59,7 @@ END MODULE MODI_ZSECT !! Original 08/12/94 !! J. Escobar 24/03/2012 modif for reprod sum !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -145,7 +142,7 @@ ENDDO ! PHORSECT = SUM_DD_R2_ll(ZVARZSECT) ! mask included with 0.0 value - ZCOUNT = FLOAT(COUNT(GMASK)) + ZCOUNT = REAL(COUNT(GMASK)) CALL REDUCESUM_ll(ZCOUNT,IINFO_ll) IF (ZCOUNT > 0.0 ) THEN diff --git a/src/SURFEX/interpol_npts.F90 b/src/SURFEX/interpol_npts.F90 index 1cf360b69b234eae1c2ae8b35684b7c5e9589793..8f3d25e867dcf7d1228eabc9f75626622e820288 100644 --- a/src/SURFEX/interpol_npts.F90 +++ b/src/SURFEX/interpol_npts.F90 @@ -46,7 +46,8 @@ !! Original 03/2004 !! Modification !! B. Decharme 2014 scan all point case if gaussien grid or NHALO = 0 -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !---------------------------------------------------------------------------- ! !* 0. DECLARATION @@ -70,6 +71,8 @@ USE PARKIND1 ,ONLY : JPRB ! #ifdef SFX_MNH USE MODD_IO, ONLY : ISP, ISNPROC, NIO_RANK +use modd_mpif +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD USE MODE_GATHER_ll USE MODE_TOOLS_ll, ONLY : GET_GLOBALDIMS_ll @@ -80,7 +83,7 @@ USE MODD_IO_SURF_MNH, ONLY : NIU, NJU ! IMPLICIT NONE ! -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) INCLUDE "mpif.h" #endif ! @@ -206,8 +209,10 @@ ENDIF ! !...known by all tasks IF (NPROC>1) THEN -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) CALL MPI_BCAST(ISIZE_TOT,IDIM_FULL*KIND(ISIZE_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_BCAST(ISIZE_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI) #endif ENDIF ! @@ -289,10 +294,10 @@ IF (IOLD==2) THEN DEALLOCATE(ZCOORD_2D,ZCOORD_2D_ALL) ! IF (NPROC>1) THEN - CALL MPI_BCAST(INUM_TOT,IDIM_FULL*KIND(INUM_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI) - CALL MPI_BCAST(IINDEX_TOT,IDIM_FULL*KIND(IINDEX_TOT)/4,MPI_INTEGER,NPIO,NCOMM,INFOMPI) - CALL MPI_BCAST(ZX,IDIM_FULL*KIND(ZX)/4,MPI_REAL,NPIO,NCOMM,INFOMPI) - CALL MPI_BCAST(ZY,IDIM_FULL*KIND(ZY)/4,MPI_REAL,NPIO,NCOMM,INFOMPI) + CALL MPI_BCAST(INUM_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI) + CALL MPI_BCAST(IINDEX_TOT,IDIM_FULL,MNHINT_MPI,NPIO,NCOMM,INFOMPI) + CALL MPI_BCAST(ZX,IDIM_FULL,MNHREAL_MPI,NPIO,NCOMM,INFOMPI) + CALL MPI_BCAST(ZY,IDIM_FULL,MNHREAL_MPI,NPIO,NCOMM,INFOMPI) ENDIF ! #endif @@ -437,9 +442,11 @@ ALLOCATE(ISIZE(0:NPROC-1)) !numbers of points to interpolated are gathered IF (NPROC>1) THEN -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) CALL MPI_ALLGATHER(ICPT,KIND(ICPT)/4,MPI_INTEGER,& ISIZE,KIND(ISIZE)/4,MPI_INTEGER,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_ALLGATHER(ICPT,1,MNHINT_MPI,ISIZE,1,MNHINT_MPI,NCOMM,INFOMPI) #endif ELSE ISIZE(:) = ICPT @@ -474,12 +481,16 @@ ALLOCATE(ININD_ALL(MAXVAL(ISIZE),KNPTS,0:NPROC-1)) IF (NPROC>1) THEN !for each task DO JP=0,NPROC-1 -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) !inind_all receives from all tasks the points they need that are !located in it CALL MPI_GATHER(ININD0(:,:,JP),MAXVAL(ISIZE)*KNPTS*KIND(ININD0)/4,MPI_INTEGER,& ININD_ALL,MAXVAL(ISIZE)*KNPTS*KIND(ININD_ALL)/4,MPI_INTEGER,& JP,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_GATHER(ININD0(:,:,JP),MAXVAL(ISIZE)*KNPTS,MNHINT_MPI,& + ININD_ALL, MAXVAL(ISIZE)*KNPTS,MNHINT_MPI,& + JP,NCOMM,INFOMPI) #endif ENDDO ! @@ -514,9 +525,12 @@ DEALLOCATE(ININD_ALL) ALLOCATE(ZFIELD2(ICPT,KNPTS,SIZE(PFIELD,2),0:NPROC-1)) IF (NPROC>1) THEN DO JP=0,NPROC-1 -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) CALL MPI_GATHER(ZFIELD(1:ISIZE(JP),:,:,JP),SIZE(ZFIELD(1:ISIZE(JP),:,:,JP))*KIND(ZFIELD)/4,MPI_REAL,& ZFIELD2,ISIZE(JP)*KNPTS*SIZE(PFIELD,2)*KIND(ZFIELD2)/4,MPI_REAL,JP,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_GATHER(ZFIELD(1:ISIZE(JP),:,:,JP),SIZE(ZFIELD(1:ISIZE(JP),:,:,JP)),MNHREAL_MPI,& + ZFIELD2,ISIZE(JP)*KNPTS*SIZE(PFIELD,2),MNHREAL_MPI,JP,NCOMM,INFOMPI) #endif ENDDO ELSE diff --git a/src/SURFEX/make_lcover.F90 b/src/SURFEX/make_lcover.F90 index 32d01144b21e93409c23bb608fc63bf8661fc93e..7cced8572f1a879d4d63591ef6fbc70560dadd1c 100644 --- a/src/SURFEX/make_lcover.F90 +++ b/src/SURFEX/make_lcover.F90 @@ -33,7 +33,8 @@ !! ------------ !! !! Original 10/12/97 -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !! !---------------------------------------------------------------------------- ! @@ -47,12 +48,14 @@ USE PARKIND1 ,ONLY : JPRB ! #ifdef SFX_MNH USE MODD_IO, ONLY : ISP, ISNPROC, NIO_RANK +use modd_mpif +use modd_precision, only: MNHLOG_MPI USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD #endif ! IMPLICIT NONE ! -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) INCLUDE "mpif.h" #endif ! @@ -96,9 +99,12 @@ ALLOCATE(GCOVER_ALL(SIZE(OCOVER),0:NPROC-1)) ! ! IF (NPROC>1) THEN -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) CALL MPI_ALLGATHER(OCOVER,SIZE(OCOVER),MPI_LOGICAL,GCOVER_ALL,SIZE(OCOVER),& MPI_LOGICAL,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_ALLGATHER(OCOVER,SIZE(OCOVER),MNHLOG_MPI,GCOVER_ALL,SIZE(OCOVER),& + MNHLOG_MPI,NCOMM,INFOMPI) #endif ELSE GCOVER_ALL(:,0) = OCOVER(:) @@ -116,8 +122,10 @@ DEALLOCATE(GCOVER_ALL) ! ! IF (NPROC>1) THEN -#if defined(SFX_MPI) || defined(SFX_MNH) +#if defined(SFX_MPI) CALL MPI_BCAST(OCOVER,SIZE(OCOVER),MPI_LOGICAL,NPIO,NCOMM,INFOMPI) +#elif defined(SFX_MNH) + CALL MPI_BCAST(OCOVER,SIZE(OCOVER),MNHLOG_MPI,NPIO,NCOMM,INFOMPI) #endif ENDIF ! diff --git a/src/SURFEX/mode_gridtype_conf_proj.F90 b/src/SURFEX/mode_gridtype_conf_proj.F90 index 4e88934141e9499651e690231f105ef169a1cd4d..8b908913e824833cd1b94eec7f62becd3ab32033 100644 --- a/src/SURFEX/mode_gridtype_conf_proj.F90 +++ b/src/SURFEX/mode_gridtype_conf_proj.F90 @@ -1,4 +1,4 @@ -!SFX_LIC Copyright 2004-2018 CNRS, Meteo-France and Universite Paul Sabatier +!SFX_LIC Copyright 2004-2019 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. @@ -33,7 +33,8 @@ CONTAINS !! ------------- !! Original 01/2004 !! M.Moge 06/2015 broadcast the space step to all MPI processes (necessary for reproductibility) -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -42,7 +43,7 @@ CONTAINS USE MODD_SURF_PAR, ONLY : XUNDEF, NUNDEF #ifdef MNH_PARALLEL USE MODD_MPIF -use modd_precision, only: MNHREAL_MPI +use modd_precision, only: MNHINT_MPI, MNHREAL_MPI USE MODE_SPLITTINGZ_ll, ONLY : LINI_PARAZ USE MODE_TOOLS_ll, ONLY : GET_OR_ll USE MODD_VAR_ll, ONLY : NPROC, IP, NMNH_COMM_WORLD, YSPLITTING @@ -129,24 +130,24 @@ IF ( NPROC > 1 .AND. LINI_PARAZ) THEN IYOR = NUNDEF ENDIF ! get the processes with IL>0 with the westmost points - CALL MPI_ALLREDUCE(IXOR, IXORMIN, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IXOR, IXORMIN, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) IF ( IXOR == IXORMIN ) THEN IROOT = IP-1 ELSE IROOT = NPROC ENDIF - CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! Then this process broadcasts the space steps in X direction in order to have the same space steps on all processes CALL MPI_BCAST(PGRID_PAR(9), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) ! ! get the processes with IL>0 with the southmost points - CALL MPI_ALLREDUCE(IYOR, IYORMIN, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IYOR, IYORMIN, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) IF ( IYOR == IYORMIN ) THEN IROOT = IP-1 ELSE IROOT = NPROC ENDIF - CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! Then this process broadcasts the space steps in Y direction in order to have the same space steps on all processes CALL MPI_BCAST(PGRID_PAR(10), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) ENDIF diff --git a/src/SURFEX/read_lcover.F90 b/src/SURFEX/read_lcover.F90 index 0d60f0e6191727e652f2534e92e4a24d9c8c9b40..f9fb8e5144b7502648c6797456137ade4502735a 100644 --- a/src/SURFEX/read_lcover.F90 +++ b/src/SURFEX/read_lcover.F90 @@ -1,4 +1,4 @@ -!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!SFX_LIC Copyright 2008-2019 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. @@ -38,13 +38,16 @@ !! Original 10/2008 !! M. Moge 02/2015 parallelization for mésonh !! J. Pianezze 08/2016 replacement of MPI_COMM_WOLRD by NMNH_COMM_WORLD +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! #ifdef MNH_PARALLEL -USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD +use modd_mpif +use modd_precision, only: MNHLOG_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD #endif ! USE MODD_DATA_COVER_PAR, ONLY : JPCOVER @@ -57,11 +60,6 @@ USE PARKIND1 ,ONLY : JPRB ! IMPLICIT NONE ! -#ifdef MNH_PARALLEL -#ifndef NOMPI -INCLUDE "mpif.h" -#endif -#endif ! !* 0.1 Declarations of arguments ! ------------------------- @@ -104,11 +102,7 @@ OCOVER=.FALSE. OCOVER(:SIZE(GCOVER))=GCOVER(:) ! #ifdef MNH_PARALLEL -#ifndef NOMPI -CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER),MPI_LOGICAL, MPI_LOR, NMNH_COMM_WORLD, IINFO) -#else -CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER),MPI_LOGICAL, MPI_LOR, MPI_COMM_WORLD, IINFO) -#endif +CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER), MNHLOG_MPI, MPI_LOR, NMNH_COMM_WORLD, IINFO) #endif ! DEALLOCATE(GCOVER) diff --git a/src/SURFEX/write_lcover.F90 b/src/SURFEX/write_lcover.F90 index 32a1be568e9eb8aac8db7094671173300b7423fa..6881c143d5aae3be0bd3d56b81081c453a0cec4d 100644 --- a/src/SURFEX/write_lcover.F90 +++ b/src/SURFEX/write_lcover.F90 @@ -1,4 +1,4 @@ -!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!SFX_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. @@ -36,6 +36,7 @@ !! MODIFICATIONS !! ------------- !! J. Pianezze 08/2016 replacement of MPI_COMM_WOLRD by NMNH_COMM_WORLD +! P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications !! !------------------------------------------------------------------------------- ! @@ -43,7 +44,9 @@ ! ------------ ! #ifdef MNH_PARALLEL -USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD +use modd_mpif +use modd_precision, only: MNHLOG_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD #endif ! USE MODD_DATA_COVER_PAR, ONLY : JPCOVER @@ -55,11 +58,6 @@ USE PARKIND1 ,ONLY : JPRB ! IMPLICIT NONE ! -#ifdef MNH_PARALLEL -#ifndef NOMPI -INCLUDE "mpif.h" -#endif -#endif ! !* 0.1 Declarations of arguments ! ------------------------- @@ -83,11 +81,9 @@ INTEGER :: IINFO !* ascendant compatibility IF (LHOOK) CALL DR_HOOK('WRITE_LCOVER',0,ZHOOK_HANDLE) #ifdef MNH_PARALLEL -#ifndef NOMPI -CALL MPI_ALLREDUCE(OCOVER, GCOVER, SIZE(OCOVER),MPI_LOGICAL, MPI_LOR, NMNH_COMM_WORLD, IINFO) +CALL MPI_ALLREDUCE(OCOVER, GCOVER, SIZE(OCOVER), MNHLOG_MPI, MPI_LOR, NMNH_COMM_WORLD, IINFO) OCOVER(:)=GCOVER(:) #endif -#endif YRECFM='COVER_LIST' YCOMMENT='(LOGICAL LIST)' CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,OCOVER(:),IRESP,HCOMMENT=YCOMMENT,HDIR='-')