7 hisba,kdecade,kdecade2,pcover,ocover,hphoto,hsftype)
61 xdata_irrig, xdata_watsup
63 USE modi_ini_data_param
66 USE yomhook
,ONLY : lhook, dr_hook
67 USE parkind1
,ONLY : jprb
77 TYPE(isba_grid_t
),
INTENT(INOUT) :: ig
78 TYPE(isba_t
),
INTENT(INOUT) :: i
80 CHARACTER(LEN=*),
INTENT(IN) :: hisba
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) :: hphoto
86 CHARACTER(LEN=*),
INTENT(IN) :: hsftype
92 REAL,
DIMENSION(19) :: xstress
93 REAL,
DIMENSION(19) :: xstress_noagri
95 CHARACTER(LEN=3) :: ytree, ynat, yveg
99 INTEGER :: isize_lmeb_patch
104 REAL(KIND=JPRB) :: zhook_handle
106 DATA xstress /1.,1.,1.,0.,1.,0.,1.,0.,1.,0.,0.,0.,0.,0.,1.,0.,1.,0.,0./
107 DATA xstress_noagri /1.,1.,1.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,1.,0.,0./
113 IF (lhook) CALL dr_hook(
'INIT_ISBA_MIXPAR',0,zhook_handle)
115 isize_lmeb_patch=count(i%LMEB_PATCH(:))
117 IF (.NOT.dti%LDATA_MIXPAR)
THEN
118 IF (lhook) CALL dr_hook(
'INIT_ISBA_MIXPAR',1,zhook_handle)
122 IF (hsftype==
'NAT')
THEN
126 ELSEIF (hsftype==
'GRD')
THEN
133 IF (dti%NTIME==2) kdecade2 = kdecade2 + 10
134 kdecade2 = (kdecade2-1) * dti%NTIME / 36 + 1
135 IF (dti%NTIME==2 .AND. kdecade2==3) kdecade2 = 1
141 IF (.NOT.dti%LDATA_VEGTYPE)
THEN
142 ALLOCATE(dti%XPAR_VEGTYPE (ig%NDIM,nvegtype))
143 DO jvegtype=1,nvegtype
145 dti%XPAR_VEGTYPE(:,jvegtype),pcover ,dtco%XDATA_VEGTYPE(:,jvegtype),ynat,
'ARI',ocover)
150 IF (.NOT.dti%LDATA_LAI)
THEN
151 ALLOCATE(dti%XPAR_LAI(ig%NDIM,dti%NTIME,nvegtype))
153 dti%XPAR_LAI(:,kdecade2,:),pcover,xdata_lai(:,kdecade,:),yveg,
'ARI',ocover,kdecade=kdecade2)
156 IF (.NOT.dti%LDATA_VEG)
THEN
157 ALLOCATE(dti%XPAR_VEG(ig%NDIM,dti%NTIME,nvegtype))
158 IF (dti%LDATA_LAI)
THEN
159 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,plai=dti%XPAR_LAI,pveg_out=dti%XPAR_VEG)
163 dti%XPAR_VEG(:,kdecade2,:),pcover,xdata_veg(:,kdecade,:),ynat,
'ARI',ocover,kdecade=kdecade2)
167 IF (.NOT.dti%LDATA_H_TREE .AND. .NOT.dti%LDATA_Z0 .AND. dti%LDATA_LAI)
THEN
168 ALLOCATE(dti%XPAR_H_TREE(ig%NDIM,nvegtype))
170 dti%XPAR_H_TREE,pcover,xdata_h_tree,ytree,
'ARI',ocover,kdecade=kdecade2)
171 dti%LDATA_H_TREE = .true.
176 IF (.NOT.dti%LDATA_ROOTFRAC .AND. hisba==
'DIF' .AND. dti%LDATA_ROOT_DEPTH)
THEN
178 IF (.NOT.dti%LDATA_ROOT_EXTINCTION)
THEN
179 ALLOCATE(dti%XPAR_ROOT_EXTINCTION(ig%NDIM,nvegtype))
180 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,proot_extinction=dti%XPAR_ROOT_EXTINCTION)
181 dti%LDATA_ROOT_EXTINCTION = .true.
184 IF (.NOT.dti%LDATA_ROOT_LIN)
THEN
185 ALLOCATE(dti%XPAR_ROOT_LIN(ig%NDIM,nvegtype))
186 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,proot_lin=dti%XPAR_ROOT_LIN)
187 dti%LDATA_ROOT_LIN = .true.
193 IF (.NOT.dti%LDATA_ROOTFRACGV .AND. hisba==
'DIF' .AND. dti%LDATA_ROOT_DEPTHGV)
THEN
195 IF (.NOT.dti%LDATA_ROOT_EXTINCTIONGV)
THEN
196 ALLOCATE(dti%XPAR_ROOT_EXTINCTIONGV(ig%NDIM,nvegtype))
197 CALL
ini_data_param(dti%XPAR_VEGTYPE,proot_extinctiongv=dti%XPAR_ROOT_EXTINCTIONGV)
198 dti%LDATA_ROOT_EXTINCTIONGV = .true.
204 IF (dti%LDATA_DG .AND. .NOT.dti%LDATA_DICE)
THEN
206 ALLOCATE(dti%XPAR_DICE(ig%NDIM,nvegtype))
209 dti%XPAR_DICE(:,:)=max(0.2,0.8*dti%XPAR_DG(:,2,:))
210 dti%LDATA_DICE=.true.
219 IF (.NOT.dti%LDATA_EMIS .AND. dti%LDATA_VEG)
THEN
220 ALLOCATE(dti%XPAR_EMIS(ig%NDIM,dti%NTIME,nvegtype))
221 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pveg_in=dti%XPAR_VEG,pemis_eco=dti%XPAR_EMIS)
222 dti%LDATA_EMIS=.true.
227 IF (.NOT.dti%LDATA_Z0 .AND. (dti%LDATA_LAI .OR.dti%LDATA_H_TREE))
THEN
228 ALLOCATE(dti%XPAR_Z0(ig%NDIM,dti%NTIME,nvegtype))
229 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,plai=dti%XPAR_LAI,ph_tree=dti%XPAR_H_TREE,pz0=dti%XPAR_Z0)
234 IF (dti%LDATA_LAI)
THEN
235 IF (.NOT.dti%LDATA_RSMIN)
THEN
236 ALLOCATE(dti%XPAR_RSMIN(ig%NDIM,nvegtype))
237 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,prsmin=dti%XPAR_RSMIN)
239 dti%LDATA_RSMIN=.true.
243 IF (dti%LDATA_VEG)
THEN
245 IF (.NOT.dti%LDATA_GAMMA)
ALLOCATE(dti%XPAR_GAMMA (ig%NDIM,nvegtype))
246 IF (.NOT.dti%LDATA_WRMAX_CF)
ALLOCATE(dti%XPAR_WRMAX_CF (ig%NDIM,nvegtype))
247 IF (.NOT.dti%LDATA_RGL)
ALLOCATE(dti%XPAR_RGL (ig%NDIM,nvegtype))
248 IF (.NOT.dti%LDATA_CV)
ALLOCATE(dti%XPAR_CV (ig%NDIM,nvegtype))
249 IF (.NOT.dti%LDATA_ALBNIR_VEG)
ALLOCATE(dti%XPAR_ALBNIR_VEG(ig%NDIM,nvegtype))
250 IF (.NOT.dti%LDATA_ALBVIS_VEG)
ALLOCATE(dti%XPAR_ALBVIS_VEG(ig%NDIM,nvegtype))
251 IF (.NOT.dti%LDATA_ALBUV_VEG)
ALLOCATE(dti%XPAR_ALBUV_VEG (ig%NDIM,nvegtype))
252 IF (.NOT.dti%LDATA_GMES)
ALLOCATE(dti%XPAR_GMES (ig%NDIM,nvegtype))
253 IF (.NOT.dti%LDATA_BSLAI)
ALLOCATE(dti%XPAR_BSLAI (ig%NDIM,nvegtype))
254 IF (.NOT.dti%LDATA_SEFOLD)
ALLOCATE(dti%XPAR_SEFOLD (ig%NDIM,nvegtype))
255 IF (.NOT.dti%LDATA_GC)
ALLOCATE(dti%XPAR_GC (ig%NDIM,nvegtype))
256 IF (.NOT.dti%LDATA_LAIMIN)
ALLOCATE(dti%XPAR_LAIMIN (ig%NDIM,nvegtype))
257 IF (.NOT.dti%LDATA_F2I)
ALLOCATE(dti%XPAR_F2I (ig%NDIM,nvegtype))
258 IF (.NOT.dti%LDATA_CE_NITRO)
ALLOCATE(dti%XPAR_CE_NITRO (ig%NDIM,nvegtype))
259 IF (.NOT.dti%LDATA_CF_NITRO)
ALLOCATE(dti%XPAR_CF_NITRO (ig%NDIM,nvegtype))
260 IF (.NOT.dti%LDATA_CNA_NITRO)
ALLOCATE(dti%XPAR_CNA_NITRO (ig%NDIM,nvegtype))
262 IF (.NOT.dti%LDATA_GAMMA) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pgamma=dti%XPAR_GAMMA)
263 IF (.NOT.dti%LDATA_WRMAX_CF) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pwrmax_cf=dti%XPAR_WRMAX_CF)
264 IF (.NOT.dti%LDATA_RGL) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,prgl=dti%XPAR_RGL)
265 IF (.NOT.dti%LDATA_CV) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pcv=dti%XPAR_CV)
266 IF (.NOT.dti%LDATA_ALBNIR_VEG) &
267 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,palbnir_veg=dti%XPAR_ALBNIR_VEG)
268 IF (.NOT.dti%LDATA_ALBVIS_VEG) &
269 CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,palbvis_veg=dti%XPAR_ALBVIS_VEG)
270 IF (.NOT.dti%LDATA_ALBUV_VEG) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,palbuv_veg=dti%XPAR_ALBUV_VEG)
271 IF (isize_lmeb_patch>0)
THEN
272 IF (.NOT.dti%LDATA_BSLAI) CALL
ini_data_param(dti%XPAR_VEGTYPE,pbslai=dti%XPAR_BSLAI)
274 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto==
'NCB')
THEN
275 IF (.NOT.dti%LDATA_GMES) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pgmes_st=dti%XPAR_GMES)
276 IF (.NOT.dti%LDATA_BSLAI) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pbslai_st=dti%XPAR_BSLAI)
277 IF (.NOT.dti%LDATA_SEFOLD) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,psefold_st=dti%XPAR_SEFOLD)
278 IF (.NOT.dti%LDATA_GC) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pgc_st=dti%XPAR_GC)
280 IF (.NOT.dti%LDATA_GMES) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pgmes=dti%XPAR_GMES)
281 IF (.NOT.dti%LDATA_BSLAI) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pbslai=dti%XPAR_BSLAI)
282 IF (.NOT.dti%LDATA_SEFOLD) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,psefold=dti%XPAR_SEFOLD)
283 IF (.NOT.dti%LDATA_GC) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pgc=dti%XPAR_GC)
285 IF (.NOT.dti%LDATA_LAIMIN) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,plaimin_out=dti%XPAR_LAIMIN)
286 IF (.NOT.dti%LDATA_F2I) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pf2i=dti%XPAR_F2I)
287 IF (.NOT.dti%LDATA_CE_NITRO) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pce_nitro=dti%XPAR_CE_NITRO)
288 IF (.NOT.dti%LDATA_CF_NITRO) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pcf_nitro=dti%XPAR_CF_NITRO)
289 IF (.NOT.dti%LDATA_CNA_NITRO) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pcna_nitro=dti%XPAR_CNA_NITRO)
291 dti%LDATA_GAMMA=.true.
292 dti%LDATA_WRMAX_CF=.true.
295 dti%LDATA_ALBNIR_VEG=.true.
296 dti%LDATA_ALBVIS_VEG=.true.
297 dti%LDATA_ALBUV_VEG=.true.
298 dti%LDATA_GMES=.true.
299 dti%LDATA_BSLAI=.true.
300 dti%LDATA_SEFOLD=.true.
302 dti%LDATA_LAIMIN=.true.
304 dti%LDATA_CE_NITRO=.true.
305 dti%LDATA_CF_NITRO=.true.
306 dti%LDATA_CNA_NITRO=.true.
308 dti%LDATA_STRESS=.true.
310 ALLOCATE(dti%LPAR_STRESS (ig%NDIM,nvegtype))
311 dti%LPAR_STRESS(:,:) = .true.
312 IF(i%LAGRI_TO_GRASS)
THEN
313 DO jvegtype=1,nvegtype
314 IF(xstress_noagri(jvegtype)<1.) dti%LPAR_STRESS(:,jvegtype) = .false.
317 DO jvegtype=1,nvegtype
318 IF(xstress(jvegtype)<1.) dti%LPAR_STRESS(:,jvegtype) = .false.
322 IF (.NOT.dti%LDATA_IRRIG)
THEN
323 ALLOCATE(dti%XPAR_IRRIG (ig%NDIM,dti%NTIME,nvegtype))
325 dti%XPAR_IRRIG(:,kdecade2,:),pcover,xdata_irrig(:,:),yveg,
'ARI',ocover,kdecade=kdecade2)
326 dti%LDATA_IRRIG=.true.
329 IF (.NOT.dti%LDATA_WATSUP)
THEN
330 ALLOCATE(dti%XPAR_WATSUP (ig%NDIM,dti%NTIME,nvegtype))
332 dti%XPAR_WATSUP(:,kdecade2,:),pcover,xdata_watsup(:,:),yveg,
'ARI',ocover,kdecade=kdecade2)
333 dti%LDATA_WATSUP=.true.
338 IF (.NOT.dti%LDATA_GAMMAGV)
ALLOCATE(dti%XPAR_GAMMAGV (ig%NDIM,nvegtype))
339 IF (.NOT.dti%LDATA_WRMAX_CFGV)
ALLOCATE(dti%XPAR_WRMAX_CFGV (ig%NDIM,nvegtype))
340 IF (.NOT.dti%LDATA_RGLGV)
ALLOCATE(dti%XPAR_RGLGV (ig%NDIM,nvegtype))
341 IF (.NOT.dti%LDATA_RSMINGV)
ALLOCATE(dti%XPAR_RSMINGV (ig%NDIM,nvegtype))
343 IF (.NOT.dti%LDATA_GAMMAGV) CALL
ini_data_param(dti%XPAR_VEGTYPE,pgammagv=dti%XPAR_GAMMAGV)
344 IF (.NOT.dti%LDATA_WRMAX_CFGV) CALL
ini_data_param(dti%XPAR_VEGTYPE,pwrmax_cfgv=dti%XPAR_WRMAX_CFGV)
345 IF (.NOT.dti%LDATA_RGLGV) CALL
ini_data_param(dti%XPAR_VEGTYPE,prglgv=dti%XPAR_RGLGV)
346 IF (.NOT.dti%LDATA_RSMINGV) CALL
ini_data_param(dti%XPAR_VEGTYPE,prsmingv=dti%XPAR_RSMINGV)
348 dti%LDATA_GAMMAGV=.true.
349 dti%LDATA_WRMAX_CFGV=.true.
350 dti%LDATA_RGLGV=.true.
351 dti%LDATA_RSMINGV=.true.
354 IF (.NOT.dti%LDATA_LAIGV)
THEN
355 ALLOCATE(dti%XPAR_LAIGV(ig%NDIM,dti%NTIME,nvegtype))
356 CALL
ini_data_param(dti%XPAR_VEGTYPE,plai=dti%XPAR_LAI,plaimin_in=dti%XPAR_LAIMIN,plaigv_out=dti%XPAR_LAIGV)
357 dti%LDATA_LAIGV=.true.
361 IF (.NOT.dti%LDATA_Z0LITTER)
THEN
362 ALLOCATE(dti%XPAR_Z0LITTER(ig%NDIM,dti%NTIME,nvegtype))
363 CALL
ini_data_param(dti%XPAR_VEGTYPE,plai=dti%XPAR_LAI,plaigv_in=dti%XPAR_LAIGV, &
364 pz0litter=dti%XPAR_Z0LITTER)
365 dti%LDATA_Z0LITTER=.true.
369 IF (.NOT.dti%LDATA_H_VEG .AND. dti%LDATA_LAI .AND. dti%LDATA_H_TREE)
THEN
370 ALLOCATE(dti%XPAR_H_VEG(ig%NDIM,dti%NTIME,nvegtype))
371 CALL
ini_data_param(dti%XPAR_VEGTYPE,ph_veg=dti%XPAR_H_VEG,plai=dti%XPAR_LAI, &
372 ph_tree=dti%XPAR_H_TREE)
373 dti%LDATA_H_VEG=.true.
377 IF (.NOT.dti%LDATA_GNDLITTER .AND. dti%LDATA_LAIGV)
THEN
378 ALLOCATE(dti%XPAR_GNDLITTER(ig%NDIM,dti%NTIME,nvegtype))
379 CALL
ini_data_param(dti%XPAR_VEGTYPE,plai=dti%XPAR_LAI,plaigv_in=dti%XPAR_LAIGV, &
380 pgndlitter=dti%XPAR_GNDLITTER)
381 dti%LDATA_GNDLITTER=.true.
387 IF (dti%LDATA_VEGTYPE)
THEN
388 IF (.NOT.dti%LDATA_Z0_O_Z0H)
ALLOCATE(dti%XPAR_Z0_O_Z0H (ig%NDIM,nvegtype))
389 IF (.NOT.dti%LDATA_DMAX)
ALLOCATE(dti%XPAR_DMAX (ig%NDIM,nvegtype))
390 IF (.NOT.dti%LDATA_RE25)
ALLOCATE(dti%XPAR_RE25 (ig%NDIM,nvegtype))
391 IF (.NOT.dti%LDATA_Z0_O_Z0H) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pz0_o_z0h=dti%XPAR_Z0_O_Z0H)
392 IF (hphoto ==
'AST' .OR. hphoto ==
'LST' .OR. hphoto ==
'NIT' .OR. hphoto==
'NCB')
THEN
393 IF (.NOT.dti%LDATA_DMAX) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pdmax_st=dti%XPAR_DMAX)
395 IF (.NOT.dti%LDATA_DMAX) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pdmax=dti%XPAR_DMAX)
397 IF (.NOT.dti%LDATA_RE25) CALL
ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pre25=dti%XPAR_RE25)
399 dti%LDATA_Z0_O_Z0H=.true.
400 dti%LDATA_DMAX=.true.
401 dti%LDATA_RE25=.true.
404 IF (lhook) CALL dr_hook(
'INIT_ISBA_MIXPAR',1,zhook_handle)
subroutine init_isba_mixpar(DTCO, DTI, IG, I, HISBA, KDECADE, KDECADE2, PCOVER, OCOVER, HPHOTO, HSFTYPE)
subroutine ini_data_param(PTYPE, PSURF, PSURF2, PLAI, PH_TREE, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PRSMIN, PRGL, PCV, PGAMMA, PGMES, PGC, PBSLAI, PSEFOLD, PLAIMIN_IN, PLAIMIN_OUT, PDMAX, PSTRESS, PF2I, PVEG_IN, PVEG_OUT, PGREEN, PZ0, PZ0_O_Z0H, PEMIS_ECO, PWRMAX_CF, PROOT_LIN, PROOT_EXTINCTION, PSOILRC_SO2, PSOILRC_O3, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PGMES_ST, PGC_ST, PBSLAI_ST, PSEFOLD_ST, PDMAX_ST, PGNDLITTER, PZF_TALLVEG, PRGLGV, PGAMMAGV, PRSMINGV, PROOT_EXTINCTIONGV, PWRMAX_CFGV, PH_VEG, PLAIGV_IN, PLAIGV_OUT, PZ0LITTER, OAGRI_TO_GRASS)