diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 7b58305a45fa1795eb77ef76683973f5fe156190..e6380232500af4b840de1f99b83c7936c2367a51 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -12,7 +12,7 @@ MODULE MODI_INI_BUDGET ! ###################### INTERFACE - SUBROUTINE INI_BUDGET(KLUOUT, PTSTEP,KSV,KRR, & + SUBROUTINE INI_BUDGET(KLUOUT,PTSTEP,KSV,KRR, & ONUMDIFU,ONUMDIFTH,ONUMDIFSV, & OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR, & OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & @@ -71,7 +71,7 @@ END MODULE MODI_INI_BUDGET ! ! ! ################################################################# - SUBROUTINE INI_BUDGET(KLUOUT, PTSTEP,KSV,KRR, & + SUBROUTINE INI_BUDGET(KLUOUT,PTSTEP,KSV,KRR, & ONUMDIFU,ONUMDIFTH,ONUMDIFSV, & OHORELAX_UVWTH,OHORELAX_RV,OHORELAX_RC,OHORELAX_RR, & OHORELAX_RI,OHORELAX_RS, OHORELAX_RG, OHORELAX_RH,OHORELAX_TKE, & @@ -155,7 +155,8 @@ END MODULE MODI_INI_BUDGET !! C.Lac 04/12/15 Correction for LSUPSAT !! 04/2016 (C.LAC) negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2 !! C. Barthe 01/2016 Add budget for LIMA -!! C.LAc 10/2016 Add budget for droplet deposition +!! C.Lac 10/2016 Add budget for droplet deposition +!! S. Riette 11/2016 New budgets for ICE3/ICE4 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -792,9 +793,6 @@ IF (LBU_RTH) THEN IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & IPROACTV(4,IPROC) = NNEGATH IPROC=IPROC+1 - ! - ! Microphysical budgets - ! IF (HCLOUD == 'LIMA') THEN IF (OPTSPLIT) IPROACTV(4,IPROC) = NSEDITH IPROC=IPROC+1 @@ -845,6 +843,8 @@ IF (LBU_RTH) THEN IPROACTV(4,IPROC) = NCEDSTH IPROC=IPROC+1 ELSE + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(4,IPROC) = NADJUTH + IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' .OR. (HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) & .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) ) & IPROACTV(4,IPROC) = NHENUTH @@ -875,19 +875,25 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NWETHTH IPROC=IPROC+1 + IF (HCLOUD == 'ICE4'.AND. LRED) IPROACTV(4,IPROC) = NDRYHTH + IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(4,IPROC) = NHMLTTH IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NIMLTTH IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NBERFITH IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE') IPROACTV(4,IPROC) = NCDEPITH + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(4,IPROC) = NCORRTH + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED .OR. (LRED .AND. LADJ_AFTER)) & + IPROACTV(4,IPROC) = NCDEPITH IPROC=IPROC+1 IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'KES' .OR. & - HCLOUD == 'REVE') IPROACTV(4,IPROC) = NCONDTH + HCLOUD == 'REVE') IPROACTV(4,IPROC) = NCONDTH IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')) IPROACTV(4,IPROC) = NNECONTH - END IF + IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2'))& + IPROACTV(4,IPROC) = NNECONTH + END IF ! YWORK2(4,1) = 'INIF_' YWORK2(4,2) = 'ENDF_' @@ -982,6 +988,8 @@ IF (LBU_RTH) THEN YWORK2(4,IPROC) = 'CEDS_' IPROC=IPROC+1 ELSE + YWORK2(4,IPROC) = 'ADJU_' + IPROC=IPROC+1 YWORK2(4,IPROC) = 'HENU_' IPROC=IPROC+1 YWORK2(4,IPROC) = 'HON_' @@ -1008,18 +1016,22 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 YWORK2(4,IPROC) = 'WETH_' IPROC=IPROC+1 + YWORK2(4,IPROC) = 'DRYH_' + IPROC=IPROC+1 YWORK2(4,IPROC) = 'HMLT_' IPROC=IPROC+1 YWORK2(4,IPROC) = 'IMLT_' IPROC=IPROC+1 YWORK2(4,IPROC) = 'BERFI_' IPROC=IPROC+1 + YWORK2(4,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(4,IPROC) = 'CDEPI_' IPROC=IPROC+1 YWORK2(4,IPROC) = 'COND_' IPROC=IPROC+1 YWORK2(4,IPROC) = 'NECON_' - END IF + END IF ! YEND_COMMENT(4) = 'BU_RTH' NBUPROCNBR(4) = 3 @@ -1160,10 +1172,8 @@ IF (LBU_RRV) THEN IPROC=IPROC+1 IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & IPROACTV(6,IPROC) = NNEGARV - IPROC=IPROC+1 - ! - ! Microphysical budgets - ! + IPROC=IPROC+1 + IF (HCLOUD == 'LIMA') THEN IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) IPROACTV(6,IPROC) = NHENURV IPROC=IPROC+1 @@ -1185,7 +1195,11 @@ IF (LBU_RRV) THEN IPROC=IPROC+1 IPROACTV(6,IPROC) = NCEDSRV IPROC=IPROC+1 -ELSE + + ELSE + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) & + IPROACTV(6,IPROC) = NADJURV + IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .AND. (.NOT. LSUPSAT)) & .OR. ( HCLOUD == 'KHKO' .AND. (.NOT. LSUPSAT)) & .OR. HCLOUD(1:3) == 'ICE') & @@ -1201,7 +1215,10 @@ ELSE IF (HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE' .OR. & HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' ) IPROACTV(6,IPROC) = NCONDRV IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE') IPROACTV(6,IPROC) = NCDEPIRV + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(6,IPROC) = NCORRRV + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IPROACTV(6,IPROC) = NCDEPIRV IPROC=IPROC+1 IF ( (HCLOUD == 'KHKO' ) .OR. (HCLOUD == 'C2R2')) & IPROACTV(6,IPROC) = NNECONRV @@ -1245,8 +1262,8 @@ END IF IPROC=IPROC+1 YWORK2(6,IPROC) = 'NEGA_' IPROC=IPROC+1 - IF (HCLOUD == 'LIMA') THEN - YWORK2(6,IPROC) = 'HENU_' +IF (HCLOUD == 'LIMA') THEN + YWORK2(6,IPROC) = 'HENU_' IPROC=IPROC+1 IF (.NOT.OPTSPLIT) THEN YWORK2(6,IPROC) = 'REVA_' @@ -1266,6 +1283,8 @@ END IF IPROC=IPROC+1 YWORK2(6,IPROC) = 'CEDS_' ELSE + YWORK2(6,IPROC) = 'ADJU_' + IPROC=IPROC+1 YWORK2(6,IPROC) = 'HENU_' IPROC=IPROC+1 YWORK2(6,IPROC) = 'DEPS_' @@ -1276,6 +1295,8 @@ ELSE IPROC=IPROC+1 YWORK2(6,IPROC) = 'COND_' IPROC=IPROC+1 + YWORK2(6,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(6,IPROC) = 'CDEPI_' IPROC=IPROC+1 YWORK2(6,IPROC) = 'NECON_' @@ -1345,9 +1366,7 @@ IF (LBU_RRC) THEN IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & IPROACTV(7,IPROC) = NNEGARC IPROC=IPROC+1 - ! - ! Microphysical processes - ! + IF (HCLOUD == 'LIMA') THEN IF (OPTSPLIT .AND. OWARM .AND. ORAIN) IPROACTV(7,IPROC) = NCORRRC IPROC=IPROC+1 @@ -1392,15 +1411,22 @@ IF (LBU_RRC) THEN IPROACTV(7,IPROC) = NCEDSRC IPROC=IPROC+1 ELSE - IF (HCLOUD(1:3) == 'KES' ) IPROACTV(7,IPROC ) = NACCRRC - IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'KES' ) IPROACTV(7,IPROC) = NAUTORC - IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'KES' ) IPROACTV(7,IPROC ) = NACCRRC + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'KES' ) IPROACTV(7,IPROC) = NAUTORC + IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. (.NOT. LSUPSAT)) & IPROACTV(7,IPROC) = NHENURC IPROC=IPROC+1 ! - IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NHONRC + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) & + IPROACTV(7,IPROC) = NADJURC + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. & + LRED .AND. (.NOT. LSEDIM_AFTER)) & + IPROACTV(7,IPROC) = NSEDIRC + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NHONRC IPROC=IPROC+1 IF (((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) .OR. ((HCLOUD == 'C2R2' .OR. & HCLOUD == 'KHKO') .AND. LRAIN)) IPROACTV(7,IPROC) = NAUTORC @@ -1411,23 +1437,32 @@ IF (LBU_RRC) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NRIMRC IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(7,IPROC) = NCMELRC + IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NWETGRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NDRYGRC IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(7,IPROC) = NWETHRC IPROC=IPROC+1 + IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(7,IPROC) = NDRYHRC + IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(7,IPROC) = NIMLTRC IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NBERFIRC IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(7,IPROC) = NCORRRC + IPROC=IPROC+1 IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LSEDC) .OR. & - (HCLOUD(1:3) == 'ICE' .AND. LSEDIC)) IPROACTV(7,IPROC) = NSEDIRC + (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. .NOT. LRED) .OR. & + (HCLOUD(1:3) == 'ICE' .AND. LSEDIC .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(7,IPROC) = NSEDIRC IPROC=IPROC+1 IF (((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO').AND. LDEPOC) .OR. & (HCLOUD(1:3) == 'ICE' .AND. LDEPOSC)) IPROACTV(7,IPROC) = NDEPORC IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE') IPROACTV(7,IPROC) = NCDEPIRC + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IPROACTV(7,IPROC) = NCDEPIRC IPROC=IPROC+1 IF (HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO' .OR. & HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC @@ -1518,6 +1553,10 @@ IF (LBU_RRC) THEN IPROC=IPROC+1 YWORK2(7,IPROC) = 'HENU_' IPROC=IPROC+1 + YWORK2(7,IPROC) = 'ADJU_' + IPROC=IPROC+1 + YWORK2(7,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(7,IPROC) = 'HON_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'AUTO_' @@ -1526,16 +1565,22 @@ IF (LBU_RRC) THEN IPROC=IPROC+1 YWORK2(7,IPROC) = 'RIM_' IPROC=IPROC+1 + YWORK2(7,IPROC) = 'CMEL_' + IPROC=IPROC+1 YWORK2(7,IPROC) = 'WETG_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'DRYG_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'WETH_' IPROC=IPROC+1 + YWORK2(7,IPROC) = 'DRYH_' + IPROC=IPROC+1 YWORK2(7,IPROC) = 'IMLT_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'BERFI_' IPROC=IPROC+1 + YWORK2(7,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(7,IPROC) = 'SEDI_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'DEPO_' @@ -1543,8 +1588,8 @@ IF (LBU_RRC) THEN YWORK2(7,IPROC) = 'CDEPI_' IPROC=IPROC+1 YWORK2(7,IPROC) = 'COND_' - IPROC=IPROC+1 - YWORK2(7,IPROC) = 'NECON_' + IPROC=IPROC+1 + YWORK2(7,IPROC) = 'NECON_' END IF ! YEND_COMMENT(7) = 'BU_RRC' @@ -1588,9 +1633,7 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR IPROC=IPROC+1 - ! - ! Microphysical processes - ! + IF (HCLOUD == 'LIMA') THEN IF (OPTSPLIT .AND. OWARM .AND. ORAIN) IPROACTV(8,IPROC) = NCORRRR IPROC=IPROC+1 @@ -1630,8 +1673,11 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'KES' ) IPROACTV(8,IPROC) = NREVARR IPROC=IPROC+1 - ! - IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NSFRRR +! + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IPROACTV(8,IPROC) = NSEDIRR + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NSFRRR IPROC=IPROC+1 IF ((HCLOUD(1:3) == 'ICE' ) .AND. LWARM) & IPROACTV(8,IPROC) = NAUTORR @@ -1644,9 +1690,11 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NACCRR IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NCFRZRR + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCMELRR + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NCFRZRR IPROC=IPROC+1 - IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NWETGRR + IF (HCLOUD(1:3) == 'ICE' ) IPROACTV(8,IPROC) = NWETGRR IPROC=IPROC+1 IF (HCLOUD(1:3) == 'ICE') IPROACTV(8,IPROC) = NDRYGRR IPROC=IPROC+1 @@ -1654,17 +1702,23 @@ IF (LBU_RRR) THEN IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NWETHRR IPROC=IPROC+1 + IF (HCLOUD == 'ICE4' .AND. LRED) IPROACTV(8,IPROC) = NDRYHRR + IPROC=IPROC+1 IF (HCLOUD == 'ICE4') IPROACTV(8,IPROC) = NHMLTRR IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(8,IPROC) = NCORRRR + IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN) IPROACTV(8,IPROC) = NAUTORR IPROC=IPROC+1 IF ((HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO') .AND. LRAIN) IPROACTV(8,IPROC) = NACCRRR IPROC=IPROC+1 IF ((HCLOUD == 'C2R2'.OR. HCLOUD == 'KHKO') .AND. LRAIN) IPROACTV(8,IPROC) = NREVARR IPROC=IPROC+1 - IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. HCLOUD(1:3) == 'ICE') & - IPROACTV(8,IPROC) = NSEDIRR - IPROC=IPROC+1 + IF (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO' .OR. & + (HCLOUD(1:3) == 'ICE' .AND. .NOT. (LRED)) .OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(8,IPROC) = NSEDIRR + IPROC=IPROC+1 END IF ! YWORK2(8,1) = 'INIF_' @@ -1726,6 +1780,8 @@ ELSE IPROC=IPROC+1 YWORK2(8,IPROC) = 'REVA_' IPROC=IPROC+1 + YWORK2(8,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(8,IPROC) = 'SFR_' IPROC=IPROC+1 YWORK2(8,IPROC) = 'AUTO_' @@ -1736,6 +1792,8 @@ ELSE IPROC=IPROC+1 YWORK2(8,IPROC) = 'ACC_' IPROC=IPROC+1 + YWORK2(8,IPROC) = 'CMEL_' + IPROC=IPROC+1 YWORK2(8,IPROC) = 'CFRZ_' IPROC=IPROC+1 YWORK2(8,IPROC) = 'WETG_' @@ -1746,8 +1804,12 @@ ELSE IPROC=IPROC+1 YWORK2(8,IPROC) = 'WETH_' IPROC=IPROC+1 + YWORK2(8,IPROC) = 'DRYH_' + IPROC=IPROC+1 YWORK2(8,IPROC) = 'HMLT_' IPROC=IPROC+1 + YWORK2(8,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(8,IPROC) = 'AUTO_' IPROC=IPROC+1 YWORK2(8,IPROC) = 'ACCR_' @@ -1812,9 +1874,7 @@ IF (LBU_RRI) THEN IPROC=IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI IPROC=IPROC+1 - ! - ! Microphysical processes - ! + IF (HCLOUD=='LIMA') THEN IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) IPROACTV(9,IPROC) = NCORRRI IPROC=IPROC+1 @@ -1852,6 +1912,11 @@ IF (LBU_RRI) THEN IPROC=IPROC+1 IPROACTV(9,IPROC) = NCEDSRI ELSE + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LADJ_BEFORE) IPROACTV(9,IPROC) = NADJURI + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IPROACTV(9,IPROC) = NSEDIRI + IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHENURI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NHONRI @@ -1866,15 +1931,22 @@ IF (LBU_RRI) THEN IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NDRYGRI IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(9,IPROC) = NWETHRI + IF( HCLOUD == 'ICE4' ) IPROACTV(9,IPROC) = NWETHRI + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(9,IPROC) = NDRYHRI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NIMLTRI IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NBERFIRI IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NSEDIRI + IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(9,IPROC) = NCORRRI IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE') IPROACTV(9,IPROC) = NCDEPIRI + IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(9,IPROC) = NSEDIRI + IPROC=IPROC+1 + IF (HCLOUD(1:3) == 'ICE' .AND. (.NOT. LRED .OR. (LRED .AND. LADJ_AFTER) )) & + IPROACTV(9,IPROC) = NCDEPIRI IPROC=IPROC+1 END IF ! @@ -1939,6 +2011,10 @@ IF (LBU_RRI) THEN IPROC= IPROC+1 YWORK2(9,IPROC) = 'CEDS_' ELSE + YWORK2(9,IPROC) = 'ADJU_' + IPROC= IPROC+1 + YWORK2(9,IPROC) = 'SEDI_' + IPROC= IPROC+1 YWORK2(9,IPROC) = 'HENU_' IPROC= IPROC+1 YWORK2(9,IPROC) = 'HON_' @@ -1955,10 +2031,14 @@ IF (LBU_RRI) THEN IPROC= IPROC+1 YWORK2(9,IPROC) = 'WETH_' IPROC= IPROC+1 + YWORK2(9,IPROC) = 'DRYH_' + IPROC= IPROC+1 YWORK2(9,IPROC) = 'IMLT_' IPROC= IPROC+1 YWORK2(9,IPROC) = 'BERFI_' IPROC= IPROC+1 + YWORK2(9,IPROC) = 'CORR_' + IPROC= IPROC+1 YWORK2(9,IPROC) = 'SEDI_' IPROC= IPROC+1 YWORK2(9,IPROC) = 'CDEPI_' @@ -2005,10 +2085,8 @@ IF (LBU_RRS) THEN IPROC= IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS IPROC=IPROC+1 - ! - ! Microphysical processes - ! - IF (HCLOUD=='LIMA') THEN + +IF (HCLOUD=='LIMA') THEN IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) IPROACTV(10,IPROC) = NCORRRS IPROC=IPROC+1 IF (OCOLD .AND. OSNOW) IPROACTV(10,IPROC) = NSEDIRS @@ -2035,7 +2113,10 @@ IF (LBU_RRS) THEN IPROC=IPROC+1 IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(10,IPROC) = NWETHRS IPROC=IPROC+1 -ELSE + ELSE + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IPROACTV(10,IPROC) = NSEDIRS + IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NDEPSRS IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NAGGSRS @@ -2054,7 +2135,13 @@ ELSE IPROC=IPROC+1 IF( HCLOUD == 'ICE4') IPROACTV(10,IPROC) = NWETHRS IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE') IPROACTV(10,IPROC) = NSEDIRS + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(10,IPROC) = NDRYHRS + IPROC=IPROC+1 + IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(10,IPROC) = NCORRRS + IPROC=IPROC+1 + IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(10,IPROC) = NSEDIRS IPROC=IPROC+1 END IF ! @@ -2076,6 +2163,8 @@ END IF IPROC=IPROC+1 YWORK2(10,IPROC) = 'NEGA_' IPROC= IPROC+1 + YWORK2(10,IPROC) = 'SEDI_' + IPROC= IPROC+1 IF (HCLOUD=='LIMA') THEN YWORK2(10,IPROC) = 'CORR_' IPROC= IPROC+1 @@ -2122,6 +2211,10 @@ ELSE IPROC= IPROC+1 YWORK2(10,IPROC) = 'WETH_' IPROC=IPROC+1 + YWORK2(10,IPROC) = 'DRYH_' + IPROC=IPROC+1 + YWORK2(10,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(10,IPROC) = 'SEDI_' END IF ! @@ -2166,10 +2259,10 @@ IF (LBU_RRG) THEN IPROC=IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(11,IPROC) = NNEGARG IPROC=IPROC+1 - ! - ! Microphysical processes - ! - IF (HCLOUD=='LIMA') THEN + IF (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. (.NOT. LSEDIM_AFTER)) & + IPROACTV(11,IPROC) = NSEDIRG + IPROC=IPROC+1 +IF (HCLOUD=='LIMA') THEN IF (OCOLD .AND. OSNOW) IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 IF (OPTSPLIT .OR. (OCOLD .AND. OWARM .AND. ONUCL .AND. ORAIN)) IPROACTV(11,IPROC) = NHONRRG @@ -2196,7 +2289,7 @@ IF (LBU_RRG) THEN IPROC=IPROC+1 IF (.NOT.OPTSPLIT .AND. OHAIL) IPROACTV(11,IPROC) = NCOHGRG IPROC=IPROC+1 - ELSE +ELSE IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NSFRRG IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NDEPGRG @@ -2211,15 +2304,23 @@ IF (LBU_RRG) THEN IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NWETGRG IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(11,IPROC) = NGHCVRG + IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NDRYGRG IPROC=IPROC+1 IF( HCLOUD(1:3) == 'ICE') IPROACTV(11,IPROC) = NGMLTRG IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(11,IPROC) = NWETHRG + IF( HCLOUD == 'ICE4' .AND. .NOT. LRED ) IPROACTV(11,IPROC) = NWETHRG + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED ) IPROACTV(11,IPROC) = NHGCVRG + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(11,IPROC) = NDRYHRG IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(11,IPROC) = NCOHGRG + IF( HCLOUD(1:3) == 'ICE' .AND. LRED) IPROACTV(11,IPROC) = NCORRRG IPROC=IPROC+1 - IF( HCLOUD(1:3) == 'ICE')IPROACTV(11,IPROC) = NSEDIRG + IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 END IF ! @@ -2268,6 +2369,8 @@ IF (HCLOUD=='LIMA') THEN IPROC=IPROC+1 YWORK2(11,IPROC) = 'COHG_' ELSE + YWORK2(11,IPROC) = 'SEDI_' + IPROC=IPROC+1 YWORK2(11,IPROC)= 'SFR_' IPROC=IPROC+1 YWORK2(11,IPROC) = 'DEPG_' @@ -2282,13 +2385,19 @@ ELSE IPROC=IPROC+1 YWORK2(11,IPROC) = 'WETG_' IPROC=IPROC+1 + YWORK2(11,IPROC) = 'GHCV_' + IPROC=IPROC+1 YWORK2(11,IPROC) = 'DRYG_' IPROC=IPROC+1 YWORK2(11,IPROC) = 'GMLT_' IPROC=IPROC+1 YWORK2(11,IPROC) = 'WETH_' IPROC=IPROC+1 - YWORK2(11,IPROC) = 'COHG_' + YWORK2(11,IPROC) = 'HGCV_' + IPROC=IPROC+1 + YWORK2(11,IPROC) = 'DRYH_' + IPROC=IPROC+1 + YWORK2(11,IPROC) = 'CORR_' IPROC=IPROC+1 YWORK2(11,IPROC)= 'SEDI_' END IF @@ -2350,9 +2459,7 @@ IF (LBU_RRH) THEN IPROACTV(12,IPROC) = 3 END IF IPROC=IPROC+1 - ! - ! Microphysical processes - ! +! IF (HCLOUD=='LIMA' .AND. OHAIL) THEN IPROACTV(12,IPROC) = NSEDIRH IPROC=IPROC+1 @@ -2364,15 +2471,26 @@ IF (LBU_RRH) THEN IPROC=IPROC+1 IF (.NOT.OPTSPLIT) IPROACTV(12,IPROC) = NHMLTRH ELSE - IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NWETGRH - IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NWETHRH - IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NCOHGRH + IF( HCLOUD == 'ICE4' .AND. LRED .AND. .NOT. LSEDIM_AFTER) & + IPROACTV(12,IPROC) = NSEDIRH IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NHMLTRH - IPROC=IPROC+1 - IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NSEDIRH + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NGHCVRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. .NOT. LRED) IPROACTV(12,IPROC) = NWETGRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4') IPROACTV(12,IPROC) = NWETHRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NHGCVRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NDRYHRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' ) IPROACTV(12,IPROC) = NHMLTRH + IPROC=IPROC+1 + IF( HCLOUD == 'ICE4' .AND. LRED) IPROACTV(12,IPROC) = NCORRRH + IPROC=IPROC+1 + IF ((HCLOUD(1:3) == 'ICE' .AND. .NOT. LRED).OR. & + (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & + IPROACTV(12,IPROC) = NSEDIRH END IF ! YWORK2(12,1) = 'INIF_' @@ -2405,14 +2523,22 @@ IF (LBU_RRH) THEN YWORK2(12,IPROC) = 'HMLT_' IPROC=IPROC+1 ELSE + YWORK2(12,IPROC) = 'SEDI_' + IPROC=IPROC+1 + YWORK2(12,IPROC) = 'GHCV_' + IPROC=IPROC+1 YWORK2(12,IPROC) = 'WETG_' IPROC=IPROC+1 YWORK2(12,IPROC) = 'WETH_' IPROC=IPROC+1 - YWORK2(12,IPROC) = 'COHG_' - IPROC=IPROC+1 + YWORK2(12,IPROC) = 'HGCV_' + IPROC=IPROC+1 + YWORK2(12,IPROC) = 'DRYH_' + IPROC=IPROC+1 YWORK2(12,IPROC) = 'HMLT_' IPROC=IPROC+1 + YWORK2(12,IPROC) = 'CORR_' + IPROC=IPROC+1 YWORK2(12,IPROC) = 'SEDI_' END IF ! @@ -2770,42 +2896,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_' @@ -2814,9 +2940,9 @@ ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN 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 @@ -2826,14 +2952,14 @@ ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN 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_' @@ -2844,12 +2970,8 @@ ELSEIF (JSV >= NSV_C2R2BEG .AND. JSV <= NSV_C2R2END) THEN 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 @@ -3377,9 +3499,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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_' @@ -3387,30 +3509,30 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN 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 - ! -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 + 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 SUBROUTINE BUDGET_OTHERPROC_SV ! !------------------------------------------------------------------------------- diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index 9f5a538bc6620a64fca482f1c91b93ac59988dcd..15a8191b3834948e5e3f338be1ea96acdd170ea8 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -16,7 +16,7 @@ !! !!** IMPLICIT ARGUMENTS !! ------------------ -!! MODD_PARAMETERS: JPBUMAX, JPBUPROCMAX,NMNHNAMELGTMAX +!! MODD_PARAMETERS: JPBUMAX, JPBUPROCMAX !! !! REFERENCE !! --------- @@ -39,14 +39,14 @@ !! C. Barthe 19/11/09 add budget terms for electricity !! C.Lac 04/2016 negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2 !! C. Barthe /16 add budget terms for LIMA -!! C. Lac 10/2016 add droplets deposition +!! C. LAc 10/2016 add droplets deposition +!! S. Riette 11/2016 New budgets for ICE3/ICE4 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O - !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ -USE MODD_PARAMETERS, ONLY :JPBUMAX, JPBUPROMAX,NMNHNAMELGTMAX +USE MODD_PARAMETERS, ONLY :JPBUMAX, JPBUPROMAX, NMNHNAMELGTMAX ! IMPLICIT NONE ! @@ -276,12 +276,15 @@ INTEGER, SAVE :: NIMLTTH ! Ice MeLTing ICE3 INTEGER, SAVE :: NBERFITH ! BERgeron-FIndeisen gth. ICE3 INTEGER, SAVE :: NCDEPITH ! Cond./DEPosition on ice ICE3 INTEGER, SAVE :: NWETHTH ! wet growth of hail ICE4 +INTEGER, SAVE :: NDRYHTH ! dry growth of hail ICE4 INTEGER, SAVE :: NHMLTTH ! melting of hail ICE4 -INTEGER, SAVE :: NHINDTH ! Heterogeneous Nucleation by Deposition C3R5 -INTEGER, SAVE :: NHINCTH ! Heterogeneous Nucleation by Contact C3R5 -INTEGER, SAVE :: NHONHTH ! Haze Homogeneous Nucleation C3R5 -INTEGER, SAVE :: NHONCTH ! droplet homogeneous nucleation C3R5 -INTEGER, SAVE :: NHONRTH ! drop homogeneous nucleation C3R5 +INTEGER, SAVE :: NADJUTH ! adjustement before rain_ice ICE3 +INTEGER, SAVE :: NCORRTH ! tendencies correction after ICE3 +INTEGER, SAVE :: NHINDTH ! Heterogeneous Nucleation by Deposition LIMA +INTEGER, SAVE :: NHINCTH ! Heterogeneous Nucleation by Contact LIMA +INTEGER, SAVE :: NHONHTH ! Haze Homogeneous Nucleation LIMA +INTEGER, SAVE :: NHONCTH ! droplet homogeneous nucleation LIMA +INTEGER, SAVE :: NHONRTH ! drop homogeneous nucleation LIMA INTEGER, SAVE :: NCEDSTH ! adjustment INTEGER, SAVE :: NSEDITH ! Temperature transport by hydrometeors sedimentation ! @@ -332,8 +335,10 @@ INTEGER, SAVE :: NHENURV ! HEterogenous NUcleation ICE3 INTEGER, SAVE :: NDEPSRV ! DEPosition on Snow ICE3 INTEGER, SAVE :: NDEPGRV ! DEPosition on Graupel ICE3 INTEGER, SAVE :: NCDEPIRV ! Cond./DEPosition on ice ICE3 -INTEGER, SAVE :: NHINDRV ! Heterogeneous Nucleation by Deposition C3R5 -INTEGER, SAVE :: NHONHRV ! Haze Homogeneous Nucleation C3R5 +INTEGER, SAVE :: NADJURV ! adjustement before rain_ice ICE3 +INTEGER, SAVE :: NCORRRV ! tendencies correction after ICE3 +INTEGER, SAVE :: NHINDRV ! Heterogeneous Nucleation by Deposition LIMA +INTEGER, SAVE :: NHONHRV ! Haze Homogeneous Nucleation LIMA INTEGER, SAVE :: NCEDSRV ! adjustement ! ! Allowed processes for the budget of moist variable RRC (cloud water) @@ -360,6 +365,7 @@ INTEGER, SAVE :: NAUTORC ! autoconversion INTEGER, SAVE :: NCONDRC ! evaporation/condensation INTEGER, SAVE :: NHONRC ! HOmogeneous Nucleation ICE3 INTEGER, SAVE :: NRIMRC ! RIMing of cloudwater ICE3 +INTEGER, SAVE :: NCMELRC ! collection by snow and conversion into rain with T>XTT ICE3 INTEGER, SAVE :: NWETGRC ! WET Growth of graupel ICE3 INTEGER, SAVE :: NDRYGRC ! DRY Growth of graupel ICE3 INTEGER, SAVE :: NIMLTRC ! Ice MeLTing ICE3 @@ -370,9 +376,11 @@ INTEGER, SAVE :: NSEDIRC ! sedimentation C2R2 INTEGER, SAVE :: NDEPORC ! ground deposition INTEGER, SAVE :: NDEPOTRRC ! deposition on tree INTEGER, SAVE :: NWETHRC ! wet growth of hail -INTEGER, SAVE :: NHINCRC ! Heterogeneous Nucleation by Contact C3R5 -INTEGER, SAVE :: NHONCRC ! droplet homogeneous nucleation C3R5 -INTEGER, SAVE :: NCEDSRC ! adjustment C3R5 +INTEGER, SAVE :: NDRYHRC ! dry growth of hail ICE4 +INTEGER, SAVE :: NADJURC ! adjustement before rain_ice ICE3 +INTEGER, SAVE :: NHINCRC ! Heterogeneous Nucleation by Contact LIMA +INTEGER, SAVE :: NHONCRC ! droplet homogeneous nucleation LIMA +INTEGER, SAVE :: NCEDSRC ! adjustment LIMA INTEGER, SAVE :: NREVARC ! evaporation of rain drops INTEGER, SAVE :: NCORRRC ! rain <-> cloud transfer at the beginning of LIMA INTEGER, SAVE :: NR2C1RC ! rain -> cloud change after sedimentation in LIMA @@ -397,14 +405,16 @@ INTEGER, SAVE :: NREVARR ! rain evaporation INTEGER, SAVE :: NSEDIRR ! sedimentation INTEGER, SAVE :: NSFRRR ! Spontaneous FReezing ICE3 INTEGER, SAVE :: NACCRR ! ACCretion of rainwater ICE3 +INTEGER, SAVE :: NCMELRR ! collection of droplets by snow and conversion into rain with T>XTT ICE3 INTEGER, SAVE :: NCFRZRR ! Conversion FReeZing ICE3 INTEGER, SAVE :: NWETGRR ! WET Growth of graupel ICE3 INTEGER, SAVE :: NDRYGRR ! DRY Growth of graupel ICE3 INTEGER, SAVE :: NGMLTRR ! Graupel MeLTing ICE3 INTEGER, SAVE :: NWETHRR ! wet growth of hail ICE4 +INTEGER, SAVE :: NDRYHRR ! dry growth of hail ICE4 INTEGER, SAVE :: NHMLTRR ! melting of hail ICE4 -INTEGER, SAVE :: NHONRRR ! drop homogeneous nucleation C3R5 -INTEGER, SAVE :: NCORRRR ! rain <-> cloud transfer at the beginning of LIMA +INTEGER, SAVE :: NCORRRR ! tendencies correction after ICE3 +INTEGER, SAVE :: NHONRRR ! drop homogeneous nucleation LIMA INTEGER, SAVE :: NR2C1RR ! rain -> cloud change after sedimentation in LIMA INTEGER, SAVE :: NCVRCRR ! rain -> cloud change after other microphysical processes in LIMA ! @@ -436,15 +446,17 @@ INTEGER, SAVE :: NIMLTRI ! Ice MeLTing ICE3 INTEGER, SAVE :: NBERFIRI ! BERgeron-FIndeisen gth. ICE3 INTEGER, SAVE :: NCDEPIRI ! Cond./DEPosition on ice ICE3 INTEGER, SAVE :: NWETHRI ! wet growth of hail ICE4 -INTEGER, SAVE :: NHINDRI ! heterogeneous nucleation by deposition C3R5 -INTEGER, SAVE :: NHINCRI ! heterogeneous nucleation by contact C3R5 -INTEGER, SAVE :: NHONHRI ! haze homogeneous nucleation source C3R5 -INTEGER, SAVE :: NHONCRI ! droplet homogeneous nucleation C3R5 -INTEGER, SAVE :: NCNVIRI ! Conversion of snow to r_i C3R5 -INTEGER, SAVE :: NCNVSRI ! Conversion of pristine ice to r_s C3R5 -INTEGER, SAVE :: NHMSRI ! Hallett-Mossop ice multiplication process due to snow riming C3R5 -INTEGER, SAVE :: NHMGRI ! Hallett-Mossop ice multiplication process due to graupel riming C3R5 -INTEGER, SAVE :: NCEDSRI ! adjustement C3R5 +INTEGER, SAVE :: NDRYHRI ! dry growth of hail ICE4 +INTEGER, SAVE :: NADJURI ! adjustement before rain_ice ICE3 +INTEGER, SAVE :: NHINDRI ! heterogeneous nucleation by deposition LIMA +INTEGER, SAVE :: NHINCRI ! heterogeneous nucleation by contact LIMA +INTEGER, SAVE :: NHONHRI ! haze homogeneous nucleation source LIMA +INTEGER, SAVE :: NHONCRI ! droplet homogeneous nucleation LIMA +INTEGER, SAVE :: NCNVIRI ! Conversion of snow to r_i LIMA +INTEGER, SAVE :: NCNVSRI ! Conversion of pristine ice to r_s LIMA +INTEGER, SAVE :: NHMSRI ! Hallett-Mossop ice multiplication process due to snow riming LIMA +INTEGER, SAVE :: NHMGRI ! Hallett-Mossop ice multiplication process due to graupel riming LIMA +INTEGER, SAVE :: NCEDSRI ! adjustement LIMA INTEGER, SAVE :: NCORRRI ! ice <-> snow transfer at the beginning of LIMA ! ! Allowed processes for the budget of moist variable RRS (snow) @@ -470,9 +482,10 @@ INTEGER, SAVE :: NCMELRS ! Conversion MeLTing ICE3 INTEGER, SAVE :: NWETGRS ! WET Growth of graupel ICE3 INTEGER, SAVE :: NDRYGRS ! DRY Growth of graupel ICE3 INTEGER, SAVE :: NWETHRS ! wet growth of hail ICE4 -INTEGER, SAVE :: NCNVIRS ! Conversion of snow to r_i C3R5 -INTEGER, SAVE :: NCNVSRS ! Conversion of pristine ice to r_s C3R5 -INTEGER, SAVE :: NHMSRS ! Hallett-Mossop ice multiplication process due to snow riming C3R5 +INTEGER, SAVE :: NDRYHRS ! dry growth of hail ICE4 +INTEGER, SAVE :: NCNVIRS ! Conversion of snow to r_i LIMA +INTEGER, SAVE :: NCNVSRS ! Conversion of pristine ice to r_s LIMA +INTEGER, SAVE :: NHMSRS ! Hallett-Mossop ice multiplication process due to snow riming LIMA INTEGER, SAVE :: NCORRRS ! ice <-> snow transfer at the beginning of LIMA ! ! Allowed processes for the budget of moist variable RRG (graupel) @@ -499,7 +512,11 @@ INTEGER, SAVE :: NWETGRG ! WET Growth of graupel ICE3 INTEGER, SAVE :: NDRYGRG ! DRY Growth of graupel ICE3 INTEGER, SAVE :: NGMLTRG ! Graupel MeLTing ICE3 INTEGER, SAVE :: NWETHRG ! wet growth of hail ICE4 -INTEGER, SAVE :: NHONRRG ! drop homogeneous nucleation C3R5 +INTEGER, SAVE :: NDRYHRG ! dry growth of hail ICE4 +INTEGER, SAVE :: NCORRRG ! tendencies correction after ICE3 +INTEGER, SAVE :: NHGCVRG ! Hail to Graupel ConVersion ICE4 +INTEGER, SAVE :: NGHCVRG ! Graupel to Hail ConVersion ICE4 +INTEGER, SAVE :: NHONRRG ! drop homogeneous nucleation LIMA INTEGER, SAVE :: NHMGRG ! Hallett-Mossop ice multiplication process due to graupel riming INTEGER, SAVE :: NCOHGRG ! conversion of hail to graupel ! @@ -519,8 +536,12 @@ INTEGER, SAVE :: NNEGARH ! negative correction INTEGER, SAVE :: NSEDIRH ! sedimentation INTEGER, SAVE :: NWETGRH ! wet growth of graupel INTEGER, SAVE :: NWETHRH ! wet growth of hail -INTEGER, SAVE :: NCOHGRH ! reconversion from hail to graupel ICE4 +INTEGER, SAVE :: NCOHGRH ! reconversion from hail to graupel LIMA +INTEGER, SAVE :: NDRYHRH ! dry growth of hail ICE4 INTEGER, SAVE :: NHMLTRH ! melting +INTEGER, SAVE :: NCORRRH ! tendencies correction after ICE3 +INTEGER, SAVE :: NHGCVRH ! Hail to Graupel ConVersion ICE4 +INTEGER, SAVE :: NGHCVRH ! Graupel to Hail ConVersion ICE4 ! ! Courant namelist: NAM_BURSV ! diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90 index d7b25da377d7adae67f00b28406fecf1aa4209a5..7fb6f12e714832d959136737f8fa584518c27537 100644 --- a/src/MNH/modn_budget.f90 +++ b/src/MNH/modn_budget.f90 @@ -228,6 +228,7 @@ !! C.Lac 04/2016 negative contribution to the budget splitted between advection, turbulence and microphysics for KHKO/C2R2 !! C. Barthe /16 add budget terms for LIMA !! C.Lac 10/2016 Add droplet deposition +!! S. Riette 11/2016 New budgets for ICE3/ICE4 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -254,7 +255,7 @@ NAMELIST/NAM_BU_RTH/LBU_RTH, NASSETH, NNESTTH, NADVTH, NFRCTH, & NVTURBTH, NDISSHTH, NNEGATH, NREVATH, NCONDTH, NHENUTH, NHONTH, & NSFRTH, NDEPSTH, NDEPGTH,NRIMTH, NACCTH, NCFRZTH, NWETGTH, & NDRYGTH, NGMLTTH, NIMLTTH, NBERFITH, NCDEPITH, NWETHTH, NHMLTTH, & - NMAFLTH, NNETURTH, NNEADVTH, NNECONTH, & + NMAFLTH, NNETURTH, NNEADVTH,NNECONTH, NDRYHTH, NADJUTH, NCORRTH, & NHINDTH, NHINCTH, NHONHTH, NHONCTH, NHONRTH, NCEDSTH, NSEDITH ! NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE, & @@ -264,40 +265,41 @@ NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE, & NAMELIST/NAM_BU_RRV/LBU_RRV, NASSERV, NNESTRV, NADVRV, NFRCRV, & NNUDRV, NDIFRV, NRELRV, NDCONVRV, NHTURBRV, NVTURBRV, NNEGARV, & NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV, & - NNETURRV, NNEADVRV,NNECONRV, NHINDRV, NHONHRV, NCEDSRV + NNETURRV, NNEADVRV,NNECONRV, NADJURV, NCORRRV, NHINDRV, NHONHRV, NCEDSRV ! NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NFRCRC, & NDIFRC, NRELRC, NDCONVRC, NHTURBRC, NVTURBRC, NNEGARC, NACCRRC, & NAUTORC, NCONDRC, NHONRC, NRIMRC, NWETGRC, NDRYGRC, NIMLTRC, & NBERFIRC, NCDEPIRC, NHENURC, NSEDIRC, NWETHRC, NNETURRC, & - NNEADVRC,NNECONRC, NHINCRC, NHONCRC, NCEDSRC, NREVARC,& - NDEPORC,NDEPOTRRC, NCORRRC, NR2C1RC, NCVRCRC + NNEADVRC,NNECONRC, NDRYHRC, NADJURC, NCORRRC, NCMELRC, & + NHINCRC, NHONCRC, NCEDSRC, NREVARC, NDEPORC,NDEPOTRRC, & + NCORRRC, NR2C1RC, NCVRCRC ! NAMELIST/NAM_BU_RRR/LBU_RRR, NASSERR, NNESTRR, NADVRR, NFRCRR, & NDIFRR, NRELRR, NNEGARR, NACCRRR, NAUTORR, NREVARR, NSEDIRR, & NSFRRR, NACCRR, NCFRZRR, NWETGRR, NDRYGRR, NGMLTRR, NWETHRR, & - NHMLTRR, & - NHONRRR, NCORRRR, NR2C1RR, NCVRCRR + NHMLTRR, NDRYHRR, NCORRRR, NCMELRR,NHONRRR, NCORRRR, NR2C1RR, NCVRCRR ! NAMELIST/NAM_BU_RRI/LBU_RRI, NASSERI, NNESTRI, NADVRI, NFRCRI, & NDIFRI, NRELRI, NDCONVRI, NHTURBRI, NVTURBRI, NNEGARI, NSEDIRI, & NHENURI, NHONRI, NAGGSRI, NAUTSRI, NCFRZRI, NWETGRI, NDRYGRI, & - NIMLTRI, NBERFIRI, NCDEPIRI, NWETHRI, & + NIMLTRI, NBERFIRI, NCDEPIRI, NWETHRI, NDRYHRI, NADJURI, NCORRRI, & NHINDRI, NHINCRI, NHONHRI, NHONCRI, NCNVIRI, NCNVSRI, & NHMSRI, NHMGRI, NCEDSRI, NCORRRI ! NAMELIST/NAM_BU_RRS/LBU_RRS, NASSERS, NNESTRS, NADVRS, NFRCRS, & NDIFRS, NRELRS, NNEGARS, NSEDIRS, NDEPSRS, NAGGSRS, NAUTSRS, & - NRIMRS, NACCRS, NCMELRS, NWETGRS, NDRYGRS, NWETHRS, & - NCNVIRS, NCNVSRS, NHMSRS, NCORRRS + NRIMRS, NACCRS, NCMELRS, NWETGRS, NDRYGRS, NWETHRS, NDRYHRS, & + NCORRRS, NCNVIRS, NCNVSRS, NHMSRS, NCORRRS ! NAMELIST/NAM_BU_RRG/LBU_RRG, NASSERG, NNESTRG, NADVRG, NFRCRG, & NDIFRG, NRELRG, NNEGARG, NSEDIRG, NSFRRG, NDEPGRG, NRIMRG, NACCRG, & NCMELRG, NCFRZRG, NWETGRG, NDRYGRG, NGMLTRG, NWETHRG, & - NHONRRG, NHMGRG, NCOHGRG + NDRYHRG, NCORRRG, NHGCVRG, NGHCVRG,NHONRRG, NHMGRG, NCOHGRG ! NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, & - NDIFRH, NRELRH, NNEGARH, NSEDIRH, NWETGRH, NWETHRH, NCOHGRH, NHMLTRH + NDIFRH, NRELRH, NNEGARH, NSEDIRH, NWETGRH, NWETHRH, NDRYHRH, NHMLTRH, & + NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH ! NAMELIST/NAM_BU_RSV/ LBU_RSV, NASSESV, NNESTSV, NADVSV, NFRCSV, & NDIFSV, NRELSV, NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV, NMAFLSV, &