From 6974a6259f9b9ec510b62da36674ac4fffb9519f Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Mon, 18 Feb 2019 18:11:31 +0100 Subject: [PATCH] C.Lac 18/02/2019: adding rain fraction as a LES diagnostic --- src/MNH/ini_lesn.f90 | 5 ++++- src/MNH/lesn.f90 | 8 ++++++++ src/MNH/modd_lesn.f90 | 5 +++++ src/MNH/write_lesn.f90 | 7 ++++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/MNH/ini_lesn.f90 b/src/MNH/ini_lesn.f90 index 3f398b419..3edab6944 100644 --- a/src/MNH/ini_lesn.f90 +++ b/src/MNH/ini_lesn.f90 @@ -33,7 +33,7 @@ !! 06/11/02 (V. Masson) add LES budgets !! 10/2016 (C.Lac) Add droplet deposition !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +!! 02/2019 (C. Lac) Add rain fraction as a LES diagnostic !! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -539,8 +539,10 @@ ELSE END IF IF (LUSERR ) THEN ALLOCATE(XLES_MEAN_Rr (NLES_K,NLES_TIMES,NLES_MASKS)) + ALLOCATE(XLES_MEAN_RF (NLES_K,NLES_TIMES,NLES_MASKS)) ELSE ALLOCATE(XLES_MEAN_Rr (0,0,0)) + ALLOCATE(XLES_MEAN_RF (0,0,0)) END IF IF (LUSERI ) THEN ALLOCATE(XLES_MEAN_Ri (NLES_K,NLES_TIMES,NLES_MASKS)) @@ -646,6 +648,7 @@ IF (LUSERC ) XLES_MEAN_KHt = XUNDEF IF (LUSERC ) XLES_MEAN_Rt = XUNDEF IF (LUSERC ) XLES_MEAN_Rc = XUNDEF IF (LUSERC ) XLES_MEAN_Cf = XUNDEF +IF (LUSERC ) XLES_MEAN_RF = XUNDEF IF (LUSERC ) XLES_MEAN_INDCf = XUNDEF IF (LUSERC ) XLES_MEAN_INDCf2 = XUNDEF IF (LUSERR ) XLES_MEAN_Rr = XUNDEF diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90 index eea67385b..3eae3fc04 100644 --- a/src/MNH/lesn.f90 +++ b/src/MNH/lesn.f90 @@ -42,6 +42,7 @@ !! 10/14 (C.Lac) Correction on user masks !! 10/16 (C.Lac) Add ground droplet deposition amount !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +!! 02/2019 (C. Lac) Add rain fraction as a LES diagnostic !! !! -------------------------------------------------------------------------- ! @@ -107,6 +108,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZEW REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZINDCLD !indice cloud si rc>0 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZINDCLD2 !indice cloud rc>1E-5 REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZCLDFR_LES! CLDFR on LES vertical grid +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZRAINFR_LES! RAINFR on LES vertical grid REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZMASSF ! massflux=rho*w REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZREHU ! relative humidity @@ -333,12 +335,14 @@ IF (LUSERR) THEN ALLOCATE(ZRWP_LES(IIU,IJU)) ALLOCATE(ZINPRR3D_LES (IIU,IJU,NLES_K)) ALLOCATE(ZEVAP3D_LES (IIU,IJU,NLES_K)) + ALLOCATE(ZRAINFR_LES(IIU,IJU,NLES_K)) ELSE ALLOCATE(ZRR_LES (0,0,0)) ALLOCATE(ZMAXWRR2D(0,0)) ALLOCATE(ZRWP_LES(0,0)) ALLOCATE(ZINPRR3D_LES(0,0,0)) ALLOCATE(ZEVAP3D_LES(0,0,0)) + ALLOCATE(ZRAINFR_LES(0,0,0)) END IF IF (LUSERI) THEN ALLOCATE(ZRI_LES (IIU,IJU,NLES_K)) @@ -554,6 +558,7 @@ IF (LUSERR) THEN CALL LES_VER_INT( XRT(:,:,:,IRR) ,ZRR_LES ) CALL LES_VER_INT( XINPRR3D(:,:,:), ZINPRR3D_LES) CALL LES_VER_INT( XEVAP3D(:,:,:), ZEVAP3D_LES) + CALL LES_VER_INT( XRAINFR(:,:,:) ,ZRAINFR_LES ) END IF IF (LUSERC) THEN DO JJ=1,IJU @@ -779,6 +784,8 @@ END IF XLES_ACPRR(NLES_CURRENT_TCOUNT) ) ! conversion de m en mm XLES_ACPRR(NLES_CURRENT_TCOUNT)=XLES_ACPRR(NLES_CURRENT_TCOUNT)*1000. + CALL LES_MEAN_ll ( ZRAINFR_LES, LLES_CURRENT_CART_MASK, & + XLES_MEAN_RF(:,NLES_CURRENT_TCOUNT,1) ) ENDIF ! @@ -1041,6 +1048,7 @@ DEALLOCATE(ZINDCLD2 ) DEALLOCATE(ZINDCLD2D ) DEALLOCATE(ZINDCLD2D2) DEALLOCATE(ZCLDFR_LES) +DEALLOCATE(ZRAINFR_LES) DEALLOCATE(ZMASSF ) DEALLOCATE(ZTEMP ) DEALLOCATE(ZREHU ) diff --git a/src/MNH/modd_lesn.f90 b/src/MNH/modd_lesn.f90 index 582a56618..9fe76c3f8 100644 --- a/src/MNH/modd_lesn.f90 +++ b/src/MNH/modd_lesn.f90 @@ -40,6 +40,7 @@ !! O.Thouron June, 2008 New radiation diagnostics !! 10/2016 (C.Lac) Add droplet deposition ! P. Wautelet 08/02/2019: add missing NULL association for pointers +!! 02/2019 (C. Lac) Add rain fraction as a LES diagnostic !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -113,6 +114,7 @@ TYPE LES_t REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Cf=>NULL() ! <CLDFR> REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf=>NULL() ! <Cf> tq rc>0 (0 OU 1) REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf2=>NULL() ! <Cf> tq rc>1E-5 (0 OU 1) + REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_RF=>NULL() ! <RAINFR> REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Mf=>NULL() ! <Mf> REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHt=>NULL()! <Kh for thet REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHr=>NULL()! <Kh for qr> @@ -694,6 +696,7 @@ REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Rc=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Cf=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_INDCf2=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_RF=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_Mf=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHt=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XLES_MEAN_KHr=>NULL() @@ -1121,6 +1124,7 @@ LES_MODEL(KFROM)%XLES_MEAN_Rc=>XLES_MEAN_Rc LES_MODEL(KFROM)%XLES_MEAN_Cf=>XLES_MEAN_Cf LES_MODEL(KFROM)%XLES_MEAN_INDCf=>XLES_MEAN_INDCf LES_MODEL(KFROM)%XLES_MEAN_INDCf2=>XLES_MEAN_INDCf2 +LES_MODEL(KFROM)%XLES_MEAN_RF=>XLES_MEAN_RF LES_MODEL(KFROM)%XLES_MEAN_Mf=>XLES_MEAN_Mf LES_MODEL(KFROM)%XLES_MEAN_KHt=>XLES_MEAN_KHt LES_MODEL(KFROM)%XLES_MEAN_KHr=>XLES_MEAN_KHr @@ -1549,6 +1553,7 @@ XLES_MEAN_Rc=>LES_MODEL(KTO)%XLES_MEAN_Rc XLES_MEAN_Cf=>LES_MODEL(KTO)%XLES_MEAN_Cf XLES_MEAN_INDCf=>LES_MODEL(KTO)%XLES_MEAN_INDCf XLES_MEAN_INDCf2=>LES_MODEL(KTO)%XLES_MEAN_INDCf2 +XLES_MEAN_RF=>LES_MODEL(KTO)%XLES_MEAN_RF XLES_MEAN_Mf=>LES_MODEL(KTO)%XLES_MEAN_Mf XLES_MEAN_KHt=>LES_MODEL(KTO)%XLES_MEAN_KHt XLES_MEAN_KHr=>LES_MODEL(KTO)%XLES_MEAN_KHr diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90 index 260b53bf0..033e38661 100644 --- a/src/MNH/write_lesn.f90 +++ b/src/MNH/write_lesn.f90 @@ -56,7 +56,8 @@ END MODULE MODI_WRITE_LES_n !! 11/15 (C.Lac) Add production terms of TKE !! 10/2016 (C.Lac) Add droplet deposition !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! +!!!! 02/2019 (C. Lac) Add rain fraction as a LES diagnostic + !! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -382,6 +383,10 @@ IF (LUSERR) & CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RR ",YSUBTITLE(:), & "Mean Rr Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Rr,HLES_AVG) +IF (LUSERR) & +CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RF ",YSUBTITLE(:), & + "Mean RF Profile"//YSUBTITLE(:),"1",XLES_MEAN_RF,HLES_AVG) + IF (LUSERI) & CALL LES_DIACHRO_MASKS(TPDIAFILE,"MEAN_RI ",YSUBTITLE(:), & "Mean Ri Profile"//YSUBTITLE(:),"kg kg-1",XLES_MEAN_Ri,HLES_AVG) -- GitLab