SURFEX v8.1
General documentation of Surfex
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, DTV, KDIM, IO, &
7  KDECADE,KDECADE2,PCOVER,OCOVER,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
54 !
56 USE modd_surf_par, ONLY : xundef
57 USE modd_data_cover_par, ONLY : nvegtype, nvegtype_old, nvegtype_ecosg
58 !
59 !
63 !
64 USE modi_ini_data_param
65 USE modi_av_pgd
66 !
67 USE yomhook ,ONLY : lhook, dr_hook
68 USE parkind1 ,ONLY : jprb
69 !
70 IMPLICIT NONE
71 !
72 !* 0.1 Declaration of arguments
73 ! ------------------------
74 !
75 !
76 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
77 TYPE(data_isba_t), INTENT(INOUT) :: DTV
78 INTEGER, INTENT(IN) :: KDIM
79 TYPE(isba_options_t), INTENT(INOUT) :: IO
80 !
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 ! nature / garden
86 !
87 !
88 !* 0.2 Declaration of local variables
89 ! ------------------------------
90 !
91 TYPE(date_time), DIMENSION(:,:), ALLOCATABLE :: TPWORK
92 REAL, DIMENSION(NVEGTYPE) :: XSTRESS ! 1. if defensive /0. if offensive
93 REAL, DIMENSION(NVEGTYPE) :: XSTRESS_NOAGRI ! 1. if defensive /0. if offensive
94 !
95  CHARACTER(LEN=3) :: YTREE, YNAT, YVEG
96 !
97 INTEGER :: JVEG, JT, ji
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 !-------------------------------------------------------------------------------
107 !
108 !* 1. Initializations
109 ! ---------------
110 !
111 IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',0,zhook_handle)
112 !
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.,0.,0.,0./)
115  xstress_noagri = (/1.,1.,1.,0.,0.,0.,0.,0.,1.,1.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0./)
116 ELSE
117  xstress = (/1.,1.,1.,0.,1.,0.,1.,0.,1.,0.,0.,0.,0.,0.,1.,0.,1.,0.,0./)
118  xstress_noagri = (/1.,1.,1.,0.,1.,0.,0.,0.,0.,0.,0.,0.,0.,0.,1.,0.,1.,0.,0./)
119 ENDIF
120 !
121 isize_lmeb_patch=count(io%LMEB_PATCH(:))
122 !
123 IF (.NOT.dtv%LDATA_MIXPAR) THEN
124  IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',1,zhook_handle)
125  RETURN
126 ENDIF
127 !
128 IF (hsftype=='NAT') THEN
129  ynat='NAT'
130  ytree='TRE'
131  yveg='VEG'
132 ELSEIF (hsftype=='GRD') THEN
133  ynat='GRD'
134  ytree='GRT'
135  yveg='GRV'
136 ENDIF
137 !
138 kdecade2 = kdecade
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
142 !
143 ! 1. Arrays needed further
144 ! ------------------------
145 !
146 !XPAR_VEGTYPE will be needed to use ini_data_param by point
147 IF (.NOT.dtv%LDATA_VEGTYPE) THEN
148  ALLOCATE(dtv%XPAR_VEGTYPE (kdim,nvegtype))
149  DO jveg=1,nvegtype
150  CALL av_pgd(dtco,dtv%XPAR_VEGTYPE(:,jveg),pcover ,dtco%XDATA_VEGTYPE(:,jveg),ynat,'ARI',ocover)
151  END DO
152  !DTV%XPAR_VEGTYPE(:,:)=DTV%XPAR_VEGTYPE(:,:)/SPREAD(SUM(DTV%XPAR_VEGTYPE(:,:),2),2,NVEGTYPE)
153 ENDIF
154 !
155 !xpar_lai: needed for av_pgd_param with YLAI
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,:),yveg,'ARI',ocover,kdecade=kdecade)
159 ENDIF
160 !
161 !veg
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,pveg_out=dtv%XPAR_VEG)
166  dtv%LDATA_VEG(:)=.true.
167  ELSE
168  CALL av_pgd(dtco,dtv%XPAR_VEG(:,kdecade2,:),pcover,xdata_veg(:,kdecade,:),ynat,'ARI',ocover,kdecade=kdecade)
169  ENDIF
170 ENDIF
171 !
172 !ht: needed to calculate z0, if not calculated yet during extrapolation
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))
175  CALL av_pgd(dtco,dtv%XPAR_H_TREE,pcover,xdata_h_tree,ytree,'ARI',ocover,kdecade=kdecade)
176  dtv%LDATA_H_TREE(:) = .true.
177 ENDIF
178 !
179 !dg: initialization for ROOTFRAC
180 !ROOTFRAC depends on ROOT_DEPTH, DG, ROOT_EXT, ROOT_LIN
181 IF (.NOT.any(dtv%LDATA_ROOTFRAC) .AND. io%CISBA=='DIF' .AND. any(dtv%LDATA_ROOT_DEPTH)) THEN
182  !
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=dtv%XPAR_ROOT_EXTINCTION)
186  dtv%LDATA_ROOT_EXTINCTION(:) = .true.
187  ENDIF
188  !
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)
192  dtv%LDATA_ROOT_LIN(:) = .true.
193  ENDIF
194  !
195 ENDIF
196 !
197 !dice: depth of the soil column for the calculation of the frozen soil fraction (m)
198 IF (any(dtv%LDATA_DG) .AND. .NOT.any(dtv%LDATA_DICE)) THEN
199  !
200  ALLOCATE(dtv%XPAR_DICE(kdim,nvegtype))
201  !
202  IF(io%CISBA/='DIF')THEN
203  dtv%XPAR_DICE(:,:)=max(0.2,0.8*dtv%XPAR_DG(:,2,:))
204  dtv%LDATA_DICE(:)=.true.
205  ENDIF
206 !
207 ENDIF
208 !
209 ! 2. Calculations of parameters dependant on others
210 ! -------------------------------------------------
211 !
212 !emis
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,pemis_eco=dtv%XPAR_EMIS)
216  dtv%LDATA_EMIS(:)=.true.
217 ENDIF
218 !z0
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,ph_tree=dtv%XPAR_H_TREE,pz0=dtv%XPAR_Z0)
222  dtv%LDATA_Z0(:)=.true.
223 ENDIF
224 
225 !RSMIN
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)
230  ENDIF
231  dtv%LDATA_RSMIN(:)=.true.
232 ENDIF
233 
234 !parameters calculated on veg fraction
235 IF (any(dtv%LDATA_VEG)) THEN
236  !
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,nvegtype))
242  IF (.NOT.any(dtv%LDATA_ALBVIS_VEG)) ALLOCATE(dtv%XPAR_ALBVIS_VEG(kdim,dtv%NTIME,nvegtype))
243  IF (.NOT.any(dtv%LDATA_ALBUV_VEG)) ALLOCATE(dtv%XPAR_ALBUV_VEG (kdim,dtv%NTIME,nvegtype))
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))
253  !
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)) &
257  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pwrmax_cf=dtv%XPAR_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(:,1,:))
264  DO jt = 2,dtv%NTIME
265  dtv%XPAR_ALBNIR_VEG(:,jt,:) = dtv%XPAR_ALBNIR_VEG(:,1,:)
266  ENDDO
267  ENDIF
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(:,1,:))
270  DO jt = 2,dtv%NTIME
271  dtv%XPAR_ALBVIS_VEG(:,jt,:) = dtv%XPAR_ALBVIS_VEG(:,1,:)
272  ENDDO
273  ENDIF
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(:,1,:))
276  DO jt = 2,dtv%NTIME
277  dtv%XPAR_ALBUV_VEG(:,jt,:) = dtv%XPAR_ALBUV_VEG(:,1,:)
278  ENDDO
279  ENDIF
280  IF (isize_lmeb_patch>0) THEN
281  IF (.NOT.any(dtv%LDATA_BSLAI)) CALL ini_data_param(pbslai=dtv%XPAR_BSLAI)
282  ENDIF
283  IF (io%CPHOTO /= 'NON') THEN
284  IF (.NOT.any(dtv%LDATA_GMES)) &
285  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgmes_st=dtv%XPAR_GMES)
286  IF (.NOT.any(dtv%LDATA_BSLAI)) &
287  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pbslai_st=dtv%XPAR_BSLAI)
288  IF (.NOT.any(dtv%LDATA_SEFOLD)) &
289  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,psefold_st=dtv%XPAR_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)
292  ELSE
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)) &
298  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,psefold=dtv%XPAR_SEFOLD)
299  IF (.NOT.any(dtv%LDATA_GC)) &
300  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pgc=dtv%XPAR_GC)
301  ENDIF
302  IF (.NOT.any(dtv%LDATA_LAIMIN)) &
303  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,plaimin_out=dtv%XPAR_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)) &
307  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pce_nitro=dtv%XPAR_CE_NITRO)
308  IF (.NOT.any(dtv%LDATA_CF_NITRO)) &
309  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pcf_nitro=dtv%XPAR_CF_NITRO)
310  IF (.NOT.any(dtv%LDATA_CNA_NITRO)) &
311  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pcna_nitro=dtv%XPAR_CNA_NITRO)
312  !
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.
329  !
330  dtv%LDATA_STRESS(:) =.true.
331  !
332  ALLOCATE(dtv%LPAR_STRESS(kdim,nvegtype))
333  dtv%LPAR_STRESS(:,:) = .true.
334  IF(io%LAGRI_TO_GRASS)THEN
335  DO jveg=1,nvegtype
336  IF(xstress_noagri(jveg)<1.) dtv%LPAR_STRESS(:,jveg) = .false.
337  ENDDO
338  ELSE
339  DO jveg=1,nvegtype
340  IF(xstress(jveg)<1.) dtv%LPAR_STRESS(:,jveg) = .false.
341  ENDDO
342  ENDIF
343  !
344  !
345  IF (.NOT.any(dtv%LDATA_IRRIG)) THEN
346  ALLOCATE(dtv%XPAR_IRRIG (kdim,dtv%NTIME,nvegtype))
347  CALL av_pgd(dtco, dtv%XPAR_IRRIG(:,kdecade2,:),pcover,xdata_irrig(:,:),yveg,'ARI',ocover,kdecade=kdecade)
348  dtv%LDATA_IRRIG(:)=.true.
349  ENDIF
350  !
351  IF (.NOT.any(dtv%LDATA_WATSUP)) THEN
352  ALLOCATE(dtv%XPAR_WATSUP (kdim,dtv%NTIME,nvegtype))
353  CALL av_pgd(dtco, dtv%XPAR_WATSUP(:,kdecade2,:),pcover,xdata_watsup(:,:),yveg,'ARI',ocover,kdecade=kdecade)
354  dtv%LDATA_WATSUP(:)=.true.
355  ENDIF
356  !
357  ALLOCATE(tpwork(kdim,nvegtype))
358  !
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))
362  CALL av_pgd(tpwork(:,:),pcover,tdata_seed(:,:),yveg,'MAJ',ocover,kdecade=kdecade)
363  dtv%XPAR_SEED_M(:,:) = float(tpwork(:,:)%TDATE%MONTH)
364  dtv%XPAR_SEED_D(:,:) = float(tpwork(:,:)%TDATE%DAY)
365  dtv%LDATA_SEED_M(:)=.true.
366  dtv%LDATA_SEED_D(:)=.true.
367  ENDIF
368  !
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))
372  CALL av_pgd(tpwork(:,:),pcover,tdata_reap(:,:),yveg,'MAJ',ocover,kdecade=kdecade)
373  dtv%XPAR_REAP_M(:,:) = float(tpwork(:,:)%TDATE%MONTH)
374  dtv%XPAR_REAP_D(:,:) = float(tpwork(:,:)%TDATE%DAY)
375  dtv%LDATA_REAP_M(:)=.true.
376  dtv%LDATA_REAP_D(:)=.true.
377  ENDIF
378  !
379  DEALLOCATE(tpwork)
380 !
381 ! MEB stuff
382 !
383  IF (isize_lmeb_patch>0) THEN
384 
385 !Z0LITTER
386  IF (.NOT.any(dtv%LDATA_Z0LITTER)) THEN
387  ALLOCATE(dtv%XPAR_Z0LITTER(kdim,dtv%NTIME,nvegtype))
388  CALL ini_data_param( pz0litter=dtv%XPAR_Z0LITTER)
389  dtv%LDATA_Z0LITTER(:)=.true.
390  ENDIF
391 !
392 !H_VEG
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))
395  CALL ini_data_param(ph_veg=dtv%XPAR_H_VEG,plai=dtv%XPAR_LAI, &
396  ph_tree=dtv%XPAR_H_TREE)
397  dtv%LDATA_H_VEG(:)=.true.
398  ENDIF
399 !
400 !GNDLITTER
401  IF (.NOT.any(dtv%LDATA_GNDLITTER) ) THEN
402  ALLOCATE(dtv%XPAR_GNDLITTER(kdim,dtv%NTIME,nvegtype))
403  CALL ini_data_param(pgndlitter=dtv%XPAR_GNDLITTER)
404  dtv%LDATA_GNDLITTER(:)=.true.
405  ENDIF
406  !
407  ENDIF
408  !
409 ENDIF
410 !
411 !
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)) &
417  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pz0_o_z0h=dtv%XPAR_Z0_O_Z0H)
418  IF (io%CPHOTO /= 'NON') THEN
419  IF (.NOT.any(dtv%LDATA_DMAX)) &
420  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pdmax_st=dtv%XPAR_DMAX)
421  ELSE
422  IF (.NOT.any(dtv%LDATA_DMAX)) &
423  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pdmax=dtv%XPAR_DMAX)
424  ENDIF
425  IF (.NOT.any(dtv%LDATA_RE25)) &
426  CALL ini_data_param(oagri_to_grass=io%LAGRI_TO_GRASS,pre25=dtv%XPAR_RE25)
427  !
428  dtv%LDATA_Z0_O_Z0H(:)=.true.
429  dtv%LDATA_DMAX(:) =.true.
430  dtv%LDATA_RE25(:) =.true.
431 ENDIF
432 !
433 IF (lhook) CALL dr_hook('INIT_ISBA_MIXPAR',1,zhook_handle)
434 !
435 !-------------------------------------------------------------------------------
436 !
437 END SUBROUTINE init_isba_mixpar
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
real, parameter xundef
type(date_time), dimension(:,:), pointer tdata_reap
integer, parameter jprb
Definition: parkind1.F90:32
real, dimension(:,:,:), allocatable xdata_veg
logical lhook
Definition: yomhook.F90:15
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
static int count
Definition: memory_hook.c:21