SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_isba_mixpar.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE init_isba_mixpar (DTCO, DTI, IG, I, &
7  hisba,kdecade,kdecade2,pcover,ocover,hphoto,hsftype)
8 ! ##############################################################
9 !
10 !!**** *INIT_ISBA_MIXPAR*
11 !!
12 !! PURPOSE
13 !! -------
14 !! This routine makes pre-calculations relative to dependances between
15 !! parameters.
16 !!
17 !! METHOD
18 !! ------
19 !! First are treated parameters varying in time. Then, other ones.
20 !! * XPAR_VEGTYPE is needed as soon as 1 LDATA_ is true to use av_pgd_param.
21 !! * XPAR_LAI is needed as soon as av_pgd_param is called with YLAI
22 !! * XPAR_VEG is needed as soon as av_pgd_param is called with YVEG
23 !! * XPAR_H_TREE is needed as soon as Z0 is calculated by ini_data_param by point
24 !!
25 !! EXTERNAL
26 !! --------
27 !!
28 !! IMPLICIT ARGUMENTS
29 !! ------------------
30 !!
31 !! REFERENCE
32 !! ---------
33 !!
34 !! AUTHOR
35 !! ------
36 !!
37 !! S. Faroux Meteo-France
38 !!
39 !! MODIFICATION
40 !! ------------
41 !!
42 !! Original 16/11/10
43 !! P. Samuelsson 10/2014 MEB
44 !!
45 !----------------------------------------------------------------------------
46 !
47 !* 0. DECLARATION
48 ! -----------
49 !
50 !
52 USE modd_data_isba_n, ONLY : data_isba_t
53 USE modd_isba_grid_n, ONLY : isba_grid_t
54 USE modd_isba_n, ONLY : isba_t
55 !
56 USE modd_surf_par, ONLY : xundef
57 USE modd_data_cover_par, ONLY : nvegtype
58 !
59 !
60 USE modd_data_cover, ONLY : xdata_lai, xdata_h_tree, xdata_veg, &
61  xdata_irrig, xdata_watsup
62 !
63 USE modi_ini_data_param
64 USE modi_av_pgd
65 !
66 USE yomhook ,ONLY : lhook, dr_hook
67 USE parkind1 ,ONLY : jprb
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 Declaration of arguments
72 ! ------------------------
73 !
74 !
75 TYPE(data_cover_t), INTENT(INOUT) :: dtco
76 TYPE(data_isba_t), INTENT(INOUT) :: dti
77 TYPE(isba_grid_t), INTENT(INOUT) :: ig
78 TYPE(isba_t), INTENT(INOUT) :: i
79 !
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 ! type of photosynthesis
86  CHARACTER(LEN=*), INTENT(IN) :: hsftype ! nature / garden
87 !
88 !
89 !* 0.2 Declaration of local variables
90 ! ------------------------------
91 !
92 REAL, DIMENSION(19) :: xstress ! 1. if defensive /0. if offensive
93 REAL, DIMENSION(19) :: xstress_noagri ! 1. if defensive /0. if offensive
94 !
95  CHARACTER(LEN=3) :: ytree, ynat, yveg
96 !
97 INTEGER :: jvegtype
98 !
99 INTEGER :: isize_lmeb_patch ! Number of patches with MEB=true
100 !
101 !* 0.3 Declaration of namelists
102 ! ------------------------
103 !
104 REAL(KIND=JPRB) :: zhook_handle
105 !
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./
108 !-------------------------------------------------------------------------------
109 !
110 !* 1. Initializations
111 ! ---------------
112 !
113 IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',0,zhook_handle)
114 !
115 isize_lmeb_patch=count(i%LMEB_PATCH(:))
116 !
117 IF (.NOT.dti%LDATA_MIXPAR) THEN
118  IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',1,zhook_handle)
119  RETURN
120 ENDIF
121 !
122 IF (hsftype=='NAT') THEN
123  ynat='NAT'
124  ytree='TRE'
125  yveg='VEG'
126 ELSEIF (hsftype=='GRD') THEN
127  ynat='GRD'
128  ytree='GRT'
129  yveg='GRV'
130 ENDIF
131 !
132 kdecade2 = kdecade
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
136 !
137 ! 1. Arrays needed further
138 ! ------------------------
139 !
140 !XPAR_VEGTYPE will be needed to use ini_data_param by point
141 IF (.NOT.dti%LDATA_VEGTYPE) THEN
142  ALLOCATE(dti%XPAR_VEGTYPE (ig%NDIM,nvegtype))
143  DO jvegtype=1,nvegtype
144  CALL av_pgd(dtco, &
145  dti%XPAR_VEGTYPE(:,jvegtype),pcover ,dtco%XDATA_VEGTYPE(:,jvegtype),ynat,'ARI',ocover)
146  END DO
147 ENDIF
148 !
149 !xpar_lai: needed for av_pgd_param with YLAI
150 IF (.NOT.dti%LDATA_LAI) THEN
151  ALLOCATE(dti%XPAR_LAI(ig%NDIM,dti%NTIME,nvegtype))
152  CALL av_pgd(dtco, &
153  dti%XPAR_LAI(:,kdecade2,:),pcover,xdata_lai(:,kdecade,:),yveg,'ARI',ocover,kdecade=kdecade2)
154 ENDIF
155 !veg
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)
160  dti%LDATA_VEG=.true.
161  ELSE
162  CALL av_pgd(dtco, &
163  dti%XPAR_VEG(:,kdecade2,:),pcover,xdata_veg(:,kdecade,:),ynat,'ARI',ocover,kdecade=kdecade2)
164  ENDIF
165 ENDIF
166 !ht: needed to calculate z0, if not calculated yet during extrapolation
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))
169  CALL av_pgd(dtco, &
170  dti%XPAR_H_TREE,pcover,xdata_h_tree,ytree,'ARI',ocover,kdecade=kdecade2)
171  dti%LDATA_H_TREE = .true.
172 ENDIF
173 !
174 !dg: initialization for ROOTFRAC
175 !ROOTFRAC depends on ROOT_DEPTH, DG, ROOT_EXT, ROOT_LIN
176 IF (.NOT.dti%LDATA_ROOTFRAC .AND. hisba=='DIF' .AND. dti%LDATA_ROOT_DEPTH) THEN
177  !
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.
182  ENDIF
183  !
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.
188  ENDIF
189  !
190 ENDIF
191 !
192 ! MEB roots
193 IF (.NOT.dti%LDATA_ROOTFRACGV .AND. hisba=='DIF' .AND. dti%LDATA_ROOT_DEPTHGV) THEN
194  !
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.
199  ENDIF
200  !
201 ENDIF
202 !
203 !dice: depth of the soil column for the calculation of the frozen soil fraction (m)
204 IF (dti%LDATA_DG .AND. .NOT.dti%LDATA_DICE) THEN
205  !
206  ALLOCATE(dti%XPAR_DICE(ig%NDIM,nvegtype))
207  !
208  IF(hisba/='DIF')THEN
209  dti%XPAR_DICE(:,:)=max(0.2,0.8*dti%XPAR_DG(:,2,:))
210  dti%LDATA_DICE=.true.
211  ENDIF
212 !
213 ENDIF
214 !
215 ! 2. Calculations of parameters dependant on others
216 ! -------------------------------------------------
217 !
218 !emis
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.
223 ENDIF
224 !
225 !z0
226 !
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)
230  dti%LDATA_Z0=.true.
231 ENDIF
232 !
233 !RSMIN
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)
238  ENDIF
239  dti%LDATA_RSMIN=.true.
240 ENDIF
241 
242 !parameters calculated on veg fraction
243 IF (dti%LDATA_VEG) THEN
244  !
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))
261  !
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)
273  ENDIF
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)
279  ELSE
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)
284  ENDIF
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)
290  !
291  dti%LDATA_GAMMA=.true.
292  dti%LDATA_WRMAX_CF=.true.
293  dti%LDATA_RGL=.true.
294  dti%LDATA_CV=.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.
301  dti%LDATA_GC=.true.
302  dti%LDATA_LAIMIN=.true.
303  dti%LDATA_F2I=.true.
304  dti%LDATA_CE_NITRO=.true.
305  dti%LDATA_CF_NITRO=.true.
306  dti%LDATA_CNA_NITRO=.true.
307  !
308  dti%LDATA_STRESS=.true.
309  !
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.
315  ENDDO
316  ELSE
317  DO jvegtype=1,nvegtype
318  IF(xstress(jvegtype)<1.) dti%LPAR_STRESS(:,jvegtype) = .false.
319  ENDDO
320  ENDIF
321  !
322  IF (.NOT.dti%LDATA_IRRIG) THEN
323  ALLOCATE(dti%XPAR_IRRIG (ig%NDIM,dti%NTIME,nvegtype))
324  CALL av_pgd(dtco, &
325  dti%XPAR_IRRIG(:,kdecade2,:),pcover,xdata_irrig(:,:),yveg,'ARI',ocover,kdecade=kdecade2)
326  dti%LDATA_IRRIG=.true.
327  ENDIF
328  !
329  IF (.NOT.dti%LDATA_WATSUP) THEN
330  ALLOCATE(dti%XPAR_WATSUP (ig%NDIM,dti%NTIME,nvegtype))
331  CALL av_pgd(dtco, &
332  dti%XPAR_WATSUP(:,kdecade2,:),pcover,xdata_watsup(:,:),yveg,'ARI',ocover,kdecade=kdecade2)
333  dti%LDATA_WATSUP=.true.
334  ENDIF
335 !
336 ! MEB stuff
337 !
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))
342  !
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)
347  !
348  dti%LDATA_GAMMAGV=.true.
349  dti%LDATA_WRMAX_CFGV=.true.
350  dti%LDATA_RGLGV=.true.
351  dti%LDATA_RSMINGV=.true.
352 !
353 !LAIGV
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.
358  ENDIF
359 !
360 !Z0LITTER
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.
366  ENDIF
367 !
368 !H_VEG
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.
374  ENDIF
375 !
376 !GNDLITTER
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.
382  ENDIF
383  !
384 ENDIF
385 !
386 !
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)
394  ELSE
395  IF (.NOT.dti%LDATA_DMAX) CALL ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pdmax=dti%XPAR_DMAX)
396  ENDIF
397  IF (.NOT.dti%LDATA_RE25) CALL ini_data_param(dti%XPAR_VEGTYPE,oagri_to_grass=i%LAGRI_TO_GRASS,pre25=dti%XPAR_RE25)
398  !
399  dti%LDATA_Z0_O_Z0H=.true.
400  dti%LDATA_DMAX=.true.
401  dti%LDATA_RE25=.true.
402 ENDIF
403 !
404 IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',1,zhook_handle)
405 !
406 !-------------------------------------------------------------------------------
407 !
408 END SUBROUTINE init_isba_mixpar
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)