SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_pgd_isba_parn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PGD_ISBA_PAR_n(HPROGRAM,KSIZE,OLAND_USE,HDIR)
00003 !     ################################################
00004 !
00005 !!****  *READ_PGD_ISBA_PAR_n* - reads ISBA physiographic fields                     
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    01/2003 
00031 !!      P. Le Moigne 12/2004 : add type of photosynthesis 
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_DATA_COVER_PAR, ONLY : NVEGTYPE
00038 USE MODD_PREP,           ONLY : LINTERP
00039 !
00040 USE MODD_ISBA_GRID_n,    ONLY : NDIM
00041 USE MODD_ISBA_n,         ONLY : LECOCLIMAP, NGROUND_LAYER
00042 USE MODD_DATA_ISBA_n,    ONLY : NTIME, XPAR_VEG, XPAR_LAI,XPAR_RSMIN,XPAR_GAMMA,XPAR_WRMAX_CF, &
00043                                 XPAR_RGL,XPAR_CV,XPAR_DG,XPAR_Z0,XPAR_Z0_O_Z0H,         &
00044                                 XPAR_ALBNIR_VEG,XPAR_ALBVIS_VEG, XPAR_ALBUV_VEG,          &
00045                                 XPAR_ALBNIR_SOIL,XPAR_ALBVIS_SOIL, XPAR_ALBUV_SOIL,       &
00046                                 XPAR_EMIS, XPAR_DICE,                                      &
00047                                 XPAR_VEGTYPE,XPAR_ROOTFRAC,                                &
00048                                 XPAR_GMES,XPAR_BSLAI,XPAR_LAIMIN,XPAR_SEFOLD,XPAR_GC,   &
00049                                 XPAR_DMAX, XPAR_F2I, LPAR_STRESS, XPAR_H_TREE,XPAR_RE25,&
00050                                 XPAR_CE_NITRO,XPAR_CF_NITRO,XPAR_CNA_NITRO, &
00051                                 XPAR_GROUND_DEPTH, XPAR_ROOT_DEPTH,               &
00052                                 XPAR_ROOT_EXTINCTION, XPAR_ROOT_LIN,              &
00053                                 LPAR_STRESS, XPAR_IRRIG, XPAR_WATSUP, &
00054                                 LDATA_VEGTYPE, LDATA_LAI, LDATA_H_TREE, LDATA_DG, LDATA_ROOTFRAC,&  
00055                                 LDATA_VEG, LDATA_Z0, LDATA_EMIS, LDATA_DICE, &
00056                                 LDATA_RSMIN, LDATA_GAMMA, LDATA_WRMAX_CF, LDATA_RGL, &
00057                                 LDATA_CV, LDATA_Z0_O_Z0H, &
00058                                 LDATA_ALBNIR_VEG, LDATA_ALBVIS_VEG, LDATA_ALBUV_VEG, &
00059                                 LDATA_ALBVIS_SOIL, LDATA_ALBNIR_SOIL, LDATA_ALBUV_SOIL, &
00060                                 LDATA_GMES, LDATA_BSLAI, LDATA_SEFOLD, LDATA_GC, LDATA_DMAX, &
00061                                 LDATA_RE25, LDATA_LAIMIN, LDATA_F2I, &
00062                                 LDATA_CE_NITRO,LDATA_CF_NITRO, LDATA_CNA_NITRO,&
00063                                 LDATA_STRESS, LDATA_IRRIG, LDATA_WATSUP  ,&
00064                                 LDATA_GROUND_DEPTH, LDATA_ROOT_DEPTH,             &
00065                                 LDATA_ROOT_EXTINCTION, LDATA_ROOT_LIN, LDATA_MIXPAR
00066 !
00067 USE MODI_GET_LUOUT
00068 USE MODI_READ_SURF
00069 USE MODI_HOR_INTERPOL
00070 USE MODI_READ_SURF_ISBA_PAR_n
00071 !
00072 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00073 USE PARKIND1  ,ONLY : JPRB
00074 !
00075 IMPLICIT NONE
00076 !
00077 !*       0.1   Declarations of arguments
00078 !              -------------------------
00079 !
00080  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling
00081 INTEGER,           INTENT(IN)  :: KSIZE
00082 LOGICAL,           INTENT(IN)  :: OLAND_USE ! 
00083  CHARACTER(LEN=1),OPTIONAL,INTENT(IN)  :: HDIR       ! type of field :
00084 !                                                   ! 'H' : field with
00085 !                                                   !       horizontal spatial dim.
00086 !                                                   ! '-' : no horizontal dim.
00087 !
00088 !*       0.2   Declarations of local variables
00089 !              -------------------------------
00090 !
00091 REAL, DIMENSION(KSIZE,NVEGTYPE) :: ZFIELD
00092 REAL,    DIMENSION(:,:), ALLOCATABLE :: ZWORK
00093 INTEGER           :: ILUOUT
00094 INTEGER           :: ITIME
00095 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00096  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00097  CHARACTER(LEN=16) :: YRECFM2
00098  CHARACTER(LEN=100):: YCOMMENT       ! Comment string
00099  CHARACTER(LEN=1)  :: YDIR
00100 INTEGER           :: JTIME          ! loop index
00101 INTEGER           :: JLAYER         ! loop index
00102 INTEGER           :: JPATCH         ! loop index
00103 INTEGER           :: IVERSION       ! surface version
00104 INTEGER           :: IBUGFIX
00105 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00106 !
00107 !
00108 !-------------------------------------------------------------------------------
00109 !
00110 IF (LHOOK) CALL DR_HOOK('READ_PGD_ISBA_PAR_N',0,ZHOOK_HANDLE)
00111 !
00112  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00113 !
00114 YDIR = 'H'
00115 IF (PRESENT(HDIR)) YDIR = HDIR
00116 !
00117 YRECFM='VERSION'
00118  CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
00119 WRITE(ILUOUT,*) 'read version ',IVERSION
00120 !
00121 YRECFM='BUG'
00122  CALL READ_SURF(HPROGRAM,YRECFM,IBUGFIX,IRESP)
00123 !
00124 LDATA_MIXPAR = .FALSE. 
00125 !
00126 IF (IVERSION<7 .AND. .NOT.LECOCLIMAP) THEN
00127   !
00128   LDATA_VEGTYPE=.TRUE.
00129   LDATA_VEG=.TRUE.
00130   LDATA_LAI=.TRUE.
00131   LDATA_Z0=.TRUE.
00132   LDATA_EMIS=.TRUE.
00133   LDATA_RSMIN=.TRUE.
00134   LDATA_GAMMA=.TRUE.
00135   LDATA_WRMAX_CF=.TRUE.
00136   LDATA_RGL=.TRUE.
00137   LDATA_CV=.TRUE.
00138   LDATA_Z0_O_Z0H=.TRUE.
00139   LDATA_DG=.TRUE.
00140   LDATA_ROOTFRAC=.TRUE.
00141   !
00142   LDATA_DICE=.FALSE.
00143   LDATA_GROUND_DEPTH=.FALSE.
00144   LDATA_ROOT_DEPTH=.FALSE.
00145   LDATA_ROOT_LIN=.FALSE.
00146   LDATA_ROOT_EXTINCTION=.FALSE.  
00147   !
00148   LDATA_ALBNIR_VEG=.TRUE.
00149   LDATA_ALBVIS_VEG=.TRUE.
00150   LDATA_ALBUV_VEG=.TRUE.
00151   LDATA_ALBNIR_SOIL=.TRUE.
00152   LDATA_ALBVIS_SOIL=.TRUE.
00153   LDATA_ALBUV_SOIL=.TRUE.
00154   LDATA_GMES=.TRUE.
00155   LDATA_BSLAI=.TRUE.
00156   LDATA_LAIMIN=.TRUE.
00157   LDATA_SEFOLD=.TRUE.
00158   LDATA_GC=.TRUE.
00159   LDATA_DMAX=.TRUE.
00160   LDATA_F2I=.TRUE.
00161   LDATA_STRESS=.TRUE.
00162   LDATA_H_TREE=.TRUE.
00163   LDATA_RE25=.TRUE.
00164   LDATA_CE_NITRO=.TRUE.
00165   LDATA_CF_NITRO=.TRUE.
00166   LDATA_CNA_NITRO=.TRUE.
00167   !
00168   LDATA_IRRIG=.FALSE.
00169   LDATA_WATSUP=.FALSE.
00170   !
00171 ENDIF
00172 !
00173 IF (.NOT.OLAND_USE) THEN
00174   !
00175   IF (IVERSION>=7) THEN
00176     !
00177     YRECFM='L_VEGTYPE'
00178     YCOMMENT=YRECFM
00179     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_VEGTYPE,IRESP,HCOMMENT=YCOMMENT)
00180     IF (LDATA_VEGTYPE) LDATA_MIXPAR = .TRUE.
00181     !
00182     YRECFM='L_VEG'
00183     YCOMMENT=YRECFM
00184     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_VEG,IRESP,HCOMMENT=YCOMMENT)
00185     IF (LDATA_VEG) LDATA_MIXPAR = .TRUE.
00186     YRECFM='L_LAI'
00187     YCOMMENT=YRECFM
00188     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LAI,IRESP,HCOMMENT=YCOMMENT)
00189     IF (LDATA_LAI) LDATA_MIXPAR = .TRUE.
00190     YRECFM='L_Z0'
00191     YCOMMENT=YRECFM
00192     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_Z0,IRESP,HCOMMENT=YCOMMENT)
00193     IF (LDATA_Z0) LDATA_MIXPAR = .TRUE.
00194     YRECFM='L_EMIS'
00195     YCOMMENT=YRECFM
00196     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_EMIS,IRESP,HCOMMENT=YCOMMENT)
00197     IF (LDATA_EMIS) LDATA_MIXPAR = .TRUE.
00198     !
00199     YRECFM='L_RSMIN'
00200     YCOMMENT=YRECFM
00201     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RSMIN,IRESP,HCOMMENT=YCOMMENT)
00202     IF (LDATA_RSMIN) LDATA_MIXPAR = .TRUE.
00203     YRECFM='L_GAMMA'
00204     YCOMMENT=YRECFM
00205     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GAMMA,IRESP,HCOMMENT=YCOMMENT)
00206     IF (LDATA_GAMMA) LDATA_MIXPAR = .TRUE.
00207     YRECFM='L_WRMAX_CF'
00208     YCOMMENT=YRECFM
00209     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_WRMAX_CF,IRESP,HCOMMENT=YCOMMENT)
00210     IF (LDATA_WRMAX_CF) LDATA_MIXPAR = .TRUE.
00211     YRECFM='L_RGL'
00212     YCOMMENT=YRECFM
00213     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RGL,IRESP,HCOMMENT=YCOMMENT)
00214     IF (LDATA_RGL) LDATA_MIXPAR = .TRUE.
00215     YRECFM='L_CV'
00216     YCOMMENT=YRECFM
00217     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CV,IRESP,HCOMMENT=YCOMMENT)
00218     IF (LDATA_CV) LDATA_MIXPAR = .TRUE.
00219     YRECFM='L_Z0_O_Z0H'
00220     YCOMMENT=YRECFM
00221     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_Z0_O_Z0H,IRESP,HCOMMENT=YCOMMENT)
00222     IF (LDATA_Z0_O_Z0H) LDATA_MIXPAR = .TRUE.
00223     YRECFM='L_DG'
00224     YCOMMENT=YRECFM
00225     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DG,IRESP,HCOMMENT=YCOMMENT)
00226     IF (LDATA_DG) LDATA_MIXPAR = .TRUE.
00227     YRECFM='L_ROOTFRAC'
00228     YCOMMENT=YRECFM
00229     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOTFRAC,IRESP,HCOMMENT=YCOMMENT)
00230     IF (LDATA_ROOTFRAC) LDATA_MIXPAR = .TRUE.
00231     YRECFM='L_DICE'
00232     YCOMMENT=YRECFM
00233     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DICE,IRESP,HCOMMENT=YCOMMENT)
00234     IF (LDATA_DICE) LDATA_MIXPAR = .TRUE.
00235     !
00236     IF (IBUGFIX>=2) THEN
00237       YRECFM2='L_GROUND_DEPTH'
00238       IF (IBUGFIX>=3) YRECFM2='L_GROUND_DPT'
00239       YCOMMENT=YRECFM
00240       CALL READ_SURF(HPROGRAM,YRECFM2,LDATA_GROUND_DEPTH,IRESP,HCOMMENT=YCOMMENT)
00241       IF (LDATA_GROUND_DEPTH) LDATA_MIXPAR = .TRUE.
00242       YRECFM='L_ROOT_DEPTH'
00243       YCOMMENT=YRECFM
00244       CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_DEPTH,IRESP,HCOMMENT=YCOMMENT)
00245       IF (LDATA_ROOT_DEPTH) LDATA_MIXPAR = .TRUE.
00246       YRECFM='L_ROOT_EXT'
00247       YCOMMENT=YRECFM
00248       CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_EXTINCTION,IRESP,HCOMMENT=YCOMMENT)
00249       IF (LDATA_ROOT_EXTINCTION) LDATA_MIXPAR = .TRUE.
00250       YRECFM='L_ROOT_LIN'
00251       YCOMMENT=YRECFM
00252       CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ROOT_LIN,IRESP,HCOMMENT=YCOMMENT)
00253       IF (LDATA_ROOT_LIN) LDATA_MIXPAR = .TRUE.
00254     ELSE
00255       LDATA_GROUND_DEPTH = .FALSE.
00256       LDATA_ROOT_DEPTH   = .FALSE.
00257       LDATA_ROOT_EXTINCTION = .FALSE.
00258       LDATA_ROOT_LIN = .FALSE.
00259     ENDIF
00260     !
00261     YRECFM='L_ALBNIR_VEG'
00262     YCOMMENT=YRECFM
00263     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBNIR_VEG,IRESP,HCOMMENT=YCOMMENT)
00264     IF (LDATA_ALBNIR_VEG) LDATA_MIXPAR = .TRUE.
00265     YRECFM='L_ALBVIS_VEG'
00266     YCOMMENT=YRECFM
00267     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBVIS_VEG,IRESP,HCOMMENT=YCOMMENT)
00268     IF (LDATA_ALBVIS_VEG) LDATA_MIXPAR = .TRUE.
00269     YRECFM='L_ALBUV_VEG'
00270     YCOMMENT=YRECFM
00271     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBUV_VEG,IRESP,HCOMMENT=YCOMMENT)
00272     IF (LDATA_ALBUV_VEG) LDATA_MIXPAR = .TRUE.
00273     YRECFM='L_ALBNIR_SOI'
00274     YCOMMENT=YRECFM
00275     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBNIR_SOIL,IRESP,HCOMMENT=YCOMMENT)
00276     IF (LDATA_ALBNIR_SOIL) LDATA_MIXPAR = .TRUE.
00277     YRECFM='L_ALBVIS_SOI'
00278     YCOMMENT=YRECFM
00279     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBVIS_SOIL,IRESP,HCOMMENT=YCOMMENT)
00280     IF (LDATA_ALBVIS_SOIL) LDATA_MIXPAR = .TRUE.
00281     YRECFM='L_ALBUV_SOI'
00282     YCOMMENT=YRECFM
00283     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_ALBUV_SOIL,IRESP,HCOMMENT=YCOMMENT)
00284     IF (LDATA_ALBUV_SOIL) LDATA_MIXPAR = .TRUE.
00285     YRECFM='L_GMES'
00286     YCOMMENT=YRECFM
00287     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GMES,IRESP,HCOMMENT=YCOMMENT)
00288     IF (LDATA_GMES) LDATA_MIXPAR = .TRUE.
00289     YRECFM='L_BSLAI'
00290     YCOMMENT=YRECFM
00291     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_BSLAI,IRESP,HCOMMENT=YCOMMENT)
00292     IF (LDATA_BSLAI) LDATA_MIXPAR = .TRUE.
00293     YRECFM='L_LAIMIN'
00294     YCOMMENT=YRECFM
00295     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_LAIMIN,IRESP,HCOMMENT=YCOMMENT)
00296     IF (LDATA_LAIMIN) LDATA_MIXPAR = .TRUE.
00297     YRECFM='L_SEFOLD'
00298     YCOMMENT=YRECFM
00299     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_SEFOLD,IRESP,HCOMMENT=YCOMMENT)
00300     IF (LDATA_SEFOLD) LDATA_MIXPAR = .TRUE.
00301     YRECFM='L_GC'
00302     YCOMMENT=YRECFM
00303     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_GC,IRESP,HCOMMENT=YCOMMENT)
00304     IF (LDATA_GC) LDATA_MIXPAR = .TRUE.
00305     YRECFM='L_DMAX'
00306     YCOMMENT=YRECFM
00307     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_DMAX,IRESP,HCOMMENT=YCOMMENT)
00308     IF (LDATA_DMAX) LDATA_MIXPAR = .TRUE.
00309     YRECFM='L_F2I'
00310     YCOMMENT=YRECFM
00311     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_F2I,IRESP,HCOMMENT=YCOMMENT)
00312     IF (LDATA_F2I) LDATA_MIXPAR = .TRUE.
00313     YRECFM='L_STRESS'
00314     YCOMMENT=YRECFM
00315     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_STRESS,IRESP,HCOMMENT=YCOMMENT)
00316     IF (LDATA_STRESS) LDATA_MIXPAR = .TRUE.
00317     YRECFM='L_H_TREE'
00318     YCOMMENT=YRECFM
00319     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_H_TREE,IRESP,HCOMMENT=YCOMMENT)
00320     IF (LDATA_H_TREE) LDATA_MIXPAR = .TRUE.
00321     YRECFM='L_RE25'
00322     YCOMMENT=YRECFM
00323     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_RE25,IRESP,HCOMMENT=YCOMMENT)
00324     IF (LDATA_RE25) LDATA_MIXPAR = .TRUE.
00325     YRECFM='L_CE_NITRO'
00326     YCOMMENT=YRECFM
00327     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CE_NITRO,IRESP,HCOMMENT=YCOMMENT)
00328     IF (LDATA_CE_NITRO) LDATA_MIXPAR = .TRUE.
00329     YRECFM='L_CF_NITRO'
00330     YCOMMENT=YRECFM
00331     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CF_NITRO,IRESP,HCOMMENT=YCOMMENT)
00332     IF (LDATA_CF_NITRO) LDATA_MIXPAR = .TRUE.
00333     YRECFM='L_CNA_NITRO'
00334     YCOMMENT=YRECFM
00335     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_CNA_NITRO,IRESP,HCOMMENT=YCOMMENT)
00336     IF (LDATA_CNA_NITRO) LDATA_MIXPAR = .TRUE.
00337     YRECFM='L_IRRIG'
00338     YCOMMENT=YRECFM
00339     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_IRRIG,IRESP,HCOMMENT=YCOMMENT)
00340     IF (LDATA_IRRIG) LDATA_MIXPAR = .TRUE.
00341     YRECFM='L_WATSUP'
00342     YCOMMENT=YRECFM
00343     CALL READ_SURF(HPROGRAM,YRECFM,LDATA_WATSUP,IRESP,HCOMMENT=YCOMMENT)
00344     IF (LDATA_WATSUP) LDATA_MIXPAR = .TRUE.
00345     !
00346   ENDIF
00347   !
00348   IF (ALLOCATED(LINTERP)) LINTERP(:) = .TRUE.
00349   !
00350   IF (LDATA_VEGTYPE) THEN
00351     YRECFM='D_VEGTYPE'
00352     CALL READ_SURF(HPROGRAM,YRECFM,ZFIELD(:,:),IRESP,HCOMMENT=YCOMMENT,HDIR=YDIR)
00353     ALLOCATE(XPAR_VEGTYPE   (NDIM,NVEGTYPE))
00354     IF (NDIM/=KSIZE) THEN
00355       CALL HOR_INTERPOL(ILUOUT,ZFIELD,XPAR_VEGTYPE)
00356     ELSE
00357       XPAR_VEGTYPE(:,:) = ZFIELD(:,:)
00358     ENDIF
00359   ENDIF
00360 !
00361   IF (LDATA_LAI .OR. LDATA_VEG .OR. LDATA_Z0 .OR. LDATA_EMIS) THEN
00362     YRECFM='NDATA_TIME'
00363     CALL READ_SURF(HPROGRAM,YRECFM,NTIME,IRESP,HCOMMENT=YCOMMENT)
00364     ITIME = NTIME
00365   ENDIF
00366 !  
00367   IF (LDATA_VEG) THEN
00368     ALLOCATE(XPAR_VEG(NDIM,NTIME,NVEGTYPE))           
00369     DO JTIME=1,ITIME
00370       WRITE(YRECFM,FMT='(A7,I2.2)') 'D_VEG_T',JTIME
00371       CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_VEG(:,JTIME,:),IRESP,IVERSION,&
00372                                 HCOMMENT=YCOMMENT,HDIR=YDIR)       
00373     END DO
00374   ENDIF
00375 !
00376   IF (LDATA_LAI) THEN
00377     ALLOCATE(XPAR_LAI(NDIM,NTIME,NVEGTYPE))
00378     DO JTIME=1,ITIME
00379       WRITE(YRECFM,FMT='(A7,I2.2)') 'D_LAI_T',JTIME
00380       CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_LAI(:,JTIME,:),IRESP,IVERSION,&
00381                                 HCOMMENT=YCOMMENT,HDIR=YDIR)
00382     END DO
00383   ENDIF
00384 !
00385   IF (LDATA_Z0) THEN
00386     ALLOCATE(XPAR_Z0        (NDIM,NTIME,NVEGTYPE))
00387     DO JTIME=1,ITIME
00388       WRITE(YRECFM,FMT='(A6,I2.2)') 'D_Z0_T',JTIME
00389       CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_Z0(:,JTIME,:),IRESP,IVERSION,&
00390                                 HCOMMENT=YCOMMENT,HDIR=YDIR)
00391     END DO
00392   ENDIF
00393 !
00394   IF (LDATA_EMIS) THEN
00395     ALLOCATE(XPAR_EMIS      (NDIM,NTIME,NVEGTYPE))
00396     DO JTIME=1,ITIME
00397       WRITE(YRECFM,FMT='(A8,I2.2)') 'D_EMIS_T',JTIME
00398       CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_EMIS(:,JTIME,:),IRESP,IVERSION,&
00399                                 HCOMMENT=YCOMMENT,HDIR=YDIR)
00400     END DO
00401   ENDIF
00402 !
00403   IF (LDATA_RSMIN) THEN
00404     ALLOCATE(XPAR_RSMIN     (NDIM,NVEGTYPE))
00405     YRECFM='D_RSMIN'
00406     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RSMIN(:,:),IRESP,IVERSION,&
00407                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00408   ENDIF
00409 !
00410   IF (LDATA_GAMMA) THEN
00411     ALLOCATE(XPAR_GAMMA     (NDIM,NVEGTYPE))
00412     YRECFM='D_GAMMA'
00413     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GAMMA(:,:),IRESP,IVERSION,&
00414                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00415   ENDIF
00416 !
00417   IF (LDATA_WRMAX_CF) THEN
00418     ALLOCATE(XPAR_WRMAX_CF  (NDIM,NVEGTYPE))
00419     YRECFM='D_WRMAX_CF'
00420     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_WRMAX_CF(:,:),IRESP,IVERSION,&
00421                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00422   ENDIF
00423 !
00424   IF (LDATA_RGL) THEN
00425     ALLOCATE(XPAR_RGL       (NDIM,NVEGTYPE))
00426     YRECFM='D_RGL'
00427     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RGL(:,:),IRESP,IVERSION,&
00428                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00429   ENDIF
00430 !
00431   IF (LDATA_CV) THEN
00432     ALLOCATE(XPAR_CV        (NDIM,NVEGTYPE))
00433     YRECFM='D_CV'
00434     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CV(:,:),IRESP,IVERSION,&
00435                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00436   ENDIF
00437 !
00438   IF (LDATA_Z0_O_Z0H) THEN
00439     ALLOCATE(XPAR_Z0_O_Z0H  (NDIM,NVEGTYPE))
00440     YRECFM='D_Z0_O_Z0H'
00441     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_Z0_O_Z0H(:,:),IRESP,IVERSION,&
00442                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00443   ENDIF
00444 !
00445   IF (LDATA_DG) THEN
00446     ALLOCATE(XPAR_DG        (NDIM,NGROUND_LAYER,NVEGTYPE))
00447     ALLOCATE(ZWORK(SIZE(XPAR_DG,1),SIZE(XPAR_DG,3)))
00448     DO JLAYER=1,SIZE(XPAR_DG,2)
00449       IF (JLAYER<10)  WRITE(YRECFM,FMT='(A4,I1.1)') 'D_DG',JLAYER
00450       IF (JLAYER>=10) WRITE(YRECFM,FMT='(A4,I2.2)') 'D_DG',JLAYER
00451       CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK,IRESP,IVERSION,&
00452                                 HCOMMENT=YCOMMENT,HDIR=YDIR)
00453       DO JPATCH=1,SIZE(XPAR_DG,3)
00454         XPAR_DG(:,JLAYER,JPATCH) = ZWORK(:,JPATCH)
00455       END DO
00456     END DO
00457     DEALLOCATE(ZWORK)
00458   ENDIF
00459 !
00460   IF (LDATA_ROOTFRAC) THEN
00461     ALLOCATE(XPAR_ROOTFRAC  (NDIM,NGROUND_LAYER,NVEGTYPE))
00462     ALLOCATE(ZWORK(SIZE(XPAR_ROOTFRAC,1),SIZE(XPAR_ROOTFRAC,3)))
00463     DO JLAYER=1,SIZE(XPAR_ROOTFRAC,2)
00464       IF (JLAYER<10)  WRITE(YRECFM,FMT='(A10,I1.1)') 'D_ROOTFRAC',JLAYER
00465       IF (JLAYER>=10) WRITE(YRECFM,FMT='(A10,I2.2)') 'D_ROOTFRAC',JLAYER
00466         CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK,IRESP,IVERSION,&
00467                                   HCOMMENT=YCOMMENT,HDIR=YDIR)
00468       DO JPATCH=1,SIZE(XPAR_ROOTFRAC,3)
00469         XPAR_ROOTFRAC(:,JLAYER,JPATCH) = ZWORK(:,JPATCH)
00470       END DO
00471     END DO
00472     DEALLOCATE(ZWORK)
00473   ENDIF
00474 !
00475   IF (LDATA_DICE) THEN
00476     ALLOCATE(XPAR_DICE      (NDIM,NVEGTYPE))
00477     YRECFM='D_DICE'
00478     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_DICE(:,:),IRESP,IVERSION,&
00479                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00480   ENDIF
00481 !
00482   IF (LDATA_GROUND_DEPTH) THEN
00483     ALLOCATE(XPAR_GROUND_DEPTH(NDIM,NVEGTYPE))
00484     YRECFM2='D_GROUND_DEPTH'
00485     IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=3) YRECFM2='D_GROUND_DPT'
00486     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM2,ILUOUT,KSIZE,XPAR_GROUND_DEPTH(:,:),IRESP,IVERSION,&
00487                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00488   ENDIF
00489 !
00490   IF (LDATA_ROOT_DEPTH) THEN
00491     ALLOCATE(XPAR_ROOT_DEPTH(NDIM,NVEGTYPE))
00492     YRECFM='D_ROOT_DEPTH'
00493     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_DEPTH(:,:),IRESP,IVERSION,&
00494                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00495   ENDIF
00496 !
00497   IF (LDATA_ROOT_EXTINCTION) THEN
00498     ALLOCATE(XPAR_ROOT_EXTINCTION(NDIM,NVEGTYPE))
00499     YRECFM='D_ROOT_EXT'
00500     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_EXTINCTION(:,:),IRESP,IVERSION,&
00501                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00502   ENDIF
00503 !
00504   IF (LDATA_ROOT_LIN) THEN
00505     ALLOCATE(XPAR_ROOT_LIN(NDIM,NVEGTYPE))
00506     YRECFM='D_ROOT_LIN'
00507     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ROOT_LIN(:,:),IRESP,IVERSION,&
00508                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00509   ENDIF
00510 !
00511   IF (LDATA_ALBNIR_VEG) THEN
00512     ALLOCATE(XPAR_ALBNIR_VEG(NDIM,NVEGTYPE))
00513     YRECFM='D_ALBNIR_VEG'
00514     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBNIR_VEG(:,:),IRESP,IVERSION,&
00515                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00516   ENDIF
00517 !
00518   IF (LDATA_ALBVIS_VEG) THEN
00519     ALLOCATE(XPAR_ALBVIS_VEG(NDIM,NVEGTYPE))
00520     YRECFM='D_ALBVIS_VEG'
00521     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBVIS_VEG(:,:),IRESP,IVERSION,&
00522                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00523   ENDIF
00524 !
00525   IF (LDATA_ALBUV_VEG) THEN
00526     ALLOCATE(XPAR_ALBUV_VEG (NDIM,NVEGTYPE))
00527     YRECFM='D_ALBUV_VEG'
00528     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBUV_VEG(:,:),IRESP,IVERSION,&
00529                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00530   ENDIF
00531 !
00532   IF (LDATA_ALBNIR_SOIL) THEN
00533     ALLOCATE(XPAR_ALBNIR_SOIL(NDIM,NVEGTYPE))
00534     YRECFM='D_ALBNIR_SOI'
00535     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBNIR_SOIL(:,:),IRESP,IVERSION,&
00536                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00537   ENDIF
00538 !
00539   IF (LDATA_ALBVIS_SOIL) THEN
00540     ALLOCATE(XPAR_ALBVIS_SOIL(NDIM,NVEGTYPE))
00541     YRECFM='D_ALBVIS_SOI'
00542     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBVIS_SOIL(:,:),IRESP,IVERSION,&
00543                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00544   ENDIF
00545 !
00546   IF (LDATA_ALBUV_SOIL) THEN
00547     ALLOCATE(XPAR_ALBUV_SOIL (NDIM,NVEGTYPE))
00548     YRECFM='D_ALBUV_SOI'
00549     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_ALBUV_SOIL(:,:),IRESP,IVERSION,&
00550                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00551   ENDIF
00552 !
00553   IF (LDATA_GMES) THEN
00554     ALLOCATE(XPAR_GMES      (NDIM,NVEGTYPE))
00555     YRECFM='D_GMES'
00556     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GMES(:,:),IRESP,IVERSION,&
00557                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00558   ENDIF
00559 !
00560   IF (LDATA_BSLAI) THEN
00561     ALLOCATE(XPAR_BSLAI     (NDIM,NVEGTYPE))
00562     YRECFM='D_BSLAI'
00563     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_BSLAI(:,:),IRESP,IVERSION,&
00564                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00565   ENDIF
00566 !
00567   IF (LDATA_LAIMIN) THEN
00568     ALLOCATE(XPAR_LAIMIN    (NDIM,NVEGTYPE))
00569     YRECFM='D_LAIMIN'
00570     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_LAIMIN(:,:),IRESP,IVERSION,&
00571                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00572   ENDIF
00573 !
00574   IF (LDATA_SEFOLD) THEN
00575     ALLOCATE(XPAR_SEFOLD    (NDIM,NVEGTYPE))
00576     YRECFM='D_SEFOLD'
00577     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_SEFOLD(:,:),IRESP,IVERSION,&
00578                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00579   ENDIF
00580 !
00581   IF (LDATA_GC) THEN
00582     ALLOCATE(XPAR_GC        (NDIM,NVEGTYPE))
00583     YRECFM='D_GC'
00584     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_GC(:,:),IRESP,IVERSION,&
00585                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00586   ENDIF
00587 !
00588   IF (LDATA_DMAX) THEN
00589     ALLOCATE(XPAR_DMAX      (NDIM,NVEGTYPE))
00590     YRECFM='D_DMAX'
00591     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_DMAX(:,:),IRESP,IVERSION,&
00592                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00593   ENDIF
00594 !
00595   IF (LDATA_F2I) THEN
00596     ALLOCATE(XPAR_F2I       (NDIM,NVEGTYPE))
00597     YRECFM='D_F2I'
00598     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_F2I(:,:),IRESP,IVERSION,&
00599                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00600   ENDIF
00601 !
00602   IF (LDATA_STRESS) THEN
00603     ALLOCATE(LPAR_STRESS   (NDIM,NVEGTYPE))
00604     ALLOCATE(ZWORK(SIZE(LPAR_STRESS,1),SIZE(LPAR_STRESS,2)))
00605     YRECFM='D_STRESS'
00606     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,ZWORK(:,:),IRESP,IVERSION,&
00607                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00608     LPAR_STRESS = .FALSE.
00609     WHERE(ZWORK==1.) LPAR_STRESS = .TRUE.
00610     DEALLOCATE(ZWORK)
00611   ENDIF
00612 !
00613   IF (LDATA_H_TREE) THEN
00614     ALLOCATE(XPAR_H_TREE    (NDIM,NVEGTYPE))
00615     YRECFM='D_H_TREE'
00616     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_H_TREE(:,:),IRESP,IVERSION,&
00617                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00618   ENDIF
00619 !
00620   IF (LDATA_RE25) THEN
00621     ALLOCATE(XPAR_RE25      (NDIM,NVEGTYPE))
00622     YRECFM='D_RE25'
00623     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_RE25(:,:),IRESP,IVERSION,&
00624                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00625   ENDIF
00626 !
00627   IF (LDATA_CE_NITRO) THEN
00628     ALLOCATE(XPAR_CE_NITRO  (NDIM,NVEGTYPE))
00629     YRECFM='D_CE_NITRO'
00630     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CE_NITRO(:,:),IRESP,IVERSION,&
00631                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00632   ENDIF
00633 !
00634   IF (LDATA_CF_NITRO) THEN
00635     ALLOCATE(XPAR_CF_NITRO  (NDIM,NVEGTYPE))
00636     YRECFM='D_CF_NITRO'
00637     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CF_NITRO(:,:),IRESP,IVERSION,&
00638                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00639   ENDIF
00640 !
00641   IF (LDATA_CNA_NITRO) THEN
00642     ALLOCATE(XPAR_CNA_NITRO (NDIM,NVEGTYPE))
00643     YRECFM='D_CNA_NITRO'
00644     CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_CNA_NITRO(:,:),IRESP,IVERSION,&
00645                               HCOMMENT=YCOMMENT,HDIR=YDIR)
00646   ENDIF
00647 !
00648   IF (LDATA_IRRIG) THEN
00649     ALLOCATE(XPAR_IRRIG     (NDIM,NTIME,NVEGTYPE))
00650     DO JTIME=1,ITIME
00651       WRITE(YRECFM,FMT='(A9,I2.2)') 'D_IRRIG_T',JTIME
00652         CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_IRRIG(:,JTIME,:),IRESP,IVERSION,&
00653                                   HCOMMENT=YCOMMENT,HDIR=YDIR)
00654     END DO
00655   ENDIF
00656 !
00657   IF (LDATA_WATSUP) THEN
00658     ALLOCATE(XPAR_WATSUP     (NDIM,NTIME,NVEGTYPE))
00659     DO JTIME=1,ITIME
00660       WRITE(YRECFM,FMT='(A10,I2.2)') 'D_WATSUP_T',JTIME
00661         CALL READ_SURF_ISBA_PAR_n(HPROGRAM,YRECFM,ILUOUT,KSIZE,XPAR_WATSUP(:,JTIME,:),IRESP,IVERSION,&
00662                                   HCOMMENT=YCOMMENT,HDIR=YDIR)
00663     END DO
00664   ENDIF
00665 !
00666 ENDIF
00667 !
00668 IF (LHOOK) CALL DR_HOOK('READ_PGD_ISBA_PAR_N',1,ZHOOK_HANDLE)
00669 !
00670 !-------------------------------------------------------------------------------
00671 !
00672 END SUBROUTINE READ_PGD_ISBA_PAR_n