diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 37dc65f1bcfa2cf228dfb31899d74af60030f312..39201561ebff1bd41e5d6ad94a67d7e1a67f0716 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -401,6 +401,7 @@ REAL :: ZEMIW_CLEAR ! ensemble mean clear-sky LW window REAL :: ZRMU0_CLEAR ! ensemble mean clear-sky MU0 REAL :: ZTS_CLEAR ! ensemble mean clear-sky surface temperature. REAL :: ZLSM_CLEAR ! ensemble mean clear-sky land sea-mask +REAL :: ZLAT_CLEAR,ZLON_CLEAR ! !work arrays REAL, DIMENSION(:), ALLOCATABLE :: ZWORK1, ZWORK2, ZWORK3, ZWORK @@ -535,8 +536,8 @@ INTEGER, DIMENSION(3) :: IMINLOC INTEGER :: IINFO_ll LOGICAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: GCLOUD_SURF ! -REAL, DIMENSION(:), ALLOCATABLE :: ZLON,ZLAT -REAL, DIMENSION(:), ALLOCATABLE :: ZLON_SPLIT,ZLAT_SPLIT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZLON,ZLAT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZLON_SPLIT,ZLAT_SPLIT !------------------------------------------------------------------------- !------------------------------------------------------------------------- !------------------------------------------------------------------------- @@ -574,7 +575,6 @@ ENDIF !------------------------------------------------------------------------------ ALLOCATE(ZLAT(KDLON)) ALLOCATE(ZLON(KDLON)) - IF(LCARTESIAN) THEN ZLAT(:) = XLAT0*(XPI/180.) ZLON(:) = XLON0*(XPI/180.) @@ -1099,7 +1099,6 @@ ALLOCATE(ZLSM(KDLON)) ! ALLOCATE(ZALBP(KDLON,KSWB_MNH)) ALLOCATE(ZALBD(KDLON,KSWB_MNH)) - ! ALLOCATE(ZEMIS(KDLON,KLWB_MNH)) ALLOCATE(ZEMIW(KDLON,KLWB_MNH)) @@ -1218,6 +1217,8 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ZRMU0_CLEAR = SUM( ZRMU0(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ZTS_CLEAR = SUM( ZTS(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ZLSM_CLEAR = SUM( ZLSM(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) + ZLAT_CLEAR = SUM( ZLAT(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) + ZLON_CLEAR = SUM( ZLON(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ! ELSE ! no clear columns -> the first column is chosen, without physical meaning: it will not be ! unpacked after the call to the radiation ecmwf routine @@ -1242,7 +1243,9 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ZEMIW_CLEAR = ZEMIW(1,1) ZRMU0_CLEAR = ZRMU0(1) ZTS_CLEAR = ZTS(1) - ZLSM_CLEAR = ZLSM(1) + ZLSM_CLEAR = ZLSM(1) + ZLAT_CLEAR = ZLAT(1) + ZLON_CLEAR = ZLON(1) END IF ! GCLOUD(:,:) = .NOT.GCLEAR(:,:) ! .true. where the column is cloudy @@ -1558,6 +1561,18 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ZLSM(1:ICLOUD_COL) = ZWORK3(1:ICLOUD_COL) ZLSM (ICLOUD_COL+1)= ZLSM_CLEAR ! + ZWORK3(:) = PACK( ZLAT(:),MASK=.NOT.GCLEAR_2D(:) ) + DEALLOCATE(ZLAT) + ALLOCATE(ZLAT(ICLOUD_COL+1)) + ZLAT(1:ICLOUD_COL) = ZWORK3(1:ICLOUD_COL) + ZLAT (ICLOUD_COL+1)= ZLAT_CLEAR + ! + ZWORK3(:) = PACK( ZLON(:),MASK=.NOT.GCLEAR_2D(:) ) + DEALLOCATE(ZLON) + ALLOCATE(ZLON(ICLOUD_COL+1)) + ZLON(1:ICLOUD_COL) = ZWORK3(1:ICLOUD_COL) + ZLON (ICLOUD_COL+1)= ZLON_CLEAR + ! ZWORK3(:) = PACK( ZTS(:),MASK=.NOT.GCLEAR_2D(:) ) DEALLOCATE(ZTS) ALLOCATE(ZTS(ICLOUD_COL+1)) @@ -1894,21 +1909,7 @@ END IF ZQVAVE(:,:) = ZQVAVE(:,:) / (1.+ZQVAVE(:,:)) ! Because ! ZAER = 1e-5*ZAER -! ZO3AVE = 1e-5*ZO3AVE -IF(LCARTESIAN) THEN - ZLAT(:) = XLAT0*(XPI/180.) - ZLON(:) = XLON0*(XPI/180.) -ELSE - DO JJ=IJB,IJE - DO JI=IIB,IIE - IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) - ZLAT(IIJ) = XLAT(JI,JJ)*(XPI/180.) - ZLON(IIJ) = XLON(JI,JJ)*(XPI/180.) - END DO - END DO -END IF -! -! +! ZO3AVE = 1e-5*ZO3AVE! IF( IDIM <= KRAD_COLNBR ) THEN ! ! there is less than KRAD_COLNBR columns to be considered therefore @@ -1980,8 +1981,6 @@ IF( IDIM <= KRAD_COLNBR ) THEN GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) ELSE IF (CRAD == "ECRA") THEN -print*,"IDIM=",IDIM -print*,"SHAPE(ZLON):",SHAPE(ZLON) CALL ECRAD_INTERFACE ( IDIM ,KFLEV, KRAD_DIAG, KAER, & ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & @@ -2266,8 +2265,6 @@ ELSE GAOP,ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT ) ELSE IF (CRAD == "ECRA") THEN - print*,"IDIM_EFF=",IDIM_EFF -print*,"SHAPE(ZLON_SPLIT):",SHAPE(ZLON_SPLIT) CALL ECRAD_INTERFACE ( IDIM_EFF ,KFLEV, KRAD_DIAG, KAER, & ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, ZPAVE_SPLIT, &