From a9f54bf9cdd4170075892b5e2786c449dd434d2c Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Mon, 18 Feb 2019 18:10:17 +0100 Subject: [PATCH] C.Lac 18/02/2019: adding rain fraction as an output field --- src/LIB/SURCOUCHE/src/mode_field.f90 | 17 +++++++++++++++++ src/MNH/deallocate_model1.f90 | 5 +++++ src/MNH/ini_modeln.f90 | 3 +++ src/MNH/modd_fieldn.f90 | 2 ++ src/MNH/modeln.f90 | 5 +++-- src/MNH/rain_ice.f90 | 20 +++++++++++--------- src/MNH/rain_ice_red.f90 | 15 +++++++++------ src/MNH/resolved_cloud.f90 | 25 ++++++++++++++----------- src/MNH/write_lfin.f90 | 3 ++- 9 files changed, 66 insertions(+), 29 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index e0858d4b3..ff01011b6 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -8,6 +8,7 @@ ! Modifications: ! Philippe Wautelet: 29/01/2019 : small bug correction (null pointers) in FIELDLIST_GOTO_MODEL if NESPGD or PGD ! Philippe Wautelet: 01/02/2019 : bug correction in case XRT is not associated +! 02/2019 C.Lac add rain fraction as an output field !----------------------------------------------------------------- MODULE MODE_FIELD ! @@ -2339,6 +2340,20 @@ TFIELDLIST(IDX)%LTIMEDEP = .TRUE. ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'RAINFR' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'RAINFR' +TFIELDLIST(IDX)%CUNITS = '1' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_Z_Rain FRaction' +TFIELDLIST(IDX)%NGRID = 1 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 3 +TFIELDLIST(IDX)%LTIMEDEP = .TRUE. +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) +IDX = IDX+1 +! END IF ! CPROGRAM=MESONH .OR. DIAG .OR. LFICDF ! ! @@ -3934,6 +3949,7 @@ IF (CPROGRAM == 'MESONH') THEN END IF CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCLDFR CALL FIND_FIELD_ID_FROM_MNHNAME('CIT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XCIT + CALL FIND_FIELD_ID_FROM_MNHNAME('RAINFR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XRAINFR ! END IF ! @@ -4258,6 +4274,7 @@ IF (CPROGRAM == 'MESONH') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('THS_CLD',IID,IRESP); XRTHS_CLD => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('CLDFR', IID,IRESP); XCLDFR => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('CIT', IID,IRESP); XCIT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('RAINFR', IID,IRESP); XRAINFR => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA END IF ! ! MODD_PAST_FIELD_n variables diff --git a/src/MNH/deallocate_model1.f90 b/src/MNH/deallocate_model1.f90 index 9a3b3a5c1..11a577e2e 100644 --- a/src/MNH/deallocate_model1.f90 +++ b/src/MNH/deallocate_model1.f90 @@ -66,6 +66,7 @@ END MODULE MODI_DEALLOCATE_MODEL1 !! 06/2012 M.Tomasini add 2D nesting ADVFRC !! 10/2016 M.Mazoyer New KHKO output fields !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +!! 02/2019 C.Lac add rain fraction as an output field !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -187,6 +188,10 @@ IF ( ASSOCIATED(XCLDFR) .AND. KCALL==2 ) THEN DEALLOCATE(XCLDFR) END IF ! +IF ( ASSOCIATED(XRAINFR) .AND. KCALL==2 ) THEN + DEALLOCATE(XRAINFR) +END IF +! IF ( KCALL == 3 ) THEN DEALLOCATE(XSVT) END IF diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 41441eff3..dd7d2119f 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -281,6 +281,7 @@ END MODULE MODI_INI_MODEL_n ! P. Wautelet 29/01/2019: bug: add missing zero-size allocations ! P. Wautelet 13/02/2019: initialize XALBUV even if no radiation (needed in CH_INTERP_JVALUES) ! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD +!! 02/2019 C.Lac add rain fraction as an output field !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -835,8 +836,10 @@ END IF ! IF (NRR>1) THEN ALLOCATE(XCLDFR(IIU,IJU,IKU)) + ALLOCATE(XRAINFR(IIU,IJU,IKU)) ELSE ALLOCATE(XCLDFR(0,0,0)) + ALLOCATE(XRAINFR(0,0,0)) END IF ! ALLOCATE(XSVT(IIU,IJU,IKU,NSV)) ; XSVT = 0. diff --git a/src/MNH/modd_fieldn.f90 b/src/MNH/modd_fieldn.f90 index 5f5e1847b..c1a0be8f9 100644 --- a/src/MNH/modd_fieldn.f90 +++ b/src/MNH/modd_fieldn.f90 @@ -49,6 +49,7 @@ !! for Theta and r (noted _CLD) !! 04/16 (M.Mazoyer) New supersaturation fields !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +!! 02/2019 C.Lac add rain fraction as an output field !! !------------------------------------------------------------------------------- ! @@ -133,6 +134,7 @@ REAL, DIMENSION(:,:,:), POINTER :: XSRC=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSRCT=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSIGS=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XCLDFR=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XRAINFR=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XCIT=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTHM=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XPABSM=>NULL() diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index 84354e1f3..a903c134f 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -253,6 +253,7 @@ END MODULE MODI_MODEL_n !! 01/2018 (C.Lac) Add VISCOSITY !! Philippe Wautelet: 21/01/2019: add LIO_ALLOW_NO_BACKUP and LIO_NO_WRITE to modd_io_ll ! to allow to disable writes (for bench purposes) +!! 02/2019 C.Lac add rain fraction as an output field !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1802,7 +1803,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D, & XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D, & XSOLORG, XMI,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH, & - XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, & + XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR, & ZSEA, ZTOWN ) DEALLOCATE(ZTOWN) ELSE @@ -1820,7 +1821,7 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN XINPRC,ZINPRC3D,XINPRR, XINPRR3D, XEVAP3D, & XINPRS,ZINPRS3D, XINPRG,ZINPRG3D, XINPRH,ZINPRH3D, & XSOLORG, XMI,ZSPEEDC, ZSPEEDR, ZSPEEDS, ZSPEEDG, ZSPEEDH, & - XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO ) + XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR ) END IF XRTHS_CLD = XRTHS - XRTHS_CLD XRRS_CLD = XRRS - XRRS_CLD diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index 06f621435..7bffe8cfd 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -13,7 +13,7 @@ INTERFACE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN, & + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN, & PRHT, PRHS, PINPRH, PFPR ) ! ! @@ -69,6 +69,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT) :: PINPRR3D! Rain inst precip 3D REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PEVAP3D! Rain evap profile REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRS! Snow instant precip REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRG! Graupel instant precip +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t @@ -86,7 +87,7 @@ END MODULE MODI_RAIN_ICE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN, & + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN, & PRHT, PRHS, PINPRH, PFPR ) ! ###################################################################### ! @@ -238,6 +239,7 @@ END MODULE MODI_RAIN_ICE !! (C. Abiven, Y. Léauté, V. Seigner, S. Riette) Phasing of Turner rain subgrid param !! J.Escobar : 8/2018 : for real*4 , bis => limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG !! P.Wautelet 01/02/2019: add missing initialization for PFPR +!! 02/2019 C.Lac add rain fraction as an output field ! !* 0. DECLARATIONS ! ------------ @@ -316,6 +318,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT) :: PINPRR3D! Rain inst precip 3D REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PEVAP3D! Rain evap profile REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRS! Snow instant precip REAL, DIMENSION(:,:), INTENT(INOUT) :: PINPRG! Graupel instant precip +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t @@ -379,7 +382,6 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: & ZRAY, & ! Cloud Mean radius ZLBC, & ! XLBC weighted by sea fraction ZFSEDC -REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZRAINFR ! Rain fraction REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_HCF3D ! HLCLOUDS cloud fraction in high water content part REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_LCF3D ! HLCLOUDS cloud fraction in low water content part REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),SIZE(PRHODREF,3)) :: ZHLC_HRC3D ! HLCLOUDS cloud water content in high water content part @@ -807,10 +809,10 @@ IF( IMICRO >= 0 ) THEN !Diagnostic of precipitation fraction ZW(:,:,:) = 0. - ZRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) - CALL RAINFR_VERT(ZRAINFR(:,:,:), PRRT(:,:,:)) + PRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) + CALL RAINFR_VERT(PRAINFR(:,:,:), PRRT(:,:,:)) DO JL=1,IMICRO - ZRF(JL)=ZRAINFR(I1(JL),I2(JL),I3(JL)) + ZRF(JL)=PRAINFR(I1(JL),I2(JL),I3(JL)) END DO ! CALL RAIN_ICE_SLOW @@ -900,8 +902,8 @@ IF( IMICRO >= 0 ) THEN ZW(:,:,:) = PCIT(:,:,:) PCIT(:,:,:) = UNPACK( ZCIT(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) ! - ZW(:,:,:) = ZRAINFR(:,:,:) - ZRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) + ZW(:,:,:) = PRAINFR(:,:,:) + PRAINFR(:,:,:) = UNPACK( ZRF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) ! ZW(:,:,:) = 0. ZHLC_HCF3D(:,:,:) = UNPACK( ZHLC_HCF(:),MASK=GMICRO(:,:,:),FIELD=ZW(:,:,:) ) @@ -1082,7 +1084,7 @@ ELSE CALL PRINT_MSG(NVERB_FATAL,'GEN','RAIN_ICE','') END IF !sedimentation of rain fraction -CALL RAINFR_VERT(ZRAINFR, PRRS(:,:,:)*PTSTEP) +CALL RAINFR_VERT(PRAINFR, PRRS(:,:,:)*PTSTEP) ! ! diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90 index b2d30ddf9..eac902614 100644 --- a/src/MNH/rain_ice_red.f90 +++ b/src/MNH/rain_ice_red.f90 @@ -13,7 +13,7 @@ INTERFACE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN, & + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN, & PRHT, PRHS, PINPRH, PFPR ) ! ! @@ -69,6 +69,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT) :: PINPRR3D! Rain inst precip 3D REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEVAP3D! Rain evap profile REAL, DIMENSION(:,:), INTENT(OUT) :: PINPRS! Snow instant precip REAL, DIMENSION(:,:), INTENT(OUT) :: PINPRG! Graupel instant precip +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t @@ -86,7 +87,7 @@ END MODULE MODI_RAIN_ICE_RED PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN, & + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN, & PRHT, PRHS, PINPRH, PFPR ) ! ###################################################################### ! @@ -237,6 +238,7 @@ END MODULE MODI_RAIN_ICE_RED !! J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG !! (C. Abiven, Y. Léauté, V. Seigner, S. Riette) Phasing of Turner rain subgrid param !! (S. Riette) Source code split into several files +!! 02/2019 C.Lac add rain fraction as an output field ! !* 0. DECLARATIONS ! ------------ @@ -314,6 +316,7 @@ REAL, DIMENSION(:,:,:),INTENT(OUT) :: PINPRR3D! Rain inst precip 3D REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEVAP3D! Rain evap profile REAL, DIMENSION(:,:), INTENT(OUT) :: PINPRS! Snow instant precip REAL, DIMENSION(:,:), INTENT(OUT) :: PINPRG! Graupel instant precip +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Sea Mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN! Fraction that is town REAL, DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t @@ -346,7 +349,7 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: & REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZZ_LVFACT, ZZ_LSFACT ! !Diagnostics -REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZRAINFR, & +REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: & & ZHLC_HCF3D,& ! HLCLOUDS cloud fraction in high water content part & ZHLC_LCF3D,& ! HLCLOUDS cloud fraction in low water content part & ZHLC_HRC3D,& ! HLCLOUDS cloud water content in high water content @@ -779,7 +782,7 @@ DO WHILE(ANY(ZTIME(:)<PTSTEP)) ! Loop to *really* compute tendencies &ZRS_TEND, ZRG_TEND, ZRH_TEND, & &ZA_TH, ZA_RV, ZA_RC, ZA_RR, ZA_RI, ZA_RS, ZA_RG, ZA_RH, & &ZB_TH, ZB_RV, ZB_RC, ZB_RR, ZB_RI, ZB_RS, ZB_RG, ZB_RH, & - &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, ZRAINFR) + &ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, PRAINFR) ! External tendencies IF(LEXT_TEND) THEN ZA_TH(:) = ZA_TH(:) + ZEXT_TH(:) @@ -1033,7 +1036,7 @@ IF(IMICRO>0) THEN ZHLC_LRC3D(:,:,:) = UNPACK(ZHLC_LRC(:), MASK=LDMICRO(:,:,:), FIELD=ZW(:,:,:)) PCIT(:,:,:) = UNPACK(ZCIT(:), MASK=LDMICRO(:,:,:), FIELD=PCIT(:,:,:)) ELSE - ZRAINFR(:,:,:)=0. + PRAINFR(:,:,:)=0. ZHLC_HCF3D(:,:,:)=0. ZHLC_LCF3D(:,:,:)=0. ZHLC_HRC3D(:,:,:)=0. @@ -1540,7 +1543,7 @@ IF(LSEDIM_AFTER) THEN CALL BUDGET (PRHS(:,:,:)*PRHODJ(:,:,:), 12, 'SEDI_BU_RRH') ! !sedimentation of rain fraction - CALL ICE4_RAINFR_VERT(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKT, KKL, ZRAINFR, PRRS(:,:,:)*PTSTEP) + CALL ICE4_RAINFR_VERT(IIB, IIE, IIT, IJB, IJE, IJT, IKB, IKE, IKT, KKL, PRAINFR, PRRS(:,:,:)*PTSTEP) ENDIF ! diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 7713aeb71..fce4b46f7 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -22,7 +22,7 @@ INTERFACE PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D, & PSOLORG,PMI, & PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH, & - PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, & + PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, PRAINFR, & PSEA,PTOWN ) ! USE MODD_IO_ll, ONLY: TFILEDATA @@ -133,6 +133,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSUPSAT !sursat REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNACT !concentrtaion d'aérosols activés au temps t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNPRO !concentrtaion d'aérosols activés au temps t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSSPRO !sursat +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR ! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Land Sea mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN ! Town fraction ! @@ -156,7 +157,7 @@ END MODULE MODI_RESOLVED_CLOUD PINPRS,PINPRS3D,PINPRG,PINPRG3D,PINPRH,PINPRH3D, & PSOLORG,PMI, & PSPEEDC, PSPEEDR, PSPEEDS, PSPEEDG, PSPEEDH, & - PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, & + PINDEP, PSUPSAT, PNACT, PNPRO,PSSPRO, PRAINFR, & PSEA,PTOWN ) ! ########################################################################## ! @@ -265,6 +266,7 @@ END MODULE MODI_RESOLVED_CLOUD !! ICE3/ICE4 modified, old version under LRED=F !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! P. Wautelet: 01/02/2019: ZRSMIN is now allocatable (instead of size of XRTMIN which was sometimes not allocated) +!! 02/2019 C.Lac add rain fraction as an output field !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -419,6 +421,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSUPSAT !sursat REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNACT !concentrtaion d'aérosols activés au temps t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNPRO !concentrtaion d'aérosols activés au temps t REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSSPRO !sursat +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PRAINFR ! Rain fraction REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PSEA ! Land Sea mask REAL, DIMENSION(:,:), OPTIONAL, INTENT(IN) :: PTOWN ! Town fraction ! @@ -918,8 +921,8 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,4)>ZRSMIN(4) .OR. & PRS(:,:,:,5)>ZRSMIN(5) .OR. & PRS(:,:,:,6)>ZRSMIN(6) - CALL RAIN_ICE_RED ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1, & - PTSTEP, KRR, LLMICRO, ZEXN, & + CALL RAIN_ICE_RED ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1, & + PTSTEP, KRR, LLMICRO, ZEXN, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& PTHT, PRT(:,:,:,1), PRT(:,:,:,2), & PRT(:,:,:,3), PRT(:,:,:,4), & @@ -927,18 +930,18 @@ SELECT CASE ( HCLOUD ) PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA,PTOWN, PFPR=ZFPR) + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA,PTOWN, PFPR=ZFPR) ELSE - CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1, & - KSPLITR, PTSTEP, KRR, & + CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1, & + KSPLITR, PTSTEP, KRR, & ZDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT,PCLDFR,& PTHT, PRT(:,:,:,1), PRT(:,:,:,2), & PRT(:,:,:,3), PRT(:,:,:,4), & PRT(:,:,:,5), PRT(:,:,:,6), & PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & - PINPRC,PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS,PINDEP, & + PINPRC,PINPRR, PINPRR3D, PEVAP3D, & + PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR, & PSEA,PTOWN, PFPR=ZFPR) END IF ! @@ -1009,7 +1012,7 @@ SELECT CASE ( HCLOUD ) PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & PINPRC, PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PINDEP, PSEA, PTOWN, & + PINPRS, PINPRG, PSIGS, PINDEP, PRAINFR, PSEA, PTOWN, & PRT(:,:,:,7), PRS(:,:,:,7), PINPRH, PFPR=ZFPR ) ELSE CALL RAIN_ICE ( OSEDIC,CSEDIM, HSUBG_AUCV, OWARM,1,IKU,1, & @@ -1021,7 +1024,7 @@ SELECT CASE ( HCLOUD ) PTHS, PRS(:,:,:,1), PRS(:,:,:,2), PRS(:,:,:,3), & PRS(:,:,:,4), PRS(:,:,:,5), PRS(:,:,:,6), & PINPRC, PINPRR, PINPRR3D, PEVAP3D, & - PINPRS, PINPRG, PSIGS,PINDEP, & + PINPRS, PINPRG, PSIGS,PINDEP, PRAINFR, & PSEA, PTOWN, & PRT(:,:,:,7), PRS(:,:,:,7), PINPRH,PFPR=ZFPR ) END IF diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 43257ca72..7d7b49854 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -169,7 +169,7 @@ END MODULE MODI_WRITE_LFIFM_n !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! V. Vionnet 07/2017, add blowing snow variables !! P.Wautelet 11/01/2019: bug correction in write XBL_DEPTH->XSBL_DEPTH -!! +!! C.Lac 18/02/2019: add rain fraction as an output field !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1517,6 +1517,7 @@ ENDIF ! IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN CALL IO_WRITE_FIELD(TPFILE,'CLDFR',XCLDFR) + CALL IO_WRITE_FIELD(TPFILE,'RAINFR',XRAINFR) END IF ! ! -- GitLab