Juan 13/01/2014: add header SURFEX_LIC to all SURFEX files
[MNH-git_open_source-lfs.git] / src / SURFEX / read_pgd_teb_garden_parn.F90
1 !SURFEX_LIC Copyright 1994-2014 Meteo-France 
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 !     #########
6       SUBROUTINE READ_PGD_TEB_GARDEN_PAR_n(HPROGRAM)
7 !     ################################################
8 !
9 !!****  *READ_PGD_TEB_GARDEN_PAR_n* - reads ISBA physiographic fields
10 !!                        
11 !!
12 !!    PURPOSE
13 !!    -------
14 !!
15 !!**  METHOD
16 !!    ------
17 !!
18 !!    EXTERNAL
19 !!    --------
20 !!
21 !!
22 !!    IMPLICIT ARGUMENTS
23 !!    ------------------
24 !!
25 !!    REFERENCE
26 !!    ---------
27 !!
28 !!
29 !!    AUTHOR
30 !!    ------
31 !!      V. Masson   *Meteo France*      
32 !!
33 !!    MODIFICATIONS
34 !!    -------------
35 !!      Original    01/2003 
36 !!      P. Le Moigne 12/2004 : add type of photosynthesis 
37 !-------------------------------------------------------------------------------
38 !
39 !*       0.    DECLARATIONS
40 !              ------------
41 !
42 USE MODD_CSTS,              ONLY : XDAY
43 USE MODD_SURF_PAR,          ONLY : XUNDEF
44 USE MODD_ISBA_PAR,          ONLY : XOPTIMGRID, NOPTIMLAYER
45 USE MODD_DATA_COVER_PAR,    ONLY : NVT_TREE, NVT_CONI, NVT_EVER, NVT_C3, &
46                                      NVT_C4, NVT_IRR, NVT_TROG, NVT_GRAS,  &
47                                      NVT_PARK, NVT_ROCK, NVT_NO, NVT_SNOW, &
48                                      NVEGTYPE  
49 USE MODD_TEB_GRID_n,        ONLY : NDIM
50 USE MODD_TEB_GARDEN_n,      ONLY : NGROUND_LAYER, CTYPE_HVEG, CTYPE_LVEG, CTYPE_NVEG,     &
51                                      XSAND, XCLAY  
52 USE MODD_DATA_TEB_GARDEN_n, ONLY : NTIME,                                                       &
53                                      XDATA_FRAC_HVEG, XDATA_FRAC_LVEG, XDATA_FRAC_NVEG,           &
54                                      XDATA_LAI_HVEG, XDATA_LAI_LVEG, XDATA_H_HVEG,                &
55                                      XDATA_VEG, XDATA_LAI,XDATA_RSMIN,XDATA_GAMMA,XDATA_WRMAX_CF, &
56                                      XDATA_RGL,XDATA_CV,XDATA_DG,XDATA_Z0,XDATA_Z0_O_Z0H,         &
57                                      XDATA_ALBNIR_VEG,XDATA_ALBVIS_VEG, XDATA_ALBUV_VEG,          &
58                                      XDATA_ALBNIR_SOIL,XDATA_ALBVIS_SOIL, XDATA_ALBUV_SOIL,       &
59                                      XDATA_ALBNIR_DRY,XDATA_ALBVIS_DRY, XDATA_ALBUV_DRY,          &
60                                      XDATA_ALBNIR_WET,XDATA_ALBVIS_WET, XDATA_ALBUV_WET,          &
61                                      XDATA_EMIS,XDATA_DICE,                                       &
62                                      XDATA_VEGTYPE,XDATA_ROOTFRAC,                                &
63                                      XDATA_GMES,XDATA_BSLAI,XDATA_LAIMIN,XDATA_SEFOLD,XDATA_GC,   &
64                                      XDATA_DMAX, XDATA_F2I, LDATA_STRESS, XDATA_H_TREE,XDATA_RE25,&
65                                      XDATA_CE_NITRO,XDATA_CF_NITRO,XDATA_CNA_NITRO  
66 !
67 USE MODI_READ_SURF
68 USE MODI_VEG_FROM_LAI
69 USE MODI_Z0V_FROM_LAI
70 USE MODI_EMIS_FROM_VEG
71 USE MODI_DRY_WET_SOIL_ALBEDOS
72 USE MODI_SOIL_ALBEDO
73 USE MODI_ABOR1_SFX
74 !
75 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
76 USE PARKIND1  ,ONLY : JPRB
77 !
78 IMPLICIT NONE
79 !
80 !*       0.1   Declarations of arguments
81 !              -------------------------
82 !
83  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling
84 !
85 !*       0.2   Declarations of local variables
86 !              -------------------------------
87 !
88 INTEGER                               :: IRESP          ! IRESP  : return-code if a problem appears
89  CHARACTER(LEN=12)                     :: YRECFM         ! Name of the article to be read
90  CHARACTER(LEN=100)                    :: YCOMMENT       ! Comment string
91 INTEGER                               :: JI, JLAYER     ! loop index
92 INTEGER                               :: JTIME          ! loop index
93 !
94 REAL, DIMENSION(NDIM,3)               :: ZDATA_RSMIN
95 REAL, DIMENSION(NDIM,3)               :: ZDATA_GAMMA
96 REAL, DIMENSION(NDIM,3)               :: ZDATA_WRMAX_CF
97 REAL, DIMENSION(NDIM,3)               :: ZDATA_RGL
98 REAL, DIMENSION(NDIM,3)               :: ZDATA_CV
99 REAL, DIMENSION(NDIM,NGROUND_LAYER,3) :: ZDATA_DG
100 REAL, DIMENSION(NDIM,3)               :: ZDATA_ALBNIR_VEG
101 REAL, DIMENSION(NDIM,3)               :: ZDATA_ALBVIS_VEG
102 REAL, DIMENSION(NDIM,3)               :: ZDATA_ALBUV_VEG
103 REAL, DIMENSION(NDIM,3)               :: ZDATA_GMES
104 REAL, DIMENSION(NDIM,3)               :: ZDATA_RE25
105 REAL, DIMENSION(NDIM,3)               :: ZDATA_BSLAI
106 REAL, DIMENSION(NDIM,3)               :: ZDATA_LAIMIN
107 REAL, DIMENSION(NDIM,3)               :: ZDATA_SEFOLD
108 REAL, DIMENSION(NDIM,3)               :: ZDATA_GC
109 REAL, DIMENSION(NDIM,3)               :: ZDATA_DMAX
110 REAL, DIMENSION(NDIM,3)               :: ZDATA_CE_NITRO
111 REAL, DIMENSION(NDIM,3)               :: ZDATA_CF_NITRO
112 REAL, DIMENSION(NDIM,3)               :: ZDATA_CNA_NITRO
113 !
114 REAL, DIMENSION(NDIM)                 :: ZDATA_WG1
115 REAL, DIMENSION(NDIM)                 :: ZDATA_WGSAT
116 REAL(KIND=JPRB) :: ZHOOK_HANDLE
117 !
118 !-------------------------------------------------------------------------------
119 !
120 !*       1.    Reading of PGD file
121 !              --------------------
122 !
123 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_GARDEN_PAR_N',0,ZHOOK_HANDLE)
124 NTIME= 12
125 !
126 ALLOCATE(XDATA_FRAC_HVEG (NDIM))
127 ALLOCATE(XDATA_FRAC_LVEG (NDIM))
128 ALLOCATE(XDATA_FRAC_NVEG (NDIM))
129 ALLOCATE(XDATA_LAI_HVEG  (NDIM,NTIME))
130 ALLOCATE(XDATA_LAI_LVEG  (NDIM,NTIME))
131 ALLOCATE(XDATA_H_HVEG    (NDIM))
132 !
133 ! Read type of high vegetation
134 YRECFM='D_TYPE_HVEG'
135  CALL READ_SURF(HPROGRAM,YRECFM,CTYPE_HVEG,IRESP,HCOMMENT=YCOMMENT)
136 !
137 ! Read type of low vegetation
138 YRECFM='D_TYPE_LVEG'
139  CALL READ_SURF(HPROGRAM,YRECFM,CTYPE_LVEG,IRESP,HCOMMENT=YCOMMENT)
140 !
141 ! Read type of bare soil (no vegetation)
142 YRECFM='D_TYPE_NVEG'
143  CALL READ_SURF(HPROGRAM,YRECFM,CTYPE_NVEG,IRESP,HCOMMENT=YCOMMENT)
144 !
145 ! Read fraction of high vegetation
146 YRECFM='D_FRAC_HVEG'
147  CALL READ_SURF(HPROGRAM,YRECFM,XDATA_FRAC_HVEG,IRESP,HCOMMENT=YCOMMENT)
148 !
149 ! Read fraction of low vegetation
150 YRECFM='D_FRAC_LVEG'
151  CALL READ_SURF(HPROGRAM,YRECFM,XDATA_FRAC_LVEG,IRESP,HCOMMENT=YCOMMENT)
152 !
153 ! Read fraction of bare soil (no vegetation)
154 YRECFM='D_FRAC_NVEG'
155  CALL READ_SURF(HPROGRAM,YRECFM,XDATA_FRAC_NVEG,IRESP,HCOMMENT=YCOMMENT)
156 !
157 ! Read height of trees( for high vegetation)
158 YRECFM='D_H_HVEG'
159  CALL READ_SURF(HPROGRAM,YRECFM,XDATA_H_HVEG,IRESP,HCOMMENT=YCOMMENT)
160 !
161 ! Read LAI of high vegetation
162 DO JTIME=1,NTIME
163   WRITE(YRECFM,FMT='(A10,I2.2)') 'D_LAI_HVEG',JTIME
164   CALL READ_SURF(HPROGRAM,YRECFM,XDATA_LAI_HVEG(:,JTIME),IRESP,HCOMMENT=YCOMMENT)
165   WRITE(YRECFM,FMT='(A10,I2.2)') 'D_LAI_LVEG',JTIME
166   CALL READ_SURF(HPROGRAM,YRECFM,XDATA_LAI_LVEG(:,JTIME),IRESP,HCOMMENT=YCOMMENT)
167 END DO
168 !
169 !-------------------------------------------------------------------------------
170 !
171 !*       2.    Definition of ISBA parameters
172 !              -----------------------------
173 !
174 ALLOCATE(XDATA_LAI        (NDIM,NTIME))
175 ALLOCATE(XDATA_VEG        (NDIM,NTIME))
176 ALLOCATE(XDATA_RSMIN      (NDIM))
177 ALLOCATE(XDATA_GAMMA      (NDIM))
178 ALLOCATE(XDATA_WRMAX_CF   (NDIM))
179 ALLOCATE(XDATA_RGL        (NDIM))
180 ALLOCATE(XDATA_CV         (NDIM))
181 ALLOCATE(XDATA_DG         (NDIM,NGROUND_LAYER))
182 ALLOCATE(XDATA_ROOTFRAC   (NDIM,NGROUND_LAYER))
183 ALLOCATE(XDATA_DICE       (NDIM))
184 ALLOCATE(XDATA_Z0         (NDIM,NTIME))
185 ALLOCATE(XDATA_Z0_O_Z0H   (NDIM))
186 ALLOCATE(XDATA_ALBNIR_VEG (NDIM))
187 ALLOCATE(XDATA_ALBVIS_VEG (NDIM))
188 ALLOCATE(XDATA_ALBUV_VEG  (NDIM))
189 ALLOCATE(XDATA_ALBNIR_SOIL(NDIM))
190 ALLOCATE(XDATA_ALBVIS_SOIL(NDIM))
191 ALLOCATE(XDATA_ALBUV_SOIL (NDIM))
192 ALLOCATE(XDATA_ALBNIR_DRY (NDIM))
193 ALLOCATE(XDATA_ALBVIS_DRY (NDIM))
194 ALLOCATE(XDATA_ALBUV_DRY  (NDIM))
195 ALLOCATE(XDATA_ALBNIR_WET (NDIM))
196 ALLOCATE(XDATA_ALBVIS_WET (NDIM))
197 ALLOCATE(XDATA_ALBUV_WET  (NDIM))
198 ALLOCATE(XDATA_EMIS       (NDIM,NTIME))
199 ALLOCATE(XDATA_VEGTYPE    (NDIM,NVEGTYPE))
200 ALLOCATE(XDATA_GMES       (NDIM))
201 ALLOCATE(XDATA_RE25       (NDIM))
202 ALLOCATE(XDATA_BSLAI      (NDIM))
203 ALLOCATE(XDATA_LAIMIN     (NDIM))
204 ALLOCATE(XDATA_SEFOLD     (NDIM))
205 ALLOCATE(XDATA_GC         (NDIM))
206 ALLOCATE(XDATA_DMAX       (NDIM))
207 ALLOCATE(XDATA_F2I        (NDIM))
208 ALLOCATE(LDATA_STRESS     (NDIM))
209 ALLOCATE(XDATA_H_TREE     (NDIM))
210 ALLOCATE(XDATA_CE_NITRO   (NDIM))
211 ALLOCATE(XDATA_CF_NITRO   (NDIM))
212 ALLOCATE(XDATA_CNA_NITRO  (NDIM))
213 !
214 XDATA_LAI        (:,:) = XUNDEF
215 XDATA_VEG        (:,:) = XUNDEF
216 XDATA_RSMIN        (:) = XUNDEF
217 XDATA_GAMMA        (:) = XUNDEF
218 XDATA_WRMAX_CF     (:) = XUNDEF
219 XDATA_RGL          (:) = XUNDEF
220 XDATA_CV           (:) = XUNDEF
221 XDATA_DG         (:,:) = XUNDEF
222 XDATA_DICE       (:)   = XUNDEF
223 XDATA_ROOTFRAC   (:,:) = XUNDEF
224 XDATA_Z0         (:,:) = XUNDEF
225 XDATA_Z0_O_Z0H     (:) = XUNDEF
226 XDATA_ALBNIR_VEG   (:) = XUNDEF
227 XDATA_ALBVIS_VEG   (:) = XUNDEF
228 XDATA_ALBUV_VEG    (:) = XUNDEF
229 XDATA_ALBNIR_SOIL  (:) = XUNDEF
230 XDATA_ALBVIS_SOIL  (:) = XUNDEF
231 XDATA_ALBUV_SOIL   (:) = XUNDEF
232 XDATA_ALBNIR_DRY   (:) = XUNDEF
233 XDATA_ALBVIS_DRY   (:) = XUNDEF
234 XDATA_ALBUV_DRY    (:) = XUNDEF
235 XDATA_ALBNIR_WET   (:) = XUNDEF
236 XDATA_ALBVIS_WET   (:) = XUNDEF
237 XDATA_ALBUV_WET    (:) = XUNDEF
238 XDATA_EMIS       (:,:) = XUNDEF
239 XDATA_VEGTYPE    (:,:) = XUNDEF
240 XDATA_GMES         (:) = XUNDEF
241 XDATA_RE25         (:) = XUNDEF
242 XDATA_BSLAI        (:) = XUNDEF
243 XDATA_LAIMIN       (:) = XUNDEF
244 XDATA_SEFOLD       (:) = XUNDEF
245 XDATA_GC           (:) = XUNDEF
246 XDATA_DMAX         (:) = XUNDEF
247 XDATA_F2I          (:) = XUNDEF
248 LDATA_STRESS       (:) = .FALSE.
249 XDATA_H_TREE       (:) = XUNDEF
250 XDATA_CE_NITRO     (:) = XUNDEF
251 XDATA_CF_NITRO     (:) = XUNDEF
252 XDATA_CNA_NITRO    (:) = XUNDEF
253 !
254 ! Vegtypes
255 XDATA_VEGTYPE(:,:) = 0.
256 IF (CTYPE_NVEG == 'NO  ') XDATA_VEGTYPE(:, NVT_NO  ) = XDATA_FRAC_NVEG(:)
257 IF (CTYPE_NVEG == 'ROCK') XDATA_VEGTYPE(:, NVT_ROCK) = XDATA_FRAC_NVEG(:)
258 IF (CTYPE_NVEG == 'SNOW') XDATA_VEGTYPE(:, NVT_SNOW) = XDATA_FRAC_NVEG(:)
259 IF (CTYPE_HVEG == 'TREE') XDATA_VEGTYPE(:, NVT_TREE) = XDATA_FRAC_HVEG(:)
260 IF (CTYPE_HVEG == 'CONI') XDATA_VEGTYPE(:, NVT_CONI) = XDATA_FRAC_HVEG(:)
261 IF (CTYPE_HVEG == 'EVER') XDATA_VEGTYPE(:, NVT_EVER) = XDATA_FRAC_HVEG(:)
262 IF (CTYPE_LVEG == 'C3  ') XDATA_VEGTYPE(:, NVT_C3  ) = XDATA_FRAC_LVEG(:)
263 IF (CTYPE_LVEG == 'C4  ') XDATA_VEGTYPE(:, NVT_C4  ) = XDATA_FRAC_LVEG(:)
264 IF (CTYPE_LVEG == 'IRR ') XDATA_VEGTYPE(:, NVT_IRR)  = XDATA_FRAC_LVEG(:)
265 IF (CTYPE_LVEG == 'GRAS') XDATA_VEGTYPE(:, NVT_GRAS) = XDATA_FRAC_LVEG(:)
266 IF (CTYPE_LVEG == 'TROG') XDATA_VEGTYPE(:, NVT_TROG) = XDATA_FRAC_LVEG(:)
267 IF (CTYPE_LVEG == 'PARK') XDATA_VEGTYPE(:, NVT_PARK) = XDATA_FRAC_LVEG(:)
268 !
269 !
270 ! Dry/Wet soil albedo
271  CALL DRY_WET_SOIL_ALBEDOS(XSAND(:,1),XCLAY(:,1),                             &
272                           XDATA_VEGTYPE,                                     &
273                           XDATA_ALBNIR_DRY,XDATA_ALBVIS_DRY,XDATA_ALBUV_DRY, &
274                           XDATA_ALBNIR_WET,XDATA_ALBVIS_WET,XDATA_ALBUV_WET  )  
275 !
276 ! Height of trees
277 XDATA_H_TREE  (:) = XDATA_H_HVEG(:)
278 !
279 ! Critical normilized soil water content for stress parameterisation
280 XDATA_F2I     (:) = 0.3
281 !
282 ! Ratio between roughness length for momentum and heat
283 XDATA_Z0_O_Z0H(:) = 10.
284 !
285 ! Defensive/offensive strategy (1/0)
286 LDATA_STRESS  (:) = .FALSE. 
287 !
288 DO JI=1,NDIM
289 !
290 ! Near-IR, visible, and UV albedo (vegetation only)
291 !
292  ZDATA_ALBNIR_VEG(JI,:)= 0.30
293  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_ALBNIR_VEG(JI,1)= 0.25
294  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_ALBNIR_VEG(JI,1)= 0.15
295  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_ALBNIR_VEG(JI,1)= 0.21
296
297  ZDATA_ALBVIS_VEG(JI,:)= 0.10
298  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_ALBVIS_VEG(JI,1)= 0.05
299  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_ALBVIS_VEG(JI,1)= 0.05
300  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_ALBVIS_VEG(JI,1)= 0.05
301
302  ZDATA_ALBUV_VEG (JI,:)= 0.06
303  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_ALBUV_VEG(JI,1)= 0.0525
304  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_ALBUV_VEG(JI,1)= 0.0425
305  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_ALBUV_VEG(JI,1)= 0.0380
306  IF(XDATA_VEGTYPE(JI,NVT_GRAS)>0. )  ZDATA_ALBUV_VEG(JI,2)= 0.0800
307  IF(XDATA_VEGTYPE(JI,NVT_TROG)>0. )  ZDATA_ALBUV_VEG(JI,2)= 0.1250
308  IF(XDATA_VEGTYPE(JI,NVT_IRR )>0. )  ZDATA_ALBUV_VEG(JI,2)= 0.0450
309  IF(XDATA_VEGTYPE(JI,NVT_PARK)>0. )  ZDATA_ALBUV_VEG(JI,2)= 0.0450
310  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.) THEN
311   XDATA_ALBNIR_VEG(JI) =  ( ZDATA_ALBNIR_VEG(JI,1)*XDATA_FRAC_HVEG(JI)   &
312                             + ZDATA_ALBNIR_VEG(JI,2)*XDATA_FRAC_LVEG(JI) ) &
313                           / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)    )  
314 !
315   XDATA_ALBVIS_VEG(JI) =  ( ZDATA_ALBVIS_VEG(JI,1)*XDATA_FRAC_HVEG(JI)   &
316                             + ZDATA_ALBVIS_VEG(JI,2)*XDATA_FRAC_LVEG(JI) ) &
317                           / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)    )  
318
319   XDATA_ALBUV_VEG (JI) =  ( ZDATA_ALBUV_VEG (JI,1)*XDATA_FRAC_HVEG(JI)   &
320                             + ZDATA_ALBUV_VEG (JI,2)*XDATA_FRAC_LVEG(JI) ) &
321                           / ( XDATA_FRAC_HVEG (JI)+XDATA_FRAC_LVEG(JI)   )  
322  ENDIF
323 !
324 ! Soil albedo
325  ZDATA_WGSAT(:) = 0.
326  ZDATA_WG1  (:) = 0.
327  CALL SOIL_ALBEDO('DRY',                                               &
328                     ZDATA_WGSAT, ZDATA_WG1,                              &
329                     XDATA_ALBVIS_DRY, XDATA_ALBNIR_DRY, XDATA_ALBUV_DRY, &
330                     XDATA_ALBVIS_WET, XDATA_ALBNIR_WET, XDATA_ALBUV_WET, &
331                     XDATA_ALBVIS_SOIL,XDATA_ALBNIR_SOIL,XDATA_ALBUV_SOIL )  
332 !
333 ! Min stomatal resistance
334  ZDATA_RSMIN(JI,:)= 40.
335  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_RSMIN(JI,1)= 150.
336  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_RSMIN(JI,1)= 150.
337  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_RSMIN(JI,1)= 250.
338  IF(XDATA_VEGTYPE(JI,NVT_TROG)>0. )  ZDATA_RSMIN(JI,2)= 120.
339  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_RSMIN(JI,2)= 120.
340  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)              &
341     XDATA_RSMIN(JI) =  ( ZDATA_RSMIN(JI,1)*XDATA_FRAC_HVEG(JI)     &
342                        + ZDATA_RSMIN(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
343                      / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
344 !
345 ! Gamma parameter
346  ZDATA_GAMMA(JI,:)= 0.
347  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_GAMMA(JI,1)= 0.04
348  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_GAMMA(JI,1)= 0.04
349  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_GAMMA(JI,1)= 0.04
350  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)              &
351     XDATA_GAMMA(JI) =  ( ZDATA_GAMMA(JI,1)*XDATA_FRAC_HVEG(JI)     &
352                        + ZDATA_GAMMA(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
353                      / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
354 !
355 ! Wrmax_cf
356  ZDATA_WRMAX_CF(JI,:)= 0.2
357  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_WRMAX_CF(JI,1)= 0.1
358  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_WRMAX_CF(JI,1)= 0.1
359  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_WRMAX_CF(JI,1)= 0.1
360  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                    &
361     XDATA_WRMAX_CF(JI) =  ( ZDATA_WRMAX_CF(JI,1)*XDATA_FRAC_HVEG(JI)     &
362                           + ZDATA_WRMAX_CF(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
363                         / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)    )  
364 !
365 ! Rgl
366  ZDATA_RGL(JI,:)= 100.
367  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_RGL(JI,1)= 30.
368  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_RGL(JI,1)= 30.
369  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_RGL(JI,1)= 30.
370  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)            &
371     XDATA_RGL(JI) =  ( ZDATA_RGL(JI,1)*XDATA_FRAC_HVEG(JI)       &
372                      + ZDATA_RGL(JI,2)*XDATA_FRAC_LVEG(JI)     ) &
373                    / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
374 !
375 ! Cv
376  ZDATA_CV(JI,:)= 2.E-5
377  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_CV(JI,1)= 1.E-5
378  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_CV(JI,1)= 1.E-5
379  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_CV(JI,1)= 1.E-5
380  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)           &
381     XDATA_CV(JI) =  ( ZDATA_CV(JI,1)*XDATA_FRAC_HVEG(JI)        &
382                     + ZDATA_CV(JI,2)*XDATA_FRAC_LVEG(JI)      ) &
383                   / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
384 !
385 ! Mesophyll conductance (m s-1)
386  ZDATA_GMES(JI,:)=0.020
387  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_GMES(JI,1)= 0.001
388  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_GMES(JI,1)= 0.001
389  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_GMES(JI,1)= 0.001
390  IF(XDATA_VEGTYPE(JI,NVT_C3  )>0. )  ZDATA_GMES(JI,2)= 0.003
391  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_GMES(JI,2)= 0.003
392  IF(XDATA_VEGTYPE(JI,NVT_IRR )>0. )  ZDATA_GMES(JI,2)= 0.003
393  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)             &
394     XDATA_GMES(JI) =  ( ZDATA_GMES(JI,1)*XDATA_FRAC_HVEG(JI)      &
395                       + ZDATA_GMES(JI,2)*XDATA_FRAC_LVEG(JI)    ) &
396                     / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
397 !
398 ! Ecosystem Respiration (kg/kg.m.s-1)
399  ZDATA_RE25(JI,:)= 3.0E-7  
400  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_RE25(JI,1)= 1.5E-7
401  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_RE25(JI,2)= 2.5E-7
402  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)             &
403     XDATA_RE25(JI) =  ( ZDATA_RE25(JI,1)*XDATA_FRAC_HVEG(JI)      &
404                       + ZDATA_RE25(JI,2)*XDATA_FRAC_LVEG(JI)    ) &
405                     / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
406 !
407 ! Cuticular conductance (m s-1)
408  ZDATA_GC(JI,:)=0.00025
409  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_GC(JI,1)= 0.00015
410  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_GC(JI,1)= 0.
411  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_GC(JI,1)= 0.00015        
412  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)           &
413     XDATA_GC(JI) =  ( ZDATA_GC(JI,1)*XDATA_FRAC_HVEG(JI)        &
414                     + ZDATA_GC(JI,2)*XDATA_FRAC_LVEG(JI)      ) &
415                   / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
416 !
417 ! Ratio d(biomass)/d(lai) (kg/m2)
418  ZDATA_BSLAI(JI,:)=0.36 
419  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_BSLAI(JI,1)= 0.25
420  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_BSLAI(JI,1)= 0.25
421  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_BSLAI(JI,1)= 0.25
422  IF(XDATA_VEGTYPE(JI,NVT_C3  )>0. )  ZDATA_BSLAI(JI,2)= 0.06
423  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_BSLAI(JI,2)= 0.06
424  IF(XDATA_VEGTYPE(JI,NVT_IRR )>0. )  ZDATA_BSLAI(JI,2)= 0.06
425  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)              &
426     XDATA_BSLAI(JI) =  ( ZDATA_BSLAI(JI,1)*XDATA_FRAC_HVEG(JI)     &
427                        + ZDATA_BSLAI(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
428                      / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
429 !
430 ! Maximum air saturation deficit tolerate by vegetation (kg/kg)
431  ZDATA_DMAX(JI,:) = 0.1
432  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_DMAX(JI,1)= 0.1
433  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_DMAX(JI,1)= 0.1
434  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_DMAX(JI,1)= 0.1
435  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)             &
436     XDATA_DMAX(JI) =  ( ZDATA_DMAX(JI,1)*XDATA_FRAC_HVEG(JI)      &
437                       + ZDATA_DMAX(JI,2)*XDATA_FRAC_LVEG(JI)    ) &
438                     / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) )  
439 !
440 ! e-folding time for senescence (days)
441  ZDATA_SEFOLD(JI,:)=90. * XDAY
442  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_SEFOLD(JI,1)= 365.* XDAY
443  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_SEFOLD(JI,1)= 365.* XDAY
444  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_SEFOLD(JI,1)= 365.* XDAY
445  IF(XDATA_VEGTYPE(JI,NVT_C3  )>0. )  ZDATA_SEFOLD(JI,2)=  60.* XDAY
446  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_SEFOLD(JI,2)=  60.* XDAY
447  IF(XDATA_VEGTYPE(JI,NVT_IRR )>0. )  ZDATA_SEFOLD(JI,2)=  60.* XDAY
448  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                &
449     XDATA_SEFOLD(JI) =  ( ZDATA_SEFOLD(JI,1)*XDATA_FRAC_HVEG(JI)     &
450                         + ZDATA_SEFOLD(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
451                       / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)  )  
452 !
453 ! Minimum LAI (m2/m2)
454  ZDATA_LAIMIN (JI,:) = 0.3
455  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_LAIMIN (JI,1) = 1.0
456  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_LAIMIN (JI,1) = 1.0
457  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                &
458     XDATA_LAIMIN(JI) =  ( ZDATA_LAIMIN(JI,1)*XDATA_FRAC_HVEG(JI)     &
459                         + ZDATA_LAIMIN(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
460                       / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)  )  
461 !
462 ! Leaf aera ratio sensitivity to nitrogen concentration
463  ZDATA_CE_NITRO(JI,:)=7.68
464  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_CE_NITRO(JI,1)= 4.83
465  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_CE_NITRO(JI,1)= 4.85
466  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_CE_NITRO(JI,1)= 4.83
467  IF(XDATA_VEGTYPE(JI,NVT_C3  )>0. )  ZDATA_CE_NITRO(JI,2)= 3.79
468  IF(XDATA_VEGTYPE(JI,NVT_GRAS)>0. )  ZDATA_CE_NITRO(JI,2)= 5.56
469  IF(XDATA_VEGTYPE(JI,NVT_PARK)>0. )  ZDATA_CE_NITRO(JI,2)= 5.56
470  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                    &
471     XDATA_CE_NITRO(JI) =  ( ZDATA_CE_NITRO(JI,1)*XDATA_FRAC_HVEG(JI)     &
472                           + ZDATA_CE_NITRO(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
473                         / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)    )  
474 !
475 ! Lethal minimum value of leaf area ratio
476  ZDATA_CF_NITRO(JI,:)=-4.33
477  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_CF_NITRO(JI,1)=  2.53
478  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_CF_NITRO(JI,1)= -0.24
479  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_CF_NITRO(JI,1)=  2.53
480  IF(XDATA_VEGTYPE(JI,NVT_C3  )>0. )  ZDATA_CF_NITRO(JI,2)=  9.84
481  IF(XDATA_VEGTYPE(JI,NVT_GRAS)>0. )  ZDATA_CF_NITRO(JI,2)=  6.73
482  IF(XDATA_VEGTYPE(JI,NVT_PARK)>0. )  ZDATA_CF_NITRO(JI,2)=  6.73
483  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                    &
484     XDATA_CF_NITRO(JI) =  ( ZDATA_CF_NITRO(JI,1)*XDATA_FRAC_HVEG(JI)     &
485                           + ZDATA_CF_NITRO(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
486                         / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)    )  
487 !
488 ! Nitrogen concentration of active biomass
489  ZDATA_CNA_NITRO(JI,:)=1.3
490  IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_CNA_NITRO(JI,1)= 2.8
491  IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_CNA_NITRO(JI,1)= 2.0
492  IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_CNA_NITRO(JI,1)= 2.5
493  IF(XDATA_VEGTYPE(JI,NVT_C4  )>0. )  ZDATA_CNA_NITRO(JI,2)= 1.9
494  IF(XDATA_VEGTYPE(JI,NVT_IRR )>0. )  ZDATA_CNA_NITRO(JI,2)= 1.9
495  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                      &
496     XDATA_CNA_NITRO(JI) =  ( ZDATA_CNA_NITRO(JI,1)*XDATA_FRAC_HVEG(JI)     &
497                            + ZDATA_CNA_NITRO(JI,2)*XDATA_FRAC_LVEG(JI)   ) &
498                          / ( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI)     )  
499 !
500 ! Ground layers
501  IF (NGROUND_LAYER<=3) THEN
502    ZDATA_DG(JI,1,:) = 0.01
503    ZDATA_DG(JI,2,:) = 1.50
504    IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_DG(JI,2,1)= 2.0
505    IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_DG(JI,2,1)= 2.0
506    IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_DG(JI,2,1)= 2.0
507    IF(XDATA_VEGTYPE(JI,NVT_NO  )>0. )  ZDATA_DG(JI,2,3)= 0.5
508    IF(XDATA_VEGTYPE(JI,NVT_ROCK)>0. )  ZDATA_DG(JI,2,3)= 0.5
509    IF(XDATA_VEGTYPE(JI,NVT_SNOW)>0. )  ZDATA_DG(JI,2,3)= 0.5   
510    IF (NGROUND_LAYER==3) THEN
511      ZDATA_DG(JI,3,:) = 2.00
512      IF(XDATA_VEGTYPE(JI,NVT_TREE)>0. )  ZDATA_DG(JI,3,1)= 3.0
513      IF(XDATA_VEGTYPE(JI,NVT_CONI)>0. )  ZDATA_DG(JI,3,1)= 3.0
514      IF(XDATA_VEGTYPE(JI,NVT_EVER)>0. )  ZDATA_DG(JI,3,1)= 3.0
515      IF(XDATA_VEGTYPE(JI,NVT_NO  )>0. )  ZDATA_DG(JI,3,3)= 1.0
516      IF(XDATA_VEGTYPE(JI,NVT_ROCK)>0. )  ZDATA_DG(JI,3,3)= 1.0
517      IF(XDATA_VEGTYPE(JI,NVT_SNOW)>0. )  ZDATA_DG(JI,3,3)= 1.0
518    ENDIF                       
519    XDATA_DG(JI,:) =    ZDATA_DG(JI,:,1)*XDATA_FRAC_HVEG(JI)   &
520                      + ZDATA_DG(JI,:,2)*XDATA_FRAC_LVEG(JI)   &
521                      + ZDATA_DG(JI,:,3)*XDATA_FRAC_NVEG(JI)  
522  ELSEIF (NGROUND_LAYER<=NOPTIMLAYER) THEN
523    XDATA_DG(JI,:) = XOPTIMGRID(:)
524  ELSE
525    CALL ABOR1_SFX("READ_PGD_TEB_GARDEN_PAR: WITH MORE THAN 14 SOIL LAYERS, "//&
526      "WITHOUT ECOCLIMAP, GARDEN CANNOT RUN")
527  ENDIF 
528 !
529 ! Root fractions
530  XDATA_ROOTFRAC(JI,NGROUND_LAYER) = 1.
531  XDATA_ROOTFRAC(JI,1) = 0.20
532  IF (NGROUND_LAYER>2) THEN
533    DO JLAYER = NGROUND_LAYER-1,2,-1
534      XDATA_ROOTFRAC(JI,JLAYER) = XDATA_ROOTFRAC(JI,JLAYER+1)-0.8/(NGROUND_LAYER-1)
535    ENDDO
536  ENDIF
537 !
538  XDATA_DICE(JI) = XDATA_DG(JI,2)
539
540  DO JTIME=1,NTIME
541 ! Leaf Area Index
542  IF (XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI) .GT. 0.)                           &
543      XDATA_LAI     (JI,JTIME) = ( XDATA_LAI_HVEG(JI,JTIME)*XDATA_FRAC_HVEG(JI)  &
544                                 + XDATA_LAI_LVEG(JI,JTIME)*XDATA_FRAC_LVEG(JI)) &
545                                /( XDATA_FRAC_HVEG(JI)+XDATA_FRAC_LVEG(JI))  
546 ! Fraction of vegetation
547   XDATA_VEG     (JI,JTIME) = VEG_FROM_LAI  (XDATA_LAI    (JI,JTIME),       &
548                                             XDATA_VEGTYPE(JI,:))  
549 ! Roughness length for momentum
550   XDATA_Z0      (JI,JTIME) = Z0V_FROM_LAI  (XDATA_LAI    (JI,JTIME),       &
551                                             XDATA_H_TREE (JI),           &
552                                             XDATA_VEGTYPE(JI,:))  
553 ! Emissivity
554   XDATA_EMIS    (JI,JTIME) = EMIS_FROM_VEG (XDATA_VEG    (JI,JTIME),       &
555                                             XDATA_VEGTYPE(JI,:))  
556  END DO
557 !
558 ENDDO
559 IF (LHOOK) CALL DR_HOOK('READ_PGD_TEB_GARDEN_PAR_N',1,ZHOOK_HANDLE)
560 !
561 !-------------------------------------------------------------------------------
562 !
563 END SUBROUTINE READ_PGD_TEB_GARDEN_PAR_n