From ae004c5543974bc77d0482d86d544fd2cf9cd4fc Mon Sep 17 00:00:00 2001 From: Christine Lac <christine.lac@meteo.fr> Date: Wed, 10 May 2017 11:14:27 +0200 Subject: [PATCH] Maud:avoid negative values for SVS --- src/MNH/phys_paramn.f90 | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index becf21fdf..39fad63c3 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -223,6 +223,7 @@ END MODULE MODI_PHYS_PARAM_n !! 2014 (M.Faivre) !! 06/2016 (G.Delautier) phasage surfex 8 !! 2016 B.VIE LIMA +!! M. Leriche 02/2017 Avoid negative fluxes if sv=0 outside the physics domain !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1292,7 +1293,12 @@ IF ( CTURB == 'TKEL' ) THEN ZSFRV(IIB-1,:)=ZSFRV(IIB,:) ZSFU(IIB-1,:)=ZSFU(IIB,:) ZSFV(IIB-1,:)=ZSFV(IIB,:) - IF (NSV>0) ZSFSV(IIB-1,:,:)=ZSFSV(IIB,:,:) + IF (NSV>0) THEN + ZSFSV(IIB-1,:,:)=ZSFSV(IIB,:,:) + WHERE ((ZSFSV(IIB-1,:,:).LT.0.).AND.(XSVT(IIB-1,:,IKB,:).EQ.0.)) + ZSFSV(IIB-1,:,:) = 0. + END WHERE + ENDIF ZSFCO2(IIB-1,:)=ZSFCO2(IIB,:) END IF IF ( CLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN @@ -1300,7 +1306,12 @@ IF ( CTURB == 'TKEL' ) THEN ZSFRV(IIE+1,:)=ZSFRV(IIE,:) ZSFU(IIE+1,:)=ZSFU(IIE,:) ZSFV(IIE+1,:)=ZSFV(IIE,:) - IF (NSV>0) ZSFSV(IIE+1,:,:)=ZSFSV(IIE,:,:) + IF (NSV>0) THEN + ZSFSV(IIE+1,:,:)=ZSFSV(IIE,:,:) + WHERE ((ZSFSV(IIE+1,:,:).LT.0.).AND.(XSVT(IIE+1,:,IKB,:).EQ.0.)) + ZSFSV(IIE+1,:,:) = 0. + END WHERE + ENDIF ZSFCO2(IIE+1,:)=ZSFCO2(IIE,:) END IF IF ( CLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN @@ -1308,7 +1319,12 @@ IF ( CTURB == 'TKEL' ) THEN ZSFRV(:,IJB-1)=ZSFRV(:,IJB) ZSFU(:,IJB-1)=ZSFU(:,IJB) ZSFV(:,IJB-1)=ZSFV(:,IJB) - IF (NSV>0) ZSFSV(:,IJB-1,:)=ZSFSV(:,IJB,:) + IF (NSV>0) THEN + ZSFSV(:,IJB-1,:)=ZSFSV(:,IJB,:) + WHERE ((ZSFSV(:,IJB-1,:).LT.0.).AND.(XSVT(:,IJB-1,IKB,:).EQ.0.)) + ZSFSV(:,IJB-1,:) = 0. + END WHERE + ENDIF ZSFCO2(:,IJB-1)=ZSFCO2(:,IJB) END IF IF ( CLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN @@ -1316,7 +1332,12 @@ IF ( CTURB == 'TKEL' ) THEN ZSFRV(:,IJE+1)=ZSFRV(:,IJE) ZSFU(:,IJE+1)=ZSFU(:,IJE) ZSFV(:,IJE+1)=ZSFV(:,IJE) - IF (NSV>0) ZSFSV(:,IJE+1,:)=ZSFSV(:,IJE,:) + IF (NSV>0) THEN + ZSFSV(:,IJE+1,:)=ZSFSV(:,IJE,:) + WHERE ((ZSFSV(:,IJE+1,:).LT.0.).AND.(XSVT(:,IJE+1,IKB,:).EQ.0.)) + ZSFSV(:,IJE+1,:) = 0. + END WHERE + ENDIF ZSFCO2(:,IJE+1)=ZSFCO2(:,IJE) END IF ! @@ -1454,6 +1475,9 @@ XTIME_LES_BU_PROCESS = 0. IF (LUSECHEM) THEN CALL CH_MONITOR_n(ZWETDEPAER,KTCOUNT,XTSTEP, ILUOUT, NVERB) END IF +DO JSV=1,NSV + XRSVS(:,:,:,JSV) = MAX((XRSVS(:,:,:,JSV)),XSVMIN(JSV)) +END DO ! ! For inert aerosol (dust and sea salt) => aer_monitor_n IF ((LDUST).OR.(LSALT)) THEN -- GitLab