From c25c6d674144c86adf18579bd9eaf3f0131580a9 Mon Sep 17 00:00:00 2001 From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr> Date: Mon, 28 May 2018 11:21:17 +0200 Subject: [PATCH] Gaelle 28/5/18 : bug call snow3L_isba --- src/SURFEX/isba.F90 | 33 +++++++++++++++++++++++++++++++-- src/SURFEX/isba_meb.F90 | 18 ++++++++++++++++-- src/SURFEX/snow3L_isba.F90 | 10 +++++++--- 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/SURFEX/isba.F90 b/src/SURFEX/isba.F90 index 9e77a631e..2e6f51255 100644 --- a/src/SURFEX/isba.F90 +++ b/src/SURFEX/isba.F90 @@ -482,6 +482,7 @@ CALL SOILSTRESS(IO%CISBA, ZF2, KK, PK, PEK, ZF2WGHT, ZF5 ) ! --------------------------------- ! IF(OMEB)THEN + IF (PRESENT(PBLOWSNW_FLUX)) THEN CALL ISBA_MEB(IO, KK, PK, PEK, DK, DEK, DMK, G, AG, & TPTIME, OMEB, GSHADE, HIMPLICIT_WIND, PTSTEP, & ZSOILHCAPZ, ZSOILCONDZ, ZFROZEN1, PPS, PZENITH, & @@ -496,7 +497,24 @@ IF(OMEB)THEN PHU_AGG, PAC_AGG, ZDELHEATV_SFC, ZDELHEATG_SFC, ZDELHEATG, & ZDELHEATN, ZDELHEATN_SFC, ZGSFCSNOW, PTDEEP_A, PDEEP_FLUX, & ZRI3L, ZSNOW_THRUFAL, ZSNOW_THRUFAL_SOIL, ZEVAPCOR, ZSUBVCOR, & - ZLITCOR, ZSNOWSFCH, ZQS3L,PBLOWSNW_FLUX,PBLOWSNW_CONC, PRN_SHADE, PRN_SUNLIT ) + ZLITCOR, ZSNOWSFCH, ZQS3L,PRN_SHADE, PRN_SUNLIT,PBLOWSNW_FLUX,PBLOWSNW_CONC ) + ELSE + CALL ISBA_MEB(IO, KK, PK, PEK, DK, DEK, DMK, G, AG, & + TPTIME, OMEB, GSHADE, HIMPLICIT_WIND, PTSTEP, & + ZSOILHCAPZ, ZSOILCONDZ, ZFROZEN1, PPS, PZENITH, & + PSCA_SW, PSW_RAD, PVMOD, PRR, PSR, PRHOA, PTA, PQA, & + PDIRCOSZW, PEXNS, PEXNA, PPET_A_COEF, PPET_B_COEF, & + PPEQ_A_COEF, PPEQ_B_COEF, PPEW_A_COEF, PPEW_B_COEF, & + PZREF, PUREF, PZ0G_WITHOUT_SNOW, PZ0_MEBV, PZ0H_MEBV,& + PZ0EFF_MEBV, PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN, & + PALBNIR_TVEG, PALBVIS_TVEG,PALBNIR_TSOIL, PALBVIS_TSOIL, & + PABC, PIACAN, PPOI, PCSP, PRESP_BIOMASS_INST, PPALPHAN, & + ZF2, PLW_RAD, ZGRNDFLUX, ZFLSN_COR, PUSTAR, ZEMIST, & + PHU_AGG, PAC_AGG, ZDELHEATV_SFC, ZDELHEATG_SFC, ZDELHEATG, & + ZDELHEATN, ZDELHEATN_SFC, ZGSFCSNOW, PTDEEP_A, PDEEP_FLUX, & + ZRI3L, ZSNOW_THRUFAL, ZSNOW_THRUFAL_SOIL, ZEVAPCOR, ZSUBVCOR, & + ZLITCOR, ZSNOWSFCH, ZQS3L,PRN_SHADE, PRN_SUNLIT ) + ENDIF ELSE ! @@ -526,7 +544,8 @@ ELSE !* 7.0 Explicit snow scheme ! -------------------- ! - CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & + IF (PRESENT(PBLOWSNW_FLUX)) THEN + CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & TPTIME, PTSTEP, PK%XVEGTYPE_PATCH, PEK%XTG, DMK%XCT, ZSOILHCAPZ, & ZSOILCONDZ(:,1), PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, & PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PEK%XSNOWFREE_ALB, & @@ -535,6 +554,16 @@ ELSE ZGSFCSNOW, ZEVAPCOR, ZLES3L, ZLEL3L, ZEVAP3L, ZSNOWSFCH, ZDELHEATN, & ZDELHEATN_SFC, ZRI3L, PZENITH, ZDELHEATG, ZDELHEATG_SFC, ZQS3L, & PBLOWSNW_FLUX,PBLOWSNW_CONC ) + ELSE + CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & + TPTIME, PTSTEP, PK%XVEGTYPE_PATCH, PEK%XTG, DMK%XCT, ZSOILHCAPZ, & + ZSOILCONDZ(:,1), PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, & + PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PEK%XSNOWFREE_ALB, & + PK%XDG, PK%XDZG, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, & + PPET_B_COEF, PPEQ_B_COEF, ZSNOW_THRUFAL_SOIL, ZGRNDFLUX, ZFLSN_COR, & + ZGSFCSNOW, ZEVAPCOR, ZLES3L, ZLEL3L, ZEVAP3L, ZSNOWSFCH, ZDELHEATN, & + ZDELHEATN_SFC, ZRI3L, PZENITH, ZDELHEATG, ZDELHEATG_SFC, ZQS3L) + ENDIF ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ! !* 8.0 Plant stress, stomatal resistance and, possibly, CO2 assimilation diff --git a/src/SURFEX/isba_meb.F90 b/src/SURFEX/isba_meb.F90 index 7f7722099..40b95a3ca 100644 --- a/src/SURFEX/isba_meb.F90 +++ b/src/SURFEX/isba_meb.F90 @@ -18,7 +18,7 @@ PDELHEATN, PDELHEATN_SFC, PRESTOREN, PTDEEP_A, PDEEP_FLUX,& PRISNOW, PSNOW_THRUFAL, PSNOW_THRUFAL_SOIL, PEVAPCOR, & PSUBVCOR, PLITCOR, PSNOWSFCH, PQSNOW, & - PBLOWSNW_FLUX, PBLOWSNW_CONC,PRN_SHADE, PRN_SUNLIT) + PRN_SHADE, PRN_SUNLIT,PBLOWSNW_FLUX, PBLOWSNW_CONC ) ! ########################################################################## ! ! @@ -927,7 +927,8 @@ ZVEGFACT(:) = ZSIGMA_F(:)*(1.0-PPALPHAN(:)*PEK%XPSN(:)) !* 10.0 Explicit snow scheme (MEB: impose surface fluxes as upper BC) ! ---------------------------------------------------------------- ! - CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & + IF (PRESENT(PBLOWSNW_FLUX)) THEN + CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & TPTIME, PTSTEP, PK%XVEGTYPE_PATCH, ZTGL, ZCTSFC, & ZSOILHCAPZ, ZSOILCONDZ(:,1), PPS, PTA, PSW_RAD, PQA, & PVMOD, PLW_RAD, ZRRSFC, DEK%XSR_GN, PRHOA, ZUREF, PEXNS, & @@ -937,6 +938,19 @@ ZVEGFACT(:) = ZSIGMA_F(:)*(1.0-PPALPHAN(:)*PEK%XPSN(:)) PRESTOREN, PEVAPCOR, DEK%XLES, DEK%XLESL, ZEVAP3L, PSNOWSFCH, & PDELHEATN, PDELHEATN_SFC, PRISNOW, PZENITH, PDELHEATG, & PDELHEATG_SFC, PQSNOW,PBLOWSNW_FLUX,PBLOWSNW_CONC ) + ELSE + CALL SNOW3L_ISBA(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, & + TPTIME, PTSTEP, PK%XVEGTYPE_PATCH, ZTGL, ZCTSFC, & + ZSOILHCAPZ, ZSOILCONDZ(:,1), PPS, PTA, PSW_RAD, PQA, & + PVMOD, PLW_RAD, ZRRSFC, DEK%XSR_GN, PRHOA, ZUREF, PEXNS, & + PEXNA, PDIRCOSZW, ZZREF, ZALBG, ZD_G, ZDZG, PPEW_A_COEF, & + PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, & + PPEQ_B_COEF, PSNOW_THRUFAL, PGRNDFLUX, PFLSN_COR, & + PRESTOREN, PEVAPCOR, DEK%XLES, DEK%XLESL, ZEVAP3L, PSNOWSFCH, & + PDELHEATN, PDELHEATN_SFC, PRISNOW, PZENITH, PDELHEATG, & + PDELHEATG_SFC, PQSNOW ) + + ENDIF ! ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !* 11.0 Litter layer hydrology: diff --git a/src/SURFEX/snow3L_isba.F90 b/src/SURFEX/snow3L_isba.F90 index 72d786834..0f5173bed 100644 --- a/src/SURFEX/snow3L_isba.F90 +++ b/src/SURFEX/snow3L_isba.F90 @@ -211,12 +211,12 @@ REAL, DIMENSION(:), INTENT(OUT) :: PQS ! puis plus tard dans LALB REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! solar zenith angle ! -REAL, DIMENSION(:,:), INTENT(INOUT) :: PBLOWSNW_FLUX +REAL, DIMENSION(:,:),OPTIONAL, INTENT(INOUT) :: PBLOWSNW_FLUX ! PBLOWSNW_FLUX = Blowing snow particles flux: ! 1: Number (#/m2/s) 2: Mass (kg/m2/s) ! IN : contains sedimentation flux ! OUT : contains emitted turbulent flux towards the atmosphere -REAL, DIMENSION(:,:), INTENT(IN) :: PBLOWSNW_CONC +REAL, DIMENSION(:,:),OPTIONAL, INTENT(IN) :: PBLOWSNW_CONC ! PBLOWSNW_CONC = Blowing snow particles concentration: ! 1: Number (#/m3) 2: Mass (kg/m3) ! @@ -330,7 +330,11 @@ DMK%XSNOWDZ(:,:) = 0.0 ! INLVLS = SIZE(PEK%TSNOW%WSNOW(:,:),2) INLVLG = MIN(SIZE(PD_G(:,:),2),SIZE(PTG(:,:),2)) -IBLOWSNW = SIZE(PBLOWSNW_FLUX(:,:),2) +IF (PRESENT(PBLOWSNW_FLUX)) THEN + IBLOWSNW = SIZE(PBLOWSNW_FLUX(:,:),2) +ELSE + IBLOWSNW=0 +ENDIF ! ! IF(.NOT.OMEB)THEN -- GitLab