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/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 fb121f7e09ca9c26eaf10a47e253effd4b3d543a..3538f4b3e1530b693666d6c7602d8d5650134739 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -98,6 +98,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n ! 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 @@ -979,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 ! ! @@ -991,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 @@ -1062,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) - & @@ -1474,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 @@ -1954,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 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 5cff3a6ba63f53360ad6dffee4815b189b94a7c9..a4c0d17e1723f7146b4e06c94f9b25abc311d2b8 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 @@ -266,15 +268,15 @@ 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, & 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 @@ -324,15 +326,15 @@ 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, & 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/ice4_fast_rh.f90 b/src/MNH/ice4_fast_rh.f90 index e5b965eba53a7cb9230969cb9f639e5322c34be8..e590f79a61614332f6b8f9a3927d95710d3eff6f 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 @@ -214,15 +216,15 @@ 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, & 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 @@ -272,15 +274,15 @@ 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, & 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 @@ -332,15 +334,15 @@ 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, & 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(NWETLBDAR)-0.00001, & + ZVEC2(1:IGWET)=MAX(1.00001, MIN( REAL(NWETLBDAR)-0.00001, & XWETINTP1R*LOG(ZVEC2(1:IGWET))+XWETINTP2R)) 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 8fc279e94853a2bfff7342df9dc03a206b6f1f40..ca78eb9e1fb21c6814b3dc99c9de2e7f3352be9b 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 @@ -192,10 +194,10 @@ 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, & 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 @@ -299,15 +301,15 @@ 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, & 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/ice4_rsrimcg_old.f90 b/src/MNH/ice4_rsrimcg_old.f90 index 1f51bb30f82dd2b576bc64e38970ff1f8849263b..5d2471f7b5e02c05b3e912c77011874dc7d9dfbc 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 @@ -98,10 +100,10 @@ IF(.NOT. ODSOFT) 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) ) ! ! 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/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 f363d89e81b28494621b2245011f0671e444a5de..6c810ded2bf28df830a15b1dd68577973dd8fd99 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 @@ -2181,7 +2182,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,'=') ! @@ -2189,7 +2190,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 1829f8ca02c85b9718e63e4499fd344ec08f09f6..af8226a362b7e7e11b8125964ac14cb536d3699b 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 @@ -151,15 +152,15 @@ REAL, DIMENSION(size(PRHODREF),7) :: ZZW1 ! Work arrays ! 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 @@ -214,15 +215,15 @@ REAL, DIMENSION(size(PRHODREF),7) :: ZZW1 ! Work arrays ! 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 4691df965e77b57177a460b66366482acaa7a7da..92be5f71c97c76e5c35d64762c0c61d8d9df668a 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 @@ -125,15 +126,15 @@ REAL, DIMENSION(size(PRHODREF),6) :: ZZW1 ! Work arrays ! 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 @@ -187,15 +188,15 @@ REAL, DIMENSION(size(PRHODREF),6) :: ZZW1 ! Work arrays ! 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 3a3749cfa3fe24c176ba0b45fedb7dac4a851fe4..72d7c02bc68dca247eaa0039a7a0065ac0f9494b 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 @@ -101,10 +102,10 @@ REAL, DIMENSION(size(PRHODREF),4) :: ZZW1 ! Work arrays ! 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 @@ -192,15 +193,15 @@ REAL, DIMENSION(size(PRHODREF),4) :: ZZW1 ! Work arrays ! 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 d7637345ed02225b6f2e448e91f151ffcf85d3ec..9269417f6892d8681ac28cc58f4e172bf11a8ef9 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 @@ -146,7 +147,7 @@ REAL, DIMENSION(SIZE(PRCS,1),SIZE(PRCS,2),0:SIZE(PRCS,3)+1) & ! 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 4a6c1b27eec817b74ed4065c9fa8030d50db9dea..f0a138d1ab356feff300e71e446d891269358052 100644 --- a/src/MNH/retrieve2_nest_infon.f90 +++ b/src/MNH/retrieve2_nest_infon.f90 @@ -92,6 +92,7 @@ END MODULE MODI_RETRIEVE2_NEST_INFO_n !! J.Escobar : 01/06/2016 : Bug in type of ZBUF INTEGER => REAL & use MNHREAL_MPI for r4/R8 compatibility ! 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 @@ -704,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/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