From bf9d8ecd764d0828d326da99a3fbba92380b8446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr> Date: Thu, 25 Nov 2021 10:59:39 +0100 Subject: [PATCH] =?UTF-8?q?S=C3=A9bastien=2024/11/2021=20Merge=20MNH->COMM?= =?UTF-8?q?ON=20ice4=5Fcompute=5Fpdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/arome/gmkpack_ignored_files | 2 + src/arome/micro/ice4_compute_pdf.F90 | 242 ------------------ src/arome/micro/ice4_tendencies.F90 | 12 +- .../micro/mode_ice4_compute_pdf.F90} | 56 ++-- 4 files changed, 27 insertions(+), 285 deletions(-) delete mode 100644 src/arome/micro/ice4_compute_pdf.F90 rename src/{mesonh/micro/ice4_compute_pdf.f90 => common/micro/mode_ice4_compute_pdf.F90} (80%) diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index cca761ab0..b571f0bec 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -34,3 +34,5 @@ phyex/micro/modi_ice4_fast_rg.F90 phyex/micro/modi_ice4_fast_rh.F90 phyex/micro/modi_ice4_fast_rs.F90 phyex/micro/modi_ice4_slow.F90 +phyex/micro/ice4_tendencies.F90 +phyex/micro/modi_ice4_tendencies.F90 diff --git a/src/arome/micro/ice4_compute_pdf.F90 b/src/arome/micro/ice4_compute_pdf.F90 deleted file mode 100644 index bcced304e..000000000 --- a/src/arome/micro/ice4_compute_pdf.F90 +++ /dev/null @@ -1,242 +0,0 @@ -SUBROUTINE ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV, HSUBG_PR_PDF, & - PRHODREF, PRCT, PCF, PSIGMA_RC,& - PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, PRF) -!! -!!** PURPOSE -!! ------- -!! Computes the pdf used to split cloud into high and low content parts -!! -!! AUTHOR -!! ------ -!! S. Riette from the plitting of rain_ice source code (nov. 2014) -!! -!! MODIFICATIONS -!! ------------- -!! -! -! -!* 0. DECLARATIONS -! ------------ -! -! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK -USE MODD_RAIN_ICE_DESCR -USE MODD_RAIN_ICE_PARAM -! -IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! -INTEGER, INTENT(IN) :: KSIZE -CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV ! Kind of Subgrid autoconversion method -CHARACTER*80, INTENT(IN) :: HSUBG_PR_PDF ! pdf for subgrid precipitation -REAL, DIMENSION(KSIZE), INTENT(IN) :: PRHODREF ! Reference density -REAL, DIMENSION(KSIZE), INTENT(IN) :: PRCT ! Cloud water m.r. at t -REAL, DIMENSION(KSIZE), INTENT(IN) :: PCF ! Cloud fraction -REAL, DIMENSION(KSIZE), INTENT(IN) :: PSIGMA_RC ! Standard deviation of rc at time t -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HCF ! HLCLOUDS : fraction of High Cloud Fraction in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LCF ! HLCLOUDS : fraction of Low Cloud Fraction in grid - ! note that PCF = PHLC_HCF + PHLC_LCF -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HRC ! HLCLOUDS : LWC that is High LWC in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LRC ! HLCLOUDS : LWC that is Low LWC in grid - ! note that PRC = PHLC_HRC + PHLC_LRC -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRF ! Rain fraction -! -!* 0.2 declaration of local variables -! -REAL, DIMENSION(KSIZE) :: ZRCRAUTC, & !RC value to begin rain formation =XCRIAUTC/RHODREF - ZHLC_RCMAX, & !HLCLOUDS : maximum value for RC in distribution - ZHLC_LRCLOCAL, & !HLCLOUDS : LWC that is Low LWC local in LCF - ZHLC_HRCLOCAL !HLCLOUDS : LWC that is High LWC local in HCF - ! note that ZRC/CF = ZHLC_HRCLOCAL+ ZHLC_LRCLOCAL - ! = PHLC_HRC/HCF+ PHLC_LRC/LCF -REAL :: ZCOEFFRCM -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!------------------------------------------------------------------------------- -! -IF (LHOOK) CALL DR_HOOK('ICE4_COMPUTE_PDF', 0, ZHOOK_HANDLE)! - -!Cloud water split between high and low content part is done according to autoconversion option -ZRCRAUTC(:)=XCRIAUTC/PRHODREF(:) ! Autoconversion rc threshold -IF(HSUBG_AUCV=='NONE') THEN - !Cloud water is entirely in low or high part - WHERE(PRCT(:)>ZRCRAUTC(:)) - PHLC_HCF(:)=1. - PHLC_LCF(:)=0. - PHLC_HRC(:)=PRCT(:) - PHLC_LRC(:)=0. - PRF(:) =1. - ELSEWHERE(PRCT(:)>XRTMIN(2)) - PHLC_HCF(:)=0. - PHLC_LCF(:)=1. - PHLC_HRC(:)=0. - PHLC_LRC(:)=PRCT(:) - PRF(:) =0. - ELSEWHERE - PHLC_HCF(:)=0. - PHLC_LCF(:)=0. - PHLC_HRC(:)=0. - PHLC_LRC(:)=0. - PRF(:) =0. - END WHERE - -ELSEIF(HSUBG_AUCV=='CLFR') THEN - !Cloud water is only in the cloudy part and entirely in low or high part - WHERE(PCF(:)>0.) - WHERE(PRCT(:)/PCF(:)>ZRCRAUTC(:)) - PHLC_HCF(:)=PCF(:) - PHLC_LCF(:)=0. - PHLC_HRC(:)=PRCT(:) - PHLC_LRC(:)=0. - PRF(:) =PCF(:) - ELSEWHERE(PRCT(:)>XRTMIN(2)) - PHLC_HCF(:)=0. - PHLC_LCF(:)=PCF(:) - PHLC_HRC(:)=0.0 - PHLC_LRC(:)=PRCT(:) - PRF(:) =0. - ELSEWHERE - PHLC_HCF(:)=0. - PHLC_LCF(:)=0. - PHLC_HRC(:)=0. - PHLC_LRC(:)=0. - PRF(:) =0. - END WHERE - ELSEWHERE - PHLC_HCF(:)=0. - PHLC_LCF(:)=0. - PHLC_HRC(:)=0. - PHLC_LRC(:)=0. - PRF(:) =0. - END WHERE - -ELSEIF(HSUBG_AUCV=='PDF ') THEN - !Cloud water is split between high and low part according to a PDF - ! 'HLCRECTPDF' : rectangular PDF form - ! 'HLCTRIANGPDF' : triangular PDF form - ! 'HLCQUADRAPDF' : second order quadratic PDF form - ! 'HLCISOTRIPDF' : isocele triangular PDF - ! 'SIGM' : Redelsperger and Sommeria (1986) - IF(HSUBG_PR_PDF=='SIGM') THEN - ! Redelsperger and Sommeria (1986) but organised according to Turner (2011, 2012) - WHERE (PRCT(:)>ZRCRAUTC(:)+PSIGMA_RC(:)) - PHLC_HCF(:)=1. - PHLC_LCF(:)=0. - PHLC_HRC(:)=PRCT(:) - PHLC_LRC(:)=0. - PRF(:) =1. - ELSEWHERE(PRCT(:)> (ZRCRAUTC(:)-PSIGMA_RC(:)) .AND. & - & PRCT(:)<=(ZRCRAUTC(:)+PSIGMA_RC(:)) ) - PHLC_HCF(:)=(PRCT(:)+PSIGMA_RC(:)-ZRCRAUTC(:))/ & - &(2.*PSIGMA_RC(:)) - PHLC_LCF(:)=MAX(0., PCF(:)-PHLC_HCF(:)) - PHLC_HRC(:)=(PRCT(:)+PSIGMA_RC(:)-ZRCRAUTC(:))* & - &(PRCT(:)+PSIGMA_RC(:)+ZRCRAUTC(:))/ & - &(4.*PSIGMA_RC(:)) - PHLC_LRC(:)=MAX(0., PRCT(:)-PHLC_HRC(:)) - PRF(:) =PHLC_HCF(:) - ELSEWHERE(PRCT(:)>XRTMIN(2) .AND. PCF(:)>0.) - PHLC_HCF(:)=0. - PHLC_LCF(:)=PCF(:) - PHLC_HRC(:)=0. - PHLC_LRC(:)=PRCT(:) - PRF(:) =0. - ELSEWHERE - PHLC_HCF(:)=0. - PHLC_LCF(:)=0. - PHLC_HRC(:)=0. - PHLC_LRC(:)=0. - PRF(:) =0. - END WHERE - ! Turner (2011, 2012) - ELSEIF(HSUBG_PR_PDF=='HLCRECTPDF' .OR. HSUBG_PR_PDF=='HLCISOTRIPDF' .OR. & - &HSUBG_PR_PDF=='HLCTRIANGPDF' .OR. HSUBG_PR_PDF=='HLCQUADRAPDF') THEN - ! Calculate maximum value r_cM from PDF forms - IF(HSUBG_PR_PDF=='HLCRECTPDF' .OR. HSUBG_PR_PDF=='HLCISOTRIPDF') THEN - ZCOEFFRCM=2. - ELSE IF(HSUBG_PR_PDF=='HLCTRIANGPDF') THEN - ZCOEFFRCM=3. - ELSE IF(HSUBG_PR_PDF=='HLCQUADRAPDF') THEN - ZCOEFFRCM=4. - END IF - WHERE(PRCT(:).GT.0. .AND. PCF(:).GT.0.) - ZHLC_RCMAX(:)=ZCOEFFRCM*PRCT(:)/PCF(:) - END WHERE - ! Split available water and cloud fraction in two parts - ! Calculate local mean values int he low and high parts for the 3 PDF forms: - IF(HSUBG_PR_PDF=='HLCRECTPDF') THEN - WHERE(PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).GT.ZRCRAUTC(:)) - ZHLC_LRCLOCAL(:)=0.5*ZRCRAUTC(:) - ZHLC_HRCLOCAL(:)=( ZHLC_RCMAX(:) + ZRCRAUTC(:))/2.0 - END WHERE - ELSE IF(HSUBG_PR_PDF=='HLCTRIANGPDF') THEN - WHERE(PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).GT.ZRCRAUTC(:)) - ZHLC_LRCLOCAL(:)=( ZRCRAUTC(:) *(3.0 * ZHLC_RCMAX(:) - 2.0 * ZRCRAUTC(:) ) ) & - / (3.0 * (2.0 * ZHLC_RCMAX(:) - ZRCRAUTC(:) ) ) - ZHLC_HRCLOCAL(:)=(ZHLC_RCMAX(:) + 2.0*ZRCRAUTC(:)) / 3.0 - END WHERE - ELSE IF(HSUBG_PR_PDF=='HLCQUADRAPDF') THEN - WHERE(PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).GT.ZRCRAUTC(:)) - ZHLC_LRCLOCAL(:)=(3.0 *ZRCRAUTC(:)**3 - 8.0 *ZRCRAUTC(:)**2 * ZHLC_RCMAX(:) & - + 6.0*ZRCRAUTC(:) *ZHLC_RCMAX(:)**2 ) & - / & - (4.0* ZRCRAUTC(:)**2 -12.0*ZRCRAUTC(:) *ZHLC_RCMAX(:) & - + 12.0 * ZHLC_RCMAX(:)**2 ) - ZHLC_HRCLOCAL(:)=(ZHLC_RCMAX(:) + 3.0*ZRCRAUTC(:))/4.0 - END WHERE - ELSE IF(HSUBG_PR_PDF=='HLCISOTRIPDF') THEN - WHERE(PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).GT.ZRCRAUTC(:)) - WHERE((PRCT(:) / PCF(:)).LE.ZRCRAUTC(:)) - ZHLC_LRCLOCAL(:)=( (ZHLC_RCMAX(:))**3 & - -(12.0 * (ZHLC_RCMAX(:))*(ZRCRAUTC(:))**2) & - +(8.0 * ZRCRAUTC(:)**3) ) & - /( (6.0 * (ZHLC_RCMAX(:))**2) & - -(24.0 * (ZHLC_RCMAX(:)) * ZRCRAUTC(:)) & - +(12.0 * ZRCRAUTC(:)**2) ) - ZHLC_HRCLOCAL(:)=( ZHLC_RCMAX(:) + 2.0 * ZRCRAUTC(:) )/3.0 - ELSEWHERE - ZHLC_LRCLOCAL(:)=(2.0/3.0) * ZRCRAUTC(:) - ZHLC_HRCLOCAL(:)=(3.0*ZHLC_RCMAX(:)**3 - 8.0*ZRCRAUTC(:)**3) & - / (6.0 * ZHLC_RCMAX(:)**2 - 12.0*ZRCRAUTC(:)**2) - END WHERE - END WHERE - END IF - ! Compare r_cM to r_cR to know if cloud water content is high enough to split in two parts or not - WHERE (PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).GT.ZRCRAUTC(:)) - ! Calculate final values for LCF and HCF: - PHLC_LCF(:)=PCF(:) & - *(ZHLC_HRCLOCAL- & - (PRCT(:) / PCF(:))) & - / (ZHLC_HRCLOCAL-ZHLC_LRCLOCAL) - PHLC_HCF(:)=MAX(0., PCF(:)-PHLC_LCF(:)) - ! - ! Calculate final values for LRC and HRC: - PHLC_LRC(:)=ZHLC_LRCLOCAL*PHLC_LCF(:) - PHLC_HRC(:)=MAX(0., PRCT(:)-PHLC_LRC(:)) - ELSEWHERE (PRCT(:).GT.0. .AND. PCF(:).GT.0. .AND. ZHLC_RCMAX(:).LE.ZRCRAUTC(:)) - ! Put all available cloud water and his fraction in the low part - PHLC_LCF(:)=PCF(:) - PHLC_HCF(:)=0. - PHLC_LRC(:)=PRCT(:) - PHLC_HRC(:)=0. - ELSEWHERE - PHLC_LCF(:)=0. - PHLC_HCF(:)=0. - PHLC_LRC(:)=0. - PHLC_HRC(:)=0. - END WHERE - PRF(:)=PHLC_HCF(:) !Precipitation fraction - ELSE - !wrong HSUBG_PR_PDF case - CALL ABORT - STOP 'wrong HSUBG_PR_PDF case' - ENDIF -ELSE - !wrong HSUBG_AUCV case - CALL ABORT - STOP 'wrong HSUBG_AUCV case' -ENDIF -! -IF (LHOOK) CALL DR_HOOK('ICE4_COMPUTE_PDF', 1, ZHOOK_HANDLE) -END SUBROUTINE ICE4_COMPUTE_PDF diff --git a/src/arome/micro/ice4_tendencies.F90 b/src/arome/micro/ice4_tendencies.F90 index aac00c1c7..9da5eda7c 100644 --- a/src/arome/micro/ice4_tendencies.F90 +++ b/src/arome/micro/ice4_tendencies.F90 @@ -45,7 +45,7 @@ USE MODI_ICE4_NUCLEATION USE MODI_ICE4_RRHONG USE MODI_ICE4_RIMLTC USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD -USE MODI_ICE4_COMPUTE_PDF +USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF USE MODI_ICE4_RAINFR_VERT USE MODE_ICE4_SLOW, ONLY: ICE4_SLOW USE MODE_ICE4_WARM, ONLY: ICE4_WARM @@ -174,7 +174,8 @@ REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & & ZRF, & & ZLBDAR, ZLBDAS, ZLBDAG, ZLBDAH, ZLBDAR_RF, & & ZRGSI, ZRGSI_MR -REAL, DIMENSION(KSIZE) :: PHLI_HCF +REAL, DIMENSION(KSIZE) :: PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI +CHARACTER(len=80) :: HSUBG_AUCV_RI='NONE' REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D INTEGER :: JL REAL, DIMENSION(KSIZE) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise @@ -295,9 +296,10 @@ IF(KSIZE>0) THEN ENDIF ! !Cloud water split between high and low content part is done here - CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_PR_PDF,& - PRHODREF, ZRCT, PCF, PSIGMA_RC,& - PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, ZRF) + CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF,& + PRHODREF, ZRCT, ZRIT, PCF, ZT, PSIGMA_RC,& + PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC,& + PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRF) IF(HSUBG_RC_RR_ACCR=='PRFR') THEN !Diagnostic of precipitation fraction PRAINFR(:,:,:)=UNPACK(ZRF(:), MASK=LDMICRO(:,:,:), FIELD=PRAINFR(:,:,:)) diff --git a/src/mesonh/micro/ice4_compute_pdf.f90 b/src/common/micro/mode_ice4_compute_pdf.F90 similarity index 80% rename from src/mesonh/micro/ice4_compute_pdf.f90 rename to src/common/micro/mode_ice4_compute_pdf.F90 index bc465eb65..2058f4e5a 100644 --- a/src/mesonh/micro/ice4_compute_pdf.f90 +++ b/src/common/micro/mode_ice4_compute_pdf.F90 @@ -3,37 +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. !----------------------------------------------------------------- -MODULE MODI_ICE4_COMPUTE_PDF -INTERFACE -SUBROUTINE ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, & - PRHODREF, PRCT, PRIT, PCF, PT, PSIGMA_RC,& - PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, & - PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, PRF) +MODULE MODE_ICE4_COMPUTE_PDF IMPLICIT NONE -INTEGER, INTENT(IN) :: KSIZE -CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC ! Kind of Subgrid autoconversion method -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI ! Kind of Subgrid autoconversion method -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_PR_PDF ! pdf for subgrid precipitation -REAL, DIMENSION(KSIZE), INTENT(IN) :: PRHODREF ! Reference density -REAL, DIMENSION(KSIZE), INTENT(IN) :: PRCT ! Cloud water m.r. at t -REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Ice Crystal m.r. at t -REAL, DIMENSION(KSIZE), INTENT(IN) :: PCF ! Cloud fraction -REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature -REAL, DIMENSION(KSIZE), INTENT(IN) :: PSIGMA_RC ! Standard deviation of rc at time t -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HCF ! HLCLOUDS : fraction of High Cloud Fraction in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LCF ! HLCLOUDS : fraction of Low Cloud Fraction in grid - ! note that PCF = PHLC_HCF + PHLC_LCF -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HRC ! HLCLOUDS : LWC that is High LWC in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LRC ! HLCLOUDS : LWC that is Low LWC in grid - ! note that PRC = PHLC_HRC + PHLC_LRC -REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_HCF ! -REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_LCF -REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_HRI ! -REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_LRI ! -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRF ! Rain fraction -END SUBROUTINE ICE4_COMPUTE_PDF -END INTERFACE -END MODULE MODI_ICE4_COMPUTE_PDF +CONTAINS SUBROUTINE ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, & PRHODREF, PRCT, PRIT, PCF, PT, PSIGMA_RC,& PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, & @@ -56,8 +28,10 @@ SUBROUTINE ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, & ! ------------ ! ! +USE PARKIND1, ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE MODD_RAIN_ICE_DESCR, ONLY: XRTMIN -USE MODD_RAIN_ICE_PARAM, ONLY: XCRIAUTC,XBCRIAUTI,XACRIAUTI,XCRIAUTI +USE MODD_RAIN_ICE_PARAM, ONLY: XCRIAUTC, XBCRIAUTI, XACRIAUTI, XCRIAUTI USE MODD_CST, ONLY : XTT ! USE MODE_MSG @@ -68,7 +42,7 @@ IMPLICIT NONE ! INTEGER, INTENT(IN) :: KSIZE CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC ! Kind of Subgrid autoconversion method for cloud water -CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI ! Kind of Subgrid autoconversion method for cloud water +CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI ! Kind of Subgrid autoconversion method for cloud ice CHARACTER(LEN=80), INTENT(IN) :: HSUBG_PR_PDF ! pdf for subgrid precipitation REAL, DIMENSION(KSIZE), INTENT(IN) :: PRHODREF ! Reference density REAL, DIMENSION(KSIZE), INTENT(IN) :: PRCT ! Cloud water m.r. at t @@ -76,11 +50,12 @@ REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Ice Crystal m.r. at t REAL, DIMENSION(KSIZE), INTENT(IN) :: PCF ! Cloud fraction REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature REAL, DIMENSION(KSIZE), INTENT(IN) :: PSIGMA_RC ! Standard deviation of rc at time t -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HCF ! HLCLOUDS : fraction of High Cloud Fraction in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LCF ! HLCLOUDS : fraction of Low Cloud Fraction in grid +!Note for INTENT STATUS: in 'ADJU' case the PHL?_??? variables must be able to "cross" the subroutine untouched +REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLC_HCF ! HLCLOUDS : fraction of High Cloud Fraction in grid +REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLC_LCF ! HLCLOUDS : fraction of Low Cloud Fraction in grid ! note that PCF = PHLC_HCF + PHLC_LCF -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_HRC ! HLCLOUDS : LWC that is High LWC in grid -REAL, DIMENSION(KSIZE), INTENT(OUT) :: PHLC_LRC ! HLCLOUDS : LWC that is Low LWC in grid +REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLC_HRC ! HLCLOUDS : LWC that is High LWC in grid +REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLC_LRC ! HLCLOUDS : LWC that is Low LWC in grid ! note that PRC = PHLC_HRC + PHLC_LRC REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_HCF REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PHLI_LCF @@ -97,10 +72,13 @@ REAL, DIMENSION(KSIZE) :: ZRCRAUTC, & !RC value to begin rain formation =XC ZHLC_HRCLOCAL, & !HLCLOUDS : LWC that is High LWC local in HCF ! note that ZRC/CF = ZHLC_HRCLOCAL+ ZHLC_LRCLOCAL ! = PHLC_HRC/HCF+ PHLC_LRC/LCF - ZSUMRC, ZSUMRI + ZSUMRC, ZSUMRI REAL :: ZCOEFFRCM +REAL(KIND=JPRB) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! +IF (LHOOK) CALL DR_HOOK('ICE4_COMPUTE_PDF', 0, ZHOOK_HANDLE)! + !Cloud water split between high and low content part is done according to autoconversion option ZRCRAUTC(:)=XCRIAUTC/PRHODREF(:) ! Autoconversion rc threshold IF(HSUBG_AUCV_RC=='NONE') THEN @@ -148,7 +126,7 @@ ELSEIF(HSUBG_AUCV_RC=='ADJU') THEN ELSEWHERE PHLC_LRC(:)=0. PHLC_HRC(:)=0. - ENDWHERE + ENDWHERE ELSEIF(HSUBG_AUCV_RC=='PDF ') THEN !Cloud water is split between high and low part according to a PDF ! 'HLCRECTPDF' : rectangular PDF form @@ -321,4 +299,6 @@ ENDIF ! PRF=MAX(PHLC_HCF,PHLI_HCF) ! +IF (LHOOK) CALL DR_HOOK('ICE4_COMPUTE_PDF', 1, ZHOOK_HANDLE) END SUBROUTINE ICE4_COMPUTE_PDF +END MODULE MODE_ICE4_COMPUTE_PDF -- GitLab