SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ch_bvocemn.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 ch_bvocem_n (CHI, GB, I, &
7  psw_forbio,prhoa,psfts)
8 !! ###############################
9 !!
10 !!*** *BVOCEM*
11 !!
12 !! PURPOSE
13 !! -------
14 !! Calculate the biogenic emission fluxes according to the
15 !! subgrid vegetation given by the soil interface
16 !!
17 !! METHOD
18 !! ------
19 !!
20 !!
21 !! AUTHOR
22 !! ------
23 !! F. Solmon (LA) & V. Masson (CNRM)
24 !!
25 !! MODIFICATIONS
26 !! -------------
27 !! Original: 25/10/00
28 !! P. Tulet 30/07/03 externalisation of biogenics fluxes (2D => 1D)
29 !! R. Alkama 04/2012 add 7 new vegtype (19 instead 12)
30 !!
31 !! EXTERNAL
32 !! --------
33 !
34 USE modd_ch_isba_n, ONLY : ch_isba_t
35 USE modd_gr_biog_n, ONLY : gr_biog_t
36 USE modd_isba_n, ONLY : isba_t
37 !
38 USE modi_vegtype_to_patch
39 !!
40 !! IMPLICIT ARGUMENTS
41 !! ------------------
42 USE modd_bvoc_par
43 USE modd_csts,ONLY : xmd, xavogadro
44 USE modd_co2v_par
45 USE modd_surf_par,ONLY:xundef
46 USE modd_isba_par
47 USE modd_data_cover_par, ONLY : nvegtype, nvt_tebd, nvt_bone, nvt_trbe, &
48  nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
49  nvt_bond, nvt_shrb, nvt_bogr, nvt_gras, &
50  nvt_trog, nvt_park, nvt_c3, nvt_c4, &
51  nvt_irr
52 !!
53 !!
54 !------------------------------------------------------------------------------
55 !
56 !* 0. DECLARATIONS
57 ! -----------------
58 !
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 IMPLICIT NONE
64 
65 !
66 TYPE(ch_isba_t), INTENT(INOUT) :: chi
67 TYPE(gr_biog_t), INTENT(INOUT) :: gb
68 TYPE(isba_t), INTENT(INOUT) :: i
69 !
70 REAL, DIMENSION(:,:), INTENT(IN) :: psw_forbio
71 REAL, DIMENSION(:), INTENT(IN) :: prhoa
72 REAL, DIMENSION(:,:), INTENT(INOUT) :: psfts
73 !
74 !* 0.1 declaration of arguments
75 !
76 !* 0.1 Declaration of local variables
77 !
78 REAL, DIMENSION(SIZE(PSW_FORBIO,1)) :: zrad_par, zlcor_rad
79 ! PAR radiation in case of ISBA-STD use
80 !
81 REAL, DIMENSION(SIZE(PSW_FORBIO,1)) :: zfiso_for , zfmono_for, &
82  zfiso_grass, zfmono_grass, &
83  zfiso_crop , zfmono_crop
84 ! Fluxes coming from different landuse
85 REAL, DIMENSION(SIZE(PSW_FORBIO,1), NVEGTYPE) :: ztcor ,ztcorm
86 !
87 REAL, DIMENSION(SIZE(PSW_FORBIO,1),SIZE(I%XABC),NVEGTYPE) :: zbvocpar
88 ! PAR at gauss level in micromolphot/m2/s
89 !
90 REAL, DIMENSION(SIZE(PSW_FORBIO,1)) :: zisopot, zmonopot, zratio
91 !
92 INTEGER:: kngauss
93 ! nbre of gauss level in integration
94 ! index of patch corresponding to forest(+ligneaous)
95 INTEGER:: jpatch, jsv
96 REAL(KIND=JPRB) :: zhook_handle
97 !
98 !------------------------------------------------------------------------------
99 !
100 IF (lhook) CALL dr_hook('CH_BVOCEM_N',0,zhook_handle)
101 !
102 !* 1. Contribution of forest and ligneous vegetation
103 ! from ISOPOT and MONOPOT maps
104 ! ------------------------------------------------
105 !
106 !* 1.0 Preliminary : patch index corresponding to forest
107 !
108 !2.Contribution of other types of vegetation than forest, consider the vegtype fraction in the pixel
109 !------------------------------------------------------------------------------------------
110 !
111 !* 2.0 Preliminary : patch index corresponding to grassland, crops (C3+C4)
112 !
113 !1.1.1 Using ISBA_Ags explicit light attenuation
114 ! number of g Gauss level for the integration
115 IF (i%CPHOTO/='NON') THEN
116  kngauss = SIZE(i%XABC)
117 ELSE
118  !1.1.2 using isba std version
119  zrad_par(:)= 0.
120  DO jpatch = 1,i%NPATCH
121  zrad_par(:)= zrad_par(:) +(psw_forbio(:,jpatch)*i%XPATCH(:,jpatch) ) * xparcf * 4.7
122  END DO
123  zlcor_rad(:) = zlcor_func(zrad_par(:))
124 ENDIF
125 !
126 !
127  CALL by_patch(nvt_tebd, ztcor(:,nvt_tebd), ztcorm(:,nvt_tebd))
128  CALL by_patch(nvt_bone, ztcor(:,nvt_bone), ztcorm(:,nvt_bone))
129  CALL by_patch(nvt_trbe, ztcor(:,nvt_trbe), ztcorm(:,nvt_trbe))
130  CALL by_patch(nvt_trbd, ztcor(:,nvt_trbd), ztcorm(:,nvt_trbd))
131  CALL by_patch(nvt_tebe, ztcor(:,nvt_tebe), ztcorm(:,nvt_tebe))
132  CALL by_patch(nvt_tene, ztcor(:,nvt_tene), ztcorm(:,nvt_tene))
133  CALL by_patch(nvt_bobd, ztcor(:,nvt_bobd), ztcorm(:,nvt_bobd))
134  CALL by_patch(nvt_bond, ztcor(:,nvt_bond), ztcorm(:,nvt_bond))
135  CALL by_patch(nvt_shrb, ztcor(:,nvt_shrb), ztcorm(:,nvt_shrb))
136  CALL by_patch(nvt_bogr, ztcor(:,nvt_bogr), ztcorm(:,nvt_bogr))
137  CALL by_patch(nvt_gras, ztcor(:,nvt_gras), ztcorm(:,nvt_gras))
138  CALL by_patch(nvt_trog, ztcor(:,nvt_trog), ztcorm(:,nvt_trog))
139  CALL by_patch(nvt_park, ztcor(:,nvt_park), ztcorm(:,nvt_park))
140  CALL by_patch(nvt_c3 , ztcor(:,nvt_c3) , ztcorm(:,nvt_c3) )
141  CALL by_patch(nvt_c4 , ztcor(:,nvt_c4) , ztcorm(:,nvt_c4) )
142  CALL by_patch(nvt_irr , ztcor(:,nvt_irr) , ztcorm(:,nvt_irr) )
143 !
144 !
145 zratio(:) = i%XVEGTYPE(:,nvt_tebd) + i%XVEGTYPE(:,nvt_bone) + i%XVEGTYPE(:,nvt_trbe) + &
146  i%XVEGTYPE(:,nvt_trbd) + i%XVEGTYPE(:,nvt_tebe) + i%XVEGTYPE(:,nvt_tene) + &
147  i%XVEGTYPE(:,nvt_bobd) + i%XVEGTYPE(:,nvt_bond) + i%XVEGTYPE(:,nvt_shrb)
148 !
149 WHERE (zratio(:)/=0.)
150  zisopot(:) = gb%XISOPOT (:) / zratio(:)
151  zmonopot(:) = gb%XMONOPOT(:) / zratio(:)
152 ELSEWHERE
153  zisopot(:) = 0.
154  zmonopot(:) = 0.
155 END WHERE
156 !
157  CALL by_veg9(nvt_tebd, nvt_bone, nvt_trbe, nvt_trbd, nvt_tebe, nvt_tene, nvt_bobd, &
158  nvt_bond, nvt_shrb, zisopot, zmonopot, zfiso_for, zfmono_for)
159 !
160 zisopot(:) = xisopot_grass
161 zmonopot(:) = xmonopot_grass
162  CALL by_veg4(nvt_gras, nvt_trog, nvt_park, nvt_bogr, zisopot, zmonopot, zfiso_grass, zfmono_grass)
163 !
164 zisopot(:) = xisopot_crop
165 zmonopot(:) = xmonopot_crop
166  CALL by_veg3(nvt_c3, nvt_c4, nvt_irr, zisopot, zmonopot, zfiso_crop, zfmono_crop)
167 !
168 !---------------------------------------------------------------------------------------
169 !
170 !3.Summation of different contribution for fluxes
171 !------------------------------------------------
172 !
173 !isoprene in ppp.m.s-1
174 gb%XFISO (:)=(3.0012e-10/3600.) * ( zfiso_for(:) + zfiso_grass(:) + zfiso_crop(:) ) + 1e-17
175 !monoterpenes
176 gb%XFMONO(:)=(1.5006e-10/3600.) * ( zfmono_for(:) + zfmono_grass(:)+ zfmono_crop(:) ) + 1e-17
177 !
178 ! conversion in molecules/m2/s
179 !
180 gb%XFISO(:) = gb%XFISO(:) * xavogadro * prhoa(:) / xmd
181 gb%XFMONO(:) = gb%XFMONO(:) * xavogadro * prhoa(:) / xmd
182 !
183 DO jsv=chi%SVI%NSV_CHSBEG,chi%SVI%NSV_CHSEND
184  IF (chi%SVI%CSV(jsv) == "BIO") THEN
185  ! RELACS CASE
186  psfts(:,jsv) = psfts(:,jsv) + (gb%XFISO(:) + gb%XFMONO(:))
187  ELSE IF (chi%SVI%CSV(jsv) == "ISO" .OR. chi%SVI%CSV(jsv) == "ISOP") THEN
188  ! RACM CASE
189  psfts(:,jsv) = psfts(:,jsv) + gb%XFISO(:)
190  ELSE IF (chi%SVI%CSV(jsv) == "API" .OR. chi%SVI%CSV(jsv) == "LIM" .OR. &
191  chi%SVI%CSV(jsv) == "BIOL" .OR. chi%SVI%CSV(jsv) == "BIOH" ) THEN
192  ! RACM CASE
193  ! CACM or RELACS 2 CASE
194  psfts(:,jsv) = psfts(:,jsv) + 0.5 * gb%XFMONO(:)
195  ENDIF
196 END DO
197 !
198 !**********************************************************************************
199 IF (lhook) CALL dr_hook('CH_BVOCEM_N',1,zhook_handle)
200  CONTAINS
201 !
202 SUBROUTINE by_patch(NVT_VEGTYPE,PTCOR,PTCORM)
203 !
204 IMPLICIT NONE
205 !
206 INTEGER, INTENT(IN) :: nvt_vegtype
207 REAL, DIMENSION(:), INTENT(OUT) :: ptcor
208 REAL, DIMENSION(:), INTENT(OUT) :: ptcorm
209 !
210 REAL, DIMENSION(SIZE(PSW_FORBIO,1)) :: zbvocsg
211 REAL, DIMENSION(SIZE(PSW_FORBIO,1),SIZE(I%XABC)) :: zbvocpar
212 INTEGER:: ipatch, jlayer, it
213 REAL(KIND=JPRB) :: zhook_handle
214 !
215 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_PATCH',0,zhook_handle)
216 !
217 ipatch = vegtype_to_patch(nvt_vegtype, i%NPATCH)
218 !
219 ptcor(:) = 0.
220 ptcorm(:) = 0.
221 DO it=1,SIZE(i%XTG,1)
222  IF (i%XTG(it,1,ipatch).LE.1000.) THEN
223  ptcorm(it)=ztcorm0_func(i%XTG(it,1,ipatch))
224  ptcor(it)=ztcor0_func(i%XTG(it,1,ipatch))
225  ENDIF
226 ENDDO
227 !
228 IF (i%CPHOTO/='NON') THEN
229  !PAR over Forest canopies, in micro-molE.m-2.s-1
230  zbvocpar(:,:) = gb%XIACAN(:,:,ipatch)*4.7
231  !Calculation of radiative attenuation effect in the canopy on correction factor
232  zbvocsg(:) = 0.
233  DO jlayer=1,kngauss
234  zbvocsg(:) = zbvocsg(:) + i%XPOI(jlayer) * zlcor_func(zbvocpar(:,jlayer))
235  ENDDO
236  ptcor(:) = ptcor(:) * zbvocsg(:)
237 ELSE
238  ptcor(:) = ptcor(:) * xcanfac * zlcor_rad(:)
239 ENDIF
240 !
241 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_PATCH',1,zhook_handle)
242 !
243 END SUBROUTINE by_patch
244 !--------------------------------------------------------------------------
245 SUBROUTINE by_veg3(NVT_V1, NVT_V2, NVT_V3, &
246  pisopot, pmonopot, pfiso, pfmono)
247 !
248 IMPLICIT NONE
249 !
250 INTEGER, INTENT(IN) :: nvt_v1
251 INTEGER, INTENT(IN) :: nvt_v2
252 INTEGER, INTENT(IN) :: nvt_v3
253 REAL, DIMENSION(:), INTENT(IN) :: pisopot
254 REAL, DIMENSION(:), INTENT(IN) :: pmonopot
255 REAL, DIMENSION(:), INTENT(OUT) :: pfiso
256 REAL, DIMENSION(:), INTENT(OUT) :: pfmono
257 !
258 REAL(KIND=JPRB) :: zhook_handle
259 !
260 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG3',0,zhook_handle)
261 !
262 !isoprene flux
263 !!
264 !! warning, XISOPOT external map accounts for the total forest fraction
265 WHERE ( i%XVEGTYPE(:,nvt_v1) + i%XVEGTYPE(:,nvt_v2) + i%XVEGTYPE(:,nvt_v3) > 0. )
266  !
267  pfiso(:) = pisopot(:) * &
268  ( ztcor(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
269  +ztcor(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
270  +ztcor(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) )
271  !
272  pfmono(:) = pmonopot(:) * &
273  ( ztcorm(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
274  +ztcorm(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
275  +ztcorm(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) )
276  !
277 ELSEWHERE
278  !
279  pfiso(:) = 0.
280  pfmono(:) = 0.
281  !
282 END WHERE
283 !
284 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG3',1,zhook_handle)
285 !
286 END SUBROUTINE by_veg3
287 !--------------------------------------------------------------------------
288 SUBROUTINE by_veg4(NVT_V1, NVT_V2, NVT_V3, NVT_V4,&
289  pisopot, pmonopot, pfiso, pfmono)
290 !
291 IMPLICIT NONE
292 !
293 INTEGER, INTENT(IN) :: nvt_v1
294 INTEGER, INTENT(IN) :: nvt_v2
295 INTEGER, INTENT(IN) :: nvt_v3
296 INTEGER, INTENT(IN) :: nvt_v4
297 REAL, DIMENSION(:), INTENT(IN) :: pisopot
298 REAL, DIMENSION(:), INTENT(IN) :: pmonopot
299 REAL, DIMENSION(:), INTENT(OUT) :: pfiso
300 REAL, DIMENSION(:), INTENT(OUT) :: pfmono
301 !
302 REAL(KIND=JPRB) :: zhook_handle
303 !
304 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG4',0,zhook_handle)
305 !
306 !isoprene flux
307 !!
308 !! warning, XISOPOT external map accounts for the total forest fraction
309 WHERE ( i%XVEGTYPE(:,nvt_v1) + i%XVEGTYPE(:,nvt_v2) + i%XVEGTYPE(:,nvt_v3) &
310  +i%XVEGTYPE(:,nvt_v4) > 0. )
311  !
312  pfiso(:) = pisopot(:) * &
313  ( ztcor(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
314  +ztcor(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
315  +ztcor(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) &
316  +ztcor(:,nvt_v4) * i%XVEGTYPE(:,nvt_v4) )
317  !
318  pfmono(:) = pmonopot(:) * &
319  ( ztcorm(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
320  +ztcorm(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
321  +ztcorm(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) &
322  +ztcorm(:,nvt_v4) * i%XVEGTYPE(:,nvt_v4) )
323  !
324 ELSEWHERE
325  !
326  pfiso(:) = 0.
327  pfmono(:) = 0.
328  !
329 END WHERE
330 !
331 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG4',1,zhook_handle)
332 !
333 END SUBROUTINE by_veg4
334 !--------------------------------------------------------------------------
335 SUBROUTINE by_veg9(NVT_V1, NVT_V2, NVT_V3, NVT_V4, NVT_V5, NVT_V6, &
336  nvt_v7, nvt_v8, nvt_v9, pisopot, pmonopot, pfiso, pfmono)
337 !
338 IMPLICIT NONE
339 !
340 INTEGER, INTENT(IN) :: nvt_v1
341 INTEGER, INTENT(IN) :: nvt_v2
342 INTEGER, INTENT(IN) :: nvt_v3
343 INTEGER, INTENT(IN) :: nvt_v4
344 INTEGER, INTENT(IN) :: nvt_v5
345 INTEGER, INTENT(IN) :: nvt_v6
346 INTEGER, INTENT(IN) :: nvt_v7
347 INTEGER, INTENT(IN) :: nvt_v8
348 INTEGER, INTENT(IN) :: nvt_v9
349 REAL, DIMENSION(:), INTENT(IN) :: pisopot
350 REAL, DIMENSION(:), INTENT(IN) :: pmonopot
351 REAL, DIMENSION(:), INTENT(OUT) :: pfiso
352 REAL, DIMENSION(:), INTENT(OUT) :: pfmono
353 !
354 REAL(KIND=JPRB) :: zhook_handle
355 !
356 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG9',0,zhook_handle)
357 !
358 !isoprene flux
359 !!
360 !! warning, XISOPOT external map accounts for the total forest fraction
361 WHERE ( i%XVEGTYPE(:,nvt_v1) + i%XVEGTYPE(:,nvt_v2) + i%XVEGTYPE(:,nvt_v3) &
362  +i%XVEGTYPE(:,nvt_v4) + i%XVEGTYPE(:,nvt_v5) + i%XVEGTYPE(:,nvt_v6) &
363  +i%XVEGTYPE(:,nvt_v7) + i%XVEGTYPE(:,nvt_v8) + i%XVEGTYPE(:,nvt_v9) > 0. )
364  !
365  pfiso(:) = pisopot(:) * &
366  ( ztcor(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
367  +ztcor(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
368  +ztcor(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) &
369  +ztcor(:,nvt_v4) * i%XVEGTYPE(:,nvt_v4) &
370  +ztcor(:,nvt_v5) * i%XVEGTYPE(:,nvt_v5) &
371  +ztcor(:,nvt_v6) * i%XVEGTYPE(:,nvt_v6) &
372  +ztcor(:,nvt_v7) * i%XVEGTYPE(:,nvt_v7) &
373  +ztcor(:,nvt_v8) * i%XVEGTYPE(:,nvt_v8) &
374  +ztcor(:,nvt_v9) * i%XVEGTYPE(:,nvt_v9) )
375  !
376  pfmono(:) = pmonopot(:) * &
377  ( ztcorm(:,nvt_v1) * i%XVEGTYPE(:,nvt_v1) &
378  +ztcorm(:,nvt_v2) * i%XVEGTYPE(:,nvt_v2) &
379  +ztcorm(:,nvt_v3) * i%XVEGTYPE(:,nvt_v3) &
380  +ztcorm(:,nvt_v4) * i%XVEGTYPE(:,nvt_v4) &
381  +ztcorm(:,nvt_v5) * i%XVEGTYPE(:,nvt_v5) &
382  +ztcorm(:,nvt_v6) * i%XVEGTYPE(:,nvt_v6) &
383  +ztcorm(:,nvt_v7) * i%XVEGTYPE(:,nvt_v7) &
384  +ztcorm(:,nvt_v8) * i%XVEGTYPE(:,nvt_v8) &
385  +ztcorm(:,nvt_v9) * i%XVEGTYPE(:,nvt_v9) )
386  !
387 ELSEWHERE
388  !
389  pfiso(:) = 0.
390  pfmono(:) = 0.
391  !
392 END WHERE
393 !
394 IF (lhook) CALL dr_hook('CH_BVOCEM_N:BY_VEG9',1,zhook_handle)
395 !
396 END SUBROUTINE by_veg9
397 !--------------------------------------------------------------------------
398 FUNCTION zlcor_func(ZX)
399 
400 REAL, DIMENSION(:) :: zx
401 REAL, DIMENSION(SIZE(ZX)) :: zlcor_func
402 REAL(KIND=JPRB) :: zhook_handle
403 !
404 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZLCOR_FUNC',0,zhook_handle)
405 zlcor_func(:)=0.
406 zlcor_func(:) = zx(:)*xiso_cl*xiso_alf/(1+(xiso_alf**2)*(zx(:)**2))**0.5
407 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZLCOR_FUNC',1,zhook_handle)
408 !
409 END FUNCTION zlcor_func
410 !---------------------------------------------------------------------------
411 FUNCTION ztcor0_func(ZX)
412 
413 REAL, PARAMETER :: r = 8.314
414 REAL :: zx
415 REAL :: ztcor0_func
416 REAL(KIND=JPRB) :: zhook_handle
417 
418 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZTCOR0_FUNC',0,zhook_handle)
419 !
420 ztcor0_func=0.
421 ztcor0_func = exp(xiso_ct1*(zx-xiso_bts)/(r*xiso_bts*zx)) &
422  /(1+exp(xiso_ct2*(zx-xiso_btm)/(r*xiso_bts*zx)))
423  !
424 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZTCOR0_FUNC',1,zhook_handle)
425 END FUNCTION ztcor0_func
426 !---------------------------------------------------------------------------
427 FUNCTION ztcorm0_func(ZX)
428 
429 REAL :: zx
430 REAL :: ztcorm0_func
431 REAL(KIND=JPRB) :: zhook_handle
432 
433 !
434 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZTCORM0_FUNC',0,zhook_handle)
435 ztcorm0_func= 0.
436 ztcorm0_func = exp(xmono_beta*(zx-xmono_t3))
437 IF (lhook) CALL dr_hook('CH_BVOCEM_N:ZTCORM0_FUNC',1,zhook_handle)
438 !
439 END FUNCTION ztcorm0_func
440 !
441 !---------------------------------------------------------------------------
442 !
443 END SUBROUTINE ch_bvocem_n
real function, dimension(size(zx)) zlcor_func(ZX)
Definition: ch_bvocemn.F90:398
subroutine by_veg3(NVT_V1, NVT_V2, NVT_V3, PISOPOT, PMONOPOT, PFISO, PFMONO)
Definition: ch_bvocemn.F90:245
subroutine ch_bvocem_n(CHI, GB, I, PSW_FORBIO, PRHOA, PSFTS)
Definition: ch_bvocemn.F90:6
subroutine by_patch(NVT_VEGTYPE, PTCOR, PTCORM)
Definition: ch_bvocemn.F90:202
integer function vegtype_to_patch(IVEGTYPE, INPATCH)
real function ztcor0_func(ZX)
Definition: ch_bvocemn.F90:411
real function ztcorm0_func(ZX)
Definition: ch_bvocemn.F90:427
subroutine by_veg9(NVT_V1, NVT_V2, NVT_V3, NVT_V4, NVT_V5, NVT_V6, NVT_V7, NVT_V8, NVT_V9, PISOPOT, PMONOPOT, PFISO, PFMONO)
Definition: ch_bvocemn.F90:335
subroutine by_veg4(NVT_V1, NVT_V2, NVT_V3, NVT_V4, PISOPOT, PMONOPOT, PFISO, PFMONO)
Definition: ch_bvocemn.F90:288