7 KDECADE,KDECADE2,PCOVER,OCOVER,HSFTYPE)
57 USE modd_data_cover_par
, ONLY : nvegtype, nvegtype_old, nvegtype_ecosg
64 USE modi_ini_data_param
78 INTEGER,
INTENT(IN) :: KDIM
81 INTEGER,
INTENT(IN) :: KDECADE
82 INTEGER,
INTENT(OUT) :: KDECADE2
83 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOVER
84 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OCOVER
85 CHARACTER(LEN=*),
INTENT(IN) :: HSFTYPE
91 TYPE(
date_time),
DIMENSION(:,:),
ALLOCATABLE :: TPWORK
92 REAL,
DIMENSION(NVEGTYPE) :: XSTRESS
93 REAL,
DIMENSION(NVEGTYPE) :: XSTRESS_NOAGRI
95 CHARACTER(LEN=3) :: YTREE, YNAT, YVEG
97 INTEGER :: JVEG, JT, ji
99 INTEGER :: ISIZE_LMEB_PATCH
104 REAL(KIND=JPRB) :: ZHOOK_HANDLE
111 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_MIXPAR',0,zhook_handle)
113 IF (nvegtype==nvegtype_ecosg)
THEN 114 xstress = (/1.,1.,1.,0.,0.,0.,0.,0.,1.,1.,1.,0.,0.,0.,0.,1.,1.,
117 xstress = (/1.,1.,1.,0.,1.,0.,1.,0.,1.,0.,0.,0.,0.,0.,1.,0.,1.,
121 isize_lmeb_patch=
count(io%LMEB_PATCH(:))
123 IF (.NOT.dtv%LDATA_MIXPAR)
THEN 124 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_MIXPAR',1,zhook_handle)
128 IF (hsftype==
'NAT')
THEN 132 ELSEIF (hsftype==
'GRD')
THEN 139 IF (dtv%NTIME==2) kdecade2 = kdecade2 + 10
140 kdecade2 = (kdecade2-1) * dtv%NTIME / 36 + 1
141 IF (dtv%NTIME==2 .AND. kdecade2==3) kdecade2 = 1
147 IF (.NOT.dtv%LDATA_VEGTYPE)
THEN 148 ALLOCATE(dtv%XPAR_VEGTYPE (kdim,nvegtype))
150 CALL av_pgd(dtco,dtv%XPAR_VEGTYPE(:,jveg),pcover ,dtco%XDATA_VEGTYPE
'ARI' 156 IF (.NOT.any(dtv%LDATA_LAI))
THEN 157 ALLOCATE(dtv%XPAR_LAI(kdim,dtv%NTIME,nvegtype))
158 CALL av_pgd(dtco,dtv%XPAR_LAI(:,kdecade2,:),pcover,
xdata_lai(:,kdecade
'ARI' 162 IF (.NOT.any(dtv%LDATA_VEG))
THEN 163 ALLOCATE(dtv%XPAR_VEG(kdim,dtv%NTIME,nvegtype))
164 IF (any(dtv%LDATA_LAI))
THEN 165 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,plai=dtv%XPAR_LAI
168 CALL av_pgd(dtco,dtv%XPAR_VEG(:,kdecade2,:),pcover,
xdata_veg(:,kdecade
'ARI' 173 IF (.NOT.any(dtv%LDATA_H_TREE) .AND. .NOT.any(dtv%LDATA_Z0) .AND. any(dtv%LDATA_LAI
THEN 174 ALLOCATE(dtv%XPAR_H_TREE(kdim,nvegtype))
181 IF (.NOT.any(dtv%LDATA_ROOTFRAC) .AND. io%CISBA==
'DIF' .AND. any(dtv%LDATA_ROOT_DEPTH
THEN 183 IF (.NOT.any(dtv%LDATA_ROOT_EXTINCTION))
THEN 184 ALLOCATE(dtv%XPAR_ROOT_EXTINCTION(kdim,nvegtype))
185 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,proot_extinction
189 IF (.NOT.any(dtv%LDATA_ROOT_LIN))
THEN 190 ALLOCATE(dtv%XPAR_ROOT_LIN(kdim,nvegtype))
191 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,proot_lin=dtv%XPAR_ROOT_LIN
198 IF (any(dtv%LDATA_DG) .AND. .NOT.any(dtv%LDATA_DICE))
THEN 200 ALLOCATE(dtv%XPAR_DICE(kdim,nvegtype))
202 IF(io%CISBA/=
'DIF')
THEN 203 dtv%XPAR_DICE(:,:)=max(0.2,0.8*dtv%XPAR_DG(:,2,:))
204 dtv%LDATA_DICE(:)=.true.
213 IF (.NOT.any(dtv%LDATA_EMIS) .AND. any(dtv%LDATA_VEG))
THEN 214 ALLOCATE(dtv%XPAR_EMIS(kdim,dtv%NTIME,nvegtype))
215 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pveg_in=dtv%XPAR_VEG
219 IF (.NOT.any(dtv%LDATA_Z0) .AND. (any(dtv%LDATA_LAI) .OR.any(dtv%LDATA_H_TREE
THEN 220 ALLOCATE(dtv%XPAR_Z0(kdim,dtv%NTIME,nvegtype))
221 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,plai=dtv%XPAR_LAI
226 IF (any(dtv%LDATA_LAI))
THEN 227 IF (.NOT.any(dtv%LDATA_RSMIN))
THEN 228 ALLOCATE(dtv%XPAR_RSMIN(kdim,nvegtype))
229 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,prsmin=dtv%XPAR_RSMIN
231 dtv%LDATA_RSMIN(:)=.true.
235 IF (any(dtv%LDATA_VEG))
THEN 237 IF (.NOT.any(dtv%LDATA_GAMMA))
ALLOCATE(dtv%XPAR_GAMMA (kdim,nvegtype
238 IF (.NOT.any(dtv%LDATA_WRMAX_CF))
ALLOCATE(dtv%XPAR_WRMAX_CF (kdim,nvegtype
239 IF (.NOT.any(dtv%LDATA_RGL))
ALLOCATE(dtv%XPAR_RGL (kdim,nvegtype
240 IF (.NOT.any(dtv%LDATA_CV))
ALLOCATE(dtv%XPAR_CV (kdim,nvegtype
241 IF (.NOT.any(dtv%LDATA_ALBNIR_VEG))
ALLOCATE(dtv%XPAR_ALBNIR_VEG(kdim,dtv%NTIME
242 IF (.NOT.any(dtv%LDATA_ALBVIS_VEG))
ALLOCATE(dtv%XPAR_ALBVIS_VEG(kdim,dtv%NTIME
243 IF (.NOT.any(dtv%LDATA_ALBUV_VEG))
ALLOCATE(dtv%XPAR_ALBUV_VEG (kdim,dtv%NTIME
244 IF (.NOT.any(dtv%LDATA_GMES))
ALLOCATE(dtv%XPAR_GMES (kdim,nvegtype
245 IF (.NOT.any(dtv%LDATA_BSLAI))
ALLOCATE(dtv%XPAR_BSLAI (kdim,nvegtype
246 IF (.NOT.any(dtv%LDATA_SEFOLD))
ALLOCATE(dtv%XPAR_SEFOLD (kdim,nvegtype
247 IF (.NOT.any(dtv%LDATA_GC))
ALLOCATE(dtv%XPAR_GC (kdim,nvegtype
248 IF (.NOT.any(dtv%LDATA_LAIMIN))
ALLOCATE(dtv%XPAR_LAIMIN (kdim,nvegtype
249 IF (.NOT.any(dtv%LDATA_F2I))
ALLOCATE(dtv%XPAR_F2I (kdim,nvegtype
250 IF (.NOT.any(dtv%LDATA_CE_NITRO))
ALLOCATE(dtv%XPAR_CE_NITRO (kdim,nvegtype
251 IF (.NOT.any(dtv%LDATA_CF_NITRO))
ALLOCATE(dtv%XPAR_CF_NITRO (kdim,nvegtype
252 IF (.NOT.any(dtv%LDATA_CNA_NITRO))
ALLOCATE(dtv%XPAR_CNA_NITRO (kdim,nvegtype
254 IF (.NOT.any(dtv%LDATA_GAMMA)) &
255 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgamma=dtv%XPAR_GAMMA
256 IF (.NOT.any(dtv%LDATA_WRMAX_CF)) &
258 IF (.NOT.any(dtv%LDATA_RGL)) &
259 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,prgl=dtv%XPAR_RGL
260 IF (.NOT.any(dtv%LDATA_CV)) &
261 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pcv=dtv%XPAR_CV
262 IF (.NOT.any(dtv%LDATA_ALBNIR_VEG))
THEN 263 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,palbnir_veg=dtv%XPAR_ALBNIR_VEG
265 dtv%XPAR_ALBNIR_VEG(:,jt,:) = dtv%XPAR_ALBNIR_VEG(:,1,:)
268 IF (.NOT.any(dtv%LDATA_ALBVIS_VEG))
THEN 269 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,palbvis_veg=dtv%XPAR_ALBVIS_VEG
271 dtv%XPAR_ALBVIS_VEG(:,jt,:) = dtv%XPAR_ALBVIS_VEG(:,1,:)
274 IF (.NOT.any(dtv%LDATA_ALBUV_VEG))
THEN 275 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,palbuv_veg=dtv%XPAR_ALBUV_VEG
277 dtv%XPAR_ALBUV_VEG(:,jt,:) = dtv%XPAR_ALBUV_VEG(:,1,:)
280 IF (isize_lmeb_patch>0)
THEN 281 IF (.NOT.any(dtv%LDATA_BSLAI))
CALL ini_data_param(pbslai=dtv%XPAR_BSLAI
283 IF (io%CPHOTO /=
'NON')
THEN 284 IF (.NOT.any(dtv%LDATA_GMES)) &
286 IF (.NOT.any(dtv%LDATA_BSLAI)) &
288 IF (.NOT.any(dtv%LDATA_SEFOLD)) &
290 IF (.NOT.any(dtv%LDATA_GC)) &
291 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgc_st=dtv%XPAR_GC
293 IF (.NOT.any(dtv%LDATA_GMES)) &
294 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgmes=dtv%XPAR_GMES
295 IF (.NOT.any(dtv%LDATA_BSLAI)) &
296 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pbslai=dtv%XPAR_BSLAI
297 IF (.NOT.any(dtv%LDATA_SEFOLD)) &
299 IF (.NOT.any(dtv%LDATA_GC)) &
300 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgc=dtv%XPAR_GC
302 IF (.NOT.any(dtv%LDATA_LAIMIN)) &
304 IF (.NOT.any(dtv%LDATA_F2I)) &
305 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pf2i=dtv%XPAR_F2I
306 IF (.NOT.any(dtv%LDATA_CE_NITRO)) &
308 IF (.NOT.any(dtv%LDATA_CF_NITRO)) &
310 IF (.NOT.any(dtv%LDATA_CNA_NITRO)) &
313 dtv%LDATA_GAMMA(:) =.true.
314 dtv%LDATA_WRMAX_CF(:) =.true.
315 dtv%LDATA_RGL(:) =.true.
316 dtv%LDATA_CV(:) =.true.
317 dtv%LDATA_ALBNIR_VEG(:)=.true.
318 dtv%LDATA_ALBVIS_VEG(:)=.true.
319 dtv%LDATA_ALBUV_VEG(:) =.true.
320 dtv%LDATA_GMES(:) =.true.
321 dtv%LDATA_BSLAI(:) =.true.
322 dtv%LDATA_SEFOLD(:) =.true.
323 dtv%LDATA_GC(:) =.true.
324 dtv%LDATA_LAIMIN(:) =.true.
325 dtv%LDATA_F2I(:) =.true.
326 dtv%LDATA_CE_NITRO(:) =.true.
327 dtv%LDATA_CF_NITRO(:) =.true.
328 dtv%LDATA_CNA_NITRO(:) =.true.
330 dtv%LDATA_STRESS(:) =.true.
332 ALLOCATE(dtv%LPAR_STRESS(kdim,nvegtype))
333 dtv%LPAR_STRESS(:,:) = .true.
334 IF(io%LAGRI_TO_GRASS)
THEN 336 IF(xstress_noagri(jveg)<1.) dtv%LPAR_STRESS(:,jveg) = .false.
340 IF(xstress(jveg)<1.) dtv%LPAR_STRESS(:,jveg) = .false.
345 IF (.NOT.any(dtv%LDATA_IRRIG))
THEN 346 ALLOCATE(dtv%XPAR_IRRIG (kdim,dtv%NTIME,nvegtype))
351 IF (.NOT.any(dtv%LDATA_WATSUP))
THEN 352 ALLOCATE(dtv%XPAR_WATSUP (kdim,dtv%NTIME,nvegtype))
357 ALLOCATE(tpwork(kdim,nvegtype))
359 IF (.NOT.any(dtv%LDATA_SEED_M).OR..NOT.any(dtv%LDATA_SEED_D))
THEN 360 ALLOCATE(dtv%XPAR_SEED_M(kdim,nvegtype))
361 ALLOCATE(dtv%XPAR_SEED_D(kdim,nvegtype))
369 IF (.NOT.any(dtv%LDATA_REAP_M).OR..NOT.any(dtv%LDATA_REAP_D))
THEN 370 ALLOCATE(dtv%XPAR_REAP_M(kdim,nvegtype))
371 ALLOCATE(dtv%XPAR_REAP_D(kdim,nvegtype))
383 IF (isize_lmeb_patch>0)
THEN 386 IF (.NOT.any(dtv%LDATA_Z0LITTER))
THEN 387 ALLOCATE(dtv%XPAR_Z0LITTER(kdim,dtv%NTIME,nvegtype))
389 dtv%LDATA_Z0LITTER(:)=.true.
393 IF (.NOT.any(dtv%LDATA_H_VEG) .AND. any(dtv%LDATA_LAI) .AND. any(dtv%LDATA_H_TREE
THEN 394 ALLOCATE(dtv%XPAR_H_VEG(kdim,dtv%NTIME,nvegtype))
396 ph_tree=dtv%XPAR_H_TREE)
397 dtv%LDATA_H_VEG(:)=.true.
401 IF (.NOT.any(dtv%LDATA_GNDLITTER) )
THEN 402 ALLOCATE(dtv%XPAR_GNDLITTER(kdim,dtv%NTIME,nvegtype))
404 dtv%LDATA_GNDLITTER(:)=.true.
412 IF (dtv%LDATA_VEGTYPE)
THEN 413 IF (.NOT.any(dtv%LDATA_Z0_O_Z0H))
ALLOCATE(dtv%XPAR_Z0_O_Z0H (kdim,nvegtype
414 IF (.NOT.any(dtv%LDATA_DMAX))
ALLOCATE(dtv%XPAR_DMAX (kdim,nvegtype
415 IF (.NOT.any(dtv%LDATA_RE25))
ALLOCATE(dtv%XPAR_RE25 (kdim,nvegtype
416 IF (.NOT.any(dtv%LDATA_Z0_O_Z0H)) &
418 IF (io%CPHOTO /=
'NON')
THEN 419 IF (.NOT.any(dtv%LDATA_DMAX)) &
422 IF (.NOT.any(dtv%LDATA_DMAX)) &
423 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pdmax=dtv%XPAR_DMAX
425 IF (.NOT.any(dtv%LDATA_RE25)) &
426 CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pre25=dtv%XPAR_RE25
428 dtv%LDATA_Z0_O_Z0H(:)=.true.
429 dtv%LDATA_DMAX(:) =.true.
430 dtv%LDATA_RE25(:) =.true.
433 IF (
lhook)
CALL dr_hook(
'INIT_ISBA_MIXPAR',1,zhook_handle)
real, dimension(:,:), allocatable xdata_irrig
subroutine init_isba_mixpar(DTCO, DTV, KDIM, IO, KDECADE, KDECADE2, PCOVER, OCOVER, HSFTYP
type(date_time), dimension(:,:), pointer tdata_seed
type(date_time), dimension(:,:), pointer tdata_reap
real, dimension(:,:,:), allocatable xdata_veg
real, dimension(:,:), allocatable xdata_h_tree
real, dimension(:,:,:), allocatable xdata_lai
real, dimension(:,:), allocatable xdata_watsup
subroutine ini_data_param(PLAI, PH_TREE, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PR