diff --git a/src/ARCH_SRC/surfex/dummy_eggangles.F90 b/src/ARCH_SRC/surfex/dummy_eggangles.F90 index e7742fe01506c64f75995a7bb79b72091220bc9d..2da05b1bcbe0a9badb3a8cf085cec6d1c77f726b 100644 --- a/src/ARCH_SRC/surfex/dummy_eggangles.F90 +++ b/src/ARCH_SRC/surfex/dummy_eggangles.F90 @@ -1,8 +1,13 @@ MODULE EGGANGLES -USE PARKIND1 ,ONLY : JPIM, JPRB +!------------------------------------------------------------------------------- +!! MODIFICATIONS +!! ------------- +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 +!------------------------------------------------------------------------------- +USE PARKIND1 ,ONLY : JPIM TYPE LOLA SEQUENCE - REAL(KIND=JPRB) :: LON, LAT + REAL :: LON, LAT END TYPE LOLA INTERFACE ANGLE_DOMAIN MODULE PROCEDURE ANGLE_DOMAIN_RS, ANGLE_DOMAIN_LOLAS, ANGLE_DOMAIN_RV, ANGLE_DOMAIN_LOLAV @@ -42,60 +47,60 @@ INTERFACE SIZE_W2E END INTERFACE CONTAINS -REAL(KIND=JPRB) FUNCTION ANGLE_DOMAIN_RS(ALPHA,PI,DOM,UNIT) RESULT (BETA) -REAL(KIND=JPRB), INTENT(IN) :: ALPHA +REAL FUNCTION ANGLE_DOMAIN_RS(ALPHA,PI,DOM,UNIT) RESULT (BETA) +REAL, INTENT(IN) :: ALPHA CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION ANGLE_DOMAIN_RS TYPE (LOLA) FUNCTION ANGLE_DOMAIN_LOLAS(ALPHA,PI,DOM,UNIT) RESULT (BETA) TYPE (LOLA), INTENT(IN) :: ALPHA CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION ANGLE_DOMAIN_LOLAS ! ------------------------------------------------------------------------------- FUNCTION ANGLE_DOMAIN_RV(ALPHA,PI,DOM,UNIT) RESULT (BETA) -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: ALPHA +REAL, DIMENSION(:), INTENT(IN) :: ALPHA CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION ANGLE_DOMAIN_RV ! ------------------------------------------------------------------------------- FUNCTION ANGLE_DOMAIN_LOLAV(YL_ALPHA,PI,DOM,UNIT) RESULT (YD_BETA) TYPE (LOLA), DIMENSION(:), INTENT(IN) :: YL_ALPHA CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION ANGLE_DOMAIN_LOLAV ! ------------------------------------------------------------------------------- INTEGER(KIND=JPIM) FUNCTION VAL_LAT_S(LAT,NUM_ERR,PI,UNIT) RESULT(ETAT) -REAL(KIND=JPRB), INTENT(IN) :: LAT +REAL, INTENT(IN) :: LAT CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: NUM_ERR END FUNCTION VAL_LAT_S ! ------------------------------------------------------------------------------- INTEGER(KIND=JPIM) FUNCTION VAL_LAT_V(P_LAT,NUM_ERR,PI,UNIT) RESULT(ETAT) -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: P_LAT +REAL, DIMENSION(:), INTENT(IN) :: P_LAT CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: NUM_ERR END FUNCTION VAL_LAT_V ! ------------------------------------------------------------------------------- INTEGER(KIND=JPIM) FUNCTION VAL_LON_S(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT) -REAL(KIND=JPRB), INTENT(IN) :: LON +REAL, INTENT(IN) :: LON CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: NUM_ERR END FUNCTION VAL_LON_S ! ------------------------------------------------------------------------------- INTEGER(KIND=JPIM) FUNCTION VAL_LON_V(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT) -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: LON +REAL, DIMENSION(:), INTENT(IN) :: LON CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: NUM_ERR END FUNCTION VAL_LON_V ! ------------------------------------------------------------------------------- @@ -103,7 +108,7 @@ INTEGER(KIND=JPIM) FUNCTION VAL_COORD_S(PT_COORD,NUM_ERR,PI,DOM,UNIT) RESULT(ETA TYPE (LOLA), INTENT(IN) :: PT_COORD CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: NUM_ERR END FUNCTION VAL_COORD_S ! ------------------------------------------------------------------------------- @@ -111,7 +116,7 @@ INTEGER(KIND=JPIM) FUNCTION VAL_COORD_V(YD_PT_COORD,K_NUM_ERR,PI,CD_DOM,CD_UNIT) TYPE (LOLA), DIMENSION(:), INTENT(IN) :: YD_PT_COORD CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: CD_DOM CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: CD_UNIT -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: K_NUM_ERR END FUNCTION VAL_COORD_V ! ------------------------------------------------------------------------------- @@ -136,73 +141,73 @@ FUNCTION LOLAD_V (COORD_RAD) RESULT (COORD_DEG) TYPE(LOLA), DIMENSION(:), INTENT(IN) :: COORD_RAD END FUNCTION LOLAD_V ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION COSIN_TO_ANGLE_S(COSINUS,SINUS) RESULT (ANGLE) +REAL FUNCTION COSIN_TO_ANGLE_S(COSINUS,SINUS) RESULT (ANGLE) ! (Cosinus,Sinus) => Angle -REAL(KIND=JPRB), INTENT(IN) :: COSINUS,SINUS +REAL, INTENT(IN) :: COSINUS,SINUS END FUNCTION COSIN_TO_ANGLE_S FUNCTION COSIN_TO_ANGLE_V(COSINUS,SINUS) RESULT (ANGLE) ! (Cosinus,Sinus) => Angle -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: COSINUS,SINUS +REAL, DIMENSION(:), INTENT(IN) :: COSINUS,SINUS END FUNCTION COSIN_TO_ANGLE_V ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION P_ACOS_S(COSINUS) RESULT (ANGLE) +REAL FUNCTION P_ACOS_S(COSINUS) RESULT (ANGLE) ! Protected ACOS -REAL(KIND=JPRB), INTENT(IN) :: COSINUS +REAL, INTENT(IN) :: COSINUS END FUNCTION P_ACOS_S FUNCTION P_ACOS_V(COSINUS) RESULT (ANGLE) ! Protected ACOS -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: COSINUS +REAL, DIMENSION(:), INTENT(IN) :: COSINUS END FUNCTION P_ACOS_V ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION P_ASIN_S(SINUS) RESULT (ANGLE) +REAL FUNCTION P_ASIN_S(SINUS) RESULT (ANGLE) ! Protected ASIN -REAL(KIND=JPRB), INTENT(IN) :: SINUS +REAL, INTENT(IN) :: SINUS END FUNCTION P_ASIN_S FUNCTION P_ASIN_V(SINUS) RESULT (ANGLE) ! Protected ASIN -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: SINUS +REAL, DIMENSION(:), INTENT(IN) :: SINUS END FUNCTION P_ASIN_V -REAL(KIND=JPRB) FUNCTION MINIMAX_S(VAL,LIM) RESULT (VALO) +REAL FUNCTION MINIMAX_S(VAL,LIM) RESULT (VALO) ! Return Value in [-LIM,LIM] -REAL(KIND=JPRB), INTENT(IN) :: VAL -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: LIM +REAL, INTENT(IN) :: VAL +REAL, INTENT(IN), OPTIONAL :: LIM END FUNCTION MINIMAX_S FUNCTION MINIMAX_V(VAL,LIM) RESULT (VALO) ! Return Value in [-LIM,LIM] -REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: VAL -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: LIM -REAL(KIND=JPRB), DIMENSION(SIZE(VAL)) :: VALO +REAL, DIMENSION(:), INTENT(IN) :: VAL +REAL, INTENT(IN), OPTIONAL :: LIM +REAL, DIMENSION(SIZE(VAL)) :: VALO END FUNCTION MINIMAX_V ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION DIST_2REF_L(COORD_LON,REF_LON,PI) RESULT(DIST) -REAL(KIND=JPRB), INTENT(IN) :: COORD_LON, REF_LON -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL FUNCTION DIST_2REF_L(COORD_LON,REF_LON,PI) RESULT(DIST) +REAL, INTENT(IN) :: COORD_LON, REF_LON +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION DIST_2REF_L ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION DIST_2REF_S(PT_COORD,REF_COORD,PI) RESULT(DIST) +REAL FUNCTION DIST_2REF_S(PT_COORD,REF_COORD,PI) RESULT(DIST) TYPE (LOLA), INTENT(IN) :: PT_COORD, REF_COORD -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION DIST_2REF_S ! ------------------------------------------------------------------------------- FUNCTION DIST_2REF_V(PT_COORD,REF_COORD,PI) RESULT(DIST) TYPE (LOLA), DIMENSION(:), INTENT(IN) :: PT_COORD TYPE (LOLA), INTENT(IN) :: REF_COORD -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI -REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: DIST +REAL, INTENT(IN), OPTIONAL :: PI +REAL, DIMENSION(SIZE(PT_COORD)) :: DIST END FUNCTION DIST_2REF_V ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION SIZE_W2E_L(WEST_LON,EAST_LON,PI) RESULT(TAILLE) -REAL(KIND=JPRB), INTENT(IN) :: WEST_LON, EAST_LON -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL FUNCTION SIZE_W2E_L(WEST_LON,EAST_LON,PI) RESULT(TAILLE) +REAL, INTENT(IN) :: WEST_LON, EAST_LON +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION SIZE_W2E_L ! ------------------------------------------------------------------------------- -REAL(KIND=JPRB) FUNCTION SIZE_W2E_S(WEST_COORD,EAST_COORD,PI) RESULT(TAILLE) +REAL FUNCTION SIZE_W2E_S(WEST_COORD,EAST_COORD,PI) RESULT(TAILLE) TYPE (LOLA), INTENT(IN) :: WEST_COORD, EAST_COORD -REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: PI +REAL, INTENT(IN), OPTIONAL :: PI END FUNCTION SIZE_W2E_S ! ------------------------------------------------------------------------------- END MODULE EGGANGLES diff --git a/src/LIB/RAD/ECMWF_RAD/parkind1.f90 b/src/LIB/RAD/ECMWF_RAD/parkind1.f90 index cf3fd688455b1a96f35038a5e6386d1289d8e76f..a6caebf9c6f87742a8eb2230aa2cbffe2e63f37b 100644 --- a/src/LIB/RAD/ECMWF_RAD/parkind1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/parkind1.f90 @@ -8,6 +8,7 @@ MODULE PARKIND1 ! *** Define usual kinds for strong typing *** ! J.Escobar : 9/06/2015, for I*8 compilation force JPIM to default size ! J.-P. Chaboureau: 14/10/2016, adding logical kind JPLM for RTTOV +! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 ! IMPLICIT NONE SAVE @@ -28,7 +29,8 @@ INTEGER, PARAMETER :: JPRT = SELECTED_REAL_KIND(2,1) INTEGER, PARAMETER :: JPRS = SELECTED_REAL_KIND(4,2) INTEGER, PARAMETER :: JPRM = SELECTED_REAL_KIND(6,37) REAL :: REAL_DEF_JPRB -INTEGER, PARAMETER :: JPRB = KIND(REAL_DEF_JPRB) ! SELECTED_REAL_KIND(13,300) +INTEGER, PARAMETER :: JPRB = SELECTED_REAL_KIND(13,300) ! KIND(REAL_DEF_JPRB) +INTEGER, PARAMETER :: JPRB_DEF = KIND(REAL_DEF_JPRB) ! ! Logical Kinds ! ------------- diff --git a/src/MNH/aerozon.f90 b/src/MNH/aerozon.f90 index d4b4ae5a0545b5e11bbde8d5b00dd13c03e417a7..04808cb47b5e9041c1e79bced1cb28382c912a0c 100644 --- a/src/MNH/aerozon.f90 +++ b/src/MNH/aerozon.f90 @@ -3,10 +3,6 @@ !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_AEROZON ! ########################## @@ -142,12 +138,14 @@ END MODULE MODI_AEROZON !! MODIFICATIONS !! ------------- !! (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 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ !ECMWF radiation scheme specific modules ! +USE PARKIND1 , ONLY : JPRB USE YOEAERD , ONLY : RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,& RCVOBGA ,RCSTBGA ,RCTRPT ,RCAEADM ,RCAEROS ,& RCAEADK @@ -234,13 +232,18 @@ REAL :: ZA1, ZA2 ! Ancillary variables REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZEXNT ! Exner function ! ! Variables for aerosols and ozone climatologies set up -REAL, DIMENSION (:), ALLOCATABLE :: ZAESEA, ZAELAN, ZAEURB, ZAEDES -REAL, DIMENSION (:,:), ALLOCATABLE :: ZPRES_HL,ZT_HL, ZPAVE, ZOZON, ZWORK_GRID -REAL, DIMENSION (:,:), ALLOCATABLE :: ZCVDAES, ZCVDAEL, ZCVDAEU, ZCVDAED,ZETAH -REAL, DIMENSION (:), ALLOCATABLE :: ZGEMU + +REAL, DIMENSION (:,:), ALLOCATABLE :: ZPAVE, ZWORK_GRID +REAL, DIMENSION (:), ALLOCATABLE :: ZAESEA, ZAELAN, ZAEURB, ZAEDES +! +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZT_HL +REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZCVDAES, ZCVDAEL, ZCVDAEU, ZCVDAED +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZPRES_HL,ZOZON,ZETAH +REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZGEMU INTEGER :: ZYMD, ZHOURS ! date for climatology initialisation INTEGER :: JKCEP,JK_NH -REAL, DIMENSION (:,:,:), ALLOCATABLE :: ZAER +REAL(KIND=JPRB), DIMENSION (:,:,:), ALLOCATABLE :: ZAER REAL, DIMENSION(:), ALLOCATABLE :: ZAECOV_SEA, ZAECOV_URB, ZAECOV_LAN, ZAECOV_DES ! !------------------------------------------------------------------------------- @@ -430,6 +433,11 @@ IF(HAER /= 'NONE') THEN ALLOCATE (ZAELAN(KDLON)) ALLOCATE (ZAEURB(KDLON)) ALLOCATE (ZAEDES(KDLON)) + + ALLOCATE (ZAESEA_RAD(KDLON)) + ALLOCATE (ZAELAN_RAD(KDLON)) + ALLOCATE (ZAEURB_RAD(KDLON)) + ALLOCATE (ZAEDES_RAD(KDLON)) ! ! AEROSOLS ECMWF climatologies ! @@ -464,9 +472,10 @@ IF(HAER /= 'NONE') THEN ! ! final aerosol profiles on mnh grid ! + ZAESEA_RAD = ZAESEA ; ZAELAN_RAD = ZAELAN ; ZAEURB_RAD = ZAEURB ; ZAEDES_RAD = ZAEDES CALL RADAER (1, KDLON, KDLON, 1, KFLEV, ZPRES_HL,ZT_HL, & ZCVDAES ,ZCVDAEL ,ZCVDAEU ,ZCVDAED, & - ZAESEA, ZAELAN, ZAEURB, ZAEDES, & + ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD, & ZAER ) ! !!- VOLCANIC AEROSOL SET TO epsilon IN ABSENCE OF ERUPTION @@ -480,6 +489,11 @@ IF(HAER /= 'NONE') THEN DEALLOCATE (ZAELAN) DEALLOCATE (ZAEURB) DEALLOCATE (ZAEDES) + + DEALLOCATE (ZAESEA_RAD) + DEALLOCATE (ZAELAN_RAD) + DEALLOCATE (ZAEURB_RAD) + DEALLOCATE (ZAEDES_RAD) ELSE ZAER(:,:,:)= 1E-12 END IF diff --git a/src/MNH/ecmwf_radiation_vers2.f90 b/src/MNH/ecmwf_radiation_vers2.f90 index 390732604adc586c127ab8ad05b62a3f6b0e953a..76c7a122e4da04fc9a1c24aad720c55235a7f4c3 100644 --- a/src/MNH/ecmwf_radiation_vers2.f90 +++ b/src/MNH/ecmwf_radiation_vers2.f90 @@ -2,142 +2,6 @@ !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. -!----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/ecmwf_radiation_vers2.f90,v $ $Revision: 1.3.2.4.2.2.2.1 $ -! masdev4_7 BUG1 2007/06/15 17:47:17 -!----------------------------------------------------------------- -! ################################# - MODULE MODI_ECMWF_RADIATION_VERS2 -! ################################# -INTERFACE -! -SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, & - PDZ,HEFRADL, HEFRADI, HOPWSW, HOPISW, HOPWLW, HOPILW, PFUDG, & - PRII0, PAER , PALBD , PALBP, PAPH , PAP, & - PCCO2, PCLFR , PDP , PEMIS, PEMIW , PLSM , PMU0, POZON, & - PQ , PQIWC ,PIWC, PQLWC, PLWC,PQS , PQRWC,PRWC, & - PTH , PT , PTS, PCCT_C2R2, PCRT_C2R2, PCIT_C1R3, & - PFCT , PFLT , PFCS , PFLS , & - PDTLW, PDTSW ,PFLUX_TOP_GND_IRVISNIR, & - PSFSWDIR, PSFSWDIF, & - PFSDWN, PFSUP, PFLUX_LW , & - PDTLW_CS, PDTSW_CS ,PFLUX_TOP_GND_IRVISNIR_CS, & - PFCDWN, PFCUP, PFLUX_CLW, & - PPLAN_ALB_VIS, PPLAN_ALB_NIR, PPLAN_TRA_VIS, PPLAN_TRA_NIR,& - PPLAN_ABS_VIS, PPLAN_ABS_NIR, PEFCL_LWD, PEFCL_LWU, & - PFLWP,PFIWP, PRADLP, PRADIP,PEFCL_RRTM, PCLSW_TOTAL, & - PTAU_TOTAL, POMEGA_TOTAL, PCG_TOTAL, & - ODUST,PPIZA_DST,PCGA_DST,PTAUREL_DST ) -! -INTEGER, INTENT(IN) :: KAER !number of aerosol class -REAL, DIMENSION (:,:), INTENT (IN) ::PDZ !thickness of the mesh (m) -INTEGER, INTENT(IN) :: KLEV ! number of vertical level for radiation calulation -INTEGER, INTENT(IN) :: KLON ! number of columns " -INTEGER, INTENT(IN) :: KRAD_DIAG ! index for the number of diagnostic fields -! choice in -CHARACTER (LEN=*), INTENT (IN) :: HEFRADL !cloud water effective radius calculation -CHARACTER (LEN=*), INTENT (IN) :: HEFRADI !ice water effective radius calculation -CHARACTER (LEN=*), INTENT (IN) :: HOPWSW !cloud water SW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPISW !ice water SW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPWLW !cloud water LW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPILW !ice water LW optical properties -REAL, INTENT(IN) :: PFUDG ! subgrid cloud inhomogeneity factor -! -! -REAL, INTENT(INOUT) :: PRII0 ! corrected solar constant -REAL, INTENT(IN) :: PCCO2 ! CO2 content (Pa/Pa) -REAL, DIMENSION (:,:,:), INTENT (IN) :: PAER ! aerosol optical thickness -REAL, DIMENSION (:,:), INTENT (IN) :: PALBD ! surface diffuse spectral albedo -REAL, DIMENSION (:,:), INTENT (IN) :: PALBP ! surface direct spectral albedo -REAL, DIMENSION (:), INTENT (IN) :: PEMIS ! surface emissivity -REAL, DIMENSION (:), INTENT (IN) :: PEMIW ! surface emissivity in LW window -REAL, DIMENSION (:), INTENT (IN) :: PLSM ! land sea mask -REAL, DIMENSION (:), INTENT (IN) :: PMU0 ! cosine of solar angle -REAL, DIMENSION (:,:), INTENT (IN) :: POZON ! ozone content (Pa/Pa) -REAL, DIMENSION (:), INTENT (IN) :: PTS ! surfaec temperature -REAL, DIMENSION (:,:), INTENT (IN) :: PT ! mean layer temperature (mass point) -REAL, DIMENSION (:,:), INTENT (IN) :: PAP ! mean layer pressure (mass point) -REAL, DIMENSION (:,:), INTENT (IN) :: PTH ! half-level temperature -REAL, DIMENSION (:,:), INTENT (IN) :: PAPH ! half-level pressure -REAL, DIMENSION (:,:), INTENT (IN) :: PDP ! layer pressure thickness -REAL, DIMENSION (:,:), INTENT (IN) :: PQ ! mean layer specific humidity (Pa/pa) -REAL, DIMENSION (:,:), INTENT (IN) :: PQS ! mean layer saturation spec. humid. -REAL, DIMENSION (:,:), INTENT (IN) :: PQIWC ! mean-layer ice specific water content (kg/kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PIWC ! mean-layer ice water content (kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PQLWC ! mean-layer liquid specific water content(kg/Kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PLWC ! mean-layer liquid water content(kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PQRWC ! mean-layer rain specific water content(kg/kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PRWC ! mean-layer rain water content(kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PCLFR ! mean-layer cloud fraction -REAL, DIMENSION (:,:), INTENT (IN) :: PCCT_C2R2 ! cloud water concentration (C2R2) -REAL, DIMENSION (:,:), INTENT (IN) :: PCRT_C2R2 ! rain water concentration (C2R2) -REAL, DIMENSION (:,:), INTENT (IN) :: PCIT_C1R3 ! ice crystal concentration (C1R3) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PPIZA_DST !Single scattering albedo of dust (wvl dependent) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PCGA_DST !Assymetry factor for dust (wvl dependent) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PTAUREL_DST !Optical depth of dust relative to the one at 550nm - -LOGICAL, INTENT (IN) :: ODUST ! flag for dust -! -! OUTPUTS -! -REAL, DIMENSION (:,:), INTENT (OUT) :: PDTLW ! LW temperature tendency -REAL, DIMENSION (:,:), INTENT (OUT) :: PDTSW ! SW temperature tendency -REAL, DIMENSION (:,:), INTENT (OUT) :: PFLUX_TOP_GND_IRVISNIR ! Top and Ground rad. FLUX. -REAL, DIMENSION (:,:), INTENT (OUT) :: PSFSWDIR ! surface SW direct flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PSFSWDIF ! surface SW diffuse flux -! -!KRAD_DIAG >=1 --> optional: flux profiles -! -REAL, DIMENSION (:,:), INTENT (OUT) :: PFCT ! Total LW net flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFLT ! Total SW net flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFSDWN! Downward SW flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFSUP ! Upward SW flux -REAL, DIMENSION (:,:,:), INTENT (OUT) :: PFLUX_LW ! LW flux (upward and downward) -! -!KRAD_DIAG >=2 --> optional: clear-sky outputs -! -REAL, DIMENSION (:,:), INTENT (OUT) :: PDTLW_CS ! LW clear sky temperature tendancy -REAL, DIMENSION (:,:), INTENT (OUT) :: PDTSW_CS ! SW clear sky temperature tendancy -REAL, DIMENSION (:,:), INTENT (OUT) :: PFLUX_TOP_GND_IRVISNIR_CS ! Top and - ! Ground radiative Clear-sky FLUXes -REAL, DIMENSION (:,:), INTENT (OUT) :: PFCS ! Clear-sky LW net flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFLS ! Clear-sky SW net flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFCDWN ! Downward SW Clear sky flux -REAL, DIMENSION (:,:), INTENT (OUT) :: PFCUP ! Upward SW Clear sky flux -REAL, DIMENSION (:,:,:), INTENT (OUT):: PFLUX_CLW !Clear sky LW flux (upward and downward) -! -!KRAD_DIAG >=3 --> optional: other macroscpic radiative parameteres -! -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ALB_VIS !PLANetary ALBedo in VISible -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ALB_NIR ! " Near-InfraRed -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_TRA_VIS !PLANetary TRANsmission in VISible -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_TRA_NIR ! " Near-InfraRed -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ABS_VIS !PLANetary ABSorption in VISible -REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ABS_NIR ! " Near-InfraRed - - -! -!KRAD_DIAG >=4 --> optional: more cloud effect radiative parameters -! -REAL, DIMENSION (:,:), INTENT (OUT) :: PFLWP ! Liquid water path -REAL, DIMENSION (:,:), INTENT (OUT) :: PFIWP ! Ice water path -REAL, DIMENSION (:,:), INTENT (OUT) :: PRADLP ! Cloud water effective radius -REAL, DIMENSION (:,:), INTENT (OUT) :: PRADIP ! Cloud ice effective radius -REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_LWD ! effective downward LW nebulosity -REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_LWU ! effective upward LW nebulosity - ! Note: not meaningfull when using RRTM -REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_RRTM ! Effective LW nebuloisty (RRTM case) -REAL, DIMENSION (:,:), INTENT (OUT) :: PCLSW_TOTAL ! Effective SW cloud fraction(mixed phase) -REAL, DIMENSION (:,:,:), INTENT (OUT) :: PTAU_TOTAL !Effective cloud optical thickness -REAL, DIMENSION (:,:,:), INTENT (OUT) :: POMEGA_TOTAL! " single scattering albedo -REAL, DIMENSION (:,:,:), INTENT (OUT) :: PCG_TOTAL ! " asymetry factor -! -END SUBROUTINE ECMWF_RADIATION_VERS2 -END INTERFACE -END MODULE MODI_ECMWF_RADIATION_VERS2 -! !############################################################## !OPTION! -Ni SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, & @@ -205,12 +69,14 @@ SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, & ! G.Delautier 9/2014: remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM ! M.Mazoyer 2016 : limit of 100 microns for effective radius ! B.VIE 2016 : LIMA +! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !----------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ !ECMWF radiation scheme specific modules ! +USE PARKIND1 , ONLY : JPRB USE YOMCST , ONLY : RG ,RD ,RTT ,RPI USE YOERAD , ONLY : NMODE, NSW ,LRRTM ,LINHOM ,LRADIP, LRADLP USE YOELW , ONLY : NSIL ,NTRA ,NUA ,TSTAND ,XP @@ -279,7 +145,7 @@ CHARACTER (LEN=*), INTENT (IN) :: HOPWLW !cloud water LW optical properties CHARACTER (LEN=*), INTENT (IN) :: HOPILW !ice water LW optical properties REAL, INTENT(IN) :: PFUDG !subgrid cloud inhomogeneity factor ! -REAL, INTENT(INOUT) :: PRII0 ! corrected solar constant +REAL(KIND=JPRB), INTENT(INOUT) :: PRII0 ! corrected solar constant REAL, INTENT(IN) :: PCCO2 ! CO2 content (Pa/Pa) REAL, DIMENSION (:,:,:), INTENT (IN) :: PAER ! aerosol optical thickness REAL, DIMENSION (:,:), INTENT (IN) :: PALBD ! surface diffuse spectral albedo @@ -289,14 +155,14 @@ REAL, DIMENSION (:), INTENT (IN) :: PEMIW ! surface emissivity in LW window REAL, DIMENSION (:), INTENT (IN) :: PLSM ! land sea mask REAL, DIMENSION (:), INTENT (IN) :: PMU0 ! cosine of solar angle REAL, DIMENSION (:,:), INTENT (IN) :: POZON ! ozone content (Pa/Pa) -REAL, DIMENSION (:), INTENT (IN) :: PTS ! surfaec temperature -REAL, DIMENSION (:,:), INTENT (IN) :: PT ! mean layer temperature (mass point) -REAL, DIMENSION (:,:), INTENT (IN) :: PAP ! mean layer pressure (mass point) -REAL, DIMENSION (:,:), INTENT (IN) :: PTH ! half-level temperature -REAL, DIMENSION (:,:), INTENT (IN) :: PAPH ! half-level pressure -REAL, DIMENSION (:,:), INTENT (IN) :: PDP ! layer pressure thickness -REAL, DIMENSION (:,:), INTENT (IN) :: PQ ! mean layer specific humidity (Pa/pa) -REAL, DIMENSION (:,:), INTENT (IN) :: PQS ! mean layer saturation spec. humid. +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PTS ! surfaec temperature +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PT ! mean layer temperature (mass point) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAP ! mean layer pressure (mass point) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PTH ! half-level temperature +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAPH ! half-level pressure +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PDP ! layer pressure thickness +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQ ! mean layer specific humidity (Pa/pa) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQS ! mean layer saturation spec. humid. REAL, DIMENSION (:,:), INTENT (IN) :: PQIWC ! mean-layer ice specific water content (kg/kg) REAL, DIMENSION (:,:), INTENT (IN) :: PIWC ! mean-layer ice water content (kg/m3) REAL, DIMENSION (:,:), INTENT (IN) :: PQLWC ! mean-layer liquid specific water content(kg/Kg) @@ -307,9 +173,9 @@ REAL, DIMENSION (:,:), INTENT (IN) :: PCLFR ! mean-layer cloud fraction REAL, DIMENSION (:,:), INTENT (IN) :: PCCT_C2R2 ! cloud water concentration (C2R2) REAL, DIMENSION (:,:), INTENT (IN) :: PCRT_C2R2 ! rain water concentration (C2R2) REAL, DIMENSION (:,:), INTENT (IN) :: PCIT_C1R3 ! ice crystal concentration (C1R3) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PPIZA_DST !Single scattering albedo of dust (wvl dependent) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PCGA_DST !Assymetry factor for dust (wvl dependent) -REAL, DIMENSION(:,:,:),INTENT(IN) :: PTAUREL_DST !Optical depth of dust relative to the one at 550nm +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PPIZA_DST !Single scattering albedo of dust (wvl dependent) +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PCGA_DST !Assymetry factor for dust (wvl dependent) +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PTAUREL_DST !Optical depth of dust relative to the one at 550nm LOGICAL, INTENT (IN) :: ODUST ! flag for dust ! ! @@ -384,7 +250,7 @@ REAL :: ZALND, ZASEA, ZD, ZDEN, ZNTOT, ZNUM, ZRATIO, Z1RADI,& ZBETAI, ZOMGI, ZOMGP, ZFDEL, ZTCELS, ZFSR, ZAIWC, ZBIWC, & ZTBLAY, ZADDPLK, ZPLANCK, Z1RADL, Z1RADR -REAL, DIMENSION(KLON) :: ZTCLEAR, ZDT0, ZEMIS, ZEMIW, & +REAL(KIND=JPRB), DIMENSION(KLON) :: ZTCLEAR, ZDT0, ZEMIS, ZEMIW, & ZFIWP , ZFLWP, ZFRWP, ZIWC, & ZLWC, ZMU0, ZPSOL, ZVIEW, & ZBICFU, ZKICFU1, ZKICFU2, & @@ -397,29 +263,32 @@ REAL, DIMENSION(KLON) :: ZTCLEAR, ZDT0, ZEMIS, ZEMIW, & ZUVDF, ZPARF !cc , ZRADRD ! -REAL, DIMENSION(KLON,NSW) :: ZALBD , ZALBP , ZDIRFS, ZDIFFS -REAL, DIMENSION(KLON,KLEV) :: ZCLFR, ZCLDLD , ZCLDLU, ZCLDSW, & +REAL(KIND=JPRB), DIMENSION(KLON,NSW) :: ZALBD , ZALBP , ZDIRFS, ZDIFFS +REAL(KIND=JPRB), DIMENSION(KLON,KLEV) :: ZCLFR, ZCLDLD , ZCLDLU, ZCLDSW, & ZOZON, ZOZ , ZOZN, ZTAVE , ZDPGCP, & ZCOOLR , ZCOOLC, ZHEATR , ZHEATC, & ZDFLWT , ZDFLWC, ZDFSWT , ZDFSWC ! -REAL, DIMENSION(KLON,KLEV+1) :: ZPMB , ZTL, & +REAL(KIND=JPRB), DIMENSION(KLON,KLEV+1) :: ZPMB , ZTL, & ZFCDWN, ZFCUP, ZFSDWN, ZFSUP, & ZFLT, ZFCT,ZFCS, ZFLS ! -REAL, DIMENSION(KLON,NSW,KLEV) :: ZCG ,ZOMEGA, ZTAU +REAL(KIND=JPRB), DIMENSION(KLON,NSW,KLEV) :: ZCG ,ZOMEGA, ZTAU ! -REAL, DIMENSION(KLON,2,KLEV+1) :: ZFLUX_LW, ZFLUX_CLW +REAL(KIND=JPRB), DIMENSION(KLON,2,KLEV+1) :: ZFLUX_LW, ZFLUX_CLW ! -REAL, DIMENSION(KLON,KLEV,16) :: ZTAUCLD +REAL(KIND=JPRB), DIMENSION(KLON,KLEV,16) :: ZTAUCLD ! -REAL, DIMENSION(KLON,KAER,KLEV) :: ZAER_SW,ZAER_LW ! Optical aerosol properties +REAL(KIND=JPRB), DIMENSION(KLON,KAER,KLEV) :: ZAER_SW,ZAER_LW ! Optical aerosol properties LOGICAL :: GPROP_OP !drapeau sur les condition a remplir pour que le !calcul des propri�t�s optiques soit effectu� ! REAL, ALLOCATABLE, DIMENSION(:) :: XRTMIN, XCTMIN REAL :: XALPHAC,XNUC,XALPHAR,XNUR,XCREC,XCRER,XFREFFR,XAC,XAR,XLBEXC,XLBEXR,XFREFFI,XLBEXI +! +REAL(KIND=JPRB) :: ZCCO2_RAD !-------------------------------------------------------------- +ZCCO2_RAD = PCCO2 ! ! 0. LIMA IF ( CCLOUD == "LIMA" ) THEN @@ -1239,7 +1108,7 @@ ENDDO ! ------------------------------------ IF ( .NOT. LRRTM) THEN CALL LW ( IKIDIA , IKFDIA , KLON , KLEV , NMODE, & - PCCO2 , ZCLDLD, ZCLDLU, & + ZCCO2_RAD , ZCLDLD, ZCLDLU, & PDP , ZDT0 , ZEMIS , ZEMIW, & ZPMB , ZOZON , ZTL, & ZAER_LW , ZTAVE , ZVIEW , PQ, & @@ -1263,7 +1132,7 @@ ELSE ! CALL RRTM_RRTM_140GP(IKIDIA,IKFDIA,KLON,KLEV, & ZAER_LW,PAPH,PAP,PTS,PTH,PT,ZEMIS,ZEMIW, & - PQ , PCCO2 , ZOZN , ZCLDSW , ZTAUCLD, & + PQ , ZCCO2_RAD , ZOZN , ZCLDSW , ZTAUCLD, & ZEMIT , ZFLUX_LW , ZFLUX_CLW , ZTCLEAR ) ENDIF @@ -1277,7 +1146,7 @@ ENDDO ! IF (ZRMUZ > 0.) THEN CALL SW ( IKIDIA , IKFDIA , KLON , KLEV , KAER, & - PRII0 , PCCO2 , ZPSOL , ZALBD , ZALBP , PQ , PQS, & + PRII0 , ZCCO2_RAD , ZPSOL , ZALBD , ZALBP , PQ , PQS, & ZMU0 , ZCG , ZCLDSW, PDP , ZOMEGA, ZOZ , ZPMB, & ZTAU , ZTAVE , ZAER_SW, & ZHEATR, ZFSDWN, ZFSUP , ZHEATC, ZFCDWN, ZFCUP, & diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90 index 72a746e3f622c3591d3df3aa031126b06b391b32..6c2cee16b749190123f8046af87bc2a048c17db5 100644 --- a/src/MNH/ini_radiations_ecmwf.f90 +++ b/src/MNH/ini_radiations_ecmwf.f90 @@ -3,11 +3,6 @@ !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 BUG1 2007/06/15 17:47:18 -!----------------------------------------------------------------- ! ########################## MODULE MODI_INI_RADIATIONS_ECMWF ! ########################## @@ -176,12 +171,14 @@ END MODULE MODI_INI_RADIATIONS_ECMWF !! (A.Grini) 07/2005 add dust !! (M.Tomasini P.Peyrille) 06/2012 to set date to a perpetual day if LFIX_DAT=T !! (V. Masson) replaces cover fractions by sea/town/bare soil fractions +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ !ECMWF radiation scheme specific modules ! +USE PARKIND1, ONLY : JPRB USE YOEAERD , ONLY : RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,& RCVOBGA ,RCSTBGA ,RCTRPT ,RCAEADM ,RCAEROS ,& RCAEADK @@ -296,12 +293,14 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZEXNT ! Exner functio ! ! Variables for aerosols and ozone climatologies set up REAL, DIMENSION (:), ALLOCATABLE :: ZAESEA, ZAELAN, ZAEURB, ZAEDES +REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD LOGICAL, DIMENSION (:,:),ALLOCATABLE :: GAFRICA, GASIA, GAUSTRALIA REAL, DIMENSION (:,:), ALLOCATABLE :: ZDESERT ! desert fraction -REAL, DIMENSION (:,:,:), ALLOCATABLE :: ZAER -REAL, DIMENSION (:,:), ALLOCATABLE :: ZPRES_HL,ZT_HL, ZPAVE, ZOZON, ZWORK_GRID -REAL, DIMENSION (:,:), ALLOCATABLE :: ZCVDAES, ZCVDAEL, ZCVDAEU, ZCVDAED,ZETAH -REAL, DIMENSION (:), ALLOCATABLE :: ZGEMU +REAL, DIMENSION (:,:), ALLOCATABLE :: ZPAVE, ZWORK_GRID +REAL(KIND=JPRB), DIMENSION (:,:,:), ALLOCATABLE :: ZAER +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZPRES_HL,ZT_HL,ZOZON +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZCVDAES, ZCVDAEL, ZCVDAEU, ZCVDAED,ZETAH +REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZGEMU REAL, DIMENSION(:), ALLOCATABLE :: ZAECOV_SEA, ZAECOV_URB, ZAECOV_LAN, ZAECOV_DES INTEGER :: ZYMD, ZHOURS ! date for climatology initialisation ! @@ -556,6 +555,11 @@ IF(HAER /= 'NONE') THEN ALLOCATE (ZAELAN(KDLON)) ALLOCATE (ZAEURB(KDLON)) ALLOCATE (ZAEDES(KDLON)) + + ALLOCATE (ZAESEA_RAD(KDLON)) + ALLOCATE (ZAELAN_RAD(KDLON)) + ALLOCATE (ZAEURB_RAD(KDLON)) + ALLOCATE (ZAEDES_RAD(KDLON)) ! ! AEROSOLS ECMWF climatologies ! @@ -654,9 +658,10 @@ IF(HAER /= 'NONE') THEN ! ! final aerosol profiles on mnh grid ! + ZAESEA_RAD = ZAESEA ; ZAELAN_RAD = ZAELAN ; ZAEURB_RAD = ZAEURB ; ZAEDES_RAD = ZAEDES CALL RADAER (1, KDLON, KDLON, 1, KFLEV, ZPRES_HL,ZT_HL, & ZCVDAES ,ZCVDAEL ,ZCVDAEU ,ZCVDAED, & - ZAESEA, ZAELAN, ZAEURB, ZAEDES, & + ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD, & ZAER ) ! !!- VOLCANIC AEROSOL SET TO epsilon IN ABSENCE OF ERUPTION @@ -670,6 +675,11 @@ IF(HAER /= 'NONE') THEN DEALLOCATE (ZAELAN) DEALLOCATE (ZAEURB) DEALLOCATE (ZAEDES) + + DEALLOCATE (ZAESEA_RAD) + DEALLOCATE (ZAELAN_RAD) + DEALLOCATE (ZAEURB_RAD) + DEALLOCATE (ZAEDES_RAD) ELSE ZAER(:,:,:)= 1E-12 END IF diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 7b9798cb402c9d2547f6deaa05ff7d43adaf709b..d2ae05c52a962dcdbef4c09a6396f693b20a7425 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -3,11 +3,6 @@ !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: /home/cvsroot/MNH-VX-Y-Z/src/MNH/radiations.f90,v $ $Revision: 1.3.2.3.2.2.2.4 $ -! masdev4_7 BUG1 2007/06/15 17:47:18 -!----------------------------------------------------------------- ! ######################## MODULE MODI_RADIATIONS ! ######################## @@ -212,11 +207,13 @@ END MODULE MODI_RADIATIONS !! B.Aouizerats 2010 Explicit aerosol optical properties !! C.Lac 11/2015 Correction on aerosols !! B.Vie /13 LIMA +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! +USE PARKIND1 , ONLY : JPRB USE MODE_FMWRIT USE MODE_FM USE MODE_ll @@ -375,9 +372,11 @@ INTEGER :: IDIM ! effective number of columns for which the radiation INTEGER :: INIR ! index corresponding to NIR fisrt band (in SW) ! REAL, DIMENSION(:,:), ALLOCATABLE :: ZTAVE ! mean-layer temperature +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTAVE_RAD ! mean-layer temperature REAL, DIMENSION(:,:), ALLOCATABLE :: ZPAVE ! mean-layer pressure -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQSAVE ! saturation specific humidity -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQVAVE ! mean-layer specific humidity +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPAVE_RAD ! mean-layer pressure +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQSAVE ! saturation specific humidity +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQVAVE ! mean-layer specific humidity REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLAVE ! Liquid water KG/KG REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRAVE ! Rain water KG/KG REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIAVE ! Ice water Kg/KG @@ -386,9 +385,9 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRWC ! Rain water content kg/m3 REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIWC ! ice water content kg/m3 REAL, DIMENSION(:,:), ALLOCATABLE :: ZCFAVE ! mean-layer cloud fraction REAL, DIMENSION(:,:), ALLOCATABLE :: ZO3AVE ! mean-layer ozone content -REAL, DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL ! half-level pressure -REAL, DIMENSION(:,:), ALLOCATABLE :: ZT_HL ! half-level temperature -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDPRES ! layer pressure thickness +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL ! half-level pressure +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZT_HL ! half-level temperature +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDPRES ! layer pressure thickness REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_C2R2! Cloud water Concentarion (C2R2) REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_C2R2! Rain water Concentarion (C2R2) REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3! Ice water Concentarion (C2R2) @@ -400,10 +399,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZALBP ! spectral surface albedo for di REAL, DIMENSION(:,:), ALLOCATABLE :: ZALBD ! spectral surface albedo for diffuse radiations REAL, DIMENSION (:), ALLOCATABLE :: ZEMIS ! surface LW emissivity REAL, DIMENSION (:), ALLOCATABLE :: ZEMIW ! surface LW WINDOW emissivity -REAL, DIMENSION(:), ALLOCATABLE :: ZTS ! reformatted surface PTSRAD array +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZTS ! reformatted surface PTSRAD array REAL, DIMENSION(:), ALLOCATABLE :: ZLSM ! reformatted land sea mask REAL, DIMENSION(:), ALLOCATABLE :: ZRMU0 ! Reformatted ZMU0 array -REAL :: ZRII0 ! corrected solar constant +REAL(KIND=JPRB) :: ZRII0 ! corrected solar constant ! REAL, DIMENSION(:,:), ALLOCATABLE :: ZDTLW ! LW temperature tendency REAL, DIMENSION(:,:), ALLOCATABLE :: ZDTSW ! SW temperature tendency @@ -503,15 +502,15 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZEMIS_SPLIT, ZEMIW_SPLIT REAL, DIMENSION(:), ALLOCATABLE :: ZRMU0_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZCFAVE_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZO3AVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZT_HL_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZPAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZT_HL_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPAVE_SPLIT REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZAER_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDPRES_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDPRES_SPLIT REAL, DIMENSION(:), ALLOCATABLE :: ZLSM_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQVAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQSAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQVAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQSAVE_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLAVE_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIAVE_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRAVE_SPLIT @@ -525,7 +524,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_LIMA_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_LIMA_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_LIMA_SPLIT -REAL, DIMENSION(:), ALLOCATABLE :: ZTS_SPLIT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZTS_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZSFSWDIR_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZSFSWDIF_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZNFLW_CS_SPLIT @@ -579,12 +578,12 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: PAER_AER !tau/tau_{550} aerosol from REAL, DIMENSION(:,:,:), ALLOCATABLE :: PAER_SLT !tau/tau_{550} sea salt (lon,lat,lev,wvl) REAL, DIMENSION(:,:,:), ALLOCATABLE :: PAER_DST !tau/tau_{550} dust (lon,lat,lev,wvl) REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTAU550_EQ_TMP !tau/tau_{550} aerosols (lon,lat,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZPIZA_EQ !Single scattering albedo of aerosols (points,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCGA_EQ !Assymetry factor aerosols (points,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ !tau/tau_{550} aerosols (points,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZPIZA_EQ_SPLIT !Single scattering albedo of aerosols (points,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCGA_EQ_SPLIT !Assymetry factor aerosols (points,lev,wvl) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ_SPLIT !tau/tau_{550} aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZPIZA_EQ !Single scattering albedo of aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZCGA_EQ !Assymetry factor aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ !tau/tau_{550} aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZPIZA_EQ_SPLIT !Single scattering albedo of aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZCGA_EQ_SPLIT !Assymetry factor aerosols (points,lev,wvl) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ_SPLIT !tau/tau_{550} aerosols (points,lev,wvl) REAL, DIMENSION(KFLEV,KSWB) :: ZPIZA_EQ_CLEAR !Single scattering albedo of aerosols (lev,wvl) REAL, DIMENSION(KFLEV,KSWB) :: ZCGA_EQ_CLEAR !Assymetry factor aerosols (lev,wvl) REAL, DIMENSION(KFLEV,KSWB) :: ZTAUREL_EQ_CLEAR !tau/tau_{550} aerosols (lev,wvl) @@ -1948,13 +1947,17 @@ IF( IDIM <= KRAD_COLNBR ) THEN ! there is less than KRAD_COLNBR verticals to be considered therefore ! no split of the arrays is performed ! + ALLOCATE(ZTAVE_RAD(SIZE(ZTAVE,1),SIZE(ZTAVE,2))) + ALLOCATE(ZPAVE_RAD(SIZE(ZPAVE,1),SIZE(ZPAVE,2))) + ZTAVE_RAD = ZTAVE + ZPAVE_RAD = ZPAVE IF (CCLOUD == 'LIMA') THEN CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & PCCO2, ZCFAVE, ZDPRES, ZEMIS, ZEMIW, ZLSM, ZRMU0, & ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & - ZT_HL,ZTAVE, ZTS, ZCCT_LIMA, ZCRT_LIMA, ZCIT_LIMA, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_LIMA, ZCRT_LIMA, ZCIT_LIMA, & ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & ZSFSWDIR, ZSFSWDIF, & @@ -1969,10 +1972,10 @@ IF( IDIM <= KRAD_COLNBR ) THEN ELSE CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & PCCO2, ZCFAVE, ZDPRES, ZEMIS, ZEMIW, ZLSM, ZRMU0, & ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & - ZT_HL,ZTAVE, ZTS, ZCCT_C2R2, ZCRT_C2R2, ZCIT_C1R3, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_C2R2, ZCRT_C2R2, ZCIT_C1R3, & ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & ZSFSWDIR, ZSFSWDIF, & @@ -1985,6 +1988,7 @@ IF( IDIM <= KRAD_COLNBR ) THEN ZOMEGA_TOTAL,ZCG_TOTAL, & GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) END IF + DEALLOCATE(ZTAVE_RAD,ZPAVE_RAD) ! ELSE ! diff --git a/src/SURFEX/assim_inland_watern.F90 b/src/SURFEX/assim_inland_watern.F90 index b78e0d6fba32fdeae8a3f22b3550eec9c35089b1..f83a3883fbe50369301aba713ac6a8a613887ebf 100644 --- a/src/SURFEX/assim_inland_watern.F90 +++ b/src/SURFEX/assim_inland_watern.F90 @@ -29,6 +29,7 @@ SUBROUTINE ASSIM_INLAND_WATER_n (I, U, W, & !! ------------- !! Original 04/2012 !! Trygve Aspelien, Separating IO 06/2013 +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !!-------------------------------------------------------------------- ! ! @@ -62,8 +63,8 @@ REAL,DIMENSION(KI), INTENT(IN) :: PITM CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' LOGICAL, INTENT(IN) :: OLKEEPEXTZONE LOGICAL, DIMENSION(KI), INTENT(IN) :: OD_MASKEXT -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLON_IN -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLAT_IN +REAL , DIMENSION (:), INTENT(IN) :: PLON_IN +REAL , DIMENSION (:), INTENT(IN) :: PLAT_IN ! !* 0.2 declarations of local variables ! diff --git a/src/SURFEX/assim_isban.F90 b/src/SURFEX/assim_isban.F90 index 72bda813e2c054cd1bbb5688038078981a470858..c197c62295cb620540ac11d12a5d820de7267d08 100644 --- a/src/SURFEX/assim_isban.F90 +++ b/src/SURFEX/assim_isban.F90 @@ -33,6 +33,7 @@ SUBROUTINE ASSIM_ISBA_n (DGMI, IG, I, U, & !! ------------- !! Original 04/2012 !! Trygve Aspelien, Separating IO 06/2013 +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !!-------------------------------------------------------------------- ! ! @@ -88,8 +89,8 @@ REAL, DIMENSION(KI), INTENT(IN) :: PHU2M REAL, DIMENSION(KI), INTENT(IN) :: PSWE CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' LOGICAL, DIMENSION (KI), INTENT(IN) :: OD_MASKEXT -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLON_IN -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLAT_IN +REAL , DIMENSION (:), INTENT(IN) :: PLON_IN +REAL , DIMENSION (:), INTENT(IN) :: PLAT_IN ! !* 0.2 declarations of local variables ! diff --git a/src/SURFEX/assim_nature_isba_oi.F90 b/src/SURFEX/assim_nature_isba_oi.F90 index c3f521193a1439c697549c36c4065dd15f0ef878..3e64c444c5690364e84a2dcca787ff3aa2d7026c 100644 --- a/src/SURFEX/assim_nature_isba_oi.F90 +++ b/src/SURFEX/assim_nature_isba_oi.F90 @@ -31,6 +31,7 @@ SUBROUTINE ASSIM_NATURE_ISBA_OI (I, & ! (07/2011) : Read pgd+prep (B. Decharme) ! (04/2012) : Made as a subroutine (T. Aspelien) ! (06/2013) : Separating IO (T. Aspelien) +! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 ! ****************************************************************************************** ! ------------------------------------------------------------------------------------------ ! @@ -75,8 +76,8 @@ REAL, DIMENSION(KI), INTENT(IN) :: PHU2M_O REAL, DIMENSION(KI), INTENT(OUT):: PSWE CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' LOGICAL, DIMENSION (KI) :: OD_MASKEXT -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLON_IN -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLAT_IN +REAL , DIMENSION (:), INTENT(IN) :: PLON_IN +REAL , DIMENSION (:), INTENT(IN) :: PLAT_IN ! Declarations of local variables ! diff --git a/src/SURFEX/assim_naturen.F90 b/src/SURFEX/assim_naturen.F90 index 48ac005001c887df6e2c13a7b5cceb392aa3693b..793792aca3b3df95f2e30b646e6ebc8fc82402e6 100644 --- a/src/SURFEX/assim_naturen.F90 +++ b/src/SURFEX/assim_naturen.F90 @@ -32,6 +32,7 @@ SUBROUTINE ASSIM_NATURE_n (DGMI, IG, I, U, & !! MODIFICATIONS !! ------------- !! Original 04/2012 +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !!-------------------------------------------------------------------- ! ! @@ -77,8 +78,8 @@ REAL, DIMENSION(KI), INTENT(IN) :: PHU2M REAL, DIMENSION(KI), INTENT(IN) :: PSWE CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' LOGICAL, DIMENSION (KI), INTENT(IN) :: OD_MASKEXT -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLON -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLAT +REAL , DIMENSION (:), INTENT(IN) :: PLON +REAL , DIMENSION (:), INTENT(IN) :: PLAT ! !* 0.2 declarations of local variables ! diff --git a/src/SURFEX/assim_sean.F90 b/src/SURFEX/assim_sean.F90 index 7fe2c80b13537ceaf029a02cf3ed38d4781f00ce..49b695b877e016796db7791c1298e46400228480 100644 --- a/src/SURFEX/assim_sean.F90 +++ b/src/SURFEX/assim_sean.F90 @@ -29,6 +29,7 @@ SUBROUTINE ASSIM_SEA_n (S, U, & !! ------------- !! Original 04/2012 !! Trygve Aspelien, Separating IO 06/2013 +!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !!-------------------------------------------------------------------- ! ! @@ -65,8 +66,8 @@ REAL,DIMENSION(KI), INTENT(IN) :: PITM CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK' LOGICAL, INTENT(IN) :: OLKEEPEXTZONE LOGICAL, DIMENSION(KI), INTENT(IN) :: OD_MASKEXT -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLON_IN -REAL(KIND=JPRB), DIMENSION (:), INTENT(IN) :: PLAT_IN +REAL , DIMENSION (:), INTENT(IN) :: PLON_IN +REAL , DIMENSION (:), INTENT(IN) :: PLAT_IN ! !* 0.2 declarations of local variables ! diff --git a/src/SURFEX/mode_geo_gauss.F90 b/src/SURFEX/mode_geo_gauss.F90 index bbb2778c54692dbe71e5fd99a3b81f8081b49d6d..9dcb2b0422f3388a6753d70d6b65289eaf6e43f2 100644 --- a/src/SURFEX/mode_geo_gauss.F90 +++ b/src/SURFEX/mode_geo_gauss.F90 @@ -11,6 +11,7 @@ MODULE MODE_GEO_GAUSS !! MODIFICATION !! ------------ !! Original 10/2005 + !! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !! !--------------------------------------------------------------------------- USE EGGANGLES, ONLY : LOLA @@ -106,7 +107,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_TR TYPE (LOLA), INTENT(IN) :: PT_POLE - REAL(KIND=JPRB) :: ZSIN, ZCOS + REAL :: ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ROTATE_G_S',0,ZHOOK_HANDLE) @@ -129,7 +130,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_POLE TYPE (LOLA), DIMENSION(SIZE(PT_TR)) :: PT_REEL - REAL(KIND=JPRB), DIMENSION(SIZE(PT_TR)) :: ZSIN, ZCOS + REAL, DIMENSION(SIZE(PT_TR)) :: ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ROTATE_G_V',0,ZHOOK_HANDLE) @@ -155,7 +156,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_REEL TYPE (LOLA), INTENT(IN) :: PT_POLE - REAL(KIND=JPRB) :: ZSIN, ZCOS + REAL :: ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ANTI_ROTATE_G_S',0,ZHOOK_HANDLE) @@ -177,7 +178,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_POLE TYPE (LOLA), DIMENSION(SIZE(PT_REEL)) :: PT_TR - REAL(KIND=JPRB), DIMENSION(SIZE(PT_REEL)) :: ZSIN, ZCOS + REAL, DIMENSION(SIZE(PT_REEL)) :: ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ANTI_ROTATE_G_V',0,ZHOOK_HANDLE) @@ -202,7 +203,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_COORD REAL, INTENT(IN) :: PCODIL - REAL(KIND=JPRB) :: ZPC2, ZSIN, ZCOS + REAL :: ZPC2, ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ETIR_S',0,ZHOOK_HANDLE) @@ -222,7 +223,7 @@ MODULE MODE_GEO_GAUSS REAL, INTENT(IN) :: PCODIL TYPE (LOLA), DIMENSION(SIZE(PT_COORD)) :: PT_ET - REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: ZPC2, ZSIN, ZCOS + REAL, DIMENSION(SIZE(PT_COORD)) :: ZPC2, ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:ETIR_V',0,ZHOOK_HANDLE) @@ -241,7 +242,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: PT_COORD REAL, INTENT(IN) :: PCODIL - REAL(KIND=JPRB) :: ZPC2, ZSIN, ZCOS + REAL :: ZPC2, ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:RETRE_S',0,ZHOOK_HANDLE) @@ -261,7 +262,7 @@ MODULE MODE_GEO_GAUSS REAL, INTENT(IN) :: PCODIL TYPE (LOLA), DIMENSION(SIZE(PT_COORD)) :: PT_RE - REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: ZPC2, ZSIN, ZCOS + REAL, DIMENSION(SIZE(PT_COORD)) :: ZPC2, ZSIN, ZCOS REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:RETRE_V',0,ZHOOK_HANDLE) @@ -283,7 +284,7 @@ MODULE MODE_GEO_GAUSS TYPE (LOLA), INTENT(IN) :: POLE, PT_COORD REAL, INTENT(IN) :: PCODIL - REAL(KIND=JPRB) :: ZPC2 + REAL :: ZPC2 REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:MAP_FAC_S',0,ZHOOK_HANDLE) ZPC2 = PCODIL*PCODIL @@ -299,7 +300,7 @@ MODULE MODE_GEO_GAUSS REAL, INTENT(IN) :: PCODIL REAL, DIMENSION(SIZE(PT_COORD)) :: PMF - REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: ZPC2 + REAL, DIMENSION(SIZE(PT_COORD)) :: ZPC2 REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_GEO_GAUSS:MAP_FAC_V',0,ZHOOK_HANDLE)