diff --git a/src/SURFEX/isba.F90 b/src/SURFEX/isba.F90 index 9e77a631e005757c5b156ae6046f0f797110081a..2e6f51255f0c2156007f007fe1bb73722f176cf0 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 7f77220995f38d1f45a98a9200eded1518a4380e..40b95a3cae7d8f72d21f3bfa0447227573e318e2 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 72d7868345338d97369ed25faacd830577fb2383..0f5173bed70874fc2ce4d610fbe78e93e595ab0c 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