diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 925eb22fc2214d40f5e4d73dce595ba313a77606..df9004cfbcfcd39a4ba13373ed9f683747bbf40d 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -276,7 +276,8 @@ USE MODD_PARAM_LIMA, ONLY : LCOLD, LNUCL, LSEDI, LHHONI, LSNOW, LHAIL, LMEYERS,& CTYPE_CCN=>HTYPE_CCN, YFSOLUB_CCN=>XFSOLUB_CCN, & YACTEMP_CCN=>XACTEMP_CCN, YAERDIFF=>XAERDIFF, & YAERHEIGHT=>XAERHEIGHT, & - LSCAV, LAERO_MASS, NPHILLIPS + LSCAV, LAERO_MASS, NPHILLIPS, & + ODEPOC=>LDEPOC, OVDEPOC=>XVDEPOC ! USE MODD_LATZ_EDFLX USE MODD_2D_FRC @@ -1059,7 +1060,7 @@ XSIGMA_MF = 20. XA1 = 2./3. XB = 0.002 XC = 0.012 -XBETA1 = 0.9 +XBETA1 = 0.9 XR = 2. XLAMBDA= 0. ! @@ -1116,7 +1117,10 @@ IF (KMI == 1) THEN ORAIN = .TRUE. OSEDC = .FALSE. OACTIT = .FALSE. + ODEPOC = .FALSE. LBOUND = .FALSE. +! + OVDEPOC = 0.02 ! 2 cm/s ! CINI_CCN = 'AER' CTYPE_CCN(:) = 'M' @@ -1171,7 +1175,6 @@ LUSECHEM = .FALSE. LUSECHAQ = .FALSE. LUSECHIC = .FALSE. LCH_INIT_FIELD = .FALSE. -!LCH_SURFACE_FLUX = .FALSE. LCH_CONV_SCAV = .FALSE. LCH_CONV_LINOX = .FALSE. LCH_PH = .FALSE. diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 1643b0cc3208e2ee650eb6e56833d4296d42c1bd..0f681b78238c79b95efeb5ba03860d0c844bba3d 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -176,7 +176,8 @@ USE MODD_2D_FRC USE MODD_PARAM_LIMA, ONLY : OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI, & OHHONI=>LHHONI, ORAIN=>LRAIN, OSEDC=>LSEDC, & ONUCL=>LNUCL, OACTI=>LACTI, OSNOW=>LSNOW, & - OHAIL=>LHAIL, OSCAV=>LSCAV, OMEYERS=>LMEYERS + OHAIL=>LHAIL, OSCAV=>LSCAV, OMEYERS=>LMEYERS,& + ODEPOC=>LDEPOC ! USE MODE_ll USE MODE_IO_ll @@ -1316,6 +1317,8 @@ IF (LBU_RRC) THEN IF (HCLOUD == 'LIMA') THEN IF (OWARM .AND. OSEDC) IPROACTV(7,IPROC) = NSEDIRC IPROC=IPROC+1 + IF (OWARM .AND. ODEPOC) IPROACTV(7,IPROC) = NDEPORC + IPROC=IPROC+1 IF (OWARM .AND. OACTI) IPROACTV(7,IPROC) = NHENURC IPROC=IPROC+1 IF (OWARM .AND. ORAIN) IPROACTV(7,IPROC) = NAUTORC @@ -1423,6 +1426,8 @@ IF (LBU_RRC) THEN IF (HCLOUD == 'LIMA') THEN YWORK2(7,IPROC) = 'SEDI_' IPROC=IPROC+1 + YWORK2(7,IPROC) = 'DEPO_' + IPROC=IPROC+1 YWORK2(7,IPROC) = 'HENU_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'AUTO_' @@ -2678,42 +2683,42 @@ CONTAINS USE MODD_NSV USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM ! - IF (JSV <= NSV_USER) THEN - ! NSV_USER Case -! SELECT CASE(JSV) -! CASE (1) -! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 -! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC1_' -! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 -! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC2_' -! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! CASE (2) -! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 -! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC3_' -! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 -! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC4_' -! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! END SELECT - ! - ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN - ! C2R2 or KHKO Case - SELECT CASE(JSV-NSV_C2R2BEG+1) - CASE (1) ! Concentration of activated nuclei - IF (.NOT. LSUPSAT) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' - END IF +IF (JSV <= NSV_USER) THEN + ! NSV_USER Case + ! SELECT CASE(JSV) + ! CASE (1) + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC1_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC2_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ! CASE (2) + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC3_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'PROC4_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ! END SELECT + ! +ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN + ! C2R2 or KHKO Case + SELECT CASE(JSV-NSV_C2R2BEG+1) + CASE (1) ! Concentration of activated nuclei + IF (.NOT. LSUPSAT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' + END IF IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - CASE (2) ! Concentration of cloud droplets - IF (.NOT. LSUPSAT) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' - END IF + CASE (2) ! Concentration of cloud droplets + IF (.NOT. LSUPSAT) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' + END IF IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_' @@ -2722,26 +2727,26 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACCR_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 IF (LSEDC) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF IF (LDEPOC) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'DEPO_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'DEPO_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - CASE (3) ! Concentration of raindrops + CASE (3) ! Concentration of raindrops ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 IF (HCLOUD /= 'KHKO') THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_' @@ -2752,136 +2757,140 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END SELECT - ! - + END SELECT + ! - ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN - ! LIMA case -IF (JSV == NSV_LIMA_NC) THEN -! Cloud droplets conc. +ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN + ! LIMA case + IF (JSV == NSV_LIMA_NC) THEN + ! Cloud droplets conc. ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 IF (OWARM) THEN - IF (OSEDC) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - IF (OACTI) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (ORAIN) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACCR_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OSEDC) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (ODEPOC) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_' + YWORK2(12+JSV,ILAST_PROC_NBR)= 'DEPO_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF + END IF + IF (OACTI) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SELF_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (ORAIN) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACCR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF END IF IF (OCOLD .AND. ONUCL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF IF (OWARM .AND. OCOLD) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OSNOW) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'RIM_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OHAIL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OSNOW) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'RIM_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OHAIL) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! -ELSE IF (JSV == NSV_LIMA_NR) THEN -! Rain drops conc. + ! + ELSE IF (JSV == NSV_LIMA_NR) THEN + ! Rain drops conc. ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 IF (OWARM .AND. ORAIN) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'BRKU_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCBU_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'BRKU_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF IF (OCOLD .AND. OWARM .AND. ORAIN .AND. ONUCL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONR_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF IF (OWARM .AND. OCOLD) THEN - IF (OSNOW) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACC_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'GMLT_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OHAIL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMLT_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF + IF (OSNOW) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'ACC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'GMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OHAIL) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF END IF -! -ELSE IF (JSV.GE.NSV_LIMA_CCN_FREE .AND. JSV.LT.(NSV_LIMA_CCN_FREE+NMOD_CCN)) THEN -! Free CCN conc. + ! + ELSE IF (JSV.GE.NSV_LIMA_CCN_FREE .AND. JSV.LT.(NSV_LIMA_CCN_FREE+NMOD_CCN)) THEN + ! Free CCN conc. ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -2903,84 +2912,84 @@ ELSE IF (JSV.GE.NSV_LIMA_CCN_FREE .AND. JSV.LT.(NSV_LIMA_CCN_FREE+NMOD_CCN)) THE YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF -! -ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN -! Activated CCN conc. + ! + ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN + ! Activated CCN conc. -ELSE IF (JSV == NSV_LIMA_NI) THEN -! Pristine ice crystals conc. + ELSE IF (JSV == NSV_LIMA_NI) THEN + ! Pristine ice crystals conc. ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 IF (OCOLD) THEN - IF (OSEDI) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - IF (ONUCL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OWARM .AND. OHHONI) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - IF (OWARM) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - END IF - IF (OSNOW) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVS_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'AGGS_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF + IF (OSEDI) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (ONUCL) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HINC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OWARM .AND. OHHONI) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + IF (OWARM) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONC_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + END IF + IF (OSNOW) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'CNVS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'AGGS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF END IF IF (OWARM .AND. OCOLD) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OSNOW) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMS_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMG_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - IF (OHAIL) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OSNOW) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMS_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'CFRZ_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'DRYG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HMG_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IF (OHAIL) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'WETH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! -ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THEN -! Free IFN conc. + ! + ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THEN + ! Free IFN conc. ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -2989,11 +2998,11 @@ ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THE YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF -! IF (OCOLD .AND. OWARM) THEN -! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 -! YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' -! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 -! END IF + ! IF (OCOLD .AND. OWARM) THEN + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'IMLT_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ! END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEDS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -3002,24 +3011,29 @@ ELSE IF (JSV.GE.NSV_LIMA_IFN_FREE .AND. JSV.LT.(NSV_LIMA_IFN_FREE+NMOD_IFN)) THE YWORK2(12+JSV,ILAST_PROC_NBR)= 'SCAV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF -! -ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN -! Nucleated IFN conc. + ! + ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN + ! Nucleated IFN conc. -ELSE IF (JSV.GE.NSV_LIMA_IMM_NUCL .AND. JSV.LT.(NSV_LIMA_IMM_NUCL+NMOD_IMM)) THEN -! Nucleated IMM conc. + ELSE IF (JSV.GE.NSV_LIMA_IMM_NUCL .AND. JSV.LT.(NSV_LIMA_IMM_NUCL+NMOD_IMM)) THEN + ! Nucleated IMM conc. -ELSE IF (JSV == NSV_LIMA_HOM_HAZE) THEN -! Homogeneous freezing of CCN + ELSE IF (JSV == NSV_LIMA_HOM_HAZE) THEN + ! Homogeneous freezing of CCN + IF (OCOLD .AND. ONUCL .AND. OWARM .AND. OHHONI) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'HONH_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + END IF -END IF + END IF - ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN - SELECT CASE(JSV-NSV_ELECBEG+1) - CASE(1) ! volumetric charge of water vapor +ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN + SELECT CASE(JSV-NSV_ELECBEG+1) + CASE(1) ! volumetric charge of water vapor ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQV @@ -3027,9 +3041,9 @@ END IF YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQV IF (LWARM) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQV END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_' @@ -3037,14 +3051,14 @@ END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQV - CASE(2) ! volumetric charge of cloud droplets + CASE(2) ! volumetric charge of cloud droplets IF (LWARM) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQC - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQC + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQC + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQC END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'RIM_' @@ -3065,29 +3079,29 @@ END IF YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPI_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPIQC IF (LINDUCTIVE) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_' + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_' END IF - IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQC + IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQC IF (LSEDIC) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQC + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQC END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQC - CASE(3) ! volumetric charge of rain drops + CASE(3) ! volumetric charge of rain drops IF (LWARM) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQR - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQR - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQR + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NAUTOQR + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACCR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NACCRQR + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'REVA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NREVAQR END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'ACC_' @@ -3110,7 +3124,7 @@ END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQR - CASE(4) ! volumetric charge of ice crystals + CASE(4) ! volumetric charge of ice crystals ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQI @@ -3144,7 +3158,7 @@ END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQI - CASE(5) ! volumetric charge of snow + CASE(5) ! volumetric charge of snow ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQS @@ -3177,7 +3191,7 @@ END IF IPROACTV(12+JSV,ILAST_PROC_NBR) = NSEDIQS ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' - CASE(6) ! volumetric charge of graupel + CASE(6) ! volumetric charge of graupel ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQG @@ -3203,9 +3217,9 @@ END IF YWORK2(12+JSV,ILAST_PROC_NBR) = 'GMLT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NGMLTQG IF (LINDUCTIVE) THEN - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQG + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR) = 'IND_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NINDQG END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'SEDI_' @@ -3213,31 +3227,30 @@ END IF ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQG - CASE(7) ! volumetric charge of hail -! add budget for hail volumetric charge - END SELECT + CASE(7) ! volumetric charge of hail + ! add budget for hail volumetric charge + END SELECT + ! +ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN + ! Chemical Case + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'CHEM_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NCHEMSV + ! other processes + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ! +ELSE + ! other processes + ! ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + ! YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' + ! IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV +END IF ! - END IF - IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN - ! Chemical Case - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'CHEM_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NCHEMSV - ! other processes - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV - ! - ELSE - ! other processes - ILAST_PROC_NBR = ILAST_PROC_NBR + 1 - YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = NADVSV - END IF - ! END SUBROUTINE BUDGET_OTHERPROC_SV ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ini_micron.f90 b/src/MNH/ini_micron.f90 index 17154b38c3ea16e6285b5a27c849bfb0fe72741d..03db77d9b9c7159a72f84dfd077ddc586925e399 100644 --- a/src/MNH/ini_micron.f90 +++ b/src/MNH/ini_micron.f90 @@ -100,7 +100,7 @@ USE MODD_NSV, ONLY : NSV,NSV_CHEM,NSV_C2R2BEG,NSV_C2R2END, & NSV_LIMA_NI, & NSV_LIMA_IFN_FREE, NSV_LIMA_IFN_NUCL, & NSV_LIMA_IMM_NUCL, NSV_LIMA_HOM_HAZE -USE MODD_PARAM_LIMA, ONLY : LSCAV, MSEDC=>LSEDC, MACTIT=>LACTIT +USE MODD_PARAM_LIMA, ONLY : LSCAV, MSEDC=>LSEDC, MACTIT=>LACTIT, MDEPOC=>LDEPOC USE MODD_LIMA_PRECIP_SCAVENGING_n ! USE MODI_INIT_AEROSOL_CONCENTRATION @@ -169,8 +169,9 @@ ELSE ALLOCATE(XACPRC(0,0)) END IF ! -IF ( (((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. LDEPOC) & - .OR. ( (CCLOUD(1:3) == 'ICE') .AND. LDEPOSC) ) THEN +IF (( CCLOUD(1:3) == 'ICE' .AND.LDEPOSC) .OR. & + ((CCLOUD=='C2R2' .OR. CCLOUD=='KHKO').AND.LDEPOC) .OR. & + ( CCLOUD=='LIMA' .AND.MDEPOC)) THEN ALLOCATE(XINDEP(IIU,IJU)) ALLOCATE(XACDEP(IIU,IJU)) XINDEP(:,:)=0.0 diff --git a/src/MNH/rain_c2r2_khko.f90 b/src/MNH/rain_c2r2_khko.f90 index 2c482fd43fc969cf22b6c2566d22a5123c174248..cf42fd667ebcb323c067830f9a1e88e260600638 100644 --- a/src/MNH/rain_c2r2_khko.f90 +++ b/src/MNH/rain_c2r2_khko.f90 @@ -1937,12 +1937,10 @@ IF (LDEPOC) THEN GDEP(IIB:IIE,IJB:IJE) = PRCS(IIB:IIE,IJB:IJE,2) >0 .AND. & PCCS(IIB:IIE,IJB:IJE,2) >0 WHERE (GDEP) - PRCS(:,:,2) = PRCS(:,:,2) - XVDEPOC * PRCS(:,:,2)*PTSTEP / & - ( PZZ(:,:,3) - PZZ(:,:,2)) - PCCS(:,:,2) = PCCS(:,:,2) - XVDEPOC * PCCS(:,:,2)*PTSTEP / & - ( PZZ(:,:,3) - PZZ(:,:,2)) - PINPRC(:,:) = PINPRC(:,:) + XVDEPOC * PRCS(:,:,2) * PTSTEP * PRHODREF(:,:,2) /XRHOLW - PINDEP(:,:) = XVDEPOC * PRCS(:,:,2) * PTSTEP * PRHODREF(:,:,2) /XRHOLW + PRCS(:,:,2) = PRCS(:,:,2) - XVDEPOC * PRCT(:,:,2) / ( PZZ(:,:,3) - PZZ(:,:,2)) + PCCS(:,:,2) = PCCS(:,:,2) - XVDEPOC * PCCT(:,:,2) / ( PZZ(:,:,3) - PZZ(:,:,2)) + PINPRC(:,:) = PINPRC(:,:) + XVDEPOC * PRCT(:,:,2) * PRHODREF(:,:,2) /XRHOLW + PINDEP(:,:) = XVDEPOC * PRCT(:,:,2) * PRHODREF(:,:,2) /XRHOLW END WHERE END IF ! diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index ad998eb897e8a78a73ed61f38a0fed2283e15b19..042241980ad4ca50bcc2a62d5742f8d097362f91 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -1280,11 +1280,11 @@ IF ( KRR == 7 .AND. LBUDGET_RH) & ! IF (LDEPOSC) THEN GDEP(:,:) = .FALSE. - GDEP(IIB:IIE,IJB:IJE) = PRCS(IIB:IIE,IJB:IJE,2) >0 + GDEP(IIB:IIE,IJB:IJE) = PRCS(IIB:IIE,IJB:IJE,IKB) >0 WHERE (GDEP) - PRCS(:,:,2) = PRCS(:,:,2) - XVDEPOSC * PRCT(:,:,2) * PRHODJ(:,:,2) - PINPRC(:,:) = PINPRC(:,:) + XVDEPOSC * PRCT(:,:,2) * PRHODJ(:,:,2) /XRHOLW - PINDEP(:,:) = XVDEPOSC * PRCT(:,:,2) * PRHODJ(:,:,2) /XRHOLW + PRCS(:,:,IKB) = PRCS(:,:,IKB) - XVDEPOSC * PRCT(:,:,IKB) / PDZZ(:,:,IKB) + PINPRC(:,:) = PINPRC(:,:) + XVDEPOSC * PRCT(:,:,IKB) * PRHODREF(:,:,IKB) /XRHOLW + PINDEP(:,:) = XVDEPOSC * PRCT(:,:,IKB) * PRHODREF(:,:,IKB) /XRHOLW END WHERE END IF ! @@ -1739,11 +1739,11 @@ IF ( KRR == 7 .AND. LBUDGET_RH) & ! IF (LDEPOSC) THEN GDEP(:,:) = .FALSE. - GDEP(IIB:IIE,IJB:IJE) = PRCS(IIB:IIE,IJB:IJE,2) >0 + GDEP(IIB:IIE,IJB:IJE) = PRCS(IIB:IIE,IJB:IJE,IKB) >0 WHERE (GDEP) - PRCS(:,:,2) = PRCS(:,:,2) - XVDEPOSC * PRCS(:,:,2)*PTSTEP / PDZZ(:,:,2) - PINPRC(:,:) = PINPRC(:,:) + XVDEPOSC * PRCS(:,:,2) * PTSTEP * PRHODREF(:,:,2) /XRHOLW - PINDEP(:,:) = XVDEPOSC * PRCS(:,:,2) * PTSTEP * PRHODREF(:,:,2) /XRHOLW + PRCS(:,:,IKB) = PRCS(:,:,IKB) - XVDEPOSC * PRCT(:,:,IKB) / PDZZ(:,:,IKB) + PINPRC(:,:) = PINPRC(:,:) + XVDEPOSC * PRCT(:,:,IKB) * PRHODREF(:,:,IKB) /XRHOLW + PINDEP(:,:) = XVDEPOSC * PRCT(:,:,IKB) * PRHODREF(:,:,IKB) /XRHOLW END WHERE END IF ! diff --git a/src/MNH/read_precip_field.f90 b/src/MNH/read_precip_field.f90 index e2a66e19493117e4041e86b6a1e99ac29d6c7ee3..8daf3cf9f9a17ce554a6d65d8849c121997f7687 100644 --- a/src/MNH/read_precip_field.f90 +++ b/src/MNH/read_precip_field.f90 @@ -104,6 +104,7 @@ END MODULE MODI_READ_PRECIP_FIELD USE MODE_FM USE MODD_PARAM_ICE , ONLY : LDEPOSC USE MODD_PARAM_C2R2, ONLY : LDEPOC +USE MODD_PARAM_LIMA, ONLY : MDEPOC=>LDEPOC ! USE MODE_FMREAD ! @@ -189,7 +190,7 @@ IF (SIZE(PINPRC) /= 0 ) THEN END SELECT END IF ! -IF (SIZE(PINPRC) /= 0 .AND. (LDEPOSC .OR. LDEPOC) ) THEN +IF (SIZE(PINPRC) /= 0 .AND. (LDEPOSC .OR. LDEPOC .OR. MDEPOC) ) THEN SELECT CASE(YGETRCT) CASE ('READ') YRECFM = 'INDEP' diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index d67f4f0b9bbc79549298c04b2b0b99cc61f76ee7..b3f28b36e4012f8286bf66e4cc49de1f5473d956 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -2141,7 +2141,7 @@ IF (CPROGRAM /= 'IDEAL') THEN IF (SIZE(XINPRC) /= 0 ) THEN ZWORK2D(:,:) = XINPRC(:,:) YRECFM = 'INPRC' - YCOMMENT = 'X_Y_INstantaneous Cloud Precipitation Rain Rate (MM/H)' + YCOMMENT = 'X_Y_INstantaneous Cloud Precipitation Rate (MM/H)' IGRID = 1 ILENCH = LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & @@ -2149,7 +2149,27 @@ IF (CPROGRAM /= 'IDEAL') THEN ! ZWORK2D(:,:) = XACPRC(:,:) YRECFM = 'ACPRC' - YCOMMENT = 'X_Y_ACcumulated Cloud Precipitation Rain Rate (MM)' + YCOMMENT = 'X_Y_ACcumulated Cloud Precipitation Rate (MM)' + IGRID = 1 + ILENCH = LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, & + YCOMMENT,IRESP) ! unit conversion + ENDIF + ENDIF +! + IF (ASSOCIATED(XINDEP)) THEN + IF (SIZE(XINDEP) /= 0 ) THEN + ZWORK2D(:,:) = XINDEP(:,:) + YRECFM = 'INDEP' + YCOMMENT = 'X_Y_INstantaneous Cloud Deposition Rate (MM/H)' + IGRID = 1 + ILENCH = LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, & + YCOMMENT,IRESP) ! unit conversion +! + ZWORK2D(:,:) = XACDEP(:,:) + YRECFM = 'ACDEP' + YCOMMENT = 'X_Y_ACcumulated Cloud Deposition Rate (MM)' IGRID = 1 ILENCH = LEN(YCOMMENT) CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &