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