SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/coupling_isban.F90
Go to the documentation of this file.
00001 !     ###############################################################################
00002 SUBROUTINE COUPLING_ISBA_n(HPROGRAM, HCOUPLING,                                              &
00003                  PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, &
00004                  PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2,                      &
00005                  PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                   &
00006                  PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                    &
00007                  PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                           &
00008                  PPEW_A_COEF, PPEW_B_COEF,                                                   &
00009                  PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                         &
00010                  HTEST                                                                       )  
00011 !     ###############################################################################
00012 !
00013 !!****  *COUPLING_ISBA_n * - Driver for ISBA time step   
00014 !!
00015 !!    PURPOSE
00016 !!    -------
00017 !
00018 !!**  METHOD
00019 !!    ------
00020 !!
00021 !! First, all actions dependant on each patch is donbe independantly
00022 !!     (loop on patches)
00023 !! Second, actions common to all patches (e.g. prescription of new vegetation)
00024 !! Third, energy fluxes are averaged
00025 !!
00026 !! Nota that chemical fluxes are also treated.
00027 !!
00028 !!    REFERENCE
00029 !!    ---------
00030 !!      
00031 !!
00032 !!    AUTHOR
00033 !!    ------
00034 !!     V. Masson 
00035 !!
00036 !!    MODIFICATIONS
00037 !!    -------------
00038 !!      Original    01/2004
00039 !!      P Le Moigne 11/2004 add new diagnostics for isba
00040 !!      A.Bogatchev 09/2005 EBA snow option
00041 !!      P Le Moigne 09/2005 AGS modifs of L. Jarlan
00042 !!      P Le Moigne 02/2006 z0h with snow
00043 !!      P.Le Moigne 06/2006 seeding and irrigation
00044 !!      B. Decharme   2008  reset the subgrid topographic effect on the forcing
00045 !!                          PSNV allways <= PSNG
00046 !!                          News diag
00047 !!                          Flooding scheme and allows TRIP variables coupling
00048 !!      A.L. Gibelin 04/2009 : Add respiration diagnostics
00049 !!      A.L. Gibelin 04/2009 : BIOMASS and RESP_BIOMASS arrays 
00050 !!      A.L. Gibelin 04/2009 : TAU_WOOD for NCB option 
00051 !!      A.L. Gibelin 05/2009 : Add carbon spinup
00052 !!      A.L. Gibelin 06/2009 : Soil carbon variables for CNT option
00053 !!      A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
00054 !!      A.L. Gibelin 07/2009 : Suppress PPST and PPSTF as outputs
00055 !!        S.Lafont   01/2011 : add PTSTEP as arg of diag_misc
00056 !!       B.Decharme  09/2012 : Bug in hydro_glacier calculation with ES or Crocus
00057 !!                             New wind implicitation
00058 !!                             New soil carbon spinup and diag
00059 !!                             Isba budget
00060 !!-------------------------------------------------------------------
00061 !
00062 USE MODD_CSTS,         ONLY : XRD, XRV, XP00, XCPD, XPI
00063 USE MODD_SURF_PAR,     ONLY : XUNDEF
00064 USE MODD_SNOW_PAR,     ONLY : XZ0SN
00065 USE MODD_TYPE_DATE_SURF
00066 USE MODD_ISBA_n,       ONLY : NSIZE_NATURE_P, NR_NATURE_P, CROUGH, NPATCH, LGLACIER,     &
00067                                 NNBIOMASS, XABC, XPOI, CSNOWRES, CDIFSFCOND, CSOILFRZ,   &
00068                                 CSCOND, CC1DRY, CRUNOFF, CPHOTO, LTR_ML, CISBA, XPATCH,  &
00069                                 TTIME, CALBEDO, XCOVER, XLAI, XVEG, XZ0, XEMIS,          &
00070                                 XALBNIR, XALBVIS, XALBUV, XEMIS_NAT,  XTSRAD_NAT,        &
00071                                 XALBNIR_VEG, XALBVIS_VEG, XALBUV_VEG, NGROUND_LAYER,     &
00072                                 XALBNIR_DRY, XALBVIS_DRY, XALBUV_DRY,                    &
00073                                 XALBNIR_SOIL, XALBVIS_SOIL, XALBUV_SOIL,                 &
00074                                 XALBNIR_WET, XALBVIS_WET, XALBUV_WET, XWG, XWSAT,        &
00075                                 XRSMIN, XGAMMA, XWRMAX_CF, XRGL, XCV, XZ0_O_Z0H,         &
00076                                 XVEGTYPE, XROOTFRAC, XGMES, XBSLAI, XLAIMIN, XSEFOLD,    &
00077                                 XGC, XF2I, LSTRESS, XH_TREE, XDMAX, XRE25,               &
00078                                 XZ0EFFIP, XZ0EFFIM, XZ0EFFJP, XZ0EFFJM, XZ0EFFJPDIR,     &
00079                                 XAOSIP, XAOSIM, XAOSJP, XAOSJM,                          &
00080                                 XHO2IP, XHO2IM, XHO2JP, XHO2JM, TSNOW, CRESPSL,          &
00081                                 XCE_NITRO, XCF_NITRO, XCNA_NITRO, LECOCLIMAP, CCPSURF,   &
00082                                 TSEED, TREAP, XWATSUP, XIRRIG, XCGMAX,                   &
00083                                 CKSAT, CSOC, CHORT, CRAIN, XMUF, XFSAT, LTRIP,           &
00084                                 LFLOOD, XFFLOOD, XPIFLOOD, LTEMP_ARP, XSODELX,           &
00085                                 LVEGUPD, NLAYER_HORT, NLAYER_DUN,                        &
00086                                 LSPINUPCARBS, LSPINUPCARBW, XSPINMAXS, XSPINMAXW,        &
00087                                 NNBYEARSPINS, NNBYEARSPINW, NNBYEARSOLD, NSPINS, NSPINW  
00088 !
00089 USE MODD_SURF_ATM,    ONLY : LNOSOF, CIMPLICIT_WIND
00090 USE MODD_SURF_ATM_n,  ONLY : NDIM_FULL
00091 !
00092 USE MODD_DST_n,       ONLY : XSFDST, XSFDSTM, XEMISRADIUS_DST, XEMISSIG_DST
00093 USE MODD_SLT_n,       ONLY : XSFSLT, XEMISRADIUS_SLT, XEMISSIG_SLT
00094 USE MODD_DST_SURF
00095 USE MODD_SLT_SURF
00096 USE MODE_DSLT_SURF
00097 !
00098 USE MODD_PACK_ISBA,   ONLY : XP_SSO_SLOPE, XP_Z0, XP_Z0REL, XP_Z0EFFIP,        &
00099                              XP_Z0EFFIM, XP_Z0EFFJP, XP_Z0EFFJM, XP_Z0FLOOD,   &
00100                              XP_AOSIP, XP_AOSIM ,XP_AOSJP, XP_AOSJM, XP_HO2IP, &
00101                              XP_HO2IM, XP_HO2JP, XP_HO2JM, XP_Z0_O_Z0H,        &
00102                              XP_ALBNIR, XP_ALBVIS, XP_ALBUV, XP_ALBNIR_VEG,    &
00103                              XP_ALBVIS_VEG, XP_ALBUV_VEG, XP_ALBNIR_SOIL,      &
00104                              XP_ALBVIS_SOIL, XP_ALBUV_SOIL, NK_WG_LAYER,       &
00105                              XP_RSMIN, XP_RGL, XP_GAMMA, XP_CV, XP_RUNOFFD,    &
00106                              XP_WRMAX_CF, XP_VEG, XP_LAI, XP_DZG, XP_DZDIF,    &
00107                              XP_EMIS, XP_VEGTYPE_PATCH, XP_RUNOFFB, XP_CGSAT,  &
00108                              XP_C1SAT, XP_C2REF, XP_C3, XP_C4B, XP_C4REF,      &
00109                              XP_ACOEF, XP_PCOEF, XP_TAUICE, XP_WDRAIN,         &
00110                              XP_TDEEP, XP_GAMMAT, XP_PSN, XP_PSNG, XP_PSNV,    &
00111                              XP_PSNV_A, XP_IRRIG, XP_WATSUP, XP_THRESHOLD,     &
00112                              XP_LIRRIGATE, XP_LIRRIDAY, LP_STRESS, XP_GC,      &
00113                              XP_F2I, XP_DMAX, XP_AH, XP_BH, XP_GMES, XP_FZERO, &
00114                              XP_EPSO, XP_GAMM, XP_QDGAMM, XP_QDGMES, XP_T1GMES,&
00115                              XP_T2GMES, XP_AMAX, XP_QDAMAX, XP_T1AMAX,         &
00116                              XP_T2AMAX, XP_DG, XP_ROOTFRAC, XP_WFC, XP_WWILT,  &
00117                              XP_WSAT, XP_BCOEF, XP_CONDSAT, XP_MPOTSAT,        &
00118                              XP_HCAPSOIL, XP_CONDDRY, XP_CONDSLD,              &
00119                              XP_D_ICE, XP_KSAT_ICE, XP_SOILWGHT,               &
00120                              XP_MUF, XP_FSAT, XP_FF, XP_FFG, XP_FFV,           &
00121                              XP_FFROZEN, XP_ALBF, XP_EMISF, XP_FFLOOD,         &
00122                              XP_PIFLOOD, XP_LAT, XP_LON, XP_TG, XP_WG, XP_WGI, &
00123                              XP_CPS, XP_LVTT, XP_LSTT, XP_WR, XP_RESA, XP_ANFM,&
00124                              XP_SNOWALB, XP_SNOWSWE, XP_SNOWHEAT, XP_SNOWRHO,  &
00125                              XP_SNOWGRAN1, XP_SNOWGRAN2, XP_SNOWHIST,          &
00126                              XP_SNOWAGE, XP_SNOWEMIS, XP_LE, XP_FAPARC,        &
00127                              XP_FAPIRC, XP_LAI_EFFC, XP_MUS, XP_AN, XP_ANDAY,  &
00128                              XP_ANF, XP_ICE_STO, XP_ALBVIS_DRY, XP_ALBNIR_DRY, &
00129                              XP_ALBUV_DRY, XP_ALBVIS_WET, XP_ALBNIR_WET,       &
00130                              XP_ALBUV_WET, XP_H_TREE, XP_BSLAI, XP_LAIMIN,     &
00131                              XP_SEFOLD, XP_ANMAX, XP_CE_NITRO, XP_CF_NITRO,    &
00132                              XP_CNA_NITRO, XP_BSLAI_NITRO, XP_BIOMASS,         &
00133                              XP_RESP_BIOMASS, XP_INCREASE, XP_TURNOVER,        &
00134                              XP_TAU_WOOD, TP_SEED, TP_REAP, XP_RE25, XP_LITTER,&
00135                              XP_LIGNIN_STRUC, XP_SOILCARB,  XP_CLAY, XP_SAND,  &
00136                              XP_DIR_ALB_WITH_SNOW, XP_SCA_ALB_WITH_SNOW
00137 !
00138 USE MODD_PACK_DIAG_ISBA, ONLY : XP_Z0EFF, XP_Z0_WITH_SNOW, XP_Z0H_WITH_SNOW,   &
00139                                 XP_SNOWFREE_ALB, XP_SNOWFREE_ALB_VEG,          &
00140                                 XP_SNOWFREE_ALB_SOIL, XP_IFLOOD, XP_PFLOOD,    &
00141                                 XP_LE_FLOOD, XP_LEI_FLOOD, XP_GRNDFLUX,        &
00142                                 XP_HPSNOW, XP_SNOWHMASS, XP_SMELTFLUX,         &
00143                                 XP_RNSNOW, XP_HSNOW, XP_GFLUXSNOW,             &
00144                                 XP_USTARSNOW, XP_SRSFC, XP_RRSFC, XP_LESL,     &
00145                                 XP_CDSNOW, XP_CHSNOW, XP_TSRAD, XP_TS, XP_HV,  &
00146                                 XP_QS, XP_SNOWTEMP, XP_SNOWLIQ, XP_SNOWDZ,     &
00147                                 XP_CG, XP_C1, XP_C2, XP_WGEQ, XP_CT, XP_CH,    &
00148                                 XP_CD, XP_CDN, XP_RI, XP_HU, XP_HUG, XP_ALBT,  &
00149                                 XP_RS, XP_RN, XP_H, XP_LEI, XP_LEGI, XP_LEG,   &
00150                                 XP_LEV, XP_LES, XP_LER, XP_LETR, XP_EVAP,      &
00151                                 XP_GFLUX, XP_RESTORE, XP_DRAIN, XP_RUNOFF,     &
00152                                 XP_MELT, XP_MELTADV, XP_RN_ISBA, XP_H_ISBA,    &
00153                                 XP_LEG_ISBA, XP_LEGI_ISBA, XP_LEV_ISBA,        &
00154                                 XP_LETR_ISBA, XP_USTAR_ISBA, XP_LER_ISBA,      &
00155                                 XP_LE_ISBA, XP_LEI_ISBA, XP_GFLUX_ISBA,        &
00156                                 XP_HORT, XP_DRIP, XP_RRVEG, XP_IACAN,          &
00157                                 XP_GPP, XP_FAPAR, XP_FAPIR, XP_FAPAR_BS,       &
00158                                 XP_FAPIR_BS, XP_ICEFLUX, XP_IRRIG_FLUX,        &
00159                                 XP_RESP_AUTO, XP_RESP_ECO, XP_DWG, XP_DWGI,    &
00160                                 XP_DWR, XP_DSWE, XP_WATBUD  
00161 !                         
00162 USE MODD_PACK_CH_ISBA,   ONLY : XP_SOILRC_SO2, XP_SOILRC_O3, XP_DEP
00163 
00164 USE MODD_CH_ISBA_n,      ONLY : CSV, CCH_DRY_DEP, LCH_BIO_FLUX, XDEP, LCH_NO_FLUX,&
00165                                   NBEQ, NSV_CHSBEG, NSV_CHSEND,                   &
00166                                   NSV_DSTBEG, NSV_DSTEND, NAEREQ, NDSTEQ, NSLTEQ, &
00167                                   NSV_AERBEG, NSV_AEREND, NSV_SLTBEG, NSV_SLTEND  
00168 USE MODD_DATA_COVER_PAR, ONLY : NVT_NO, NVT_ROCK
00169 !
00170 USE MODD_AGRI,           ONLY : LAGRIP
00171 USE MODD_DEEPSOIL,       ONLY : LDEEPSOIL
00172 !
00173 USE MODI_IRRIGATION_UPDATE
00174 USE MODI_ADD_FORECAST_TO_DATE_SURF
00175 USE MODI_Z0EFF
00176 USE MODI_ISBA
00177 USE MODI_AVERAGE_FLUX
00178 USE MODI_AVERAGE_RAD
00179 USE MODI_AVERAGE_DIAG_ISBA_n
00180 USE MODI_VEGETATION_EVOL
00181 USE MODI_VEGETATION_UPDATE
00182 USE MODI_CARBON_EVOL
00183 USE MODI_SUBSCALE_Z0EFF
00184 USE MODI_SOIL_ALBEDO
00185 USE MODI_ALBEDO
00186 USE MODI_DIAG_INLINE_ISBA_n
00187 USE MODI_DIAG_EVAP_ISBA_n
00188 USE MODI_DIAG_MISC_ISBA_n
00189 !
00190 USE MODI_UPDATE_RAD_ISBA_n
00191 USE MODI_DEEPSOIL_UPDATE
00192 USE MODI_ISBA_SGH_UPDATE
00193 USE MODI_ISBA_FLOOD_PROPERTIES
00194 USE MODI_DIAG_CPL_ESM_ISBA
00195 USE MODI_HYDRO_GLACIER
00196 USE MODI_ISBA_ALBEDO
00197 USE MODI_CARBON_SPINUP
00198 USE MODI_PACK_ISBA_PATCH_n    
00199 USE MODI_PACK_ISBA_PATCH_GET_SIZE_n
00200 USE MODI_PACK_CH_ISBA_PATCH_n     
00201 USE MODI_PACK_DIAG_PATCH_n
00202 USE MODI_PACK_DIAG_PATCH_GET_SIZE_n
00203 USE MODI_UNPACK_ISBA_PATCH_n     
00204 USE MODI_UNPACK_CH_ISBA_PATCH_n     
00205 USE MODI_UNPACK_DIAG_PATCH_n     
00206 USE MODI_CH_AER_DEP
00207 USE MODI_ABOR1_SFX
00208 USE MODI_AVERAGE_DIAG_EVAP_ISBA_n
00209 USE MODI_AVERAGE_DIAG_MISC_ISBA_n
00210 USE MODI_CH_BVOCEM_n
00211 USE MODI_SOILEMISNO_n
00212 USE MODI_CH_DEP_ISBA
00213 USE MODI_DSLT_DEP
00214 USE MODI_COUPLING_DST_n
00215 USE MODI_COUPLING_SURF_TOPD
00216 USE MODI_ISBA_BUDGET_INIT
00217 USE MODI_ISBA_BUDGET
00218 !
00219 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00220 USE PARKIND1  ,ONLY : JPRB
00221 !
00222 IMPLICIT NONE
00223 !
00224 !*      0.1    declarations of arguments
00225 !
00226  CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00227  CHARACTER(LEN=1),    INTENT(IN)  :: HCOUPLING ! type of coupling
00228                                               ! 'E' : explicit
00229                                               ! 'I' : implicit
00230 INTEGER,             INTENT(IN)  :: KYEAR     ! current year (UTC)
00231 INTEGER,             INTENT(IN)  :: KMONTH    ! current month (UTC)
00232 INTEGER,             INTENT(IN)  :: KDAY      ! current day (UTC)
00233 REAL,                INTENT(IN)  :: PTIME     ! current time since midnight (UTC, s)
00234 INTEGER,             INTENT(IN)  :: KI        ! number of points
00235 INTEGER,             INTENT(IN)  :: KSV       ! number of scalars
00236 INTEGER,             INTENT(IN)  :: KSW       ! number of short-wave spectral bands
00237 REAL, DIMENSION(KI), INTENT(IN)  :: PTSUN     ! solar time                    (s from midnight)
00238 REAL,                INTENT(IN)  :: PTSTEP    ! atmospheric time-step                 (s)
00239 REAL, DIMENSION(KI), INTENT(IN)  :: PZREF     ! height of T,q forcing                 (m)
00240 REAL, DIMENSION(KI), INTENT(IN)  :: PUREF     ! height of wind forcing                (m)
00241 !
00242 REAL, DIMENSION(KI), INTENT(IN)  :: PTA       ! air temperature forcing               (K)
00243 REAL, DIMENSION(KI), INTENT(IN)  :: PQA       ! air humidity forcing                  (kg/m3)
00244 REAL, DIMENSION(KI), INTENT(IN)  :: PRHOA     ! air density                           (kg/m3)
00245 REAL, DIMENSION(KI,KSV),INTENT(IN) :: PSV     ! scalar variables
00246 !                                             ! chemistry:   first char. in HSV: '#'  (molecule/m3)
00247 !                                             !
00248 REAL, DIMENSION(KI), INTENT(IN)  :: PU        ! zonal wind                            (m/s)
00249 REAL, DIMENSION(KI), INTENT(IN)  :: PV        ! meridian wind                         (m/s)
00250 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PDIR_SW ! direct  solar radiation (on horizontal surf.)
00251 !                                             !                                       (W/m2)
00252 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PSCA_SW ! diffuse solar radiation (on horizontal surf.)
00253 !                                             !                                       (W/m2)
00254 REAL, DIMENSION(KSW),INTENT(IN)  :: PSW_BANDS ! mean wavelength of each shortwave band (m)
00255 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH   ! zenithal angle at t  (radian from the vertical)
00256 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH2  ! zenithal angle at t+1(radian from the vertical)
00257 REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizontal surf.)
00258 !                                             !                                       (W/m2)
00259 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
00260 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
00261 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model orography           (m)
00262 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/kg)
00263 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
00264 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
00265 !
00266 !
00267 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTH     ! flux of heat                          (W/m2)
00268 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTQ     ! flux of water vapor                   (kg/m2/s)
00269 REAL, DIMENSION(KI), INTENT(OUT) :: PSFU      ! zonal momentum flux                   (Pa)
00270 REAL, DIMENSION(KI), INTENT(OUT) :: PSFV      ! meridian momentum flux                (Pa)
00271 REAL, DIMENSION(KI), INTENT(OUT) :: PSFCO2    ! flux of CO2 positive toward the atmosphere (m/s*kg_CO2/kg_air)
00272 REAL, DIMENSION(KI,KSV),INTENT(OUT):: PSFTS   ! flux of scalar var.                   (kg/m2/s)
00273 !
00274 REAL, DIMENSION(KI), INTENT(OUT) :: PTRAD     ! radiative temperature                 (K)
00275 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PDIR_ALB! direct albedo for each spectral band  (-)
00276 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PSCA_ALB! diffuse albedo for each spectral band (-)
00277 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS     ! emissivity                            (-)
00278 !
00279 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_A_COEF! implicit coefficients
00280 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_B_COEF! needed if HCOUPLING='I'
00281 REAL, DIMENSION(KI), INTENT(IN) :: PPET_A_COEF
00282 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_A_COEF
00283 REAL, DIMENSION(KI), INTENT(IN) :: PPET_B_COEF
00284 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_B_COEF
00285  CHARACTER(LEN=2),    INTENT(IN) :: HTEST ! must be equal to 'OK'
00286 !
00287 !
00288 !*      0.2    declarations of local variables
00289 !
00290 !* forcing variables
00291 !
00292 REAL, DIMENSION(KI)     :: ZWIND    ! lowest atmospheric level wind speed           (m/s)
00293 REAL, DIMENSION(KI)     :: ZDIR     ! wind direction                        (rad from N clockwise)
00294 REAL, DIMENSION(KI)     :: ZEXNA    ! Exner function at lowest atmospheric level    (-)
00295 REAL, DIMENSION(KI)     :: ZEXNS    ! Exner function at surface                     (-)
00296 REAL, DIMENSION(KI)     :: ZALFA    ! Wind direction                                (-)
00297 REAL, DIMENSION(KI)     :: ZQA      ! specific humidity                             (kg/kg)
00298 REAL, DIMENSION(KI)     :: ZCO2     ! CO2 concentration                             (kg/kg)
00299 REAL, DIMENSION(KI)     :: ZPEQ_A_COEF ! specific humidity implicit
00300 REAL, DIMENSION(KI)     :: ZPEQ_B_COEF ! coefficients (hum. in kg/kg)
00301 ! Patch outputs:
00302 !
00303 REAL, DIMENSION(KI,NPATCH) :: ZSFTH_TILE     ! surface heat flux (W/m2)
00304 REAL, DIMENSION(KI,NPATCH) :: ZSFTQ_TILE     ! surface vapor flux (kg/m2/s)
00305 REAL, DIMENSION(KI,NPATCH) :: ZSFCO2_TILE    ! surface CO2 flux positive toward the atmosphere (m/s*kg_CO2/kg_air)
00306 REAL, DIMENSION(KI,NPATCH) :: ZSFU_TILE      ! zonal momentum flux
00307 REAL, DIMENSION(KI,NPATCH) :: ZSFV_TILE      ! meridian momentum flux
00308 REAL, DIMENSION(KI,NPATCH) :: ZTRAD_TILE     ! radiative surface temperature
00309 REAL, DIMENSION(KI,NPATCH) :: ZEMIS_TILE     ! emissivity
00310 REAL, DIMENSION(KI,KSW,NPATCH) :: ZDIR_ALB_TILE  ! direct albedo
00311 REAL, DIMENSION(KI,KSW,NPATCH) :: ZSCA_ALB_TILE  ! diffuse albedo
00312 REAL, DIMENSION(KI,KSV,NPATCH) :: ZSFTS_TILE     ! scalar surface flux
00313 !
00314 REAL, DIMENSION(KI, NPATCH) :: ZCPL_DRAIN     ! For the coupling with TRIP
00315 REAL, DIMENSION(KI, NPATCH) :: ZCPL_RUNOFF    ! For the coupling with TRIP
00316 REAL, DIMENSION(KI, NPATCH) :: ZCPL_EFLOOD    ! For the coupling with TRIP
00317 REAL, DIMENSION(KI, NPATCH) :: ZCPL_PFLOOD    ! For the coupling with TRIP
00318 REAL, DIMENSION(KI, NPATCH) :: ZCPL_IFLOOD    ! For the coupling with TRIP
00319 REAL, DIMENSION(KI, NPATCH) :: ZCPL_ICEFLUX
00320 !
00321 ! for chemical computations
00322 !
00323 REAL, DIMENSION(KI, NPATCH) :: ZSW_FORBIO
00324 !
00325 REAL                       :: ZCONVERTFACM0_SLT, ZCONVERTFACM0_DST
00326 REAL                       :: ZCONVERTFACM3_SLT, ZCONVERTFACM3_DST
00327 REAL                       :: ZCONVERTFACM6_SLT, ZCONVERTFACM6_DST
00328 !
00329 ! dimensions and loop counters
00330 !
00331 INTEGER :: INI_FLOOD
00332 INTEGER :: ISWB   ! number of spectral shortwave bands
00333 INTEGER :: JSWB   ! loop on number of spectral shortwave bands
00334 INTEGER :: JPATCH ! loop on patches
00335 INTEGER :: JSV, IDST, IMOMENT
00336 !
00337 ! logical units
00338 !
00339 INTEGER :: JJ
00340 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00341 !
00342 ! --------------------------------------------------------------------------------------
00343 IF (LHOOK) CALL DR_HOOK('COUPLING_ISBA_N',0,ZHOOK_HANDLE)
00344 IF (HTEST/='OK') THEN
00345   CALL ABOR1_SFX('COUPLING_ISBAN: FATAL ERROR DURING ARGUMENT TRANSFER')
00346 END IF
00347 ! --------------------------------------------------------------------------------------
00348 !
00349 !*      1.     Initializations
00350 !
00351 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00352 ! Allocations:
00353 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00354 !
00355 ZSFTH_TILE   (:,:)   = XUNDEF
00356 ZSFTQ_TILE   (:,:)   = XUNDEF
00357 ZSFCO2_TILE  (:,:)   = XUNDEF
00358 ZSFU_TILE    (:,:)   = XUNDEF
00359 ZSFV_TILE    (:,:)   = XUNDEF
00360 ZTRAD_TILE   (:,:)   = XUNDEF
00361 ZEMIS_TILE   (:,:)   = XUNDEF
00362 ZDIR_ALB_TILE(:,:,:) = XUNDEF
00363 ZSCA_ALB_TILE(:,:,:) = XUNDEF
00364 !
00365 ZSFTS_TILE(:,:,:) = 0.
00366 !
00367 ZCPL_DRAIN(:,:)   = 0.0
00368 ZCPL_RUNOFF(:,:)  = 0.0
00369 ZCPL_EFLOOD(:,:)  = 0.0
00370 ZCPL_PFLOOD(:,:)  = 0.0
00371 ZCPL_IFLOOD(:,:)  = 0.0
00372 ZCPL_ICEFLUX(:,:) = 0.0
00373 !
00374 ZSW_FORBIO(:,:)   =  XUNDEF
00375 !
00376 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00377 ! Forcing Modifications:
00378 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00379 !
00380 ZDIR=0.
00381 !
00382 DO JJ=1,SIZE(PQA) 
00383 ! specific humidity (conversion from kg/m3 to kg/kg)
00384 !
00385   ZQA(JJ) = PQA(JJ) / PRHOA(JJ)
00386   ZPEQ_A_COEF(JJ) = PPEQ_A_COEF(JJ) / PRHOA(JJ)
00387   ZPEQ_B_COEF(JJ) = PPEQ_B_COEF(JJ) / PRHOA(JJ)
00388 !
00389   ZCO2(JJ) = PCO2(JJ) / PRHOA(JJ)
00390 !
00391 !
00392 ! Other forcing variables depending on incoming forcing (argument list)JJ
00393 !
00394   ZEXNS(JJ)   = (PPS(JJ)/XP00)**(XRD/XCPD)
00395   ZEXNA(JJ)   = (PPA(JJ)/XP00)**(XRD/XCPD)
00396 !
00397 !* wind strength
00398 !
00399   ZWIND(JJ) = SQRT(PU(JJ)**2+PV(JJ)**2)
00400 !
00401 !* wind direction
00402 !
00403   IF (ZWIND(JJ)>0.)  ZDIR(JJ)=ATAN2(PU(JJ),PV(JJ))
00404 !
00405 !* angle between z0eff J axis and wind direction (rad., clockwise)
00406 !
00407   ZALFA(JJ) = ZDIR(JJ) - XZ0EFFJPDIR(JJ) * XPI/180.
00408 
00409   IF (ZALFA(JJ)<-XPI) ZALFA(JJ) = ZALFA(JJ) + 2.*XPI
00410   IF (ZALFA(JJ)>=XPI) ZALFA(JJ) = ZALFA(JJ) - 2.*XPI
00411 !
00412 ENDDO
00413 !
00414 !* number of shortwave spectral bands
00415 !
00416 ISWB = KSW
00417 !
00418 !* irrigation
00419 !
00420 IF (LAGRIP .AND. (CPHOTO=='LAI' .OR. CPHOTO=='LST' .OR. CPHOTO=='NIT'.OR. CPHOTO=='NCB') ) THEN
00421    CALL IRRIGATION_UPDATE(XIRRIG,PTSTEP,KMONTH,KDAY,PTIME,               &
00422                             TSEED(:,:)%TDATE%MONTH,TSEED(:,:)%TDATE%DAY,   &
00423                             TREAP(:,:)%TDATE%MONTH,TREAP(:,:)%TDATE%DAY    )  
00424 ENDIF
00425 !
00426 !* Actualization of the SGH variable (Fmu, Fsat)
00427 !
00428  CALL ISBA_SGH_UPDATE(CISBA,CRUNOFF,CRAIN,PRAIN,XMUF,XFSAT)
00429 !
00430 !
00431 !* Actualization of deep soil characteristics
00432 !
00433 IF (LDEEPSOIL) THEN
00434    CALL DEEPSOIL_UPDATE(TTIME%TDATE%MONTH)
00435 ENDIF
00436 !
00437 !* Actualization of soil and wood carbon spinup
00438 !
00439 IF(LSPINUPCARBS.OR.LSPINUPCARBW)THEN
00440   CALL CARBON_SPINUP(TTIME%TDATE%MONTH,TTIME%TDATE%DAY,TTIME%TIME,       &
00441                      LSPINUPCARBS, LSPINUPCARBW, XSPINMAXS, XSPINMAXW,   &
00442                      NNBYEARSPINS, NNBYEARSPINW, NNBYEARSOLD, CPHOTO,    &
00443                      CRESPSL, NSPINS, NSPINW                             )
00444 ENDIF
00445 !
00446 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00447 ! Time evolution
00448 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00449 !
00450 TTIME%TIME = TTIME%TIME + PTSTEP
00451  CALL ADD_FORECAST_TO_DATE_SURF(TTIME%TDATE%YEAR,TTIME%TDATE%MONTH,TTIME%TDATE%DAY,TTIME%TIME)
00452 !
00453 ! --------------------------------------------------------------------------------------
00454 !
00455 !*      2.     Physical evolution
00456 !
00457  CALL PACK_ISBA_PATCH_GET_SIZE_n
00458 !
00459  CALL PACK_DIAG_PATCH_GET_SIZE_n
00460 !
00461 ! --------------------------------------------------------------------------------------
00462 ! Patch Dependent Calculations
00463 ! --------------------------------------------------------------------------------------
00464 !
00465 PATCH_LOOP: DO JPATCH=1,NPATCH
00466 !
00467   IF (NSIZE_NATURE_P(JPATCH) == 0 ) CYCLE
00468 !
00469 ! Pack dummy arguments for each patch:
00470 !
00471   CALL TREAT_PATCH(NSIZE_NATURE_P(JPATCH),NR_NATURE_P(:,JPATCH))
00472 !
00473 ENDDO PATCH_LOOP
00474 !
00475 ! --------------------------------------------------------------------------------------
00476 ! TRIP coupling update if used :
00477 ! --------------------------------------------------------------------------------------
00478 !
00479 IF(LTRIP)THEN
00480   CALL DIAG_CPL_ESM_ISBA(PTSTEP,ZCPL_DRAIN,ZCPL_RUNOFF,ZCPL_EFLOOD, &
00481                            ZCPL_PFLOOD,ZCPL_IFLOOD,ZCPL_ICEFLUX         )  
00482 ENDIF
00483 !
00484 ! --------------------------------------------------------------------------------------
00485 ! Vegetation update (in case of non-interactive vegetation):
00486 ! --------------------------------------------------------------------------------------
00487 !
00488 IF ((CPHOTO=='NON' .OR. CPHOTO=='AGS' .OR. CPHOTO=='AST') .AND. LVEGUPD) THEN
00489      CALL VEGETATION_UPDATE(PTSTEP,TTIME,XCOVER,                       &
00490                          CISBA,LECOCLIMAP, CPHOTO, LAGRIP, 'NAT',        &
00491                          XLAI,XVEG,XZ0,                                  &
00492                          XALBNIR,XALBVIS,XALBUV,XEMIS,                   &
00493                          XRSMIN,XGAMMA,XWRMAX_CF,                        &
00494                          XRGL,XCV,                                       &
00495                          XGMES,XBSLAI,XLAIMIN,XSEFOLD,XGC,XDMAX,         &
00496                          XF2I, LSTRESS,                                  &
00497                          XAOSIP,XAOSIM,XAOSJP,XAOSJM,                    &
00498                          XHO2IP,XHO2IM,XHO2JP,XHO2JM,                    &
00499                          XZ0EFFIP,XZ0EFFIM,XZ0EFFJP,XZ0EFFJM,            &
00500                          CALBEDO, XALBNIR_VEG, XALBVIS_VEG, XALBUV_VEG,  &
00501                          XALBNIR_SOIL, XALBVIS_SOIL, XALBUV_SOIL,        &
00502                          XCE_NITRO, XCF_NITRO, XCNA_NITRO,               &
00503                          TSEED, TREAP, XWATSUP, XIRRIG                   )  
00504 END IF
00505 !
00506 ! --------------------------------------------------------------------------------------
00507 ! Outputs for the atmospheric model or update the snow/flood fraction 
00508 ! --------------------------------------------------------------------------------------
00509 ! Grid box average fluxes/properties: Arguments and standard diagnostics
00510 !
00511  CALL AVERAGE_FLUX(XPATCH,                                             &
00512                   ZSFTH_TILE, ZSFTQ_TILE, ZSFTS_TILE, ZSFCO2_TILE,    &
00513                   ZSFU_TILE, ZSFV_TILE,                               &
00514                   PSFTH, PSFTQ, PSFTS, PSFCO2,                        &
00515                   PSFU, PSFV                                          )  
00516 !
00517 ! Albedo, Emissivity and fraction at time t+1
00518 !
00519  CALL UPDATE_RAD_ISBA_n(LFLOOD, TSNOW%SCHEME, PZENITH2, PSW_BANDS,       &
00520                        XVEG, XLAI, XZ0, XALBNIR, XALBVIS, XALBUV, XEMIS,&
00521                        ZDIR_ALB_TILE,ZSCA_ALB_TILE,ZEMIS_TILE           )  
00522 !
00523  CALL AVERAGE_RAD(XPATCH,                                               &
00524                  ZDIR_ALB_TILE, ZSCA_ALB_TILE, ZEMIS_TILE, ZTRAD_TILE, &
00525                  PDIR_ALB,      PSCA_ALB,      XEMIS_NAT,  XTSRAD_NAT  )  
00526 !
00527 PEMIS = XEMIS_NAT
00528 PTRAD = XTSRAD_NAT
00529 !
00530 ! Any additional diagnostics (stored in MODD_DIAG_ISBA_n)
00531 !
00532  CALL AVERAGE_DIAG_ISBA_n(PUREF,PZREF,PSFCO2)
00533 !
00534 ! Cumulated diagnostics (stored in MODD_DIAG_EVAP_ISBA_n)
00535 !
00536  CALL AVERAGE_DIAG_EVAP_ISBA_n(PRAIN,PSNOW)
00537 !
00538 ! Miscellaneous diagnostics (stored in MODD_DIAG_MISC_ISBA_n)
00539 !
00540  CALL AVERAGE_DIAG_MISC_ISBA_n
00541 !
00542 !--------------------------------------------------------------------------------------
00543 !
00544  CALL COUPLING_SURF_TOPD(HPROGRAM,NDIM_FULL)
00545 !
00546 ! --------------------------------------------------------------------------------------
00547 ! Snow/Flood fractions, albedo and emissivity update :
00548 ! --------------------------------------------------------------------------------------
00549 !
00550 ! --------------------------------------------------------------------------------------
00551 ! Chemical fluxes :
00552 ! --------------------------------------------------------------------------------------
00553 !
00554 IF (NBEQ>0 .AND. LCH_BIO_FLUX) THEN
00555  CALL CH_BVOCEM_n(ZSW_FORBIO,PRHOA,PSFTS)
00556 ENDIF
00557 !
00558 !SOILNOX
00559 IF (LCH_NO_FLUX) THEN
00560   CALL SOILEMISNO_n(PU,PV)
00561 ENDIF
00562 !
00563 !==========================================================================================
00564 !
00565 IF (LHOOK) CALL DR_HOOK('COUPLING_ISBA_N',1,ZHOOK_HANDLE)
00566 CONTAINS
00567 !
00568 !=======================================================================================
00569 SUBROUTINE TREAT_PATCH(KSIZE,KMASK)
00570 !
00571 IMPLICIT NONE
00572 !
00573 INTEGER, INTENT(IN)               :: KSIZE
00574 INTEGER, INTENT(IN), DIMENSION(KI) :: KMASK
00575 !
00576 REAL, DIMENSION(KSIZE) :: ZP_ZREF    ! height of T,q forcing                 (m)
00577 REAL, DIMENSION(KSIZE) :: ZP_UREF    ! height of wind forcing                (m)
00578 REAL, DIMENSION(KSIZE) :: ZP_U       ! zonal wind                            (m/s)
00579 REAL, DIMENSION(KSIZE) :: ZP_V       ! meridian wind                         (m/s)
00580 REAL, DIMENSION(KSIZE) :: ZP_WIND    ! wind                                  (m/s)
00581 REAL, DIMENSION(KSIZE) :: ZP_DIR     ! wind direction                        (rad from N clockwise)
00582 REAL, DIMENSION(KSIZE) :: ZP_QA      ! air specific humidity forcing         (kg/kg)
00583 REAL, DIMENSION(KSIZE) :: ZP_TA      ! air temperature forcing               (K)
00584 REAL, DIMENSION(KSIZE) :: ZP_CO2     ! CO2 concentration in the air          (kg/kg)
00585 REAL, DIMENSION(KSIZE,KSV) :: ZP_SV      ! scalar concentration in the air       (kg/kg)
00586 REAL, DIMENSION(KSIZE) :: ZP_ZENITH  ! zenithal angle        radian from the vertical)
00587 REAL, DIMENSION(KSIZE) :: ZP_PEW_A_COEF ! implicit coefficients
00588 REAL, DIMENSION(KSIZE) :: ZP_PEW_B_COEF ! needed if HCOUPLING='I'
00589 REAL, DIMENSION(KSIZE) :: ZP_PET_A_COEF
00590 REAL, DIMENSION(KSIZE) :: ZP_PET_B_COEF
00591 REAL, DIMENSION(KSIZE) :: ZP_PEQ_A_COEF
00592 REAL, DIMENSION(KSIZE) :: ZP_PEQ_B_COEF
00593 REAL, DIMENSION(KSIZE) :: ZP_RAIN    ! liquid precipitation                  (kg/m2/s)
00594 REAL, DIMENSION(KSIZE) :: ZP_SNOW    ! snow precipitation                    (kg/m2/s)
00595 REAL, DIMENSION(KSIZE) :: ZP_LW      ! longwave radiation (W/m2)
00596 REAL, DIMENSION(KSIZE,ISWB) :: ZP_DIR_SW  ! direct  solar radiation (W/m2)
00597 REAL, DIMENSION(KSIZE,ISWB) :: ZP_SCA_SW  ! diffuse solar radiation (W/m2)
00598 REAL, DIMENSION(KSIZE) :: ZP_PS      ! pressure at atmospheric model surface (Pa)
00599 REAL, DIMENSION(KSIZE) :: ZP_PA      ! pressure at forcing level             (Pa)
00600 REAL, DIMENSION(KSIZE) :: ZP_ZS      ! atmospheric model orography           (m)
00601 REAL, DIMENSION(KSIZE) :: ZP_SFTQ    ! flux of water vapor <w'q'>            (kg.m-2.s-1)
00602 REAL, DIMENSION(KSIZE) :: ZP_SFTH    ! flux of temperature <w'T'>            (W/m2)
00603 REAL, DIMENSION(KSIZE,KSV) :: ZP_SFTS    ! flux of scalar      <w'sv'>           (mkg/kg/s)
00604 REAL, DIMENSION(KSIZE) :: ZP_SFCO2   ! flux of CO2 positive toward the atmosphere (m/s*kg_CO2/kg_air)
00605 REAL, DIMENSION(KSIZE) :: ZP_USTAR   ! friction velocity                     (m/s)
00606 REAL, DIMENSION(KSIZE) :: ZP_SFU     ! zonal momentum flux                   (pa)
00607 REAL, DIMENSION(KSIZE) :: ZP_SFV     ! meridian momentum flux                (pa)
00608 REAL, DIMENSION(KSIZE) :: ZP_TRAD    ! radiative temperature                 (K)
00609 !
00610 !*  other forcing variables (packed for each patch)
00611 !
00612 REAL, DIMENSION(KSIZE) :: ZP_RHOA    ! lowest atmospheric level air density          (kg/m3)
00613 REAL, DIMENSION(KSIZE) :: ZP_EXNA    ! Exner function at lowest atmospheric level    (-)
00614 REAL, DIMENSION(KSIZE) :: ZP_EXNS    ! Exner function at surface                     (-)
00615 REAL, DIMENSION(KSIZE) :: ZP_ALFA    ! Wind direction   (-)
00616 !
00617 !*  working variables (packed for each patch)
00618 !
00619 REAL, DIMENSION(KSIZE)      :: ZP_ALBNIR_TVEG         ! total vegetation albedo in ir
00620 REAL, DIMENSION(KSIZE)      :: ZP_ALBNIR_TSOIL        ! total soil albedo in ir
00621 REAL, DIMENSION(KSIZE)      :: ZP_ALBVIS_TVEG         ! total vegetation albedo in vis
00622 REAL, DIMENSION(KSIZE)      :: ZP_ALBVIS_TSOIL        ! total soil albedo in vis
00623 REAL, DIMENSION(KSIZE) :: ZP_EMIS                      ! emissiviity
00624 REAL, DIMENSION(KSIZE) :: ZP_GLOBAL_SW                 ! global incoming SW rad.
00625 REAL, DIMENSION(KSIZE) :: ZP_SLOPE_COS                 ! typical slope in the grid cosine
00626 !
00627 REAL, DIMENSION(KSIZE) :: ZP_FFGNOS   !Floodplain fraction over the ground without snow
00628 REAL, DIMENSION(KSIZE) :: ZP_FFVNOS   !Floodplain fraction over vegetation without snow
00629 !
00630 REAL, DIMENSION(KSIZE,NNBIOMASS) :: ZP_RESP_BIOMASS_INST         ! instantaneous biomass respiration (kgCO2/kgair m/s)
00631 !
00632 !*  Aggregated coeffs for evaporative flux calculations
00633 !
00634 REAL, DIMENSION(KSIZE) :: ZP_AC_AGG      ! aggregated aerodynamic resistance
00635 REAL, DIMENSION(KSIZE) :: ZP_HU_AGG      ! aggregated relative humidity
00636 !
00637 !*  ISBA water and energy budget
00638 !
00639 REAL, DIMENSION(KSIZE) :: ZP_WG_INI
00640 REAL, DIMENSION(KSIZE) :: ZP_WGI_INI
00641 REAL, DIMENSION(KSIZE) :: ZP_WR_INI
00642 REAL, DIMENSION(KSIZE) :: ZP_SWE_INI
00643 !
00644 ! miscellaneous
00645 !
00646 REAL, DIMENSION(KSIZE)               :: ZP_DEEP_FLUX ! Flux at the bottom of the soil
00647 REAL, DIMENSION(KSIZE)               :: ZP_TDEEP_A   ! coefficient for implicitation of Tdeep
00648 INTEGER :: JJ, JI, JK
00649 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00650 !
00651 IF (LHOOK) CALL DR_HOOK('COUPLING_ISBA_n:TREAT_PATCH',0,ZHOOK_HANDLE)
00652 !
00653 !--------------------------------------------------------------------------------------
00654 !
00655 ! Pack isba forcing outputs
00656 !
00657 IF (NPATCH==1) THEN
00658    ZP_ZENITH(:)     = PZENITH     (:)
00659    ZP_ZREF(:)       = PZREF       (:)
00660    ZP_UREF(:)       = PUREF       (:)
00661    ZP_WIND(:)       = ZWIND       (:)
00662    ZP_U(:)          = PU          (:)
00663    ZP_V(:)          = PV          (:)
00664    ZP_DIR(:)        = ZDIR        (:)
00665    ZP_QA(:)         = ZQA         (:)
00666    ZP_TA(:)         = PTA         (:)
00667    ZP_CO2(:)        = ZCO2        (:)
00668    ZP_SV(:,:)       = PSV         (:,:)
00669    ZP_PEW_A_COEF(:) = PPEW_A_COEF (:)
00670    ZP_PEW_B_COEF(:) = PPEW_B_COEF (:)
00671    ZP_PET_A_COEF(:) = PPET_A_COEF (:)
00672    ZP_PET_B_COEF(:) = PPET_B_COEF (:)
00673    ZP_PEQ_A_COEF(:) = ZPEQ_A_COEF (:)
00674    ZP_PEQ_B_COEF(:) = ZPEQ_B_COEF (:)
00675    ZP_RAIN(:)       = PRAIN       (:)
00676    ZP_SNOW(:)       = PSNOW       (:)
00677    ZP_LW(:)         = PLW         (:)
00678    ZP_DIR_SW(:,:)   = PDIR_SW     (:,:)
00679    ZP_SCA_SW(:,:)   = PSCA_SW     (:,:)
00680    ZP_PS(:)         = PPS         (:)
00681    ZP_PA(:)         = PPA         (:)
00682    ZP_ZS(:)         = PZS         (:)
00683 !
00684    ZP_RHOA(:)       = PRHOA       (:)
00685    ZP_EXNA(:)       = ZEXNA       (:)
00686    ZP_EXNS(:)       = ZEXNS       (:)
00687    ZP_ALFA(:)       = ZALFA       (:)
00688 ELSE
00689 !cdir nodep
00690 !cdir unroll=8
00691   DO JJ=1,KSIZE
00692    JI = KMASK(JJ)
00693    ZP_ZENITH(JJ)     = PZENITH     (JI)
00694    ZP_ZREF(JJ)       = PZREF       (JI)
00695    ZP_UREF(JJ)       = PUREF       (JI)
00696    ZP_WIND(JJ)       = ZWIND       (JI)
00697    ZP_U(JJ)          = PU          (JI)
00698    ZP_V(JJ)          = PV          (JI)
00699    ZP_DIR(JJ)        = ZDIR        (JI)
00700    ZP_QA(JJ)         = ZQA         (JI)
00701    ZP_TA(JJ)         = PTA         (JI)
00702    ZP_CO2(JJ)        = ZCO2        (JI)
00703    ZP_PEW_A_COEF(JJ) = PPEW_A_COEF (JI)
00704    ZP_PEW_B_COEF(JJ) = PPEW_B_COEF (JI)
00705    ZP_PET_A_COEF(JJ) = PPET_A_COEF (JI)
00706    ZP_PET_B_COEF(JJ) = PPET_B_COEF (JI)
00707    ZP_PEQ_A_COEF(JJ) = ZPEQ_A_COEF (JI)
00708    ZP_PEQ_B_COEF(JJ) = ZPEQ_B_COEF (JI)
00709    ZP_RAIN(JJ)       = PRAIN       (JI)
00710    ZP_SNOW(JJ)       = PSNOW       (JI)
00711    ZP_LW(JJ)         = PLW         (JI)
00712    ZP_PS(JJ)         = PPS         (JI)
00713    ZP_PA(JJ)         = PPA         (JI)
00714    ZP_ZS(JJ)         = PZS         (JI)
00715 !
00716    ZP_RHOA(JJ)       = PRHOA       (JI)
00717    ZP_EXNA(JJ)       = ZEXNA       (JI)
00718    ZP_EXNS(JJ)       = ZEXNS       (JI)
00719    ZP_ALFA(JJ)       = ZALFA       (JI)
00720   ENDDO
00721 !
00722   DO JK=1,KSV
00723 !cdir nodep
00724 !cdir unroll=8
00725     DO JJ=1,KSIZE
00726       JI=KMASK(JJ)
00727       ZP_SV(JJ,JK) = PSV(JI,JK)
00728     ENDDO
00729   ENDDO
00730 !
00731   DO JK=1,SIZE(PDIR_SW,2)
00732 !cdir nodep
00733 !cdir unroll=8
00734     DO JJ=1,KSIZE
00735       JI=KMASK(JJ)
00736       ZP_DIR_SW(JJ,JK) = PDIR_SW (JI,JK)
00737       ZP_SCA_SW(JJ,JK) = PSCA_SW (JI,JK)
00738     ENDDO
00739   ENDDO
00740 !
00741 ENDIF
00742 !
00743 !--------------------------------------------------------------------------------------
00744 !
00745 ! Pack ISBA input and prognostic variables (modd_isban) for each patch:
00746 !
00747  CALL PACK_ISBA_PATCH_n(KMASK,KSIZE,JPATCH)     
00748 !
00749 
00750 ! Pack chemistry input and prognostic variables (modd_ch_isban) for each patch:
00751 !
00752 IF (NBEQ>0) THEN
00753   IF( CCH_DRY_DEP == "WES89") THEN
00754     CALL PACK_CH_ISBA_PATCH_n(KMASK,KSIZE,NPATCH,JPATCH)     
00755   END IF
00756 END IF
00757 !
00758 ! Allocate ISBA diagnostics for each patch:
00759 !
00760  CALL PACK_DIAG_PATCH_n(KSIZE,ISWB)     
00761 !
00762 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00763 ! Cosine of the slope typically encoutered in the grid mesh (including subgrid orography)
00764 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00765 !
00766 ZP_SLOPE_COS(:) = 1./SQRT(1.+XP_SSO_SLOPE(:)**2)
00767 IF(LNOSOF)ZP_SLOPE_COS(:) = 1.0
00768 !
00769 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00770 ! Snow fractions
00771 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00772 ! now caculated at the initialization and at the end of the time step 
00773 ! (see update_frac_alb_emis_isban.f90) in order to close the energy budget
00774 ! between surfex and the atmosphere. This fact do not change the offline runs.
00775 !
00776 !
00777 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00778 ! No implicitation of Tdeep
00779 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00780 ZP_TDEEP_A = 0.
00781 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00782 ! Flood properties 
00783 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00784 !
00785 IF(LFLOOD)THEN
00786   WHERE(XP_FFLOOD(:)==0.0) 
00787     XP_Z0FLOOD(:) = XZ0SN
00788     ZP_FFGNOS (:) = 0.0
00789     ZP_FFVNOS (:) = 0.0
00790   ENDWHERE
00791   INI_FLOOD =COUNT(XP_FFLOOD(:)>0.0)
00792   IF (INI_FLOOD>0) &
00793     CALL ISBA_FLOOD_PROPERTIES(INI_FLOOD,ZP_TA,ZP_EXNA,ZP_RHOA,XP_TG(:,1), &
00794                                ZP_EXNS,ZP_QA,ZP_WIND,ZP_ZREF,ZP_UREF,ZP_PS,&
00795                                ZP_SLOPE_COS,XP_VEG,XP_LAI,XP_FFLOOD,       &
00796                                XP_FFROZEN,XP_Z0FLOOD,ZP_FFGNOS,ZP_FFVNOS   )  
00797 ELSE
00798   XP_Z0FLOOD = XUNDEF
00799   ZP_FFGNOS  = 0.0
00800   ZP_FFVNOS  = 0.0
00801 ENDIF
00802 !
00803 
00804 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00805 ! Surface Roughness lengths (m):
00806 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00807 !
00808 !* effective roughness
00809 !
00810  CALL Z0EFF(CROUGH, ZP_ALFA, ZP_ZREF, ZP_UREF, XP_Z0, XP_Z0REL, XP_PSN,   &
00811      XP_Z0EFFIP,XP_Z0EFFIM,XP_Z0EFFJP,XP_Z0EFFJM, XP_FF, XP_Z0FLOOD,     &
00812      XP_AOSIP,XP_AOSIM,XP_AOSJP,XP_AOSJM,                                &
00813      XP_HO2IP,XP_HO2IM,XP_HO2JP,XP_HO2JM,                                &
00814      XP_Z0_O_Z0H, XP_Z0_WITH_SNOW, XP_Z0H_WITH_SNOW, XP_Z0EFF            )  
00815 !
00816 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00817 ! Shortwave computations for outputs (albedo for radiative scheme)
00818 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00819 ! now caculated at the initialization and at the end of the time step 
00820 ! (see update_frac_alb_emis_isban.f90) in order to close the energy budget
00821 ! between surfex and the atmosphere. This fact do not change the offline runs.
00822 !
00823 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00824 ! Shortwave computations for ISBA inputs (global snow-free albedo)
00825 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00826 !
00827 ! ISBA needs global incoming solar radiation: it currently does
00828 ! not distinguish between the scattered and direct components,
00829 ! or between different wavelengths.
00830 !
00831 !
00832 !* Snow-free surface albedo for each wavelength
00833 !
00834  CALL ISBA_ALBEDO(TSNOW%SCHEME, LTR_ML,                                   &
00835                    ZP_DIR_SW, ZP_SCA_SW, PSW_BANDS,ISWB,                 &
00836                    XP_ALBNIR, XP_ALBVIS, XP_ALBUV,                       &
00837                    XP_ALBNIR_VEG, XP_ALBVIS_VEG, XP_ALBUV_VEG,           &
00838                    XP_ALBNIR_SOIL, XP_ALBVIS_SOIL, XP_ALBUV_SOIL,        &
00839                    XP_SNOWALB, XP_PSNV, XP_PSNG, XP_ALBF, XP_FFV, XP_FFG,& 
00840                    ZP_GLOBAL_SW, XP_SNOWFREE_ALB, XP_SNOWFREE_ALB_VEG,   &
00841                    XP_SNOWFREE_ALB_SOIL, ZP_ALBNIR_TVEG, ZP_ALBVIS_TVEG, &
00842                    ZP_ALBNIR_TSOIL, ZP_ALBVIS_TSOIL                      )  
00843 !
00844 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00845 ! Intialize computation of ISBA water and energy budget
00846 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00847 !
00848  CALL ISBA_BUDGET_INIT(CISBA,TSNOW%SCHEME,            &
00849                       XP_WG,XP_WGI,XP_WR,XP_SNOWSWE, &
00850                       XP_DG, XP_DZG, ZP_WG_INI,      &
00851                       ZP_WGI_INI, ZP_WR_INI,         &
00852                       ZP_SWE_INI                     )
00853 !
00854 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00855 ! Over Natural Land Surfaces:
00856 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00857 !
00858  CALL ISBA(CISBA, CPHOTO, LTR_ML, CRUNOFF, CKSAT, CSOC, CRAIN, CHORT, CC1DRY, CSCOND,      &
00859           TSNOW%SCHEME, CSNOWRES, CCPSURF, CSOILFRZ, CDIFSFCOND, TTIME, LFLOOD, LTEMP_ARP,&
00860           LGLACIER, PTSTEP, CIMPLICIT_WIND,                                               &
00861           XCGMAX, ZP_ZREF, ZP_UREF, ZP_SLOPE_COS, ZP_TA, ZP_QA, ZP_EXNA,                  &
00862           ZP_RHOA, ZP_PS, ZP_EXNS, ZP_RAIN, ZP_SNOW, ZP_ZENITH, ZP_GLOBAL_SW, ZP_LW,      &
00863           ZP_WIND, ZP_PEW_A_COEF, ZP_PEW_B_COEF, ZP_PET_A_COEF, ZP_PEQ_A_COEF,            &
00864           ZP_PET_B_COEF, ZP_PEQ_B_COEF,  XP_RSMIN, XP_RGL, XP_GAMMA, XP_CV, XP_RUNOFFD,   &
00865           XP_SOILWGHT, NLAYER_HORT, NLAYER_DUN, ZP_ALBNIR_TVEG, ZP_ALBVIS_TVEG,           &
00866           ZP_ALBNIR_TSOIL, ZP_ALBVIS_TSOIL, XP_SNOWFREE_ALB, XP_WRMAX_CF, XP_VEG, XP_LAI, &
00867           XP_EMIS, XP_Z0_WITH_SNOW, XP_Z0H_WITH_SNOW, XP_VEGTYPE_PATCH, XP_Z0EFF,         &
00868           XP_RUNOFFB, XP_CGSAT, XP_C1SAT, XP_C2REF, XP_C3, XP_C4B, XP_C4REF, XP_ACOEF,    &
00869           XP_PCOEF, XP_TAUICE, XP_WDRAIN, ZP_TDEEP_A, XP_TDEEP, XP_GAMMAT,                &
00870           XP_PSN, XP_PSNG, XP_PSNV,                                                       &
00871           XP_PSNV_A, XP_SNOWFREE_ALB_VEG, XP_SNOWFREE_ALB_SOIL, XP_IRRIG, XP_WATSUP,      &
00872           XP_THRESHOLD, XP_LIRRIGATE, XP_LIRRIDAY, LP_STRESS, XP_GC, XP_F2I, XP_DMAX,     &
00873           XP_AH, XP_BH, ZP_CO2, XP_GMES, XPOI, XP_FZERO, XP_EPSO, XP_GAMM, XP_QDGAMM,     &
00874           XP_QDGMES, XP_T1GMES, XP_T2GMES, XP_AMAX, XP_QDAMAX,  XP_T1AMAX, XP_T2AMAX,     &
00875           XABC, XP_DG, XP_DZG, XP_DZDIF, NK_WG_LAYER, XP_ROOTFRAC, XP_WFC,                &
00876           XP_WWILT, XP_WSAT, XP_BCOEF, XP_CONDSAT, XP_MPOTSAT, XP_HCAPSOIL, XP_CONDDRY,   &
00877           XP_CONDSLD, XP_D_ICE, XP_KSAT_ICE, XP_MUF, XP_FF, XP_FFG, XP_FFV, ZP_FFGNOS,    &
00878           ZP_FFVNOS, XP_FFROZEN, XP_ALBF, XP_EMISF, XP_FFLOOD, XP_PIFLOOD, XP_IFLOOD,     &
00879           XP_PFLOOD, XP_LE_FLOOD, XP_LEI_FLOOD, XSODELX, XP_LAT, XP_LON, XP_TG, XP_WG,    &
00880           XP_WGI, XP_CPS, XP_LVTT, XP_LSTT, XP_WR, XP_RESA, XP_ANFM, XP_FSAT,             &
00881           XP_SNOWALB, XP_SNOWSWE, XP_SNOWHEAT, XP_SNOWRHO, XP_SNOWGRAN1, XP_SNOWGRAN2,    &
00882           XP_SNOWHIST, XP_SNOWAGE, XP_GRNDFLUX, XP_HPSNOW, XP_SNOWHMASS,  XP_SMELTFLUX,   &
00883           XP_RNSNOW, XP_HSNOW, XP_GFLUXSNOW, XP_USTARSNOW, XP_SRSFC, XP_RRSFC, XP_LESL,   &
00884           XP_SNOWEMIS, XP_CDSNOW, XP_CHSNOW, XP_TSRAD, XP_TS, XP_HV, XP_QS, XP_SNOWTEMP,  &
00885           XP_SNOWLIQ, XP_SNOWDZ, XP_CG, XP_C1, XP_C2, XP_WGEQ, XP_CT, XP_CH, XP_CD,       &
00886           XP_CDN, XP_RI, XP_HU, XP_HUG, ZP_EMIS, XP_ALBT, XP_RS, XP_LE, XP_RN, XP_H,      &
00887           XP_LEI, XP_LEGI, XP_LEG, XP_LEV, XP_LES, XP_LER, XP_LETR, XP_EVAP, XP_GFLUX,    &
00888           XP_RESTORE, ZP_USTAR, XP_DRAIN, XP_RUNOFF, XP_MELT, XP_MELTADV, XP_RN_ISBA,     &
00889           XP_H_ISBA, XP_LEG_ISBA, XP_LEGI_ISBA, XP_LEV_ISBA, XP_LETR_ISBA, XP_USTAR_ISBA, &
00890           XP_LER_ISBA, XP_LE_ISBA, XP_LEI_ISBA, XP_GFLUX_ISBA, XP_HORT, XP_DRIP, XP_RRVEG,&
00891           ZP_AC_AGG, ZP_HU_AGG, XP_FAPARC, XP_FAPIRC, XP_MUS, XP_LAI_EFFC, XP_AN,         &
00892           XP_ANDAY, ZP_RESP_BIOMASS_INST, XP_IACAN, XP_ANF, XP_GPP, XP_FAPAR, XP_FAPIR,   &
00893           XP_FAPAR_BS, XP_FAPIR_BS, XP_IRRIG_FLUX, ZP_DEEP_FLUX                           )  
00894 !
00895 ZP_TRAD=XP_TSRAD
00896 !
00897 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00898 ! Glacier : ice runoff flux (especally for Earth System Model)
00899 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00900 !
00901 IF(LGLACIER)THEN
00902 !           
00903   CALL HYDRO_GLACIER(PTSTEP,ZP_SNOW,XP_SNOWRHO,XP_SNOWSWE,XP_ICE_STO,XP_ICEFLUX)
00904 !     
00905 ENDIF
00906 !
00907 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00908 ! Calculation of ISBA water and energy budget (and time tendencies of each reservoir)
00909 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00910 !
00911  CALL ISBA_BUDGET(CISBA,TSNOW%SCHEME,LGLACIER,PTSTEP,          &
00912                  XP_WG,XP_WGI,XP_WR,XP_SNOWSWE,XP_DG,XP_DZG,  & 
00913                  ZP_WG_INI,ZP_WGI_INI,ZP_WR_INI,ZP_SWE_INI,   &
00914                  ZP_RAIN,ZP_SNOW,XP_EVAP,XP_DRAIN,XP_RUNOFF,  &
00915                  XP_IFLOOD,XP_PFLOOD,XP_ICEFLUX,XP_IRRIG_FLUX,&
00916                  XP_DWG,XP_DWGI,XP_DWR,XP_DSWE,XP_WATBUD      )
00917 !
00918 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00919 ! Evolution of soil albedo, when depending on surface soil wetness:
00920 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00921 !
00922 IF (CALBEDO=='EVOL' .AND. LECOCLIMAP) THEN
00923   CALL SOIL_ALBEDO(CALBEDO,                                    &
00924                    XP_WSAT(:,1),XP_WG(:,1),                    &
00925                    XP_ALBVIS_DRY,XP_ALBNIR_DRY,XP_ALBUV_DRY,   &
00926                    XP_ALBVIS_WET,XP_ALBNIR_WET,XP_ALBUV_WET,   &
00927                    XP_ALBVIS_SOIL,XP_ALBNIR_SOIL,XP_ALBUV_SOIL )  
00928   !
00929   CALL ALBEDO(CALBEDO,                                          &
00930               XP_ALBVIS_VEG,XP_ALBNIR_VEG,XP_ALBUV_VEG,XP_VEG,  &
00931               XP_ALBVIS_SOIL,XP_ALBNIR_SOIL,XP_ALBUV_SOIL,      &
00932               XP_ALBVIS,XP_ALBNIR,XP_ALBUV                      )  
00933 END IF
00934 !
00935 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00936 ! Vegetation evolution for interactive LAI
00937 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00938 !
00939 IF (CPHOTO=='LAI' .OR. CPHOTO=='LST' .OR. CPHOTO=='NIT' .OR. CPHOTO=='NCB') THEN
00940   CALL VEGETATION_EVOL(CISBA, CPHOTO, CRESPSL, CALBEDO, LAGRIP, LTR_ML,           &
00941                        PTSTEP, KMONTH, KDAY, NSPINW, PTIME, XP_LAT, ZP_RHOA,      &
00942                        XP_DG, XP_DZG, NK_WG_LAYER,                                &                       
00943                        XP_TG, XP_ALBNIR_VEG, XP_ALBVIS_VEG, XP_ALBUV_VEG,         &
00944                        XP_ALBNIR_SOIL, XP_ALBVIS_SOIL, XP_ALBUV_SOIL,             &
00945                        XP_VEGTYPE_PATCH, XP_SEFOLD, XP_ANMAX, XP_H_TREE, XP_BSLAI,&
00946                        XP_LAIMIN, ZP_CO2, XP_CE_NITRO, XP_CF_NITRO, XP_CNA_NITRO, &
00947                        XP_BSLAI_NITRO, XP_GMES, XP_TAU_WOOD, TP_SEED,             &
00948                        TP_REAP, XP_AOSIP, XP_AOSIM, XP_AOSJP, XP_AOSJM,           &
00949                        XP_HO2IP, XP_HO2IM, XP_HO2JP, XP_HO2JM, XP_Z0EFFIP,        &
00950                        XP_Z0EFFIM, XP_Z0EFFJP, XP_Z0EFFJM, XP_LAI, XP_VEG,        &
00951                        XP_Z0, XP_ALBNIR, XP_ALBVIS, XP_ALBUV, XP_EMIS,            &
00952                        XP_ANFM, XP_ANDAY, XP_BIOMASS, XP_RESP_BIOMASS,            &
00953                        ZP_RESP_BIOMASS_INST, XP_INCREASE, XP_TURNOVER             )  
00954 END IF
00955 !
00956 !
00957 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00958 ! Diagnostic of respiration carbon fluxes and soil carbon evolution
00959 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00960 !
00961 ZP_SFCO2    (:)=0.
00962 XP_RESP_ECO (:)=0.
00963 XP_RESP_AUTO(:)=0.
00964 !
00965 IF ( CPHOTO/='NON' .AND. CRESPSL/='NON' .AND. ANY(XP_LAI(:)/=XUNDEF) ) THEN
00966   CALL CARBON_EVOL(CISBA, CRESPSL, CPHOTO, PTSTEP, NSPINS,                   &
00967                    ZP_RHOA, XP_TG, XP_WG, XP_WFC, XP_WWILT, XP_WSAT, XP_SAND,&
00968                    XP_DG, XP_DZG, NK_WG_LAYER,                               &                   
00969                    XP_RE25, XP_LAI, ZP_RESP_BIOMASS_INST, XP_TURNOVER,       &
00970                    XP_LITTER, XP_LIGNIN_STRUC , XP_SOILCARB,                 &
00971                    XP_RESP_AUTO, XP_RESP_ECO                                 )  
00972   ! calculation of vegetation CO2 flux
00973   ! Positive toward the atmosphere
00974   ZP_SFCO2(:) = XP_RESP_ECO(:) - XP_GPP(:)  
00975 END IF
00976 !
00977 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00978 ! Reset effecitve roughness lentgh to its nominal value when snow has just disappeared
00979 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00980 !
00981  CALL SUBSCALE_Z0EFF(XP_AOSIP,XP_AOSIM,XP_AOSJP,XP_AOSJM,            &
00982                     XP_HO2IP,XP_HO2IM,XP_HO2JP,XP_HO2JM,XP_Z0,      &
00983                     XP_Z0EFFIP,XP_Z0EFFIM,XP_Z0EFFJP,XP_Z0EFFJM,    &
00984                     OMASK=(XP_SNOWSWE(:,1)==0. .AND. XP_PSN(:)>0.)  )   
00985 !
00986 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00987 ! Turbulent fluxes
00988 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00989 !
00990 ZP_SFTH(:) = XP_H(:)
00991 ZP_SFTQ(:) = XP_EVAP(:)
00992 
00993 ZP_SFU (:) = 0.
00994 ZP_SFV (:) = 0.
00995 WHERE (ZP_WIND>0.)
00996   ZP_SFU (:) = - ZP_U(:)/ZP_WIND(:) * ZP_USTAR(:)**2 * ZP_RHOA(:)
00997   ZP_SFV (:) = - ZP_V(:)/ZP_WIND(:) * ZP_USTAR(:)**2 * ZP_RHOA(:)
00998 END WHERE
00999 !
01000 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01001 ! Scalar fluxes
01002 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01003 !
01004 ZP_SFTS(:,:) = 0.
01005 !
01006 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01007 !
01008 ! --------------------------------------------------------------------------------------
01009 ! Chemical dry deposition :
01010 ! --------------------------------------------------------------------------------------
01011 IF (NBEQ>0) THEN
01012   IF( CCH_DRY_DEP == "WES89") THEN
01013 
01014     CALL CH_DEP_ISBA         (ZP_USTAR, XP_HU, XP_PSN,             &
01015                         XP_VEG, XP_LAI, XP_SAND, XP_CLAY, XP_RESA, &
01016                         XP_RS(:),  XP_Z0(:),                       &
01017                         ZP_TA, ZP_PA, ZP_TRAD(:),                  &
01018                         XP_VEGTYPE_PATCH(:,NVT_NO),                &
01019                         XP_VEGTYPE_PATCH(:,NVT_ROCK),              &
01020                         CSV(NSV_CHSBEG:NSV_CHSEND),                &
01021                         XP_SOILRC_SO2,  XP_SOILRC_O3 ,             &
01022                         XP_DEP(:,1:NBEQ)                           )  
01023  
01024     ZP_SFTS(:,NSV_CHSBEG:NSV_CHSEND) = - ZP_SV(:,NSV_CHSBEG:NSV_CHSEND)  &
01025                                                     * XP_DEP(:,1:NBEQ)  
01026     IF (NAEREQ > 0 ) THEN
01027       CALL CH_AER_DEP(ZP_SV(:,NSV_AERBEG:NSV_AEREND),&
01028                            ZP_SFTS(:,NSV_AERBEG:NSV_AEREND),&
01029                            ZP_USTAR, XP_RESA,ZP_TA,ZP_RHOA)     
01030     END IF
01031   ELSE
01032     ZP_SFTS(:,NSV_CHSBEG:NSV_CHSEND) = 0.
01033     ZP_SFTS(:,NSV_AERBEG:NSV_AEREND) = 0.
01034   ENDIF
01035 ENDIF
01036 !
01037 ! --------------------------------------------------------------------------------------
01038 ! Dust deposition and emission:
01039 ! --------------------------------------------------------------------------------------
01040 !
01041 IF(NDSTEQ>0)THEN
01042   IDST = NSV_DSTEND - NSV_DSTBEG + 1
01043 
01044   CALL COUPLING_DST_n(           &
01045             HPROGRAM,                    &!I [char] Name of program
01046             KSIZE,      &!I [nbr] number of points in patch
01047             IDST,                        &!I [nbr] number of dust emissions variables
01048             JPATCH,                      &!I [idx] patch in question
01049             XP_CLAY(:,1),                &!I [frc] mass fraction clay in first soil layer
01050             ZP_PS,                       &!I [Pa] surface pressure
01051             ZP_QA,                       &!I [kg/kg] specific humidity
01052             XP_RESA,                     &!I [s/m] atmospheric resistance
01053             ZP_RHOA,                     &!I [kg/m3] atmospheric density
01054             XP_SAND(:,1),                &!I [frc] mass fraction of sand in first soil layer
01055             ZP_SFTH,                     &!I [W/m2] surface heat flux
01056             ZP_SFTQ,                     &!I [kg/m2/s] surface vapor flux
01057             ZP_TA,                       &!I [K] Atmospheric temperature
01058             XP_TG(:,1),                  &!I [K] Ground temperature
01059             ZP_U,                        &!I [m/s] zonal wind at atmospheric height 
01060             ZP_UREF,                     &!I [m] reference height of wind
01061             ZP_V,                        &!I [m/s] meridional wind at atmospheric height
01062             XP_WG(:,1),                  &!I [m3/m3] ground volumetric water content
01063             XP_WSAT(:,1),                &!I [m3/m3] saturation volumetric water content
01064             ZP_ZREF,                     &!I [m] reference height of wind
01065             XP_CD,                       &
01066             XP_RI,                       &
01067             XP_Z0H_WITH_SNOW,            &!I [frc] Z0 (heat) with snow
01068             ZP_SFTS(:,NSV_DSTBEG:NSV_DSTEND)  &!O [kg/m2/sec] flux of dust            
01069             )  
01070 
01071 !Modify fluxes due to dry deposition, we introduce a negative flux where dust is lost
01072   CALL DSLT_DEP(ZP_SV(:,NSV_DSTBEG:NSV_DSTEND), ZP_SFTS(:,NSV_DSTBEG:NSV_DSTEND), &
01073                 ZP_USTAR, XP_RESA, ZP_TA, ZP_RHOA, XEMISSIG_DST, XEMISRADIUS_DST, &
01074                 JPMODE_DST, XDENSITY_DST, XMOLARWEIGHT_DST, ZCONVERTFACM0_DST,    &
01075                 ZCONVERTFACM6_DST, ZCONVERTFACM3_DST, LVARSIG_DST, LRGFIX_DST,    &
01076                 CVERMOD  )
01077 
01078  !Transfer these fluxes to fluxes understandable by all moments
01079   CALL MASSFLUX2MOMENTFLUX(           &
01080     ZP_SFTS(:,NSV_DSTBEG:NSV_DSTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
01081     ZP_RHOA,                          & !I [kg/m3] air density
01082     XEMISRADIUS_DST,                  &!I [um] emitted radius for the modes (max 3)
01083     XEMISSIG_DST,                     &!I [-] emitted sigma for the different modes (max 3)
01084     NDSTMDE,                          &
01085     ZCONVERTFACM0_DST,                &
01086     ZCONVERTFACM6_DST,                &
01087     ZCONVERTFACM3_DST,                &
01088     LVARSIG_DST, LRGFIX_DST           )   
01089 
01090 ENDIF !Check on CDSTYN
01091 !
01092 ! --------------------------------------------------------------------------------------
01093 ! Sea Salt deposition
01094 ! --------------------------------------------------------------------------------------
01095 !
01096 IF (NSLTEQ>0) THEN
01097   CALL DSLT_DEP(ZP_SV(:,NSV_SLTBEG:NSV_SLTEND), ZP_SFTS(:,NSV_SLTBEG:NSV_SLTEND), &
01098                 ZP_USTAR, XP_RESA, ZP_TA, ZP_RHOA, XEMISSIG_SLT, XEMISRADIUS_SLT, &
01099                 JPMODE_SLT, XDENSITY_SLT, XMOLARWEIGHT_SLT, ZCONVERTFACM0_SLT,    &
01100                 ZCONVERTFACM6_SLT, ZCONVERTFACM3_SLT, LVARSIG_SLT, LRGFIX_SLT,    &
01101                 CVERMOD  )  
01102 
01103   CALL MASSFLUX2MOMENTFLUX(           &
01104     ZP_SFTS(:,NSV_SLTBEG:NSV_SLTEND), & !I/O ![kg/m2/sec] In: flux of only mass, out: flux of moments
01105     ZP_RHOA,                          & !I [kg/m3] air density
01106     XEMISRADIUS_SLT,                  &!I [um] emitted radius for the modes (max 3)
01107     XEMISSIG_SLT,                     &!I [-] emitted sigma for the different modes (max 3)
01108     NSLTMDE,                          &
01109     ZCONVERTFACM0_SLT,                &
01110     ZCONVERTFACM6_SLT,                &
01111     ZCONVERTFACM3_SLT,                &
01112     LVARSIG_SLT, LRGFIX_SLT         ) 
01113 ENDIF !Check on CSLTYN
01114 !
01115 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01116 ! Inline diagnostics
01117 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01118 !
01119  CALL DIAG_INLINE_ISBA_n(ZP_TA, ZP_TRAD, ZP_QA, ZP_PA, ZP_PS, ZP_RHOA, ZP_U, ZP_V,      &
01120                           ZP_ZREF, ZP_UREF,                                            &
01121                           XP_CD, XP_CDN, XP_CH, XP_RI, XP_HU, XP_Z0_WITH_SNOW,         &
01122                           XP_Z0H_WITH_SNOW, XP_Z0EFF,                                  &
01123                           ZP_SFTH, ZP_SFTQ, ZP_SFU, ZP_SFV, XP_QS,                     &
01124                           XP_DIR_ALB_WITH_SNOW, XP_SCA_ALB_WITH_SNOW,                  &
01125                           ZP_DIR_SW, ZP_SCA_SW, ZP_LW, XP_RN                           )  
01126 !
01127 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01128 ! Isba offline diagnostics for each patch
01129 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01130 !
01131  CALL DIAG_EVAP_ISBA_n(CPHOTO,PTSTEP,KMASK,KSIZE,JPATCH,ZP_RHOA)
01132 !
01133 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01134 ! Isba offline diagnostics for miscellaneous terms over each patch
01135 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
01136 !
01137  CALL DIAG_MISC_ISBA_n(PTSTEP, CISBA, CPHOTO, TSNOW%SCHEME, LAGRIP, LTR_ML,    &
01138                       PTIME, KSIZE, JPATCH, KMASK, XP_THRESHOLD,              &
01139                       XP_PSN, XP_PSNG, XP_PSNV, XP_FF, XP_FFG, XP_FFV,        &
01140                       XP_WG, XP_WGI, XP_WFC, XP_WWILT, XP_SNOWSWE, XP_SNOWRHO,&
01141                       XP_FAPARC, XP_FAPIRC, XP_LAI_EFFC, XP_MUS, XP_FSAT,     &
01142                       XP_DG, XP_TG       )                  
01143 !
01144 ! Unpack ISBA diagnostics (modd_diag_isban) for each patch:ISIZE_MAX = MAXVAL(NSIZE_NATURE_P)
01145 
01146 !  (MUST be done BEFORE UNPACK_ISBA_PATCH, because of XP_LE)
01147 !
01148  CALL UNPACK_DIAG_PATCH_n(KMASK,KSIZE,NPATCH,JPATCH, &
01149                            ZCPL_DRAIN,ZCPL_RUNOFF,ZCPL_EFLOOD,ZCPL_PFLOOD,           &
01150                            ZCPL_IFLOOD, ZCPL_ICEFLUX)  
01151 !
01152 ! for chemical deposition
01153 !
01154 IF (NBEQ>0) THEN
01155   IF( CCH_DRY_DEP == "WES89") THEN
01156     CALL UNPACK_CH_ISBA_PATCH_n(KMASK,KSIZE,NPATCH,JPATCH)     
01157   END IF
01158 END IF
01159 !
01160 ! Unpack ISBA variables (modd_isban) for each patch:
01161 !
01162  CALL UNPACK_ISBA_PATCH_n(KMASK,KSIZE,JPATCH)
01163 !
01164 !----------------------------------------------------------------------
01165 !
01166 ! for further chemical biogenic emissions
01167 !
01168 IF (NBEQ>0 .AND. LCH_BIO_FLUX) THEN
01169   !
01170   DO JJ=1,KSIZE
01171     ZSW_FORBIO(KMASK(JJ),JPATCH) = 0.
01172   ENDDO
01173   !
01174   DO JSWB=1,ISWB
01175 !cdir nodep
01176 !cdir unroll=8
01177     DO JJ=1,KSIZE
01178       ZSW_FORBIO(KMASK(JJ),JPATCH) = ZSW_FORBIO(KMASK(JJ),JPATCH)              &
01179                                      + ZP_DIR_SW(JJ,JSWB) + ZP_SCA_SW(JJ,JSWB)  
01180     ENDDO
01181   ENDDO
01182   !
01183 ENDIF
01184 !----------------------------------------------------------------------
01185 !
01186 ! Unpack output dummy arguments for each patch:
01187 !
01188 IF (NPATCH==1) THEN
01189    ZSFTQ_TILE      (:,JPATCH)  = ZP_SFTQ      (:)
01190    ZSFTH_TILE      (:,JPATCH)  = ZP_SFTH      (:)
01191    ZSFTS_TILE      (:,:,JPATCH)= ZP_SFTS      (:,:)
01192    ZSFCO2_TILE     (:,JPATCH)  = ZP_SFCO2     (:)
01193    ZSFU_TILE       (:,JPATCH)  = ZP_SFU       (:)
01194    ZSFV_TILE       (:,JPATCH)  = ZP_SFV       (:)
01195    ZTRAD_TILE      (:,JPATCH)  = ZP_TRAD      (:)
01196 ELSE
01197 !cdir nodep
01198 !cdir unroll=8
01199  DO JJ=1,KSIZE
01200    JI = KMASK(JJ)
01201    ZSFTQ_TILE      (JI,JPATCH)  = ZP_SFTQ      (JJ)
01202    ZSFTH_TILE      (JI,JPATCH)  = ZP_SFTH      (JJ)
01203    ZSFCO2_TILE     (JI,JPATCH)  = ZP_SFCO2     (JJ)
01204    ZSFU_TILE       (JI,JPATCH)  = ZP_SFU       (JJ)
01205    ZSFV_TILE       (JI,JPATCH)  = ZP_SFV       (JJ)
01206    ZTRAD_TILE      (JI,JPATCH)  = ZP_TRAD      (JJ)
01207  ENDDO
01208 !
01209 !cdir nodep
01210 !cdir unroll=8
01211   DO JK=1,SIZE(ZP_SFTS,2)
01212     DO JJ=1,KSIZE
01213       JI=KMASK(JJ)    
01214       ZSFTS_TILE      (JI,JK,JPATCH)= ZP_SFTS      (JJ,JK)
01215     ENDDO
01216   ENDDO
01217 ENDIF
01218 !
01219 !----------------------------------------------------------------------
01220 !
01221 ! Get output dust flux if we are calculating dust
01222 IF (NDSTMDE .GE. 1) IMOMENT = INT(IDST / NDSTMDE)
01223 IF (NDSTEQ>0) THEN
01224   DO JSV = 1,NDSTMDE
01225     IF (IMOMENT == 1) THEN
01226       XSFDST(:,JSV,JPATCH)=ZSFTS_TILE(:,NDST_MDEBEG+JSV-1,JPATCH)
01227     ELSE
01228       XSFDST(:,JSV,JPATCH)=ZSFTS_TILE(:,NDST_MDEBEG+(JSV-1)*IMOMENT+1,JPATCH)
01229     END IF
01230 
01231     XSFDSTM(:,JSV,JPATCH)=XSFDSTM(:,JSV,JPATCH) + XSFDST(:,JSV,JPATCH) * PTSTEP
01232   ENDDO
01233 ENDIF
01234 !
01235 IF (LHOOK) CALL DR_HOOK('COUPLING_ISBA_n:TREAT_PATCH',1,ZHOOK_HANDLE)
01236 !
01237 END SUBROUTINE TREAT_PATCH
01238 !==========================================================================================
01239 END SUBROUTINE COUPLING_ISBA_n