Skip to content
Snippets Groups Projects
Commit b6c841c4 authored by VIE Benoit's avatar VIE Benoit
Browse files

add set_conc routines \n bugfix initial values in apl_arome

parent d873f04e
No related branches found
No related tags found
No related merge requests found
......@@ -392,6 +392,8 @@ REAL(KIND=JPRB) :: ZZRV_UP_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZTKES_(YDCPG
REAL(KIND=JPRB) :: ZDZZ_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZZZ_F_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZDZZ_F_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
REAL(KIND=JPRB) :: ZCIT_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZMFM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZEXNREFM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
REAL(KIND=JPRB) :: ZSIGM_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZNEBMNH_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZEVAP_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
! additions for future ice cloud fraction and precipitation fraction
REAL(KIND=JPRB) :: ZICEFR_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZPRCFR_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
! additions for MF scheme (Pergaud et al)
REAL(KIND=JPRB) :: ZSIGMF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZRC_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZRI_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
REAL(KIND=JPRB) :: ZCF_MF_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZAERD_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG), ZCVTENDT_(YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG)
......@@ -655,6 +657,7 @@ LOGICAL :: LLRAD
LOGICAL :: LLSWAP_THS, LLSWAP_RS, LLSWAP_SVS, LLSWAP_SVM, LLSWAP_LIMAS ! logical to swap or not pointers in and out
LOGICAL :: LLHN(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG)
LOGICAL :: LNUDGLHNREAD
LOGICAL :: LLIMAINIT
! Characters
CHARACTER(LEN=11) :: CLNAME
......@@ -1061,6 +1064,17 @@ ZINVDT=1/YDCPG_OPTS%ZDTPHY
ZINVG=1._JPRB/RG
!set concentration for LIMA
LLIMAINIT=.FALSE.
IF (YDCPG_OPTS%KSTEP==0) THEN
LLIMAINIT=.TRUE.
ZP1EZDIAG(:,:,1)=0._JPRB
ZP1EZDIAG(:,:,2)=0._JPRB
ZP1EZDIAG(:,:,3)=0._JPRB
ZP1EZDIAG(:,:,4)=0._JPRB
ZP1EZDIAG(:,:,5)=0._JPRB
ENDIF
! initialisation de ZDTMSE
IF (LLXFUMSE) THEN
ZDTMSE=0.01_JPRB
......@@ -1117,6 +1131,8 @@ IF (INIT0 >= 0) THEN
ZMFM_(:,:)=ZVALUE
ZSIGM_(:,:)=ZVALUE
ZNEBMNH_(:,:)=ZVALUE
ZICEFR_(:,:)=ZVALUE
ZPRCFR_(:,:)=ZVALUE
ZICLDFR_(:,:)=ZVALUE
ZWCLDFR_(:,:)=ZVALUE
ZSSIO_(:,:)=ZVALUE
......@@ -1597,8 +1613,8 @@ IF (LMICRO) THEN
& NLIMA, YDCPG_OPTS%KSTEP+1, LOSUBG_COND, LOSIGMAS, LOCND2, CCONDENS, CLAMBDA3, ZDT, VSIGQSAT, ZZZ_F_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), &
& ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), &
& ZRM_, ZLIMAM_, ZSIGM_, ZPTRWNU_, ZDTHRAD_, ZMFM_, ZRC_MF_, ZRI_MF_, ZCF_MF_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_, &
& ZLIMAS_, ZSRCS__(:, 1:YDCPG_OPTS%KFLEVG), ZNEBMNH_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH &
& )
& ZLIMAS_, ZSRCS__(:, 1:YDCPG_OPTS%KFLEVG), ZNEBMNH_, ZICEFR_, ZPRCFR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH, &
& LLIMAINIT )
ELSE
! CALL ARO_ADJUST (KLON,KIDIA,KFDIA,KLEV,NRR,& !this is the target version
......@@ -3195,7 +3211,7 @@ IF (LMICRO) THEN
& NSPLITR, NSPLITG, ZDT, ZDZZ_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), &
& ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZPTRWNU_, ZDTHRAD_, ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRM_, &
& ZLIMAM_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_, ZLIMAS_, ZEVAP_, ZINPRR_NOTINCR_, &
& ZINPRS_NOTINCR_, ZINPRG_NOTINCR_, ZINPRH_NOTINCR_, ZPFPR_, ZNEBMNH_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, &
& ZINPRS_NOTINCR_, ZINPRG_NOTINCR_, ZINPRH_NOTINCR_, ZPFPR_, ZNEBMNH_, ZICEFR_, ZPRCFR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, &
& YDMODEL%YRML_DIAG%YRMDDH)
ELSE
!CALL ARO_RAIN_ICE (NPROMICRO,KLEV,IKU,IKL,KLON,KLEV,KFDIA,NRR,KSTEP+1,& !this is the target version
......
......@@ -6,8 +6,8 @@
PPABSM, PTHT, PRT, PSVT, PSIGS, &
PW_NU, PDTHRAD, &
PMFCONV, PRC_MF, PRI_MF, PCF_MF, &
PTHS, PRS, PSVS, PSRCS, PCLDFR, &
YDDDH, YDLDDH, YDMDDH)
PTHS, PRS, PSVS, PSRCS, PCLDFR, PICEFR, PPRCFR, &
YDDDH, YDLDDH, YDMDDH, LLIMAINIT )
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! ##########################################################################
......@@ -88,6 +88,8 @@ USE MODD_PARAM_LIMA
USE MODD_NSV
!
USE MODI_LIMA_ADJUST_SPLIT
USE MODE_SET_CONC_LIMA
USE MODE_SET_CONC_LIMA_LBC
USE MODE_FILL_DIMPHYEX, ONLY: FILL_DIMPHYEX
!USE MODE_BUDGET, ONLY: BUDGET_DDH
!
......@@ -152,12 +154,16 @@ REAL, DIMENSION(KLON,1,KLEV), INTENT(OUT) :: PSRCS ! Second-order flux
! s'rc'/2Sigma_s2 at time t+1
! multiplied by Lambda_3
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR! Cloud fraction
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR! Cloud fraction
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR! Cloud fraction
!
!
TYPE(TYP_DDH), INTENT(INOUT), TARGET :: YDDDH
TYPE(TLDDH), INTENT(IN), TARGET :: YDLDDH
TYPE(TMDDH), INTENT(IN), TARGET :: YDMDDH
!
LOGICAL, INTENT(IN) :: LLIMAINIT
!
!* 0.2 Declarations of local variables :
CHARACTER(LEN=4) :: HCLOUD ! kind of cloud
......@@ -178,7 +184,6 @@ REAL, DIMENSION(SIZE(PZZF,1),SIZE(PZZF,2),SIZE(PZZF,3)):: ZCOR
! for the correction of negative rv
REAL, DIMENSION(SIZE(PZZF,1),SIZE(PZZF,2),SIZE(PZZF,3)):: ZZZ
! model layer height
REAL, DIMENSION(KLON,1,KLEV):: ZICEFR
REAL :: ZMASSTOT ! total mass for one water category
! including the negative values
REAL :: ZMASSPOS ! total mass for one water category
......@@ -218,7 +223,21 @@ ZT(:,:,:)= PTHT(:,:,:)*PEXNREF(:,:,:)
ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT)
ZLS(:,:,:)=XLSTT +(XCPV-XCI) *(ZT(:,:,:)-XTT)
ZCPH(:,:,:)=XCPD +XCPV*2.*PTSTEP*PRS(:,:,:,1)
!
!set concentration for LIMA
PRS = PRS * PTSTEP
PSVS = PSVS * PTSTEP
IF (LLIMAINIT) THEN
CALL SET_CONC_LIMA (1,'ICE3',PRHODREF,PRT,PSVT)
CALL SET_CONC_LIMA (1,'ICE3',PRHODREF,PRS,PSVS)
ELSE
CALL SET_CONC_LIMA_LBC (1,'ICE3',PRHODREF,PRT,PSVT)
CALL SET_CONC_LIMA_LBC (1,'ICE3',PRHODREF,PRS,PSVS)
END IF
PRS = PRS / PTSTEP
PSVS = PSVS / PTSTEP
!print *, "aro_adjust_lima 2"
!
!* 3. REMOVE NEGATIVE VALUES
! ----------------------
......@@ -339,7 +358,7 @@ ENDDO
PRHODREF=PRHODREF, PRHODJ=PRHODJ, PEXNREF=PEXNREF, PSIGS=PSIGS, PMFCONV=PMFCONV, &
PPABST=PPABSM, PPABSTT=PPABSM, PZZ=ZZZ, PDTHRAD=PDTHRAD, PW_NU=PW_NU, &
PRT=PRT, PRS=PRS, PSVT=PSVT, PSVS=PSVS, &
PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR, PICEFR=ZICEFR, PRC_MF=PRC_MF, PRI_MF=PRI_MF, PCF_MF=PCF_MF )
PTHS=PTHS, PSRCS=PSRCS, PCLDFR=PCLDFR, PICEFR=PICEFR, PRC_MF=PRC_MF, PRI_MF=PRI_MF, PCF_MF=PCF_MF )
!
!-------------------------------------------------------------------------------
!
......
......@@ -6,8 +6,8 @@ SUBROUTINE ARO_ADJUST_LIMA(KKA,KKU,KKL,KLON,KLEV,KFDIA, KRR, KSV, KTCOUNT,&
& PPABSM, PTHT, PRT, PSVT, PSIGS,&
& PW_NU, PDTHRAD,&
& PMFCONV, PRC_MF, PRI_MF, PCF_MF,&
& PTHS, PRS, PSVS, PSRCS, PCLDFR,&
& YDDDH,YDLDDH,YDMDDH)
& PTHS, PRS, PSVS, PSRCS, PCLDFR, PICEFR, PPRCFR, &
& YDDDH,YDLDDH,YDMDDH, LLIMAINIT)
USE PARKIND1 ,ONLY : JPIM ,JPRB
USE DDH_MIX, ONLY : TYP_DDH
USE YOMLDDH, ONLY : TLDDH
......@@ -46,8 +46,11 @@ REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PRS
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KSV), INTENT(INOUT) :: PSVS
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(OUT) :: PSRCS
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR
TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
TYPE(TLDDH), INTENT(IN) :: YDLDDH
TYPE(TMDDH), INTENT(IN) :: YDMDDH
LOGICAL, INTENT(IN) :: LLIMAINIT
END SUBROUTINE ARO_ADJUST_LIMA
END INTERFACE
......@@ -5,7 +5,7 @@
PTHS, PRS, PSVS, PEVAP, &
PINPRR,PINPRS, &
PINPRG,PINPRH,PFPR, &
PCLDFR, &
PCLDFR,PICEFR,PPRCFR, &
YDDDH, YDLDDH, YDMDDH )
USE PARKIND1, ONLY : JPRB
......@@ -114,7 +114,10 @@ REAL, DIMENSION(KLON,1), INTENT(INOUT) :: PINPRG! Graupel instant precip
REAL, DIMENSION(KLON,1), INTENT(INOUT) :: PINPRH! Hail instant precip
REAL, DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PFPR ! upper-air precip
!
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR ! ice cloud fraction
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR ! liquid cloud fraction
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR ! ice cloud fraction
REAL, DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR ! precipitation fraction
!
TYPE(TYP_DDH), INTENT(INOUT), TARGET :: YDDDH
TYPE(TLDDH), INTENT(IN), TARGET :: YDLDDH
TYPE(TMDDH), INTENT(IN), TARGET :: YDMDDH
......@@ -139,7 +142,6 @@ REAL, DIMENSION(KLON,1,KLEV):: &
REAL, DIMENSION(KLON,1):: ZINPRC ! surf cloud sedimentation
! for the correction of negative rv
REAL, DIMENSION(KLON,1):: ZINPRI, ZINDEP ! surf cloud ice sedimentation
REAL, DIMENSION(KLON,1,KLEV):: ZICEFR, ZPRCFR
REAL :: ZMASSTOT ! total mass for one water category
! including the negative values
REAL :: ZMASSPOS ! total mass for one water category
......@@ -310,7 +312,7 @@ CALL LIMA (D=YLDIMPHYEX, CST=CST, BUCONF=TBUCONF, TBUDGETS=YLBUDGET, KBUDGETS=SI
PDTHRAD=PDTHRAD, PTHT=PTHT, PRT=PRT, PSVT=PSVT, PW_NU=PW_NU, &
PTHS=PTHS, PRS=PRS, PSVS=PSVS, &
PINPRC=ZINPRC, PINDEP=ZINDEP, PINPRR=PINPRR, PINPRI=ZINPRI, PINPRS=PINPRS, PINPRG=PINPRG, PINPRH=PINPRH, &
PEVAP3D=PEVAP, PCLDFR=PCLDFR, PICEFR=ZICEFR, PPRCFR=ZPRCFR, PFPR=PFPR )
PEVAP3D=PEVAP, PCLDFR=PCLDFR, PICEFR=PICEFR, PPRCFR=PPRCFR, PFPR=PFPR )
!add ZINPRC in PINPRR
PINPRR=PINPRR+ZINPRC
!-------------------------------------------------------------------------------
......
......@@ -5,7 +5,7 @@ SUBROUTINE ARO_LIMA(KKA,KKU,KKL,KLON,KLEV, KFDIA, KRR, KSV, KTCOUNT, KSPLITR, KS
& PTHS, PRS, PSVS, PEVAP,&
& PINPRR,PINPRS,&
& PINPRG,PINPRH,PFPR,&
& PCLDFR,&
& PCLDFR,PICEFR,PPRCFR,&
& YDDDH,YDLDDH,YDMDDH)
USE PARKIND1 ,ONLY : JPIM ,JPRB
USE DDH_MIX, ONLY : TYP_DDH
......@@ -43,6 +43,8 @@ REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRG
REAL(KIND=JPRB), DIMENSION(KLON,1), INTENT(INOUT) :: PINPRH
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV,KRR), INTENT(INOUT) :: PFPR
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PCLDFR
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PICEFR
REAL(KIND=JPRB), DIMENSION(KLON,1,KLEV), INTENT(INOUT) :: PPRCFR
TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
TYPE(TLDDH), INTENT(IN) :: YDLDDH
TYPE(TMDDH), INTENT(IN) :: YDMDDH
......
!MNH_LIC Copyright 2000-2020 CNRS, Meteo-France and Universite Paul Sabatier
!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.
!-----------------------------------------------------------------
!#######################################
module mode_set_conc_lima_lbc
!#######################################
implicit none
contains
! ###########################################################################
SUBROUTINE SET_CONC_LIMA_LBC( kmi, HGETCLOUD, PRHODREF, PRT, PSVT )
! ###########################################################################
!
!!**** *SET_CONC_LIMA * - initialize droplet, raindrop and ice
!! concentration for a RESTArt simulation of the LIMA scheme
!!
!!
!! PURPOSE
!! -------
!! The purpose of this routine is to initialize cloud droplet and rain drop
!! concentrations when the cloud droplet and rain drop mixing ratios are
!! only available (generally from a previous run using the Kessler scheme).
!! This routine is used to initialize the droplet/drop concentrations
!! using the r_c and r_r of a previous REVE or KESS run but also to compute
!! the LB tendencies in ONE_WAY$n in case of grid-nesting when the optional
!! argument PTIME is set (a LIMA run embedded in a KESS or REVE run).
!!
!!** METHOD
!! ------
!! The method assumes a Csk law for the activation of aerososl with "s"
!! the supersaturation (here 0.05 % is chosen). A Marshall-Palmer law with
!! N_o=10**(-7) m**(-4) is assumed for the rain drop concentration.
!! The initialization of the PSVT is straightforward for the cloud droplets
!! while N_r=N_0/Lambda_r with Rho*r_r=Pi*Rho_w*N_0/(Lambda_r**4) is used for
!! the rain drops. The HGETCLOUD test is used to discriminate between the
!! 'REVE' and 'KESS' options for CCLOUD in the previous run (from which
!! PRT was calculated).
!!
!! EXTERNAL
!! --------
!! None
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! Module MODD_RAIN_C2R2_DESCR, ONLY : XRTMIN, XCTMIN
!! Module MODD_RAIN_C2R2_KHKO_PARAM, ONLY : XCONCC_INI, XCONCR_PARAM_INI
!! Module MODD_CONF, ONLY : NVERB
!!
!! REFERENCE
!! ---------
!! Book2 of documentation ( routine SET_CONC_RAIN_C2R2 )
!!
!! AUTHOR
!! ------
!! J.-P. Pinty * Laboratoire d'Aerologie*
!! P. Jabouille * CNRM/GMME *
!! B. Vié * CNRM/GMME *
!!
!! MODIFICATIONS
!! -------------
!! Original 15/11/00
!! 2014 G.Delautier : remplace MODD_RAIN_C2R2_PARAM par MODD_RAIN_C2R2_KHKO_PARAM *
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
! B. Vié 03/03/2020: secure physical tests
! P. Wautelet 04/06/2020: correct array start for microphys. concentrations + add kmi dummy argument
! (this subroutine is also called for other models)
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_PARAM_LIMA, ONLY : XRTMIN, XCTMIN, NMOD_CCN, NMOD_IFN, &
NMOM_C, NMOM_R, NMOM_I
USE MODD_PARAM_LIMA_COLD, ONLY : XAI, XBI, XAS, XBS
USE MODD_PARAM_LIMA_MIXED,ONLY : XAG, XBG, XAH, XBH
USE MODD_NSV, ONLY : NSV_LIMA_BEG_A, NSV_LIMA_NC_A, NSV_LIMA_NR_A, NSV_LIMA_CCN_ACTI_A, &
NSV_LIMA_NI_A, NSV_LIMA_NS_A, NSV_LIMA_NG_A, NSV_LIMA_NH_A, NSV_LIMA_IFN_NUCL_A
USE MODD_CST, ONLY : XPI, XRHOLW, XRHOLI
USE MODD_CONF, ONLY : NVERB
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
integer, intent(in) :: kmi ! Model number
CHARACTER (LEN=4), INTENT(IN) :: HGETCLOUD ! Get indicator
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ! Reference density
!
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRT ! microphysical mixing ratios
!
REAL, DIMENSION(:,:,:,NSV_LIMA_BEG_A(kmi):), INTENT(INOUT):: PSVT ! microphys. concentrations
!
!
!* 0.2 Declarations of local variables :
!
REAL :: ZCONC
!
!-------------------------------------------------------------------------------
!* 1. RETRIEVE LOGICAL UNIT NUMBER
! ----------------------------
!
!
!* 2. INITIALIZATION
! --------------
!
IF (NMOM_C.GE.2) THEN
!
! droplets
!
ZCONC = 300.E6 ! droplet concentration set at 300 cm-3
WHERE ( PRT(:,:,:,2) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = ZCONC
END WHERE
WHERE ( PRT(:,:,:,2) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
PRT(:,:,:,2) = 0.0
PSVT(:,:,:,NSV_LIMA_NC_A(kmi)) = 0.0
END WHERE
IF (NMOD_CCN .GE. 1) THEN
WHERE ( PRT(:,:,:,2) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = ZCONC
END WHERE
WHERE ( PRT(:,:,:,2) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NC_A(kmi))<1.E-11)
PSVT(:,:,:,NSV_LIMA_CCN_ACTI_A(kmi)) = 0.0
END WHERE
END IF
END IF
!
IF (NMOM_R.GE.2) THEN
!
! drops
!
ZCONC = (1.E7)**3/(XPI*XRHOLW) ! cf XCONCR_PARAM_INI in ini_rain_c2r2.f90
IF (HGETCLOUD == 'INI1') THEN ! init from REVE scheme
PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
ELSE ! init from KESS, ICE3...
WHERE ( PRT(:,:,:,3) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NR_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = MAX( SQRT(SQRT(PRHODREF(:,:,:)*PRT(:,:,:,3) &
*ZCONC)),1. )
END WHERE
WHERE ( PRT(:,:,:,3) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NR_A(kmi))<1.E-11 )
PRT(:,:,:,3) = 0.0
PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
END WHERE
END IF
END IF
!
IF (NMOM_I.GE.2) THEN
!
! ice crystals
!
ZCONC = 100.E3 ! maximum ice concentration set at 100/L
WHERE ( PRT(:,:,:,4) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
!
! PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN( PRHODREF(:,:,:) / &
! ( XRHOLI * XAI*(10.E-06)**XBI * PRT(:,:,:,4) ), &
! ZCONC )
! Correction
PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = MIN(PRT(:,:,:,4)/(0.82*(10.E-06)**2.5),ZCONC )
END WHERE
WHERE ( PRT(:,:,:,4) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
PRT(:,:,:,4) = 0.0
PSVT(:,:,:,NSV_LIMA_NI_A(kmi)) = 0.0
END WHERE
IF (NMOD_IFN .GE. 1) THEN
WHERE ( PRT(:,:,:,4) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = PSVT(:,:,:,NSV_LIMA_NI_A(kmi))
END WHERE
WHERE ( PRT(:,:,:,4) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NI_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_IFN_NUCL_A(kmi)) = 0.0
END WHERE
END IF
END IF
!
IF (NSV_LIMA_NS_A(KMI).GE.1) THEN
!
! snow
!
ZCONC = 1./ (XAS*0.001**XBS) ! 1mm particle size
WHERE ( PRT(:,:,:,5) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NS_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_NS_A(KMI)) = PRT(:,:,:,5) * ZCONC
END WHERE
WHERE ( PRT(:,:,:,5) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NS_A(kmi))<1.E-11 )
PRT(:,:,:,5) = 0.0
PSVT(:,:,:,NSV_LIMA_NS_A(KMI)) = 0.0
END WHERE
END IF
!
IF (NSV_LIMA_NG_A(KMI).GE.1) THEN
!
! graupel
!
ZCONC = 1./ (XAG*0.001**XBG) ! 1mm particle size
WHERE ( PRT(:,:,:,6) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NG_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_NG_A(KMI)) = PRT(:,:,:,6) * ZCONC
END WHERE
WHERE ( PRT(:,:,:,6) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NG_A(kmi))<1.E-11 )
PRT(:,:,:,6) = 0.0
PSVT(:,:,:,NSV_LIMA_NG_A(KMI)) = 0.0
END WHERE
END IF
!
IF (NSV_LIMA_NH_A(KMI).GE.1) THEN
!
! hail
!
ZCONC = 1./ (XAH*0.001**XBH) ! 1mm particle size
WHERE ( PRT(:,:,:,7) > 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NH_A(kmi))<1.E-11 )
PSVT(:,:,:,NSV_LIMA_NH_A(KMI)) = PRT(:,:,:,7) * ZCONC
END WHERE
WHERE ( PRT(:,:,:,7) <= 1.E-11 .AND. PSVT(:,:,:,NSV_LIMA_NH_A(kmi))<1.E-11 )
PRT(:,:,:,7) = 0.0
PSVT(:,:,:,NSV_LIMA_NH_A(KMI)) = 0.0
END WHERE
END IF
!
END SUBROUTINE SET_CONC_LIMA_LBC
end module mode_set_conc_lima_lbc
......@@ -81,8 +81,6 @@ USE MODD_NSV, ONLY : NSV_LIMA_BEG_A, NSV_LIMA_NC_A, NSV_LIMA_NR_A, N
NSV_LIMA_NI_A, NSV_LIMA_NS_A, NSV_LIMA_NG_A, NSV_LIMA_NH_A, NSV_LIMA_IFN_NUCL_A
USE MODD_CST, ONLY : XPI, XRHOLW, XRHOLI
USE MODD_CONF, ONLY : NVERB
USE MODD_CONF_n, ONLY : NRR
USE MODD_LUNIT_n, ONLY : TLUOUT
!
IMPLICIT NONE
!
......@@ -99,20 +97,17 @@ REAL, DIMENSION(:,:,:,NSV_LIMA_BEG_A(kmi):), INTENT(INOUT):: PSVT ! microph
!
!* 0.2 Declarations of local variables :
!
INTEGER :: IRESP ! Return code of FM routines
INTEGER :: ILUOUT ! Logical unit number of output-listing
REAL :: ZCONC
!
!-------------------------------------------------------------------------------
!* 1. RETRIEVE LOGICAL UNIT NUMBER
! ----------------------------
!
ILUOUT = TLUOUT%NLU
!
!* 2. INITIALIZATION
! --------------
!
IF (NRR.GE.2 .AND. NMOM_C.GE.2) THEN
IF (NMOM_C.GE.2) THEN
!
! droplets
!
......@@ -134,13 +129,9 @@ IF (NRR.GE.2 .AND. NMOM_C.GE.2) THEN
END WHERE
END IF
! IF( NVERB >= 5 ) THEN
! WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The droplet concentration has "
! WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
! END IF
END IF
!
IF (NRR.GE.3 .AND. NMOM_R.GE.2) THEN
IF (NMOM_R.GE.2) THEN
!
! drops
!
......@@ -156,14 +147,10 @@ IF (NRR.GE.3 .AND. NMOM_R.GE.2) THEN
PRT(:,:,:,3) = 0.0
PSVT(:,:,:,NSV_LIMA_NR_A(kmi)) = 0.0
END WHERE
! IF( NVERB >= 5 ) THEN
! WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The raindrop concentration has "
! WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
! END IF
END IF
END IF
!
IF (NRR.GE.4 .AND. NMOM_I.GE.2) THEN
IF (NMOM_I.GE.2) THEN
!
! ice crystals
!
......@@ -190,11 +177,6 @@ IF (NRR.GE.4 .AND. NMOM_I.GE.2) THEN
END WHERE
END IF
! IF( NVERB >= 5 ) THEN
! WRITE (UNIT=ILUOUT,FMT=*) "!INI_MODEL$n: The cloud ice concentration has "
! WRITE (UNIT=ILUOUT,FMT=*) "been roughly initialised"
! END IF
!
END IF
!
IF (NSV_LIMA_NS_A(KMI).GE.1) THEN
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment