diff --git a/src/MNH/advection_metsv.f90 b/src/MNH/advection_metsv.f90 index e5cf670a1f8f6f833611bfec13e175d84ce20f65..119491566289ecbbd42c208f42590b3f467a8a95 100644 --- a/src/MNH/advection_metsv.f90 +++ b/src/MNH/advection_metsv.f90 @@ -139,6 +139,7 @@ END MODULE MODI_ADVECTION_METSV !! 03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and !! microphysics budgets ! P. Wautelet 11/06/2020: bugfix: correct PRSVS array indices +! P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -692,6 +693,20 @@ DO JSV=1,KSV END DO ! SELECT CASE ( HCLOUD ) + CASE('KESS') + WHERE (PRRS(:,:,:,2) < 0.) + PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) + ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:) + ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT) + ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1) + PRTHS(:,:,:) = PRTHS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) / & + ZCPH(:,:,:) / ZEXN(:,:,:) + PRRS(:,:,:,2) = 0.0 + END WHERE +! + PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) ) +! CASE('ICE3','ICE4') ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:) @@ -731,6 +746,8 @@ SELECT CASE ( HCLOUD ) PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF +! + PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) ) ! CASE('C2R2','KHKO') ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) @@ -750,8 +767,10 @@ SELECT CASE ( HCLOUD ) PRSVS(:,:,:,NSV_C2R2BEG-1+JSV) = 0.0 END WHERE END DO - ! - CASE('LIMA') +! + PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) ) +! + CASE('LIMA') ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) ZT(:,:,:)= PTHT(:,:,:)*ZEXN(:,:,:) ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZT(:,:,:)-XTT) @@ -793,7 +812,8 @@ SELECT CASE ( HCLOUD ) ! END SELECT ! -IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'LIMA') ) THEN +IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. & + HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'LIMA' ) THEN IF (LBUDGET_TH) CALL BUDGET (PRTHS(:,:,:) , 4,'NEADV_BU_RTH') IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NEADV_BU_RRV') IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NEADV_BU_RRC') @@ -803,22 +823,17 @@ IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCL IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NEADV_BU_RRG') IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NEADV_BU_RRH') END IF -IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN - IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NEADV_BU_RSV') - IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NEADV_BU_RSV') - IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NEADV_BU_RSV') - IF (NMOD_CCN.GE.1) THEN - DO JI=1, NMOD_CCN - CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NEADV_BU_RSV') - END DO - END IF - IF (NMOD_IFN.GE.1) THEN - DO JI=1, NMOD_IFN - CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NEADV_BU_RSV') - END DO - END IF -END IF +IF (LBUDGET_SV .AND. (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO')) THEN + DO JI = 1, 3 + CALL BUDGET ( PRSVS(:,:,:,NSV_C2R2BEG-1+JI),12+NSV_C2R2BEG-1+JI,'NEADV_BU_RSV') + END DO +END IF +IF (LBUDGET_SV .AND. HCLOUD == 'LIMA') THEN + DO JI = NSV_LIMA_BEG, NSV_LIMA_END + CALL BUDGET ( PRSVS(:,:,:,JI),12+JI,'NEADV_BU_RSV') + END DO +END IF !------------------------------------------------------------------------------- ! END SUBROUTINE ADVECTION_METSV diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index 911ab2fe08e7e703de3b74a2a1ee0b1129e89d9f..616205e3fd06901bbf6532ac2f902269095ccb96 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -152,16 +152,17 @@ END MODULE MODI_INI_BUDGET !! C.Lac 29/01/15 Correction for NSV_USER !! J.Escobar 02/10/2015 modif for JPHEXT(JPVEXT) variable !! 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 -!! S. Riette 11/2016 New budgets for ICE3/ICE4 +! C. Lac 04/2016: negative contribution to the budget split 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 +! S. Riette 11/2016: new budgets for ICE3/ICE4 ! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet 24/02/2020: bugfix: corrected condition for budget NCDEPITH ! P. Wautelet 26/02/2020: bugfix: rename CEVA->REVA for budget for raindrop evaporation in C2R2 (necessary after commit 4ed805fc) ! P. Wautelet 26/02/2020: bugfix: add missing condition on OCOLD for NSEDIRH budget in LIMA case ! B. Vie 02/03/2020: LIMA negativity checks after turbulence, advection and microphysics budgets ! P. Wautelet 25/03/2020: add missing ove_relax_grd +! P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -183,6 +184,7 @@ USE MODD_PARAM_LIMA, ONLY : OWARM=>LWARM, OCOLD=>LCOLD, OSEDI=>LSEDI, & OHAIL=>LHAIL, OSCAV=>LSCAV, OMEYERS=>LMEYERS,& ODEPOC=>LDEPOC, OPTSPLIT=>LPTSPLIT, & NMOD_CCN +USE MODD_PARAM_n, only: CELEC ! USE MODE_ll USE MODE_IO_ll @@ -787,19 +789,19 @@ IF (LBU_RTH) THEN IPROC=IPROC+1 IF (HTURB /= 'NONE') IPROACTV(4,IPROC) = NDISSHTH IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & - IPROACTV(4,IPROC) = NNETURTH + IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) & + IPROACTV(4,IPROC) = NNETURTH IPROC=IPROC+1 IF ( HSCONV == 'EDKF' ) IPROACTV(4,IPROC) = NMAFLTH IPROC=IPROC+1 IPROACTV(4,IPROC) = NADVTH IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(4,IPROC) = NNEADVTH + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(4,IPROC) = NNEADVTH IPROC=IPROC+1 - IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & - IPROACTV(4,IPROC) = NNEGATH + IF (HCLOUD /= 'NONE') IPROACTV(4,IPROC) = NNEGATH IPROC=IPROC+1 IF (HCLOUD == 'LIMA') THEN IF (OPTSPLIT) IPROACTV(4,IPROC) = NSEDITH @@ -900,9 +902,7 @@ IF (LBU_RTH) THEN HCLOUD == 'REVE') IPROACTV(4,IPROC) = NCONDTH IPROC=IPROC+1 END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2').OR. (HCLOUD == 'KESS')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(4,IPROC) = NNECONTH + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(4,IPROC) = NNECONTH ! YWORK2(4,1) = 'INIF_' YWORK2(4,2) = 'ENDF_' @@ -1171,19 +1171,19 @@ IF (LBU_RRV) THEN END IF END IF IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) & + IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) & IPROACTV(6,IPROC) = NNETURRV IPROC=IPROC+1 IF ( HSCONV == 'EDKF' ) IPROACTV(6,IPROC) = NMAFLRV IPROC=IPROC+1 IPROACTV(6,IPROC) = NADVRV IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(6,IPROC) = NNEADVRV + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(6,IPROC) = NNEADVRV IPROC=IPROC+1 - IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & - IPROACTV(6,IPROC) = NNEGARV + IF (HCLOUD /= 'NONE') IPROACTV(6,IPROC) = NNEGARV IPROC=IPROC+1 IF (HCLOUD == 'LIMA') THEN @@ -1233,9 +1233,7 @@ IF (LBU_RRV) THEN IPROACTV(6,IPROC) = NCDEPIRV IPROC=IPROC+1 END IF - IF ( (HCLOUD == 'KHKO' ) .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'KESS')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) & - IPROACTV(6,IPROC) = NNECONRV + IF ( HCLOUD /= 'NONE' .AND. CELEC == 'NONE' ) IPROACTV(6,IPROC) = NNECONRV IPROC=IPROC+1 ! @@ -1368,18 +1366,17 @@ IF (LBU_RRC) THEN END IF END IF IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))) & - IPROACTV(7,IPROC) = NNETURRC + IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) & + IPROACTV(7,IPROC) = NNETURRC IPROC=IPROC+1 IPROACTV(7,IPROC) = NADVRC IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) & - IPROACTV(7,IPROC) = NNEADVRC + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(7,IPROC) = NNEADVRC IPROC=IPROC+1 - IF (HCLOUD /= 'NONE' .AND. HCLOUD /= 'KHKO' .AND. HCLOUD /= 'C2R2') & - IPROACTV(7,IPROC) = NNEGARC + IF (HCLOUD /= 'NONE') IPROACTV(7,IPROC) = NNEGARC IPROC=IPROC+1 IF (HCLOUD == 'LIMA') THEN @@ -1483,9 +1480,7 @@ IF (LBU_RRC) THEN HCLOUD(1:3) == 'KES'.OR. HCLOUD == 'REVE') IPROACTV(7,IPROC) = NCONDRC IPROC=IPROC+1 END IF - IF ( (HCLOUD == 'KHKO' ) .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'KESS')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) & - IPROACTV(7,IPROC) = NNECONRC + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(7,IPROC) = NNECONRC IPROC=IPROC+1 ! @@ -1645,13 +1640,14 @@ IF (LBU_RRR) THEN END IF END IF IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(8,IPROC) = NNETURRR + IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' .OR. HCLOUD == 'LIMA' ) ) & + IPROACTV(8,IPROC) = NNETURRR IPROC=IPROC+1 IPROACTV(8,IPROC) = NADVRR IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(8,IPROC) = NNEADVRR + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(8,IPROC) = NNEADVRR IPROC=IPROC+1 IF ( HCLOUD /= 'NONE' ) IPROACTV(8,IPROC) = NNEGARR IPROC=IPROC+1 @@ -1743,9 +1739,7 @@ IF (LBU_RRR) THEN IPROACTV(8,IPROC) = NSEDIRR IPROC=IPROC+1 END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(8,IPROC) = NNECONRR + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(8,IPROC) = NNECONRR ! YWORK2(8,1) = 'INIF_' YWORK2(8,2) = 'ENDF_' @@ -1901,14 +1895,14 @@ IF (LBU_RRI) THEN END IF END IF IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & - IPROACTV(9,IPROC) = NNETURRI + IF ( HTURB /= 'NONE' .AND. ( HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) ) & + IPROACTV(9,IPROC) = NNETURRI IPROC=IPROC+1 IPROACTV(9,IPROC) = NADVRI IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(9,IPROC) = NNEADVRI + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(9,IPROC) = NNEADVRI IPROC=IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(9,IPROC) = NNEGARI IPROC=IPROC+1 @@ -1988,9 +1982,7 @@ IF (LBU_RRI) THEN IPROACTV(9,IPROC) = NCDEPIRI IPROC=IPROC+1 END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(9,IPROC) = NNECONRI + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(9,IPROC) = NNECONRI ! YWORK2(9,1) = 'INIF_' YWORK2(9,2) = 'ENDF_' @@ -2128,15 +2120,16 @@ IF (LBU_RRS) THEN IPROACTV(10,IPROC) = 3 END IF END IF - IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & - IPROACTV(10,IPROC) = NNETURRS +! IPROC=IPROC+1 +! IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & +! .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & +! IPROACTV(10,IPROC) = NNETURRS IPROC= IPROC+1 IPROACTV(10,IPROC) = NADVRS IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(10,IPROC) = NNEADVRS + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(10,IPROC) = NNEADVRS IPROC= IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(10,IPROC) = NNEGARS IPROC=IPROC+1 @@ -2199,9 +2192,7 @@ IF (HCLOUD=='LIMA') THEN IPROACTV(10,IPROC) = NSEDIRS IPROC=IPROC+1 END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(10,IPROC) = NNECONRS + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(10,IPROC) = NNECONRS ! YWORK2(10,1) = 'INIF_' YWORK2(10,2) = 'ENDF_' @@ -2216,8 +2207,8 @@ END IF YWORK2(10,IPROC) = 'DIF_' IPROC= IPROC+1 YWORK2(10,IPROC) = 'REL_' - IPROC=IPROC+1 - YWORK2(10,IPROC) = 'NETUR_' +! IPROC=IPROC+1 +! YWORK2(10,IPROC) = 'NETUR_' IPROC= IPROC+1 YWORK2(10,IPROC) = 'ADV_' IPROC=IPROC+1 @@ -2317,15 +2308,16 @@ IF (LBU_RRG) THEN IPROACTV(11,IPROC) = 3 END IF END IF - IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & - IPROACTV(11,IPROC) = NNETURRG +! IPROC=IPROC+1 +! IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & +! .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & +! IPROACTV(11,IPROC) = NNETURRG IPROC=IPROC+1 IPROACTV(11,IPROC) = NADVRG IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(11,IPROC) = NNEADVRG + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(11,IPROC) = NNEADVRG IPROC=IPROC+1 IF( HCLOUD /= 'NONE' ) IPROACTV(11,IPROC) = NNEGARG IPROC=IPROC+1 @@ -2393,9 +2385,7 @@ ELSE IPROACTV(11,IPROC) = NSEDIRG IPROC=IPROC+1 END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(11,IPROC) = NNECONRG + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(11,IPROC) = NNECONRG ! YWORK2(11,1) = 'INIF_' YWORK2(11,2) = 'ENDF_' @@ -2410,8 +2400,8 @@ END IF YWORK2(11,IPROC) = 'DIF_' IPROC=IPROC+1 YWORK2(11,IPROC) = 'REL_' - IPROC=IPROC+1 - YWORK2(11,IPROC) = 'NETUR_' +! IPROC=IPROC+1 +! YWORK2(11,IPROC) = 'NETUR_' IPROC=IPROC+1 YWORK2(11,IPROC) = 'ADV_' IPROC=IPROC+1 @@ -2529,15 +2519,16 @@ IF (LBU_RRH) THEN IPROACTV(12,IPROC) = 3 END IF END IF - IPROC=IPROC+1 - IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & - IPROACTV(12,IPROC) = NNETURRH +! IPROC=IPROC+1 +! IF (HTURB /= 'NONE' .AND. ( (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') & +! .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA') )) & +! IPROACTV(12,IPROC) = NNETURRH IPROC=IPROC+1 IPROACTV(12,IPROC) = NADVRH IPROC=IPROC+1 - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA')) IPROACTV(12,IPROC) = NNEADVRH + IF ( HCLOUD == 'KESS' .OR. HCLOUD == 'KHKO' .OR. HCLOUD == 'C2R2' & + .OR. HCLOUD == 'ICE3' .OR. HCLOUD == 'ICE4' .OR. HCLOUD == 'LIMA' ) & + IPROACTV(12,IPROC) = NNEADVRH IPROC=IPROC+1 IF( HCLOUD /= 'NONE' ) THEN IPROACTV(12,IPROC) = NNEGARH @@ -2578,9 +2569,7 @@ IF (LBU_RRH) THEN (HCLOUD(1:3) == 'ICE' .AND. LRED .AND. LSEDIM_AFTER)) & IPROACTV(12,IPROC) = NSEDIRH END IF - IF ((HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2')& - .OR. (HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'LIMA'))& - IPROACTV(12,IPROC) = NNECONRH + IF (HCLOUD /= 'NONE' .AND. CELEC == 'NONE') IPROACTV(12,IPROC) = NNECONRH ! YWORK2(12,1) = 'INIF_' YWORK2(12,2) = 'ENDF_' @@ -2595,8 +2584,8 @@ IF (LBU_RRH) THEN YWORK2(12,IPROC) = 'DIF_' IPROC=IPROC+1 YWORK2(12,IPROC) = 'REL_' - IPROC=IPROC+1 - YWORK2(12,IPROC) = 'NETUR_' +! IPROC=IPROC+1 +! YWORK2(12,IPROC) = 'NETUR_' IPROC=IPROC+1 YWORK2(12,IPROC) = 'ADV_' IPROC=IPROC+1 @@ -2697,7 +2686,7 @@ IF (LBU_RSV) THEN IPROC=IPROC+1 IF ( HSCONV == 'EDKF' ) IPROACTV(12+JSV,IPROC)= NMAFLSV IPROC=IPROC+1 - IF ( HCLOUD /= 'LIMA' ) IPROACTV(12+JSV,IPROC)= NADVSV + IF ( HCLOUD /= 'LIMA' .AND. HCLOUD /= 'C2R2' .AND. HCLOUD /= 'KHKO' ) IPROACTV(12+JSV,IPROC)= NADVSV IPROC=IPROC+1 ! YWORK2(12+JSV,1) = 'INIF_' @@ -3014,6 +3003,15 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM ! C2R2 or KHKO Case SELECT CASE(JSV-NSV_C2R2BEG+1) CASE (1) ! Concentration of activated nuclei + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (.NOT. LSUPSAT) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' @@ -3022,7 +3020,19 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 CASE (2) ! Concentration of cloud droplets + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (.NOT. LSUPSAT) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' @@ -3047,7 +3057,19 @@ USE MODD_PARAM_LIMA, ONLY : NMOD_CCN, NMOD_IFN, NMOD_IMM ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CEVA_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 CASE (3) ! Concentration of raindrops + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'AUTO_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 @@ -3065,6 +3087,9 @@ 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 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END SELECT ! ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN @@ -3082,7 +3107,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_' @@ -3193,7 +3218,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (OPTSPLIT .AND. OWARM .AND. ORAIN) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_' @@ -3291,7 +3316,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (OWARM .AND. OACTI .AND. NMOD_CCN.GE.1) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'HENU_' @@ -3315,10 +3340,39 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN END IF ! ELSE IF (JSV.GE.NSV_LIMA_CCN_ACTI .AND. JSV.LT.(NSV_LIMA_CCN_ACTI+NMOD_CCN)) THEN + ! Activated CCN conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ! Activated CCN conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + + ELSE IF (JSV == NSV_LIMA_SCAVMASS) THEN + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ELSE IF (JSV == NSV_LIMA_NI) THEN ! Pristine ice crystals conc. @@ -3333,7 +3387,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (OPTSPLIT .AND. OCOLD .AND. OSNOW) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'CORR_' @@ -3434,7 +3488,7 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' - IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (OCOLD .AND. ONUCL .AND. (.NOT.OMEYERS)) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'HIND_' @@ -3453,27 +3507,63 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN END IF ! ELSE IF (JSV.GE.NSV_LIMA_IFN_NUCL .AND. JSV.LT.(NSV_LIMA_IFN_NUCL+NMOD_IFN)) THEN + ! Nucleated IFN conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ! Nucleated IFN conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ELSE IF (JSV.GE.NSV_LIMA_IMM_NUCL .AND. JSV.LT.(NSV_LIMA_IMM_NUCL+NMOD_IMM)) THEN + ! Nucleated IMM conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 - ! Nucleated IMM conc. + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 ELSE IF (JSV == NSV_LIMA_HOM_HAZE) THEN ! Homogeneous freezing of CCN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NETUR_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR)= 'ADV_' IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEADV_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (.NOT.OPTSPLIT .AND. 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 + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NECON_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = 1 END IF @@ -3483,6 +3573,9 @@ ELSEIF (JSV >= NSV_LIMA_BEG .AND. JSV <= NSV_LIMA_END) THEN 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)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQV @@ -3501,6 +3594,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQV CASE(2) ! volumetric charge of cloud droplets + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (LWARM) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' @@ -3536,6 +3632,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQC CASE(3) ! volumetric charge of rain drops + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV IF (LWARM) THEN ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AUTO_' @@ -3569,6 +3668,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQR CASE(4) ! volumetric charge of ice crystals + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'AGGS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NAGGSQI @@ -3603,6 +3705,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQI CASE(5) ! volumetric charge of snow + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPS_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPSQS @@ -3637,6 +3742,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN YWORK2(12+JSV,ILAST_PROC_NBR) = 'NEUT_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQS CASE(6) ! volumetric charge of graupel + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV ILAST_PROC_NBR = ILAST_PROC_NBR + 1 YWORK2(12+JSV,ILAST_PROC_NBR) = 'DEPG_' IPROACTV(12+JSV,ILAST_PROC_NBR) = NDEPGQG @@ -3669,6 +3777,9 @@ ELSEIF (JSV >= NSV_ELECBEG .AND. JSV <= NSV_ELECEND) THEN IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEUTQG CASE(7) ! volumetric charge of hail ! add budget for hail volumetric charge + ILAST_PROC_NBR = ILAST_PROC_NBR + 1 + YWORK2(12+JSV,ILAST_PROC_NBR)= 'NEGA_' + IPROACTV(12+JSV,ILAST_PROC_NBR) = NNEGASV END SELECT ! ELSE IF (JSV >= NSV_CHEMBEG .AND. JSV <= NSV_CHEMEND) THEN diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 9ec614a5705c121d223dbdb23d7c49a45d0b3fe4..04789477baa173cb01094441b3218579d291e7ff 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -272,6 +272,7 @@ END MODULE MODI_RESOLVED_CLOUD !! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation ! P. Wautelet 11/06/2020: bugfix: correct ZSVS array indices ! P. Wautelet 11/06/2020: bugfix: add "Non local correction for precipitating species" for ICE4 +! P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -635,25 +636,24 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,2) = 0.0 END WHERE ! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! -! CASE('C2R2','KHKO') -! CALL GET_HALO(PRS(:,:,:,2)) -! CALL GET_HALO(ZSVS(:,:,:,2)) -! WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) -! ZSVS(:,:,:,1) = 0.0 -! END WHERE -! DO JSV = 2, 3 -! WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) -! PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) -! PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & -! ZCPH(:,:,:) / ZEXN(:,:,:) -! PRS(:,:,:,JSV) = 0.0 -! ZSVS(:,:,:,JSV) = 0.0 -! END WHERE -! ENDDO -! Commented 03/2013 O.Thouron -! (at least necessary to be commented for supersaturation variable) -! ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) +! + CASE('C2R2','KHKO') + WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) + ZSVS(:,:,:,1) = 0.0 + END WHERE + DO JSV = 2, 3 + WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) + PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) + PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & + ZCPH(:,:,:) / ZEXN(:,:,:) + PRS(:,:,:,JSV) = 0.0 + ZSVS(:,:,:,JSV) = 0.0 + END WHERE + ENDDO +! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! ! CASE('ICE3','ICE4') @@ -690,6 +690,8 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF +! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! CASE('C3R5') WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) @@ -704,14 +706,13 @@ SELECT CASE ( HCLOUD ) ZSVS(:,:,:,JSV) = 0.0 END WHERE ENDDO - ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) ! ice WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) / & ZCPH(:,:,:) / PEXNREF(:,:,:) PRS(:,:,:,4) = 0.0 - PSVS(:,:,:,4) = 0.0 + ZSVS(:,:,:,4) = 0.0 END WHERE ! cloud WHERE (PRS(:,:,:,2) < 0.) @@ -719,11 +720,13 @@ SELECT CASE ( HCLOUD ) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & ZCPH(:,:,:) / PEXNREF(:,:,:) PRS(:,:,:,2) = 0.0 - PSVS(:,:,:,2) = 0.0 + ZSVS(:,:,:,2) = 0.0 END WHERE - PSVS(:,:,:,:) = MAX( 0.0,PSVS(:,:,:,:) ) ! - CASE('LIMA') + ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) +! + CASE('LIMA') ! Correction where rc<0 or Nc<0 IF (OWARM) THEN WHERE (PRS(:,:,:,2) < YRTMIN(2)/PTSTEP .OR. ZSVS(:,:,:,NSV_LIMA_NC-NSV_LIMA_BEG+1) < YCTMIN(2)/PTSTEP) @@ -756,7 +759,7 @@ SELECT CASE ( HCLOUD ) END IF ! ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) - PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! END SELECT ! @@ -764,35 +767,31 @@ END SELECT !* 3.3 STORE THE BUDGET TERMS ! ---------------------- ! -IF ((HCLOUD /= 'KHKO') .AND. (HCLOUD /= 'C2R2') ) THEN - IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:), 4,'NEGA_BU_RTH') - IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NEGA_BU_RRV') - IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NEGA_BU_RRC') -END IF +IF (LBUDGET_TH) CALL BUDGET (PTHS(:,:,:) * PRHODJ(:,:,:), 4,'NEGA_BU_RTH') +IF (LBUDGET_RV) CALL BUDGET (PRS(:,:,:,1) * PRHODJ(:,:,:), 6,'NEGA_BU_RRV') +IF (LBUDGET_RC) CALL BUDGET (PRS(:,:,:,2) * PRHODJ(:,:,:), 7,'NEGA_BU_RRC') IF (LBUDGET_RR) CALL BUDGET (PRS(:,:,:,3) * PRHODJ(:,:,:), 8,'NEGA_BU_RRR') IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NEGA_BU_RRI') IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NEGA_BU_RRS') IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NEGA_BU_RRG') IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NEGA_BU_RRH') -IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN - IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NEGA_BU_RSV') - IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NEGA_BU_RSV') - IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NEGA_BU_RSV') - IF (NMOD_CCN.GE.1) THEN - DO JL=1, NMOD_CCN - CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-NSV_LIMA_BEG)* & - PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NEGA_BU_RSV') - END DO - END IF - IF (NMOD_IFN.GE.1) THEN - DO JL=1, NMOD_IFN - CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-NSV_LIMA_BEG)* & - PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NEGA_BU_RSV') - END DO - END IF + +IF (LBUDGET_SV .AND. (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO')) THEN + DO JSV = 1, 3 + CALL BUDGET ( ZSVS(:,:,:,JSV),12+NSV_C2R2BEG-1+JSV,'NEGA_BU_RSV') + END DO +END IF +IF (LBUDGET_SV .AND. HCLOUD == 'C3R5') THEN + DO JSV = 1, 4 + CALL BUDGET ( ZSVS(:,:,:,JSV),12+NSV_C2R2BEG-1+JSV,'NEGA_BU_RSV') + END DO +END IF +IF (LBUDGET_SV .AND. HCLOUD == 'LIMA') THEN + DO JSV = NSV_LIMA_BEG, NSV_LIMA_END + CALL BUDGET ( ZSVS(:,:,:,JSV-NSV_LIMA_BEG+1),12+JSV,'NEGA_BU_RSV') + END DO END IF ! - !* 3.4 Limitations of Na and Nc to the CCN max number concentration ! ! Commented by O.Thouron 03/2013 @@ -1148,26 +1147,7 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,2) = 0.0 END WHERE ! -! -! CASE('C2R2','KHKO') -! CALL GET_HALO(PRS(:,:,:,2)) -! CALL GET_HALO(ZSVS(:,:,:,2)) -! WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) -! ZSVS(:,:,:,1) = 0.0 -! END WHERE -! DO JSV = 2, 3 -! WHERE (PRS(:,:,:,JSV) < 0. .OR. ZSVS(:,:,:,JSV) < 0.) -! PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,JSV) -! PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,JSV) * ZLV(:,:,:) / & -! ZCPH(:,:,:) / ZEXN(:,:,:) -! PRS(:,:,:,JSV) = 0.0 -! ZSVS(:,:,:,JSV) = 0.0 -! END WHERE -! ENDDO -! Commented 03/2013 O.Thouron -! (at least necessary to be commented for supersaturation variable) -! ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) -! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! CASE('ICE3','ICE4') WHERE (PRS(:,:,:,4) < 0.) @@ -1203,6 +1183,8 @@ SELECT CASE ( HCLOUD ) PRS(:,:,:,4) = PRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF +! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! CASE('C2R2','KHKO') WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) @@ -1217,7 +1199,9 @@ SELECT CASE ( HCLOUD ) ZSVS(:,:,:,JSV) = 0.0 END WHERE ENDDO -! +! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) +! CASE('C3R5') WHERE (PRS(:,:,:,2) < 0. .OR. ZSVS(:,:,:,2) < 0.) ZSVS(:,:,:,1) = 0.0 @@ -1231,14 +1215,13 @@ SELECT CASE ( HCLOUD ) ZSVS(:,:,:,JSV) = 0.0 END WHERE ENDDO - ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) ! ice WHERE (PRS(:,:,:,4) < 0.) PRS(:,:,:,1) = PRS(:,:,:,1) + PRS(:,:,:,4) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,4) * ZLV(:,:,:) / & ZCPH(:,:,:) / PEXNREF(:,:,:) PRS(:,:,:,4) = 0.0 - PSVS(:,:,:,4) = 0.0 + ZSVS(:,:,:,4) = 0.0 END WHERE ! cloud WHERE (PRS(:,:,:,2) < 0.) @@ -1246,9 +1229,10 @@ SELECT CASE ( HCLOUD ) PTHS(:,:,:) = PTHS(:,:,:) - PRS(:,:,:,2) * ZLV(:,:,:) / & ZCPH(:,:,:) / PEXNREF(:,:,:) PRS(:,:,:,2) = 0.0 - PSVS(:,:,:,2) = 0.0 + ZSVS(:,:,:,2) = 0.0 END WHERE - PSVS(:,:,:,:) = MAX( 0.0,PSVS(:,:,:,:) ) +! + PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) ! CASE('LIMA') ! Correction where rc<0 or Nc<0 @@ -1283,7 +1267,7 @@ SELECT CASE ( HCLOUD ) END IF ! ZSVS(:,:,:,:) = MAX( 0.0,ZSVS(:,:,:,:) ) - PRS(:,:,:,:) = MAX( 0.0,PRS(:,:,:,:) ) + PRS(:,:,:,:) = MAX( 0.0,PRS (:,:,:,:) ) ! END SELECT ! @@ -1299,22 +1283,21 @@ IF (LBUDGET_RI) CALL BUDGET (PRS(:,:,:,4) * PRHODJ(:,:,:) ,9,'NECON_BU_RRI') IF (LBUDGET_RS) CALL BUDGET (PRS(:,:,:,5) * PRHODJ(:,:,:),10,'NECON_BU_RRS') IF (LBUDGET_RG) CALL BUDGET (PRS(:,:,:,6) * PRHODJ(:,:,:),11,'NECON_BU_RRG') IF (LBUDGET_RH) CALL BUDGET (PRS(:,:,:,7) * PRHODJ(:,:,:),12,'NECON_BU_RRH') -IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN - IF (OWARM) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NC-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NC,'NECON_BU_RSV') - IF (OWARM.AND.ORAIN) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NR-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NR,'NECON_BU_RSV') - IF (LCOLD) CALL BUDGET (ZSVS(:,:,:,NSV_LIMA_NI-NSV_LIMA_BEG+1) * PRHODJ(:,:,:),12+NSV_LIMA_NI,'NECON_BU_RSV') - IF (NMOD_CCN.GE.1) THEN - DO JL=1, NMOD_CCN - CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_CCN_FREE+JL-NSV_LIMA_BEG)* & - PRHODJ(:,:,:),12+NSV_LIMA_CCN_FREE+JL-1,'NECON_BU_RSV') - END DO - END IF - IF (NMOD_IFN.GE.1) THEN - DO JL=1, NMOD_IFN - CALL BUDGET ( ZSVS(:,:,:,NSV_LIMA_IFN_FREE+JL-NSV_LIMA_BEG)* & - PRHODJ(:,:,:),12+NSV_LIMA_IFN_FREE+JL-1,'NECON_BU_RSV') - END DO - END IF + +IF (LBUDGET_SV .AND. (HCLOUD == 'C2R2' .OR. HCLOUD == 'KHKO')) THEN + DO JSV = 1, 3 + CALL BUDGET ( ZSVS(:,:,:,JSV),12+NSV_C2R2BEG-1+JSV,'NECON_BU_RSV') + END DO +END IF +IF (LBUDGET_SV .AND. HCLOUD == 'C3R5') THEN + DO JSV = 1, 4 + CALL BUDGET ( ZSVS(:,:,:,JSV),12+NSV_C2R2BEG-1+JSV,'NECON_BU_RSV') + END DO +END IF +IF (LBUDGET_SV .AND. HCLOUD == 'LIMA') THEN + DO JSV = NSV_LIMA_BEG, NSV_LIMA_END + CALL BUDGET ( ZSVS(:,:,:,JSV-NSV_LIMA_BEG+1),12+JSV,'NECON_BU_RSV') + END DO END IF !------------------------------------------------------------------------------- ! diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90 index ac6bbfa3460d261f147d7d87ea8d352ab293cb55..b249ece8932469fe68004dab31ce9a5e81f56636 100644 --- a/src/MNH/turb.f90 +++ b/src/MNH/turb.f90 @@ -342,6 +342,7 @@ END MODULE MODI_TURB !! 01/2018 (Q.Rodier) Introduction of RM17 !! 03/2020 (B.Vie) : LIMA negativity checks after turbulence, advection and microphysics budgets ! P. Wautelet 11/06/2020: bugfix: correct PRSVS array indices +! P. Wautelet + Benoit Vié 11/06/2020: improve removal of negative scalar variables + adapt the corresponding budgets !! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1120,6 +1121,22 @@ IF ( KRRL >= 1 ) THEN END IF ! SELECT CASE ( HCLOUD ) + CASE('KESS') + WHERE (PRRS(:,:,:,2) < 0.) + ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) + PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:) + ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT) + ZCPH(:,:,:)=XCPD +XCPV*PRT(:,:,:,1) + PRTHLS(:,:,:) = PRTHLS(:,:,:) - PRRS(:,:,:,2) * ZLV(:,:,:) / & + ZCPH(:,:,:) / ZEXNE(:,:,:) + PRRS(:,:,:,2) = 0.0 + END WHERE +! + IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH') + IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV') + IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC') + CASE('ICE3','ICE4') ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:) @@ -1159,6 +1176,11 @@ SELECT CASE ( HCLOUD ) PRRS(:,:,:,4) = PRRS(:,:,:,4) -ZCOR(:,:,:) END WHERE END IF +! + IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH') + IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV') + IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC') + IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NETUR_BU_RRI') ! CASE('C2R2','KHKO') ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) @@ -1178,8 +1200,18 @@ SELECT CASE ( HCLOUD ) PRSVS(:,:,:,NSV_C2R2BEG-1+JSV) = 0.0 END WHERE END DO - ! - CASE('LIMA') +! + IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH') + IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV') + IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC') + IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NETUR_BU_RRR') + IF (LBUDGET_SV) THEN + DO JSV = 1, 3 + CALL BUDGET (PRSVS(:,:,:,NSV_C2R2BEG-1+JSV),12+NSV_C2R2BEG-1+JSV,'NETUR_BU_RSV') + END DO + END IF +! + CASE('LIMA') ZEXNE(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD) ZTT(:,:,:)= PTHLT(:,:,:)*ZEXNE(:,:,:) ZLV(:,:,:)=XLVTT +(XCPV-XCL) *(ZTT(:,:,:)-XTT) @@ -1217,36 +1249,20 @@ SELECT CASE ( HCLOUD ) END IF ! PRSVS(:, :, :, NSV_LIMA_BEG:NSV_LIMA_END) = MAX( 0.0, PRSVS(:, :, :, NSV_LIMA_BEG:NSV_LIMA_END) ) - PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) ) + !Commented out for B. Vie 15/05/2020 PRRS(:,:,:,:) = MAX( 0.0,PRRS(:,:,:,:) ) +! + IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH') + IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV') + IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC') + IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NETUR_BU_RRR') + IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NETUR_BU_RRI') + IF (LBUDGET_SV) THEN + DO JSV = NSV_LIMA_BEG, NSV_LIMA_END + CALL BUDGET (PRSVS(:,:,:,JSV),12+JSV,'NETUR_BU_RSV') + END DO + END IF ! END SELECT -! -IF ((HCLOUD == 'ICE3') .OR. (HCLOUD == 'ICE4') .OR. (HCLOUD == 'KHKO') .OR. (HCLOUD == 'C2R2') .OR. (HCLOUD == 'LIMA') ) THEN - IF (LBUDGET_TH) CALL BUDGET (PRTHLS(:,:,:), 4,'NETUR_BU_RTH') - IF (LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1), 6,'NETUR_BU_RRV') - IF (LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2), 7,'NETUR_BU_RRC') - IF (LBUDGET_RR) CALL BUDGET (PRRS(:,:,:,3), 8,'NETUR_BU_RRR') - IF (LBUDGET_RI) CALL BUDGET (PRRS(:,:,:,4), 9,'NETUR_BU_RRI') - IF (LBUDGET_RS) CALL BUDGET (PRRS(:,:,:,5),10,'NETUR_BU_RRS') - IF (LBUDGET_RG) CALL BUDGET (PRRS(:,:,:,6),11,'NETUR_BU_RRG') - IF (LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'NETUR_BU_RRH') -END IF -IF (LBUDGET_SV .AND. (HCLOUD == 'LIMA')) THEN - IF (LWARM) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NC),12+NSV_LIMA_NC,'NETUR_BU_RSV') - IF (LWARM.AND.LRAIN) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NR),12+NSV_LIMA_NR,'NETUR_BU_RSV') - IF (LCOLD) CALL BUDGET (PRSVS(:,:,:,NSV_LIMA_NI),12+NSV_LIMA_NI,'NETUR_BU_RSV') - IF (NMOD_CCN.GE.1) THEN - DO JI=1, NMOD_CCN - CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_CCN_FREE+JI-1),12+NSV_LIMA_CCN_FREE+JI-1,'NETUR_BU_RSV') - END DO - END IF - IF (NMOD_IFN.GE.1) THEN - DO JI=1, NMOD_IFN - CALL BUDGET ( PRSVS(:,:,:,NSV_LIMA_IFN_FREE+JI-1),12+NSV_LIMA_IFN_FREE+JI-1,'NETUR_BU_RSV') - END DO - END IF -END IF - ! !---------------------------------------------------------------------------- !