SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_isba_initn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE DIAG_ISBA_INIT_n(HPROGRAM,KLU,KSW)
00003 !     #####################
00004 !
00005 !!****  *DIAG_ISBA_INIT_n* - routine to initialize ISBA-AGS diagnostic variables
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    02/2003 
00031 !!      modified    11/2003 by P. LeMoigne: surface cumulated energy budget
00032 !!      modified    10/2004 by P. LeMoigne: surface miscellaneous fields
00033 !!      B. Decharme    2008    New diag for water budget and allow to reset
00034 !                               cumulatives variables at the beginning of a run
00035 !!      B. Decharme 06/2009    add patch budget switch 
00036 !!      B. Decharme 08/2009    add cummulative diag
00037 !!      A.L. Gibelin 04/2009 : Add respiration diagnostics
00038 !!      A.L. Gibelin 05/2009 : Add carbon spinup
00039 !!      A.L. Gibelin 07/2009 : Suppress RDK and transform GPP as a diagnostic
00040 !!      B. Decharme  05/12   : Carbon fluxes in diag_evap
00041 !!      B. Decharme  10/12     Isba water budget diag
00042 !!      B. Decharme  10/12     New diag for DIF:
00043 !!                             F2 stress
00044 !!                             Root zone swi, wg and wgi
00045 !!                             swi, wg and wgi comparable to ISBA-FR-DG2 and DG3 layers
00046 !!                             active layer thickness over permafrost
00047 !!                             frozen layer thickness over non-permafrost
00048 !-------------------------------------------------------------------------------
00049 !
00050 !*       0.0    DECLARATIONS
00051 !              ------------
00052 !
00053 USE MODD_SURF_PAR,       ONLY : XUNDEF
00054 USE MODD_ISBA_n,         ONLY : NPATCH, NGROUND_LAYER, LFLOOD, CHORT, LGLACIER,  &
00055                                 LTR_ML, TSNOW, CISBA, XABC, CPHOTO
00056 USE MODD_CH_ISBA_n,      ONLY : LCH_BIO_FLUX, NBEQ 
00057 USE MODD_TYPE_DATE_SURF
00058 USE MODD_AGRI,           ONLY : LAGRIP
00059 USE MODD_DIAG_SURF_ATM_n,ONLY : LREAD_BUDGETC
00060 USE MODD_DIAG_ISBA_n,    ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS,            &
00061                                 LPATCH_BUDGET,                                   &
00062                                 XRN, XH, XGFLUX, XLEI, XRI, XCD, XCH, XCE,       &
00063                                 XTS, XTSRAD, XT2M, XQ2M, XHU2M,                  &
00064                                 XZON10M, XMER10M,                                &
00065                                 XZ0_WITH_SNOW, XZ0H_WITH_SNOW, XZ0EFF, XQS,      &
00066                                 XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, XFMU, XFMV,&
00067                                 XAVG_RN, XAVG_H, XAVG_LE, XAVG_LEI,              &
00068                                 XAVG_GFLUX, XAVG_RI, XAVG_CD, XAVG_CH, XAVG_CE,  &
00069                                 XAVG_T2M, XAVG_Q2M, XAVG_HU2M, XAVG_T2M_MIN,     &
00070                                 XAVG_ZON10M, XAVG_MER10M, XAVG_T2M_MAX,          &
00071                                 XAVG_Z0, XAVG_Z0H, XAVG_Z0EFF, XAVG_QS,          &
00072                                 XAVG_SWD, XAVG_SWU, XAVG_SWBD, XAVG_SWBU,        &
00073                                 XAVG_LWD, XAVG_LWU, XAVG_FMU, XAVG_FMV,          &
00074                                 XSWDC, XSWUC, XLWDC, XLWUC, XFMUC, XFMVC,        &
00075                                 XAVG_SWDC, XAVG_SWUC, XAVG_LWDC, XAVG_LWUC,      &
00076                                 XAVG_FMUC, XAVG_FMVC, XAVG_TS, XAVG_TSRAD,       &
00077                                 XAVG_HU2M_MIN, XAVG_HU2M_MAX, XWIND10M,          &
00078                                 XAVG_WIND10M, XAVG_WIND10M_MAX, XAVG_SFCO2  
00079 !
00080 USE MODD_DIAG_EVAP_ISBA_n, ONLY : LSURF_EVAP_BUDGET, LSURF_BUDGETC, LRESET_BUDGETC,&
00081                                   LWATER_BUDGET,                                   &
00082                                   XRNC, XAVG_RNC, XHC, XAVG_HC,                    &
00083                                   XLEC, XAVG_LEC, XGFLUXC, XAVG_GFLUXC,            &
00084                                   XLEIC, XAVG_LEIC,                                &
00085                                   XLEG, XLEGC, XAVG_LEG, XAVG_LEGC,                &
00086                                   XLEGI, XLEGIC, XAVG_LEGI, XAVG_LEGIC,            &
00087                                   XLEV, XLEVC, XAVG_LEV, XAVG_LEVC,                &
00088                                   XLES, XLESC, XAVG_LES, XAVG_LESC,                &
00089                                   XLESL, XLESLC, XAVG_LESL, XAVG_LESLC,            &
00090                                   XLER, XLERC, XAVG_LER, XAVG_LERC,                &
00091                                   XLETR, XLETRC, XAVG_LETR, XAVG_LETRC,            &
00092                                   XEVAP, XEVAPC, XAVG_EVAP, XAVG_EVAPC,            &
00093                                   XDRAIN, XDRAINC, XAVG_DRAIN, XAVG_DRAINC,        &
00094                                   XRUNOFF, XRUNOFFC, XAVG_RUNOFF, XAVG_RUNOFFC,    &
00095                                   XHORT, XHORTC, XAVG_HORT, XAVG_HORTC,            &
00096                                   XDRIP, XDRIPC, XAVG_DRIP, XAVG_DRIPC,            &
00097                                   XMELT, XMELTC, XAVG_MELT, XAVG_MELTC,            &
00098                                   XIFLOOD, XIFLOODC, XAVG_IFLOOD, XAVG_IFLOODC,    &
00099                                   XPFLOOD, XPFLOODC, XAVG_PFLOOD, XAVG_PFLOODC,    &
00100                                   XLE_FLOOD, XLE_FLOODC, XAVG_LE_FLOOD,            &
00101                                   XAVG_LE_FLOODC, XLEI_FLOOD, XLEI_FLOODC,         &
00102                                   XAVG_LEI_FLOOD, XAVG_LEI_FLOODC,                 &
00103                                   XICEFLUXC, XAVG_ICEFLUXC,                        &
00104                                   XRRVEG, XRRVEGC, XAVG_RRVEG, XAVG_RRVEGC,        &
00105                                   XIRRIG_FLUX, XIRRIG_FLUXC, XAVG_IRRIG_FLUX,      &
00106                                   XAVG_IRRIG_FLUXC,                                &
00107                                   XGPP,XGPPC,XAVG_GPP,XAVG_GPPC, XRESP_AUTO,       &
00108                                   XRESPC_AUTO,XAVG_RESP_AUTO,XAVG_RESPC_AUTO,      &
00109                                   XRESP_ECO,XRESPC_ECO,XAVG_RESP_ECO,              &
00110                                   XAVG_RESPC_ECO,XDWG,XDWGC,XAVG_DWG,XAVG_DWGC,    &     
00111                                   XDWGI,XDWGIC,XAVG_DWGI,XAVG_DWGIC,               &
00112                                   XDWR,XDWRC,XAVG_DWR,XAVG_DWRC,                   &
00113                                   XDSWE,XDSWEC,XAVG_DSWE,XAVG_DSWEC,               &
00114                                   XRAINFALL,XRAINFALLC,XSNOWFALL,XSNOWFALLC,       &
00115                                   XWATBUD,XWATBUDC,XAVG_WATBUD,XAVG_WATBUDC
00116 ! 
00117 USE MODD_DIAG_MISC_ISBA_n, ONLY : LSURF_MISC_BUDGET, LSURF_MISC_DIF,              &
00118                                   XHV,  XSWI, XTSWI, XTWSNOW, XTDSNOW, XTTSNOW,   &
00119                                   XDPSNG, XDPSNV, XDPSN,                          &
00120                                   XAVG_HV, XAVG_SWI, XAVG_TSWI,                   &
00121                                   XALT, XFLT, XAVG_ALT, XAVG_FLT,                 &
00122                                   XAVG_TWSNOW, XAVG_TDSNOW, XAVG_TTSNOW,          &
00123                                   XAVG_PSNG, XAVG_PSNV, XAVG_PSN, XSEUIL,         &
00124                                   XAVG_ALBT, XALBT,                               &
00125                                   XSOIL_TSWI, XSOIL_TWG, XSOIL_TWGI,              &
00126                                   XDFFG, XDFFV, XDFF, XAVG_FFG, XAVG_FFV, XAVG_FF,&
00127                                   XSNOWLIQ, XSNOWTEMP, XDFSAT, XAVG_FSAT,         &
00128                                   XSURF_TSWI, XSURF_TWG, XSURF_TWGI,  XROOT_TSWI, &
00129                                   XROOT_TWG,  XROOT_TWGI, XFRD2_TSWI, XFRD2_TWG,  &
00130                                   XFRD2_TWGI, XFRD3_TSWI, XFRD3_TWG, XFRD3_TWGI,  &
00131                                   XFAPAR, XFAPIR, XDFAPARC, XDFAPIRC,             &
00132                                   XFAPAR_BS, XFAPIR_BS, XDLAI_EFFC, XAVG_LAI                                  
00133 !
00134 USE MODD_GR_BIOG_n,        ONLY : XFISO, XFMONO, XIACAN
00135 !
00136 USE MODI_READ_SURF
00137 !
00138 !
00139 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00140 USE PARKIND1  ,ONLY : JPRB
00141 !
00142 IMPLICIT NONE
00143 !
00144 !*       0.01   Declarations of arguments
00145 !              -------------------------
00146 !
00147 INTEGER, INTENT(IN)         :: KLU       ! size of arrays
00148 INTEGER, INTENT(IN)         :: KSW       ! spectral bands
00149  CHARACTER(LEN=6), INTENT(IN):: HPROGRAM  ! program calling
00150 !
00151 !*       0.02   Declarations of local variables
00152 !              -------------------------------
00153 !
00154 INTEGER           :: IVERSION, IBUG
00155 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00156  CHARACTER(LEN=12) :: YREC           ! Name of the article to be read
00157  CHARACTER(LEN=4) :: YREC2
00158 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00159 !
00160 !-------------------------------------------------------------------------------
00161 !
00162 !* surface energy budget
00163 !
00164 IF (LHOOK) CALL DR_HOOK('DIAG_ISBA_INIT_N',0,ZHOOK_HANDLE)
00165 !
00166 IF (LSURF_BUDGET) THEN
00167   ALLOCATE(XAVG_RN           (KLU))
00168   ALLOCATE(XAVG_H            (KLU))
00169   ALLOCATE(XAVG_LE           (KLU))
00170   ALLOCATE(XAVG_LEI          (KLU))
00171   ALLOCATE(XAVG_GFLUX        (KLU))
00172   ALLOCATE(XAVG_SWD          (KLU))
00173   ALLOCATE(XAVG_SWU          (KLU))
00174   ALLOCATE(XAVG_SWBD         (KLU,KSW))
00175   ALLOCATE(XAVG_SWBU         (KLU,KSW))
00176   ALLOCATE(XAVG_LWD          (KLU))
00177   ALLOCATE(XAVG_LWU          (KLU))
00178   ALLOCATE(XAVG_FMU          (KLU))
00179   ALLOCATE(XAVG_FMV          (KLU))
00180   !
00181   XAVG_RN      = XUNDEF
00182   XAVG_H       = XUNDEF
00183   XAVG_LE      = XUNDEF
00184   XAVG_LEI     = XUNDEF
00185   XAVG_GFLUX   = XUNDEF
00186   XAVG_SWD     = XUNDEF
00187   XAVG_SWU     = XUNDEF
00188   XAVG_SWBD    = XUNDEF
00189   XAVG_SWBU    = XUNDEF
00190   XAVG_LWD     = XUNDEF
00191   XAVG_LWU     = XUNDEF
00192   XAVG_FMU     = XUNDEF
00193   XAVG_FMV     = XUNDEF
00194   !
00195   ALLOCATE(XRN       (KLU,NPATCH))
00196   ALLOCATE(XH        (KLU,NPATCH))
00197   ALLOCATE(XGFLUX    (KLU,NPATCH))
00198   ALLOCATE(XLEI      (KLU,NPATCH))
00199   ALLOCATE(XSWD      (KLU,NPATCH))
00200   ALLOCATE(XSWU      (KLU,NPATCH))
00201   ALLOCATE(XSWBD     (KLU,KSW,NPATCH))
00202   ALLOCATE(XSWBU     (KLU,KSW,NPATCH))
00203   ALLOCATE(XLWD      (KLU,NPATCH))
00204   ALLOCATE(XLWU      (KLU,NPATCH))
00205   ALLOCATE(XFMU      (KLU,NPATCH))
00206   ALLOCATE(XFMV      (KLU,NPATCH))
00207   !
00208   XRN      = XUNDEF
00209   XH       = XUNDEF
00210   XGFLUX   = XUNDEF
00211   XLEI     = XUNDEF
00212   XSWD     = XUNDEF
00213   XSWU     = XUNDEF
00214   XSWBD    = XUNDEF
00215   XSWBU    = XUNDEF
00216   XLWD     = XUNDEF
00217   XLWU     = XUNDEF
00218   XFMU     = XUNDEF
00219   XFMV     = XUNDEF
00220   !
00221 ELSE
00222   ALLOCATE(XAVG_RN           (0))
00223   ALLOCATE(XAVG_H            (0))
00224   ALLOCATE(XAVG_LE           (0))
00225   ALLOCATE(XAVG_LEI          (0))
00226   ALLOCATE(XAVG_GFLUX        (0))
00227   ALLOCATE(XAVG_SWD          (0))
00228   ALLOCATE(XAVG_SWU          (0))
00229   ALLOCATE(XAVG_SWBD         (0,0))
00230   ALLOCATE(XAVG_SWBU         (0,0))
00231   ALLOCATE(XAVG_LWD          (0))
00232   ALLOCATE(XAVG_LWU          (0))
00233   ALLOCATE(XAVG_FMU          (0))
00234   ALLOCATE(XAVG_FMV          (0))
00235 !
00236   ALLOCATE(XRN       (0,0))
00237   ALLOCATE(XH        (0,0))
00238   ALLOCATE(XGFLUX    (0,0))
00239   ALLOCATE(XLEI      (0,0))
00240   ALLOCATE(XSWD      (0,0))
00241   ALLOCATE(XSWU      (0,0))
00242   ALLOCATE(XSWBD     (0,0,0))
00243   ALLOCATE(XSWBU     (0,0,0))
00244   ALLOCATE(XLWD      (0,0))
00245   ALLOCATE(XLWU      (0,0))
00246   ALLOCATE(XFMU      (0,0))
00247   ALLOCATE(XFMV      (0,0))
00248 END IF
00249 !
00250 !* detailed surface energy budget
00251 !
00252 IF (LSURF_EVAP_BUDGET) THEN
00253   ALLOCATE(XAVG_LEG       (KLU))
00254   ALLOCATE(XAVG_LEGI      (KLU))
00255   ALLOCATE(XAVG_LEV       (KLU))
00256   ALLOCATE(XAVG_LES       (KLU))
00257   ALLOCATE(XAVG_LESL      (KLU))
00258   ALLOCATE(XAVG_LER       (KLU))
00259   ALLOCATE(XAVG_LETR      (KLU))
00260   ALLOCATE(XAVG_EVAP      (KLU))
00261   ALLOCATE(XAVG_DRAIN     (KLU))
00262   ALLOCATE(XAVG_RUNOFF    (KLU))
00263   ALLOCATE(XAVG_HORT      (KLU))
00264   ALLOCATE(XAVG_DRIP      (KLU))
00265   ALLOCATE(XAVG_RRVEG     (KLU))
00266   ALLOCATE(XAVG_MELT      (KLU))
00267   ALLOCATE(XAVG_IRRIG_FLUX(KLU))
00268   ALLOCATE(XAVG_GPP       (KLU))
00269   ALLOCATE(XAVG_RESP_AUTO (KLU))
00270   ALLOCATE(XAVG_RESP_ECO  (KLU))   
00271   !
00272   XAVG_LEG        = XUNDEF
00273   XAVG_LEGI       = XUNDEF
00274   XAVG_LEV        = XUNDEF
00275   XAVG_LES        = XUNDEF
00276   XAVG_LESL       = XUNDEF
00277   XAVG_LER        = XUNDEF
00278   XAVG_LETR       = XUNDEF
00279   XAVG_EVAP       = XUNDEF
00280   XAVG_DRAIN      = XUNDEF
00281   XAVG_RUNOFF     = XUNDEF
00282   XAVG_HORT       = XUNDEF
00283   XAVG_DRIP       = XUNDEF
00284   XAVG_RRVEG      = XUNDEF
00285   XAVG_MELT       = XUNDEF
00286   XAVG_IRRIG_FLUX = XUNDEF
00287   XAVG_GPP        = XUNDEF
00288   XAVG_RESP_AUTO  = XUNDEF
00289   XAVG_RESP_ECO   = XUNDEF  
00290   !
00291   ALLOCATE(XAVG_IFLOOD   (KLU))
00292   ALLOCATE(XAVG_PFLOOD   (KLU))
00293   ALLOCATE(XAVG_LE_FLOOD (KLU))
00294   ALLOCATE(XAVG_LEI_FLOOD(KLU))
00295   XAVG_IFLOOD    = XUNDEF
00296   XAVG_PFLOOD    = XUNDEF
00297   XAVG_LE_FLOOD  = XUNDEF
00298   XAVG_LEI_FLOOD = XUNDEF
00299   !
00300   ALLOCATE(XLEG       (KLU,NPATCH))
00301   ALLOCATE(XLEGI      (KLU,NPATCH))
00302   ALLOCATE(XLEV       (KLU,NPATCH))
00303   ALLOCATE(XLES       (KLU,NPATCH))
00304   ALLOCATE(XLESL      (KLU,NPATCH))
00305   ALLOCATE(XLER       (KLU,NPATCH))
00306   ALLOCATE(XLETR      (KLU,NPATCH))
00307   ALLOCATE(XEVAP      (KLU,NPATCH))
00308   ALLOCATE(XDRAIN     (KLU,NPATCH))
00309   ALLOCATE(XRUNOFF    (KLU,NPATCH))
00310   ALLOCATE(XHORT      (KLU,NPATCH))
00311   ALLOCATE(XDRIP      (KLU,NPATCH))
00312   ALLOCATE(XRRVEG     (KLU,NPATCH))
00313   ALLOCATE(XMELT      (KLU,NPATCH))
00314   ALLOCATE(XIRRIG_FLUX(KLU,NPATCH))
00315   ALLOCATE(XGPP       (KLU,NPATCH))
00316   ALLOCATE(XRESP_AUTO (KLU,NPATCH))
00317   ALLOCATE(XRESP_ECO  (KLU,NPATCH))
00318   !
00319   XLEG           = XUNDEF 
00320   XLEGI          = XUNDEF
00321   XLEV           = XUNDEF
00322   XLES           = XUNDEF
00323   XLESL          = XUNDEF
00324   XLER           = XUNDEF
00325   XLETR          = XUNDEF
00326   XEVAP          = XUNDEF
00327   XDRAIN         = XUNDEF
00328   XRUNOFF        = XUNDEF
00329   XHORT          = XUNDEF
00330   XDRIP          = XUNDEF
00331   XRRVEG         = XUNDEF
00332   XMELT          = XUNDEF
00333   XIRRIG_FLUX    = XUNDEF
00334   XGPP           = XUNDEF
00335   XRESP_AUTO     = XUNDEF
00336   XRESP_ECO      = XUNDEF  
00337   !
00338   ALLOCATE(XIFLOOD (KLU,NPATCH))
00339   ALLOCATE(XPFLOOD (KLU,NPATCH))
00340   ALLOCATE(XLE_FLOOD(KLU,NPATCH))
00341   ALLOCATE(XLEI_FLOOD(KLU,NPATCH))
00342   XIFLOOD        = XUNDEF
00343   XPFLOOD        = XUNDEF
00344   XLE_FLOOD      = XUNDEF
00345   XLEI_FLOOD     = XUNDEF
00346   !
00347   IF(LWATER_BUDGET)THEN
00348     !      
00349     ALLOCATE(XRAINFALL  (KLU))
00350     ALLOCATE(XSNOWFALL  (KLU))
00351     ALLOCATE(XAVG_DWG   (KLU))
00352     ALLOCATE(XAVG_DWGI  (KLU))
00353     ALLOCATE(XAVG_DWR   (KLU))
00354     ALLOCATE(XAVG_DSWE  (KLU))
00355     ALLOCATE(XAVG_WATBUD(KLU))
00356     XRAINFALL   = XUNDEF
00357     XSNOWFALL   = XUNDEF
00358     XAVG_DWG    = XUNDEF
00359     XAVG_DWGI   = XUNDEF
00360     XAVG_DWR    = XUNDEF
00361     XAVG_DSWE   = XUNDEF
00362     XAVG_WATBUD = XUNDEF
00363     !
00364     ALLOCATE(XDWG   (KLU,NPATCH))
00365     ALLOCATE(XDWGI  (KLU,NPATCH))
00366     ALLOCATE(XDWR   (KLU,NPATCH))
00367     ALLOCATE(XDSWE  (KLU,NPATCH))
00368     ALLOCATE(XWATBUD(KLU,NPATCH))
00369     XDWG    = XUNDEF
00370     XDWGI   = XUNDEF
00371     XDWR    = XUNDEF
00372     XDSWE   = XUNDEF
00373     XWATBUD = XUNDEF
00374     ! 
00375   ELSE
00376     !
00377     ALLOCATE(XRAINFALL  (0))
00378     ALLOCATE(XSNOWFALL  (0))
00379     ALLOCATE(XAVG_DWG   (0))
00380     ALLOCATE(XAVG_DWGI  (0))
00381     ALLOCATE(XAVG_DWR   (0))
00382     ALLOCATE(XAVG_DSWE  (0))
00383     ALLOCATE(XAVG_WATBUD(0))
00384     !
00385     ALLOCATE(XDWG   (0,0))
00386     ALLOCATE(XDWGI  (0,0))
00387     ALLOCATE(XDWR   (0,0))
00388     ALLOCATE(XDSWE  (0,0))
00389     ALLOCATE(XWATBUD(0,0))
00390     !
00391   ENDIF
00392   !
00393 ELSE
00394   ALLOCATE(XAVG_LEG       (0))
00395   ALLOCATE(XAVG_LEGI      (0))
00396   ALLOCATE(XAVG_LEV       (0))
00397   ALLOCATE(XAVG_LES       (0))
00398   ALLOCATE(XAVG_LESL      (0))
00399   ALLOCATE(XAVG_LER       (0))
00400   ALLOCATE(XAVG_LETR      (0))
00401   ALLOCATE(XAVG_EVAP      (0))
00402   ALLOCATE(XAVG_DRAIN     (0))
00403   ALLOCATE(XAVG_RUNOFF    (0))
00404   ALLOCATE(XAVG_HORT      (0))
00405   ALLOCATE(XAVG_DRIP      (0))
00406   ALLOCATE(XAVG_RRVEG     (0))
00407   ALLOCATE(XAVG_MELT      (0))
00408   ALLOCATE(XAVG_IRRIG_FLUX(0))
00409   ALLOCATE(XAVG_GPP       (0))
00410   ALLOCATE(XAVG_RESP_AUTO (0))
00411   ALLOCATE(XAVG_RESP_ECO  (0))
00412   ALLOCATE(XAVG_IFLOOD    (0))
00413   ALLOCATE(XAVG_PFLOOD    (0))
00414   ALLOCATE(XAVG_LE_FLOOD  (0))
00415   ALLOCATE(XAVG_LEI_FLOOD (0))
00416 !
00417   ALLOCATE(XLEG       (0,0))
00418   ALLOCATE(XLEGI      (0,0))
00419   ALLOCATE(XLEV       (0,0))
00420   ALLOCATE(XLES       (0,0))
00421   ALLOCATE(XLESL      (0,0))
00422   ALLOCATE(XLER       (0,0))
00423   ALLOCATE(XLETR      (0,0))
00424   ALLOCATE(XEVAP      (0,0))
00425   ALLOCATE(XDRAIN     (0,0))
00426   ALLOCATE(XRUNOFF    (0,0))
00427   ALLOCATE(XHORT      (0,0))
00428   ALLOCATE(XDRIP      (0,0))
00429   ALLOCATE(XRRVEG     (0,0))
00430   ALLOCATE(XMELT      (0,0))
00431   ALLOCATE(XIRRIG_FLUX(0,0))
00432   ALLOCATE(XGPP       (0,0))
00433   ALLOCATE(XRESP_AUTO (0,0))
00434   ALLOCATE(XRESP_ECO  (0,0))  
00435   ALLOCATE(XIFLOOD    (0,0))
00436   ALLOCATE(XPFLOOD    (0,0))
00437   ALLOCATE(XLE_FLOOD  (0,0))
00438   ALLOCATE(XLEI_FLOOD (0,0))
00439   !
00440   ALLOCATE(XRAINFALL  (0))
00441   ALLOCATE(XSNOWFALL  (0))
00442   ALLOCATE(XAVG_DWG   (0))
00443   ALLOCATE(XAVG_DWGI  (0))
00444   ALLOCATE(XAVG_DWR   (0))
00445   ALLOCATE(XAVG_DSWE  (0))
00446   ALLOCATE(XAVG_WATBUD(0))
00447   !
00448   ALLOCATE(XDWG   (0,0))
00449   ALLOCATE(XDWGI  (0,0))
00450   ALLOCATE(XDWR   (0,0))
00451   ALLOCATE(XDSWE  (0,0))
00452   ALLOCATE(XWATBUD(0,0))
00453   ! 
00454 END IF
00455 !
00456 !* surface cumulated energy budget
00457 !
00458 IF (LSURF_BUDGETC) THEN
00459   ALLOCATE(XAVG_RNC        (KLU))
00460   ALLOCATE(XAVG_HC         (KLU))
00461   ALLOCATE(XAVG_LEC        (KLU))
00462   ALLOCATE(XAVG_LEIC       (KLU))
00463   ALLOCATE(XAVG_GFLUXC     (KLU))
00464   ALLOCATE(XAVG_LEGC       (KLU))
00465   ALLOCATE(XAVG_LEGIC      (KLU))
00466   ALLOCATE(XAVG_LEVC       (KLU))
00467   ALLOCATE(XAVG_LESC       (KLU))
00468   ALLOCATE(XAVG_LESLC      (KLU))
00469   ALLOCATE(XAVG_LERC       (KLU))
00470   ALLOCATE(XAVG_LETRC      (KLU))
00471   ALLOCATE(XAVG_EVAPC      (KLU))
00472   ALLOCATE(XAVG_DRAINC     (KLU))
00473   ALLOCATE(XAVG_RUNOFFC    (KLU))
00474   ALLOCATE(XAVG_HORTC      (KLU))
00475   ALLOCATE(XAVG_DRIPC      (KLU))
00476   ALLOCATE(XAVG_RRVEGC     (KLU))
00477   ALLOCATE(XAVG_MELTC      (KLU))
00478   ALLOCATE(XAVG_IRRIG_FLUXC(KLU))
00479   ALLOCATE(XAVG_GPPC       (KLU))
00480   ALLOCATE(XAVG_RESPC_AUTO (KLU))
00481   ALLOCATE(XAVG_RESPC_ECO  (KLU))
00482   ALLOCATE(XAVG_IFLOODC    (KLU))
00483   ALLOCATE(XAVG_PFLOODC    (KLU))
00484   ALLOCATE(XAVG_LE_FLOODC  (KLU))
00485   ALLOCATE(XAVG_LEI_FLOODC (KLU))  
00486   !
00487   ALLOCATE(XRNC        (KLU,NPATCH))
00488   ALLOCATE(XHC         (KLU,NPATCH))
00489   ALLOCATE(XLEC        (KLU,NPATCH))
00490   ALLOCATE(XLEIC       (KLU,NPATCH))
00491   ALLOCATE(XGFLUXC     (KLU,NPATCH))
00492   ALLOCATE(XLEGC       (KLU,NPATCH))
00493   ALLOCATE(XLEGIC      (KLU,NPATCH))
00494   ALLOCATE(XLEVC       (KLU,NPATCH))
00495   ALLOCATE(XLESC       (KLU,NPATCH))
00496   ALLOCATE(XLESLC      (KLU,NPATCH))
00497   ALLOCATE(XLERC       (KLU,NPATCH))
00498   ALLOCATE(XLETRC      (KLU,NPATCH))
00499   ALLOCATE(XEVAPC      (KLU,NPATCH))
00500   ALLOCATE(XDRAINC     (KLU,NPATCH))
00501   ALLOCATE(XRUNOFFC    (KLU,NPATCH))
00502   ALLOCATE(XHORTC      (KLU,NPATCH))
00503   ALLOCATE(XDRIPC      (KLU,NPATCH))
00504   ALLOCATE(XRRVEGC     (KLU,NPATCH))
00505   ALLOCATE(XMELTC      (KLU,NPATCH))
00506   ALLOCATE(XIRRIG_FLUXC(KLU,NPATCH))
00507   ALLOCATE(XGPPC       (KLU,NPATCH))
00508   ALLOCATE(XRESPC_AUTO (KLU,NPATCH))
00509   ALLOCATE(XRESPC_ECO  (KLU,NPATCH))
00510   ALLOCATE(XIFLOODC    (KLU,NPATCH))
00511   ALLOCATE(XPFLOODC    (KLU,NPATCH))
00512   ALLOCATE(XLE_FLOODC  (KLU,NPATCH))
00513   ALLOCATE(XLEI_FLOODC (KLU,NPATCH))
00514   !
00515   ALLOCATE(XAVG_SWDC        (KLU))
00516   ALLOCATE(XAVG_SWUC        (KLU))
00517   ALLOCATE(XAVG_LWDC        (KLU))
00518   ALLOCATE(XAVG_LWUC        (KLU))
00519   ALLOCATE(XAVG_FMUC        (KLU))
00520   ALLOCATE(XAVG_FMVC        (KLU))
00521   ALLOCATE(XSWDC     (KLU,NPATCH))
00522   ALLOCATE(XSWUC     (KLU,NPATCH))
00523   ALLOCATE(XLWDC     (KLU,NPATCH))
00524   ALLOCATE(XLWUC     (KLU,NPATCH))
00525   ALLOCATE(XFMUC     (KLU,NPATCH))
00526   ALLOCATE(XFMVC     (KLU,NPATCH))
00527   !
00528   IF(LGLACIER)THEN
00529     ALLOCATE(XAVG_ICEFLUXC(KLU))
00530     ALLOCATE(XICEFLUXC(KLU,NPATCH))
00531   ENDIF
00532   !
00533   IF(LWATER_BUDGET)THEN
00534     !      
00535     ALLOCATE(XRAINFALLC  (KLU))
00536     ALLOCATE(XSNOWFALLC  (KLU))
00537     ALLOCATE(XAVG_DWGC   (KLU))
00538     ALLOCATE(XAVG_DWGIC  (KLU))
00539     ALLOCATE(XAVG_DWRC   (KLU))
00540     ALLOCATE(XAVG_DSWEC  (KLU))
00541     ALLOCATE(XAVG_WATBUDC(KLU))
00542     !
00543     ALLOCATE(XDWGC   (KLU,NPATCH))
00544     ALLOCATE(XDWGIC  (KLU,NPATCH))
00545     ALLOCATE(XDWRC   (KLU,NPATCH))
00546     ALLOCATE(XDSWEC  (KLU,NPATCH))
00547     ALLOCATE(XWATBUDC(KLU,NPATCH))
00548     !
00549   ELSE
00550     !      
00551     ALLOCATE(XRAINFALLC  (0))
00552     ALLOCATE(XSNOWFALLC  (0))
00553     ALLOCATE(XAVG_DWGC   (0))
00554     ALLOCATE(XAVG_DWGIC  (0))
00555     ALLOCATE(XAVG_DWRC   (0))
00556     ALLOCATE(XAVG_DSWEC  (0))
00557     ALLOCATE(XAVG_WATBUDC(0))
00558     !
00559     ALLOCATE(XDWGC   (0,0))
00560     ALLOCATE(XDWGIC  (0,0))
00561     ALLOCATE(XDWRC   (0,0))
00562     ALLOCATE(XDSWEC  (0,0))
00563     ALLOCATE(XWATBUDC(0,0))
00564     !          
00565   ENDIF
00566   !
00567   IF (.NOT.LREAD_BUDGETC) THEN
00568       XAVG_RNC         = 0.0
00569       XAVG_HC          = 0.0
00570       XAVG_LEC         = 0.0
00571       XAVG_LEIC        = 0.0
00572       XAVG_GFLUXC      = 0.0
00573       XAVG_LEGC        = 0.0
00574       XAVG_LEGIC       = 0.0
00575       XAVG_LEVC        = 0.0
00576       XAVG_LESC        = 0.0
00577       XAVG_LESLC       = 0.0
00578       XAVG_LERC        = 0.0
00579       XAVG_LETRC       = 0.0
00580       XAVG_EVAPC       = 0.0
00581       XAVG_DRAINC      = 0.0
00582       XAVG_RUNOFFC     = 0.0
00583       XAVG_HORTC       = 0.0
00584       XAVG_DRIPC       = 0.0
00585       XAVG_RRVEGC      = 0.0
00586       XAVG_MELTC       = 0.0
00587       XAVG_IRRIG_FLUXC = 0.0
00588       XAVG_GPPC        = 0.0
00589       XAVG_RESPC_AUTO  = 0.0
00590       XAVG_RESPC_ECO   = 0.0  
00591       XAVG_IFLOODC     = 0.0
00592       XAVG_PFLOODC     = 0.0
00593       XAVG_LE_FLOODC   = 0.0
00594       XAVG_LEI_FLOODC  = 0.0      
00595       !
00596       XRNC         = 0.0
00597       XHC          = 0.0
00598       XLEC         = 0.0
00599       XLEIC        = 0.0
00600       XGFLUXC      = 0.0
00601       XLEGC        = 0.0 
00602       XLEGIC       = 0.0
00603       XLEVC        = 0.0
00604       XLESC        = 0.0
00605       XLESLC       = 0.0
00606       XLERC        = 0.0
00607       XLETRC       = 0.0
00608       XEVAPC       = 0.0
00609       XDRAINC      = 0.0
00610       XRUNOFFC     = 0.0
00611       XHORTC       = 0.0
00612       XDRIPC       = 0.0
00613       XRRVEGC      = 0.0
00614       XMELTC       = 0.0
00615       XIRRIG_FLUXC = 0.0
00616       XGPPC        = 0.0
00617       XRESPC_AUTO  = 0.0
00618       XRESPC_ECO   = 0.0    
00619       XIFLOODC     = 0.0
00620       XPFLOODC     = 0.0
00621       XLE_FLOODC   = 0.0
00622       XLEI_FLOODC  = 0.0
00623       !
00624       XAVG_SWDC = 0.0
00625       XAVG_SWUC = 0.0
00626       XAVG_LWDC = 0.0
00627       XAVG_LWUC = 0.0
00628       XAVG_FMUC = 0.0
00629       XAVG_FMVC = 0.0
00630       XSWDC     = 0.0
00631       XSWUC     = 0.0
00632       XLWDC     = 0.0
00633       XLWUC     = 0.0
00634       XFMUC     = 0.0
00635       XFMVC     = 0.0
00636       !
00637       IF(LGLACIER)THEN
00638          XAVG_ICEFLUXC = 0.0
00639          XICEFLUXC     = 0.0
00640       ENDIF
00641       !
00642       IF(LWATER_BUDGET)THEN
00643         !      
00644         XRAINFALLC   = 0.0
00645         XSNOWFALLC   = 0.0
00646         XAVG_DWGC    = 0.0
00647         XAVG_DWGIC   = 0.0
00648         XAVG_DWRC    = 0.0
00649         XAVG_DSWEC   = 0.0
00650         XAVG_WATBUDC = 0.0
00651         !
00652         XDWGC    = 0.0
00653         XDWGIC   = 0.0
00654         XDWRC    = 0.0
00655         XDSWEC   = 0.0
00656         XWATBUDC = 0.0
00657         !
00658       ENDIF
00659       !     
00660   ELSEIF (LREAD_BUDGETC.AND.LRESET_BUDGETC) THEN
00661       !
00662       XAVG_RNC         = 0.0
00663       XAVG_HC          = 0.0
00664       XAVG_LEC         = 0.0
00665       XAVG_LEIC        = 0.0
00666       XAVG_GFLUXC      = 0.0
00667       XAVG_LEGC        = 0.0
00668       XAVG_LEGIC       = 0.0
00669       XAVG_LEVC        = 0.0
00670       XAVG_LESC        = 0.0
00671       XAVG_LESLC       = 0.0
00672       XAVG_LERC        = 0.0
00673       XAVG_LETRC       = 0.0
00674       XAVG_EVAPC       = 0.0
00675       XAVG_DRAINC      = 0.0
00676       XAVG_RUNOFFC     = 0.0
00677       XAVG_HORTC       = 0.0
00678       XAVG_DRIPC       = 0.0
00679       XAVG_RRVEGC      = 0.0
00680       XAVG_MELTC       = 0.0
00681       XAVG_IRRIG_FLUXC = 0.0
00682       XAVG_GPPC        = 0.0
00683       XAVG_RESPC_AUTO  = 0.0
00684       XAVG_RESPC_ECO   = 0.0    
00685       XAVG_IFLOODC     = 0.0
00686       XAVG_PFLOODC     = 0.0
00687       XAVG_LE_FLOODC   = 0.0
00688       XAVG_LEI_FLOODC  = 0.0      
00689       !
00690       XRNC         = 0.0
00691       XHC          = 0.0
00692       XLEC         = 0.0
00693       XLEIC        = 0.0
00694       XGFLUXC      = 0.0
00695       XLEGC        = 0.0 
00696       XLEGIC       = 0.0
00697       XLEVC        = 0.0
00698       XLESC        = 0.0
00699       XLESLC       = 0.0
00700       XLERC        = 0.0
00701       XLETRC       = 0.0
00702       XEVAPC       = 0.0
00703       XDRAINC      = 0.0
00704       XRUNOFFC     = 0.0
00705       XHORTC       = 0.0
00706       XDRIPC       = 0.0
00707       XRRVEGC      = 0.0
00708       XMELTC       = 0.0
00709       XIRRIG_FLUXC = 0.0
00710       XGPPC        = 0.0
00711       XRESPC_AUTO  = 0.0
00712       XRESPC_ECO   = 0.0   
00713       XIFLOODC     = 0.0
00714       XPFLOODC     = 0.0
00715       XLE_FLOODC   = 0.0
00716       XLEI_FLOODC  = 0.0
00717       !
00718       XAVG_SWDC = 0.0
00719       XAVG_SWUC = 0.0
00720       XAVG_LWDC = 0.0
00721       XAVG_LWUC = 0.0
00722       XAVG_FMUC = 0.0
00723       XAVG_FMVC = 0.0
00724       XSWDC     = 0.0
00725       XSWUC     = 0.0
00726       XLWDC     = 0.0
00727       XLWUC     = 0.0
00728       XFMUC     = 0.0
00729       XFMVC     = 0.0      
00730       !
00731       IF(LGLACIER)THEN
00732          XAVG_ICEFLUXC = 0.0
00733          XICEFLUXC     = 0.0
00734       ENDIF
00735       !
00736       IF(LWATER_BUDGET)THEN
00737         !      
00738         XRAINFALLC   = 0.0
00739         XSNOWFALLC   = 0.0
00740         XAVG_DWGC    = 0.0
00741         XAVG_DWGIC   = 0.0
00742         XAVG_DWRC    = 0.0
00743         XAVG_DSWEC   = 0.0
00744         XAVG_WATBUDC = 0.0
00745         !
00746         XDWGC    = 0.0
00747         XDWGIC   = 0.0
00748         XDWRC    = 0.0
00749         XDSWEC   = 0.0
00750         XWATBUDC = 0.0
00751         !
00752       ENDIF
00753       !
00754   ELSE
00755       YREC='RNC_ISBA'
00756       CALL READ_SURF(HPROGRAM,YREC,XAVG_RNC    ,IRESP)
00757       YREC='HC_ISBA'
00758       CALL READ_SURF(HPROGRAM,YREC,XAVG_HC     ,IRESP)
00759       YREC='LEC_ISBA'
00760       CALL READ_SURF(HPROGRAM,YREC,XAVG_LEC    ,IRESP)
00761       YREC='LEIC_ISBA'
00762       CALL READ_SURF(HPROGRAM,YREC,XAVG_LEIC   ,IRESP)      
00763       YREC='GFLUXC_ISBA'
00764       CALL READ_SURF(HPROGRAM,YREC,XAVG_GFLUXC ,IRESP)
00765       YREC='LEGC_ISBA'
00766       CALL READ_SURF(HPROGRAM,YREC,XAVG_LEGC   ,IRESP)
00767       YREC='LEGIC_ISBA'
00768       CALL READ_SURF(HPROGRAM,YREC,XAVG_LEGIC  ,IRESP)
00769       YREC='LEVC_ISBA'
00770       CALL READ_SURF(HPROGRAM,YREC,XAVG_LEVC   ,IRESP)
00771       YREC='LESC_ISBA'
00772       CALL READ_SURF(HPROGRAM,YREC,XAVG_LESC   ,IRESP)
00773       IF(TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO')THEN  
00774         YREC='LESLC_ISBA'
00775         CALL READ_SURF(HPROGRAM,YREC,XAVG_LESLC  ,IRESP)      
00776       ELSE
00777         XAVG_LESLC = 0.0
00778       ENDIF
00779       YREC='LERC_ISBA'
00780       CALL READ_SURF(HPROGRAM,YREC,XAVG_LERC   ,IRESP)
00781       YREC='LETRC_ISBA'
00782       CALL READ_SURF(HPROGRAM,YREC,XAVG_LETRC  ,IRESP)
00783       YREC='EVAPC_ISBA'
00784       CALL READ_SURF(HPROGRAM,YREC,XAVG_EVAPC  ,IRESP)
00785       YREC='DRAINC_ISBA'
00786       CALL READ_SURF(HPROGRAM,YREC,XAVG_DRAINC ,IRESP)
00787       YREC='RUNOFFC_ISBA'
00788       CALL READ_SURF(HPROGRAM,YREC,XAVG_RUNOFFC,IRESP)
00789       YREC='DRIVEGC_ISBA'
00790       CALL READ_SURF(HPROGRAM,YREC,XAVG_DRIPC  ,IRESP)
00791       YREC='RRVEGC_ISBA'
00792       CALL READ_SURF(HPROGRAM,YREC,XAVG_RRVEGC ,IRESP)
00793       YREC='SNOMLTC_ISBA'
00794       CALL READ_SURF(HPROGRAM,YREC,XAVG_MELTC,IRESP)
00795       IF (LAGRIP) THEN
00796          YREC='IRRIGC_ISBA'
00797          CALL READ_SURF(HPROGRAM,YREC,XAVG_IRRIG_FLUXC,IRESP)    
00798       ELSE
00799          XAVG_IRRIG_FLUXC = 0.0
00800       ENDIF
00801       !
00802       IF(CPHOTO/='NON')THEN
00803         YREC='GPPC_ISBA'
00804         CALL READ_SURF(HPROGRAM,YREC,XAVG_GPPC,IRESP)
00805         YREC='RC_AUTO_ISBA'
00806         CALL READ_SURF(HPROGRAM,YREC,XAVG_RESPC_AUTO,IRESP)
00807         YREC='RC_ECO_ISBA'
00808         CALL READ_SURF(HPROGRAM,YREC,XAVG_RESPC_ECO,IRESP)        
00809       ENDIF
00810       !
00811       IF(CHORT=='SGH'.OR.CISBA=='DIF')THEN
00812         YREC='HORTONC_ISBA'
00813         CALL READ_SURF(HPROGRAM,YREC,XAVG_HORTC,IRESP)
00814       ELSE
00815         XAVG_HORTC = 0.0
00816       ENDIF
00817       !
00818       IF(LFLOOD)THEN
00819         YREC='IFLOODC_ISBA'
00820         CALL READ_SURF(HPROGRAM,YREC,XAVG_IFLOODC,IRESP)
00821         YREC='PFLOODC_ISBA'
00822         CALL READ_SURF(HPROGRAM,YREC,XAVG_PFLOODC,IRESP)
00823         YREC='LEFC_ISBA'
00824         CALL READ_SURF(HPROGRAM,YREC,XAVG_LE_FLOODC,IRESP)
00825         YREC='LEIFC_ISBA'
00826         CALL READ_SURF(HPROGRAM,YREC,XAVG_LEI_FLOODC,IRESP)
00827       ELSE
00828         XAVG_IFLOODC   = 0.0
00829         XAVG_PFLOODC   = 0.0
00830         XAVG_LE_FLOODC = 0.0
00831         XAVG_LEI_FLOODC = 0.0
00832       ENDIF
00833 !      
00834       YREC='SWDC_ISBA'
00835       CALL READ_SURF(HPROGRAM,YREC,XAVG_SWDC,IRESP)
00836       YREC='SWUC_ISBA'
00837       CALL READ_SURF(HPROGRAM,YREC,XAVG_SWUC,IRESP)
00838       YREC='LWDC_ISBA'
00839       CALL READ_SURF(HPROGRAM,YREC,XAVG_LWDC,IRESP)
00840       YREC='LWUC_ISBA'
00841       CALL READ_SURF(HPROGRAM,YREC,XAVG_LWUC,IRESP)
00842       YREC='FMUC_ISBA'
00843       CALL READ_SURF(HPROGRAM,YREC,XAVG_FMUC,IRESP)
00844       YREC='FMVC_ISBA'
00845       CALL READ_SURF(HPROGRAM,YREC,XAVG_FMVC,IRESP)      
00846       !
00847       IF(LGLACIER)THEN
00848          YREC='ICE_FC_ISBA'         
00849          CALL READ_SURF(HPROGRAM,YREC,XAVG_ICEFLUXC,IRESP)      
00850       ENDIF
00851       !  
00852       IF(LWATER_BUDGET)THEN 
00853         YREC='RAINFC_ISBA'
00854         CALL READ_SURF(HPROGRAM,YREC,XRAINFALLC,IRESP)
00855         YREC='SNOWFC_ISBA'
00856         CALL READ_SURF(HPROGRAM,YREC,XSNOWFALLC,IRESP)
00857         YREC='DWGC_ISBA'
00858         CALL READ_SURF(HPROGRAM,YREC,XAVG_DWGC,IRESP)
00859         YREC='DWGIC_ISBA'
00860         CALL READ_SURF(HPROGRAM,YREC,XAVG_DWGIC,IRESP)
00861         YREC='DWRC_ISBA'
00862         CALL READ_SURF(HPROGRAM,YREC,XAVG_DWRC,IRESP)
00863         YREC='DSWEC_ISBA'
00864         CALL READ_SURF(HPROGRAM,YREC,XAVG_DSWEC,IRESP)
00865         YREC='WATBUDC_ISBA'
00866         CALL READ_SURF(HPROGRAM,YREC,XAVG_WATBUDC,IRESP)
00867       ENDIF
00868       !
00869       IF(LPATCH_BUDGET)THEN
00870         !
00871         CALL READ_SURF(HPROGRAM,'VERSION',IVERSION,IRESP)
00872         CALL READ_SURF(HPROGRAM,'BUG ',IBUG,IRESP)
00873         YREC2=''
00874         IF (IVERSION<7 .OR. IVERSION==7 .AND. IBUG<3) YREC2='ATCH'
00875         YREC='RNC_P'
00876         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XRNC    ,IRESP)
00877         YREC='HC_P'
00878         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XHC     ,IRESP)
00879         YREC='LEC_P'
00880         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEC    ,IRESP)
00881         YREC='LEIC_P'
00882         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEIC   ,IRESP)        
00883         YREC='GFLUXC_P'
00884         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XGFLUXC ,IRESP)
00885         YREC='LEGC_P'
00886         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEGC   ,IRESP)
00887         YREC='LEGIC_P'
00888         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEGIC  ,IRESP)
00889         YREC='LEVC_P'
00890         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEVC   ,IRESP)
00891         YREC='LESC_P'
00892         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLESC   ,IRESP)
00893         IF(TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO')THEN  
00894           YREC='LESLC_P'
00895           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLESLC,IRESP)        
00896         ELSE
00897           XLESLC = 0.0
00898         ENDIF
00899         YREC='LERC_P'
00900         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLERC   ,IRESP)
00901         YREC='LETRC_P'
00902         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLETRC  ,IRESP)
00903         YREC='EVAPC_P'
00904         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XEVAPC  ,IRESP)
00905         YREC='DRAINC_P'
00906         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDRAINC ,IRESP)
00907         YREC='RUNOFFC_P'
00908         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XRUNOFFC,IRESP)
00909         YREC='DRIVEGC_P'
00910         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDRIPC,IRESP)
00911         YREC='RRVEGC_P'
00912         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XRRVEGC,IRESP)
00913         YREC='SNOMLTC_P'
00914         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XMELTC,IRESP)
00915         IF (LAGRIP) THEN
00916            YREC='IRRIGC_P'
00917            CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XIRRIG_FLUXC,IRESP)
00918         ELSE
00919            XIRRIG_FLUXC = 0.0
00920         ENDIF
00921         !
00922         IF(CPHOTO/='NON')THEN
00923           YREC='GPPC_P'
00924           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XGPPC,IRESP)
00925           YREC='RC_AUTO_P'
00926           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XRESPC_AUTO,IRESP)
00927           YREC='RC_ECO_P'
00928           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XRESPC_ECO,IRESP)  
00929         ELSE
00930           XGPPC      =0.0
00931           XRESPC_AUTO=0.0
00932           XRESPC_ECO =0.0
00933         ENDIF
00934         !
00935         YREC='SWDC_P'
00936         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XSWDC,IRESP)
00937         YREC='SWUC_P'
00938         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XSWUC,IRESP)
00939         YREC='LWDC_P'
00940         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLWDC,IRESP)
00941         YREC='LWUC_P'
00942         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLWUC,IRESP)
00943         YREC='FMUC_P'
00944         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XFMUC,IRESP)
00945         YREC='FMVC_P'
00946         CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XFMVC,IRESP)
00947         !
00948         IF(LGLACIER)THEN
00949            YREC='ICE_FC_P'         
00950            CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XICEFLUXC,IRESP)      
00951         ENDIF
00952         !
00953         IF(CHORT=='SGH'.OR.CISBA=='DIF')THEN
00954           YREC='HORTONC_P'
00955           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XHORTC    ,IRESP)
00956         ELSE
00957           XHORTC     = 0.0
00958         ENDIF
00959         !
00960         IF(LFLOOD)THEN
00961           YREC='IFLOODC_P'
00962           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XIFLOODC,IRESP)
00963           YREC='PFLOODC_P'
00964           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XPFLOODC,IRESP)
00965           YREC='LEFC_P'
00966           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLE_FLOODC,IRESP)
00967           YREC='LEIFC_P'
00968           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XLEI_FLOODC,IRESP)
00969         ELSE
00970           XIFLOODC       = 0.0
00971           XPFLOODC       = 0.0
00972           XLE_FLOODC     = 0.0
00973           XLEI_FLOODC    = 0.0
00974         ENDIF
00975         !  
00976         IF(LWATER_BUDGET)THEN 
00977           YREC='DWGC_P'
00978           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDWGC,IRESP)
00979           YREC='DWGIC_P'
00980           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDWGIC,IRESP)
00981           YREC='DWRC_P'
00982           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDWRC,IRESP)
00983           YREC='DSWEC_P'
00984           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XDSWEC,IRESP)
00985           YREC='WATBUDC_P'
00986           CALL READ_SURF(HPROGRAM,TRIM(YREC)//YREC2,XWATBUDC,IRESP)
00987         ENDIF
00988         !
00989       ELSE
00990         !
00991         XRNC         = 0.0
00992         XHC          = 0.0
00993         XLEC         = 0.0
00994         XLEIC        = 0.0
00995         XGFLUXC      = 0.0
00996         XLEGC        = 0.0 
00997         XLEGIC       = 0.0
00998         XLEVC        = 0.0
00999         XLESC        = 0.0
01000         XLESLC       = 0.0
01001         XLERC        = 0.0
01002         XLETRC       = 0.0
01003         XEVAPC       = 0.0
01004         XDRAINC      = 0.0
01005         XRUNOFFC     = 0.0
01006         XHORTC       = 0.0
01007         XDRIPC       = 0.0
01008         XRRVEGC      = 0.0
01009         XMELTC       = 0.0
01010         XIRRIG_FLUXC = 0.0
01011         XGPPC        = 0.0
01012         XRESPC_AUTO  = 0.0
01013         XRESPC_ECO   = 0.0   
01014         XIFLOODC     = 0.0
01015         XPFLOODC     = 0.0
01016         XLE_FLOODC   = 0.0
01017         XLEI_FLOODC  = 0.0
01018         !
01019         XSWDC     = 0.0
01020         XSWUC     = 0.0
01021         XLWDC     = 0.0
01022         XLWUC     = 0.0
01023         XFMUC     = 0.0
01024         XFMVC     = 0.0
01025         !
01026         IF(LGLACIER)THEN
01027            XICEFLUXC=0.0      
01028         ENDIF
01029         !   
01030         IF(LWATER_BUDGET)THEN
01031           XDWGC    = 0.0
01032           XDWGIC   = 0.0
01033           XDWRC    = 0.0
01034           XDSWEC   = 0.0
01035           XWATBUDC = 0.0
01036         ENDIF
01037         !   
01038       ENDIF
01039       !
01040   ENDIF
01041 ELSE
01042   ALLOCATE(XAVG_RNC        (0))
01043   ALLOCATE(XAVG_HC         (0))
01044   ALLOCATE(XAVG_LEC        (0))
01045   ALLOCATE(XAVG_LEIC       (0))
01046   ALLOCATE(XAVG_GFLUXC     (0))
01047   ALLOCATE(XAVG_LEGC       (0))
01048   ALLOCATE(XAVG_LEGIC      (0))
01049   ALLOCATE(XAVG_LEVC       (0))
01050   ALLOCATE(XAVG_LESC       (0))
01051   ALLOCATE(XAVG_LESLC      (0))
01052   ALLOCATE(XAVG_LERC       (0))
01053   ALLOCATE(XAVG_LETRC      (0))
01054   ALLOCATE(XAVG_EVAPC      (0))
01055   ALLOCATE(XAVG_DRAINC     (0))
01056   ALLOCATE(XAVG_RUNOFFC    (0))
01057   ALLOCATE(XAVG_HORTC      (0))
01058   ALLOCATE(XAVG_DRIPC      (0))
01059   ALLOCATE(XAVG_RRVEGC     (0))
01060   ALLOCATE(XAVG_MELTC      (0))
01061   ALLOCATE(XAVG_IRRIG_FLUXC(0))
01062   ALLOCATE(XAVG_GPPC       (0))
01063   ALLOCATE(XAVG_RESPC_AUTO (0))
01064   ALLOCATE(XAVG_RESPC_ECO  (0)) 
01065   ALLOCATE(XAVG_IFLOODC    (0))
01066   ALLOCATE(XAVG_PFLOODC    (0))
01067   ALLOCATE(XAVG_LE_FLOODC  (0))
01068   ALLOCATE(XAVG_LEI_FLOODC (0))
01069   
01070 !
01071   ALLOCATE(XRNC        (0,0))
01072   ALLOCATE(XHC         (0,0))
01073   ALLOCATE(XLEC        (0,0))
01074   ALLOCATE(XLEIC       (0,0))
01075   ALLOCATE(XGFLUXC     (0,0))
01076   ALLOCATE(XLEGC       (0,0))
01077   ALLOCATE(XLEGIC      (0,0))
01078   ALLOCATE(XLEVC       (0,0))
01079   ALLOCATE(XLESC       (0,0))
01080   ALLOCATE(XLESLC      (0,0))
01081   ALLOCATE(XLERC       (0,0))
01082   ALLOCATE(XLETRC      (0,0))
01083   ALLOCATE(XEVAPC      (0,0))
01084   ALLOCATE(XDRAINC     (0,0))
01085   ALLOCATE(XRUNOFFC    (0,0))
01086   ALLOCATE(XHORTC      (0,0))
01087   ALLOCATE(XDRIPC      (0,0))
01088   ALLOCATE(XRRVEGC     (0,0))
01089   ALLOCATE(XMELTC      (0,0))
01090   ALLOCATE(XIRRIG_FLUXC(0,0))
01091   ALLOCATE(XGPPC       (0,0))
01092   ALLOCATE(XRESPC_AUTO (0,0))
01093   ALLOCATE(XRESPC_ECO  (0,0))  
01094   ALLOCATE(XIFLOODC    (0,0))
01095   ALLOCATE(XPFLOODC    (0,0))
01096   ALLOCATE(XLE_FLOODC  (0,0))
01097   ALLOCATE(XLEI_FLOODC (0,0))
01098 !
01099   ALLOCATE(XAVG_SWDC   (0))
01100   ALLOCATE(XAVG_SWUC   (0))
01101   ALLOCATE(XAVG_LWDC   (0))
01102   ALLOCATE(XAVG_LWUC   (0))
01103   ALLOCATE(XAVG_FMUC   (0))
01104   ALLOCATE(XAVG_FMVC   (0))
01105   ALLOCATE(XSWDC     (0,0))
01106   ALLOCATE(XSWUC     (0,0))
01107   ALLOCATE(XLWDC     (0,0))
01108   ALLOCATE(XLWUC     (0,0))
01109   ALLOCATE(XFMUC     (0,0))
01110   ALLOCATE(XFMVC     (0,0))
01111   !      
01112   ALLOCATE(XRAINFALLC  (0))
01113   ALLOCATE(XSNOWFALLC  (0))
01114   ALLOCATE(XAVG_DWGC   (0))
01115   ALLOCATE(XAVG_DWGIC  (0))
01116   ALLOCATE(XAVG_DWRC   (0))
01117   ALLOCATE(XAVG_DSWEC  (0))
01118   ALLOCATE(XAVG_WATBUDC(0))
01119   !
01120   ALLOCATE(XDWGC   (0,0))
01121   ALLOCATE(XDWGIC  (0,0))
01122   ALLOCATE(XDWRC   (0,0))
01123   ALLOCATE(XDSWEC  (0,0))
01124   ALLOCATE(XWATBUDC(0,0))
01125   !
01126 ENDIF
01127 !
01128 IF(.NOT.LGLACIER)THEN
01129   ALLOCATE(XAVG_ICEFLUXC(0))
01130   ALLOCATE(XICEFLUXC(0,0))
01131 ENDIF
01132 !
01133 !
01134 !* surface temperature and parameters at 2m
01135 !
01136 ALLOCATE(XTS    (KLU,NPATCH))
01137 ALLOCATE(XAVG_TS(KLU))
01138 XTS     = XUNDEF
01139 XAVG_TS = XUNDEF
01140 ALLOCATE(XTSRAD    (KLU,NPATCH))
01141 ALLOCATE(XAVG_TSRAD(KLU))
01142 XTSRAD     = XUNDEF
01143 XAVG_TSRAD = XUNDEF
01144 
01145 !
01146 IF (N2M>=1) THEN
01147   ALLOCATE(XAVG_RI           (KLU))
01148   ALLOCATE(XAVG_T2M          (KLU))
01149   ALLOCATE(XAVG_T2M_MIN      (KLU))
01150   ALLOCATE(XAVG_T2M_MAX      (KLU))
01151   ALLOCATE(XAVG_Q2M          (KLU))
01152   ALLOCATE(XAVG_HU2M         (KLU))
01153   ALLOCATE(XAVG_HU2M_MIN     (KLU))
01154   ALLOCATE(XAVG_HU2M_MAX     (KLU))
01155   ALLOCATE(XAVG_ZON10M       (KLU))
01156   ALLOCATE(XAVG_MER10M       (KLU))
01157   ALLOCATE(XAVG_WIND10M      (KLU))
01158   ALLOCATE(XAVG_WIND10M_MAX  (KLU))
01159   ALLOCATE(XAVG_SFCO2        (KLU))
01160   XAVG_RI      = XUNDEF
01161   XAVG_T2M     = XUNDEF
01162   XAVG_T2M_MIN = XUNDEF
01163   XAVG_T2M_MAX = 0.0
01164   XAVG_Q2M     = XUNDEF
01165   XAVG_HU2M    = XUNDEF
01166   XAVG_HU2M_MIN= XUNDEF
01167   XAVG_HU2M_MAX= -XUNDEF
01168   XAVG_ZON10M  = XUNDEF
01169   XAVG_MER10M  = XUNDEF
01170   XAVG_WIND10M = XUNDEF
01171   XAVG_WIND10M_MAX = 0.0
01172   XAVG_SFCO2       = XUNDEF
01173   !
01174   ALLOCATE(XRI     (KLU,NPATCH))
01175   ALLOCATE(XT2M    (KLU,NPATCH))
01176   ALLOCATE(XQ2M    (KLU,NPATCH))
01177   ALLOCATE(XHU2M   (KLU,NPATCH))
01178   ALLOCATE(XZON10M (KLU,NPATCH))
01179   ALLOCATE(XMER10M (KLU,NPATCH))
01180   ALLOCATE(XWIND10M(KLU,NPATCH))
01181   !
01182   XRI      = XUNDEF
01183   XT2M     = XUNDEF
01184   XQ2M     = XUNDEF
01185   XHU2M    = XUNDEF
01186   XZON10M  = XUNDEF
01187   XMER10M  = XUNDEF
01188   XWIND10M = XUNDEF
01189 ELSE
01190   ALLOCATE(XAVG_RI           (0))
01191   ALLOCATE(XAVG_T2M          (0))
01192   ALLOCATE(XAVG_T2M_MIN      (0))
01193   ALLOCATE(XAVG_T2M_MAX      (0))
01194   ALLOCATE(XAVG_Q2M          (0))
01195   ALLOCATE(XAVG_HU2M         (0))
01196   ALLOCATE(XAVG_HU2M_MIN     (0))
01197   ALLOCATE(XAVG_HU2M_MAX     (0))
01198   ALLOCATE(XAVG_ZON10M       (0))
01199   ALLOCATE(XAVG_MER10M       (0))
01200   ALLOCATE(XAVG_WIND10M      (0))
01201   ALLOCATE(XAVG_WIND10M_MAX  (0))
01202 !
01203   ALLOCATE(XRI     (0,0))
01204   ALLOCATE(XT2M    (0,0))
01205   ALLOCATE(XQ2M    (0,0))
01206   ALLOCATE(XHU2M   (0,0))
01207   ALLOCATE(XZON10M (0,0))
01208   ALLOCATE(XMER10M (0,0))
01209   ALLOCATE(XWIND10M(0,0))
01210 END IF
01211 !
01212 !* miscellaneous surface fields
01213 !
01214 IF (LSURF_MISC_BUDGET) THEN
01215   ALLOCATE(XAVG_HV           (KLU))
01216   ALLOCATE(XAVG_PSNG         (KLU))
01217   ALLOCATE(XAVG_PSNV         (KLU))
01218   ALLOCATE(XAVG_PSN          (KLU))
01219   ALLOCATE(XAVG_ALBT         (KLU))
01220   ALLOCATE(XAVG_LAI          (KLU))
01221   !
01222   ALLOCATE(XAVG_FSAT        (KLU))  
01223   ALLOCATE(XAVG_FFG         (KLU))
01224   ALLOCATE(XAVG_FFV         (KLU))
01225   ALLOCATE(XAVG_FF          (KLU))
01226   !
01227   ALLOCATE(XSOIL_TSWI        (KLU))
01228   ALLOCATE(XSOIL_TWG         (KLU))
01229   ALLOCATE(XSOIL_TWGI        (KLU))
01230   ALLOCATE(XAVG_SWI          (KLU,NGROUND_LAYER))
01231   ALLOCATE(XAVG_TSWI         (KLU,NGROUND_LAYER))
01232   !
01233   ALLOCATE(XAVG_TWSNOW       (KLU))
01234   ALLOCATE(XAVG_TDSNOW       (KLU))
01235   ALLOCATE(XAVG_TTSNOW       (KLU))
01236   !
01237   XAVG_HV      = XUNDEF
01238   XAVG_SWI     = XUNDEF
01239   XAVG_TSWI    = XUNDEF
01240   XSOIL_TSWI   = XUNDEF
01241   XSOIL_TWG    = XUNDEF
01242   XSOIL_TWGI   = XUNDEF
01243   XAVG_PSNG    = XUNDEF
01244   XAVG_PSNV    = XUNDEF
01245   XAVG_PSN     = XUNDEF
01246   XAVG_ALBT    = XUNDEF
01247   XAVG_LAI     = XUNDEF
01248   XAVG_FSAT    = XUNDEF  
01249   XAVG_FFG     = XUNDEF
01250   XAVG_FFV     = XUNDEF
01251   XAVG_FF      = XUNDEF
01252   XAVG_TWSNOW  = XUNDEF
01253   XAVG_TDSNOW  = XUNDEF
01254   XAVG_TTSNOW  = XUNDEF
01255   !
01256   ALLOCATE(XHV     (KLU,NPATCH))
01257   ALLOCATE(XSWI    (KLU,NGROUND_LAYER,NPATCH))
01258   ALLOCATE(XTSWI   (KLU,NGROUND_LAYER,NPATCH))
01259   ALLOCATE(XTWSNOW (KLU,NPATCH))
01260   ALLOCATE(XTDSNOW (KLU,NPATCH))
01261   ALLOCATE(XTTSNOW (KLU,NPATCH))
01262   ALLOCATE(XDPSNG  (KLU,NPATCH))
01263   ALLOCATE(XDPSNV  (KLU,NPATCH))
01264   ALLOCATE(XDPSN   (KLU,NPATCH))
01265   ALLOCATE(XALBT   (KLU,NPATCH))
01266   !
01267   ALLOCATE(XDFSAT  (KLU,NPATCH))
01268   ALLOCATE(XDFFG   (KLU,NPATCH))
01269   ALLOCATE(XDFFV   (KLU,NPATCH))
01270   ALLOCATE(XDFF    (KLU,NPATCH))
01271   !
01272   ALLOCATE(XSNOWLIQ  (KLU,TSNOW%NLAYER,NPATCH))
01273   ALLOCATE(XSNOWTEMP (KLU,TSNOW%NLAYER,NPATCH))
01274   !
01275   XHV      = XUNDEF
01276   XSWI     = XUNDEF
01277   XTSWI    = XUNDEF
01278   XTWSNOW  = XUNDEF
01279   XTDSNOW  = XUNDEF
01280   XTTSNOW  = XUNDEF
01281   XDPSNG   = XUNDEF
01282   XDPSNV   = XUNDEF
01283   XDPSN    = XUNDEF
01284   XALBT    = XUNDEF
01285   XDFSAT   = XUNDEF  
01286   XDFFG    = XUNDEF
01287   XDFFV    = XUNDEF
01288   XDFF     = XUNDEF
01289   XSNOWLIQ = XUNDEF
01290   XSNOWTEMP= XUNDEF
01291   !
01292   IF(CISBA=='DIF'.AND.LSURF_MISC_DIF)THEN
01293     ALLOCATE(XSURF_TSWI(KLU))
01294     ALLOCATE(XSURF_TWG (KLU))
01295     ALLOCATE(XSURF_TWGI(KLU))
01296     ALLOCATE(XROOT_TSWI(KLU))
01297     ALLOCATE(XROOT_TWG (KLU))
01298     ALLOCATE(XROOT_TWGI(KLU))
01299     ALLOCATE(XFRD2_TSWI(KLU))
01300     ALLOCATE(XFRD2_TWG (KLU))
01301     ALLOCATE(XFRD2_TWGI(KLU))
01302     ALLOCATE(XFRD3_TSWI(KLU))
01303     ALLOCATE(XFRD3_TWG (KLU))
01304     ALLOCATE(XFRD3_TWGI(KLU))    
01305     XSURF_TSWI = XUNDEF
01306     XSURF_TWG  = XUNDEF
01307     XSURF_TWGI = XUNDEF
01308     XROOT_TSWI = XUNDEF
01309     XROOT_TWG  = XUNDEF
01310     XROOT_TWGI = XUNDEF
01311     XFRD2_TSWI = XUNDEF
01312     XFRD2_TWG  = XUNDEF
01313     XFRD2_TWGI = XUNDEF
01314     XFRD3_TSWI = XUNDEF
01315     XFRD3_TWG  = XUNDEF
01316     XFRD3_TWGI = XUNDEF  
01317   ENDIF
01318   !
01319   IF(CISBA=='DIF')THEN
01320     ALLOCATE(XALT(KLU,NPATCH))
01321     ALLOCATE(XFLT(KLU,NPATCH))
01322     ALLOCATE(XAVG_ALT(KLU))
01323     ALLOCATE(XAVG_FLT(KLU))
01324     XALT     = XUNDEF
01325     XFLT     = XUNDEF
01326     XAVG_ALT = XUNDEF
01327     XAVG_FLT = XUNDEF          
01328   ENDIF  
01329   !
01330   IF (LTR_ML) THEN
01331     ALLOCATE (XFAPAR      (KLU, NPATCH))
01332     ALLOCATE (XFAPIR      (KLU, NPATCH))
01333     ALLOCATE (XFAPAR_BS   (KLU, NPATCH))
01334     ALLOCATE (XFAPIR_BS   (KLU, NPATCH))
01335     ALLOCATE (XDFAPARC    (KLU, NPATCH))
01336     ALLOCATE (XDFAPIRC    (KLU, NPATCH))
01337     ALLOCATE (XDLAI_EFFC  (KLU, NPATCH))
01338     !
01339     XFAPAR      = XUNDEF
01340     XFAPIR      = XUNDEF
01341     XFAPAR_BS   = XUNDEF
01342     XFAPIR_BS   = XUNDEF
01343     XDFAPARC    = 0.
01344     XDFAPIRC    = 0.
01345     XDLAI_EFFC  = 0.
01346   ENDIF
01347   !
01348 ELSE
01349   ALLOCATE(XAVG_HV           (0))
01350   ALLOCATE(XAVG_PSNG         (0))
01351   ALLOCATE(XAVG_PSNV         (0))
01352   ALLOCATE(XAVG_PSN          (0))
01353   ALLOCATE(XAVG_ALBT         (0))
01354   ALLOCATE(XAVG_LAI          (0))
01355 !
01356   ALLOCATE(XAVG_FSAT        (0))  
01357   ALLOCATE(XAVG_FFG         (0))
01358   ALLOCATE(XAVG_FFV         (0))
01359   ALLOCATE(XAVG_FF          (0))
01360 !
01361   ALLOCATE(XSOIL_TSWI        (0))
01362   ALLOCATE(XSOIL_TWG         (0))
01363   ALLOCATE(XSOIL_TWGI        (0))
01364   ALLOCATE(XAVG_SWI          (0,0))
01365   ALLOCATE(XAVG_TSWI         (0,0))
01366 !
01367   ALLOCATE(XAVG_TWSNOW       (0))
01368   ALLOCATE(XAVG_TDSNOW       (0))
01369   ALLOCATE(XAVG_TTSNOW       (0))
01370 !
01371   ALLOCATE(XHV     (0,0))
01372   ALLOCATE(XSWI    (0,0,0))
01373   ALLOCATE(XTSWI   (0,0,0))
01374   ALLOCATE(XTWSNOW (0,0))
01375   ALLOCATE(XTDSNOW (0,0))
01376   ALLOCATE(XTTSNOW (0,0))
01377   ALLOCATE(XDPSNG  (0,0))
01378   ALLOCATE(XDPSNV  (0,0))
01379   ALLOCATE(XDPSN   (0,0))
01380   ALLOCATE(XALBT   (0,0))
01381 !
01382   ALLOCATE(XDFSAT  (0,0))
01383   ALLOCATE(XDFFG   (0,0))
01384   ALLOCATE(XDFFV   (0,0))
01385   ALLOCATE(XDFF    (0,0))
01386 !
01387   ALLOCATE(XSNOWLIQ  (0,0,0))
01388   ALLOCATE(XSNOWTEMP (0,0,0))
01389 END IF
01390 !
01391 IF (CISBA/='DIF') THEN
01392   ALLOCATE(XSURF_TSWI(0))
01393   ALLOCATE(XSURF_TWG (0))
01394   ALLOCATE(XSURF_TWGI(0))
01395   ALLOCATE(XROOT_TSWI(0))
01396   ALLOCATE(XROOT_TWG (0))
01397   ALLOCATE(XROOT_TWGI(0))
01398   ALLOCATE(XFRD2_TSWI(0))
01399   ALLOCATE(XFRD2_TWG (0))
01400   ALLOCATE(XFRD2_TWGI(0))
01401   ALLOCATE(XFRD3_TSWI(0))
01402   ALLOCATE(XFRD3_TWG (0))
01403   ALLOCATE(XFRD3_TWGI(0))    
01404   ALLOCATE(XALT(0,0))
01405   ALLOCATE(XFLT(0,0))
01406   ALLOCATE(XAVG_ALT(0))
01407   ALLOCATE(XAVG_FLT(0))      
01408 ENDIF
01409 !
01410 IF (.NOT.LTR_ML) THEN
01411   ALLOCATE (XFAPAR      (0, 0))
01412   ALLOCATE (XFAPIR      (0, 0))
01413   ALLOCATE (XFAPAR_BS   (0, 0))
01414   ALLOCATE (XFAPIR_BS   (0, 0))
01415   ALLOCATE (XDFAPARC    (0, 0))
01416   ALLOCATE (XDFAPIRC    (0, 0))
01417   ALLOCATE (XDLAI_EFFC  (0, 0))
01418 ENDIF
01419 !
01420 !* transfer coefficients
01421 !
01422 IF (LCOEF) THEN
01423   ALLOCATE(XAVG_CD   (KLU))
01424   ALLOCATE(XAVG_CH   (KLU))
01425   ALLOCATE(XAVG_CE   (KLU))
01426   ALLOCATE(XAVG_Z0   (KLU))
01427   ALLOCATE(XAVG_Z0H  (KLU))
01428   ALLOCATE(XAVG_Z0EFF(KLU))
01429   !
01430   XAVG_CD      = XUNDEF
01431   XAVG_CH      = XUNDEF
01432   XAVG_CE      = XUNDEF
01433   XAVG_Z0      = XUNDEF
01434   XAVG_Z0H     = XUNDEF
01435   XAVG_Z0EFF   = XUNDEF
01436   !
01437   ALLOCATE(XCD            (KLU,NPATCH))
01438   ALLOCATE(XCH            (KLU,NPATCH))
01439   ALLOCATE(XCE            (KLU,NPATCH))
01440   ALLOCATE(XZ0_WITH_SNOW  (KLU,NPATCH))
01441   ALLOCATE(XZ0H_WITH_SNOW (KLU,NPATCH))
01442   ALLOCATE(XZ0EFF         (KLU,NPATCH))
01443   !
01444   XCD            = XUNDEF
01445   XCH            = XUNDEF
01446   XCE            = XUNDEF
01447   XZ0_WITH_SNOW  = XUNDEF
01448   XZ0H_WITH_SNOW = XUNDEF
01449   XZ0EFF         = XUNDEF
01450 ELSE
01451   ALLOCATE(XAVG_CD   (0))
01452   ALLOCATE(XAVG_CH   (0))
01453   ALLOCATE(XAVG_CE   (0))
01454   ALLOCATE(XAVG_Z0   (0))
01455   ALLOCATE(XAVG_Z0H  (0))
01456   ALLOCATE(XAVG_Z0EFF(0))
01457 !
01458   ALLOCATE(XCD            (0,0))
01459   ALLOCATE(XCH            (0,0))
01460   ALLOCATE(XCE            (0,0))
01461   ALLOCATE(XZ0_WITH_SNOW  (0,0))
01462   ALLOCATE(XZ0H_WITH_SNOW (0,0))
01463   ALLOCATE(XZ0EFF         (0,0))
01464 END IF
01465 !
01466 !
01467 !* surface humidity
01468 !
01469 IF (LSURF_VARS) THEN
01470   ALLOCATE(XAVG_QS   (KLU))
01471   !
01472   XAVG_QS      = XUNDEF
01473   !
01474   ALLOCATE(XQS            (KLU,NPATCH))
01475   !
01476   XQS            = XUNDEF
01477 ELSE
01478   ALLOCATE(XQS            (0,0))
01479 END IF
01480 !
01481 !* Irrigation threshold
01482 !
01483 IF (LAGRIP) THEN
01484   ALLOCATE(XSEUIL         (KLU,NPATCH))
01485   !
01486   XSEUIL         = XUNDEF
01487 ELSE
01488   ALLOCATE(XSEUIL         (0,0))
01489 END IF
01490 !
01491 !* Chemical fluxes
01492 IF (NBEQ>0 .AND. LCH_BIO_FLUX) THEN
01493   ALLOCATE(XFISO(KLU))
01494   ALLOCATE(XFMONO(KLU))
01495   !
01496   XFISO         = XUNDEF
01497   XFMONO        = XUNDEF
01498 ELSE
01499   ALLOCATE(XFISO(0))
01500   ALLOCATE(XFMONO(0))
01501 ENDIF
01502 !
01503 IF (CPHOTO/='NON') THEN
01504   ALLOCATE(XIACAN(KLU,SIZE(XABC),NPATCH))
01505   !
01506   XIACAN        = XUNDEF
01507   !
01508 ELSE
01509   ALLOCATE(XIACAN(0,0,0))
01510 ENDIF
01511 !
01512 IF (LHOOK) CALL DR_HOOK('DIAG_ISBA_INIT_N',1,ZHOOK_HANDLE)
01513 !-------------------------------------------------------------------------------
01514 !
01515 END SUBROUTINE DIAG_ISBA_INIT_n