SURFEX v8.1
General documentation of Surfex
cotwores.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 cotwores(PTSTEP, IO, OSHADE, PK, PEK, PDMAX, PPOI, PCSP, &
7  PTG, PF2, PSW_RAD, PQA, PQSAT, PPSNV, PDELTA, PRHOA, &
8  PZENITH, PFFV, PIACAN_SUNLIT, PIACAN_SHADE, PFRAC_SUN, &
9  PIACAN, PABC, PRS, PGPP, PRESP_LEAF )
10 ! #########################################################################
11 !
12 !!**** *COTWORES*
13 !!
14 !! PURPOSE
15 !! -------
16 !!
17 !! Calculates net assimilation of CO2 and leaf conductance.
18 !!
19 !!** METHOD
20 !! ------
21 !! Calvet et al. 1998 Forr. Agri. Met. [from model of Jacobs(1994)]
22 !!
23 !! EXTERNAL
24 !! --------
25 !! none
26 !!
27 !! IMPLICIT ARGUMENTS
28 !! ------------------
29 !!
30 !! USE MODD_CST
31 !! USE MODD_CO2V_PAR
32 !! USE MODI_COTWO
33 !! USE MODI_CCETR
34 !! USE MODE_THERMOS
35 !!
36 !! REFERENCE
37 !! ---------
38 !!
39 !! Calvet et al. 1998 Forr. Agri. Met.
40 !!
41 !! AUTHOR
42 !! ------
43 !!
44 !! A. Boone * Meteo-France *
45 !! (following Belair)
46 !!
47 !! MODIFICATIONS
48 !! -------------
49 !! Original 27/10/97
50 !! V. Masson and V. Rivailland 12/2003 modificatino of ISBA routines order
51 !! L. Jarlan 27/10/04 : add of T2 to calculate soil respiration and use
52 !! of CRESPSL key to manage the calculation of soil
53 !! respiration
54 !! PEK%XAN et PPST in kgCO2 m-2 s-1 to be fully
55 !! compatible with vegetation growth module (lailoss.f90)
56 !! P Le Moigne 09/2005 AGS modifs of L. Jarlan
57 !! S. Lafont 03/09 : change units of EPSO GAMM ANDAY
58 !! A.L. Gibelin 06/09 : suppress evolution of [CO2] in canopy
59 !! A.L. Gibelin 06/09 : move calculations of some CO2 fluxes
60 !! A.L. Gibelin 06/09 : add RESP_LEAF
61 !! A.L. Gibelin 07/09 : ensure coherence between cotwores and cotworestress
62 !! A.L. Gibelin 07/09 : Suppress PPST and PPSTF as outputs, and diagnose GPP
63 !! S. Lafont 03/11 : Correct a bug fopr grassland below wilting point
64 !! D. Carrer 04/11 : new radiative transfert
65 !! A. Boone 11/11 : add rsmax to MODD_VEG_PAR
66 !! B. Decharme 05/12 : Bug : flood fraction in COTWORES
67 !! Optimization
68 !! R. Alkama 04/12 : add 6 new tree vegtype (9 instead 3)
69 !! C. Delire 01/14 : vertical profile of dark respiration for tropical forest
70 !! (GTROP) with Carrer radiative transfer (IO%LTR_ML = T)
71 !!Seferian & Delire 06/2015 : generalization of (i) linear water-stress reponse
72 ! and (ii) exponential decrease of autothrophic respiration to all woody PFTs
73 !! B. Decharme 07/15 : Suppress some numerical adjustement for F2
74 !!
75 !-------------------------------------------------------------------------------
76 !
78 USE modd_isba_n, ONLY : isba_p_t, isba_pe_t
79 !
80 USE modd_csts, ONLY : xmd, xtt, xlvtt
81 USE modd_isba_par, ONLY : xrs_max, xdenom_min
82 USE modd_co2v_par, ONLY : xparcf, xmco2, &
83  xdmaxx, xdmaxn, xaw, xbw, xasw
84 USE modd_data_cover_par, ONLY : nvt_tebd, nvt_trbe, nvt_bone, &
85  nvt_trbd, nvt_tebe, nvt_tene, &
86  nvt_bobd, nvt_bond, nvt_shrb
87 USE modd_surf_par, ONLY : xundef
88 !
89 USE modi_ccetr
90 USE modi_cotwo
91 !
92 !* 0. DECLARATIONS
93 ! ------------
94 !
95 !
96 USE yomhook ,ONLY : lhook, dr_hook
97 USE parkind1 ,ONLY : jprb
98 !
99 IMPLICIT NONE
100 !
101 !* 0.1 declarations of arguments
102 !
103 !
104 REAL, INTENT(IN) :: PTSTEP ! time step
105 !
106 TYPE(isba_options_t), INTENT(INOUT) :: IO
107 TYPE(isba_p_t), INTENT(INOUT) :: PK
108 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
109 !
110 LOGICAL, DIMENSION(:),INTENT(IN) :: OSHADE
111 !
112 REAL, DIMENSION(:), INTENT(IN) :: PPOI ! Gaussian weights (as above)
113 !
114 REAL,DIMENSION(:), INTENT(IN) :: PDMAX
115 ! PDMAX = maximum saturation deficit of
116 ! atmosphere tolerate by vegetation
117 !
118 REAL,DIMENSION(:), INTENT(IN) :: PCSP, PTG, PF2, PSW_RAD
119 ! PCSP = atmospheric concentration of CO2
120 ! PTG = updated leaf temperature
121 ! PF2 = normalized soil water stress factor
122 ! PSW_RAD = incident solar radiation
123 !
124 REAL,DIMENSION(:), INTENT(IN) :: PQA, PQSAT, PPSNV, PDELTA, PRHOA
125 ! PQA = atmospheric mixing ratio
126 ! PQSAT = surface saturation mixing ratio
127 ! PPSNV = snow cover fraction
128 ! PDELTA= fraction of the foliage covered
129 ! by intercepted water
130 ! PEK%XRESA = air density
131 !
132 REAL,DIMENSION(:), INTENT(IN) :: PZENITH
133 ! PZENITH = solar zenith angle needed
134 ! for computation of diffusuion of solar
135 ! radiation: for CO2 model.
136 !
137 REAL, DIMENSION(:,:), INTENT(IN) :: PIACAN_SUNLIT, PIACAN_SHADE, PFRAC_SUN
138 !
139 REAL, DIMENSION(:), INTENT(IN) :: PFFV ! Floodplain fraction over vegetation
140 !
141 REAL, DIMENSION(:,:), INTENT(INOUT) :: PIACAN ! PAR in the canopy at different gauss level
142 !
143 REAL,DIMENSION(:), INTENT(INOUT) :: PABC, PRS, PGPP
144 ! PABC = Carrer radiative transfer: normalized heigh of considered layer (bottom=0, top=1)
145 ! Calvet radiative transfer: abcissa of the 3-points Gaussian quadrature
146 ! (Goudriaan, Agric&For.Meteor, 38,1986)
147 ! PRS = stomatal resistance
148 ! PGPP = Gross Primary Production (kg_CO2/kg_air * m/s)
149 !
150 REAL,DIMENSION(:), INTENT(OUT) :: PRESP_LEAF
151 ! PRESP_LEAF = dark respiration over canopy
152 !
153 !* 0.2 declarations of local variables
154 !
155 REAL, PARAMETER :: ZRS_MIN = 1.e-4 ! minimum canopy resistance (s m-1)
156 !
157 INTEGER :: JINT, JJ ! index for loops
158 !
159 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZANF ! ZANF = total assimilation over canopy
160 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZCONVE1, ZTSPC, ZIA
161 ! ZTSPC = temperature conversion (K to C)
162 ! ZIA = absorbed PAR
163 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZLAI, ZGMEST, ZFZERO, ZDMAX
164 ! ZLAI = LAI
165 ! ZFZERO = ideal value of F, no photorespiration or
166 ! saturation deficit
167 ! ZDMAX = maximum saturation deficit of atmosphere
168 ! tolerate by vegetation
169 !
170 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZGAMMT, ZDSP, ZANMAX
171 ! ZGAMMT = compensation point
172 ! ZDSP = saturation deficit of atmosphere
173 ! verses the leaf surface (with correction)
174 !
175 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZXMUS, ZTAN, ZTGS, ZXIA, ZAN0, ZGS0, ZXTGS, ZRDK,ZLAITOP,ZTRDK,ZZLAI
176 ! ZXMUS = cosine of solar zenith angle
177 ! ZTAN = canopy integrated net assimilation
178 ! ZTGS = canopy integrated leaf conductance
179 ! ZXIA = incident radiation after diffusion
180 ! ZAN0 = net asimilation at each interval
181 ! in the canopy
182 ! ZGS0 = leaf conductance at each interval
183 ! in the canopy
184 ! ZXTGS = total canopy conductance
185 ! ZRDK = dark respiration
186 ! ZLAITOP = LAI (thickness of canopy) above considered layer
187 ! ZTRDK = canopy integrated dark respiration
188 ! ZZLAI = LAI, used for dark respiration profile
189 !
190 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZAN0_,ZGS0_,ZRDK_ ! parameters for shaded leaves
191 !
192 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZEPSO
193 ! ZEPSO conversion of PEPSO in kgCO2/kgair m/s
194 !
195 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZDMAXSTAR, ZFZEROSTAR, ZFZERON, ZGMESTN
196 ! ZDMAXSTAR = maximum saturation deficit of atmosphere
197 ! tolerate by vegetation without soil water stress
198 ! ZFZEROSTAR = initial optimal ratio Ci/Cs for woody vegetation
199 ! ZFZERON = minimum value for "fzero" in defensive woody strategy
200 ! ZGMESTN = gmest value at zf2=zf2i in offensive woody strategy
201 !
202 !
203 REAL :: ZABC, ZWEIGHT
204 ! ZABC = abscissa needed for integration
205 ! of net assimilation and stomatal
206 ! conductance over canopy depth
207 ! (working scalar)
208 !
209 REAL, DIMENSION(SIZE(PEK%XLAI,1)) :: ZWORK !Work array
210 !
211 LOGICAL, DIMENSION(SIZE(PEK%XLAI,1)) :: GHERB, GWOOD, GF2_INF_F2I, GTROP
212 !
213 INTEGER, DIMENSION(1) :: IDMAX
214 !
215 REAL(KIND=JPRB) :: ZHOOK_HANDLE
216 !-------------------------------------------------------------------------------
217 !
218 ! STOMATAL RESISTANCE: ENTRY VARIABLES TO CO2 ROUTINE:
219 ! CS = CO2 concentration (kgCO2 kgair-1) cs
220 ! DSP = specific humidity deficit (kgH2O kgair-1) ds
221 ! TSM = surface temperature (C) ts
222 ! RG = global radiation (W m-2) rg
223 !
224 ! initialisation: convert from ppm to mg/m-3
225 !
226 IF (lhook) CALL dr_hook('COTWORES',0,zhook_handle)
227 !
228 zconve1(:) = xmco2*prhoa/xmd
229 !
230 ! initialisation: convert from K to C
231 !
232 ztspc(:) = ptg(:) - xtt
233 !
234 zlai(:) = pek%XLAI(:)
235 zgmest(:) = pek%XGMES(:)
236 zfzero(:) = pk%XFZERO(:)
237 !
238 !GTROP = linear stress in case of tropical evergreen forest
239 ! (with fixed f0=0.74 for Carrer rad. transf., f0=0.7 with Calvet rad. transf.)
240 gtrop(:) = (pk%XVEGTYPE_PATCH(:,nvt_trbe) > 0.8)
241 !
242 gherb(:) = (pk%XVEGTYPE_PATCH(:,nvt_tebd) + pk%XVEGTYPE_PATCH(:,nvt_trbe) + pk%XVEGTYPE_PATCH(:,nvt_bone) &
243  +pk%XVEGTYPE_PATCH(:,nvt_trbd) + pk%XVEGTYPE_PATCH(:,nvt_tebe) + pk%XVEGTYPE_PATCH(:,nvt_tene) &
244  +pk%XVEGTYPE_PATCH(:,nvt_bobd) + pk%XVEGTYPE_PATCH(:,nvt_bond) + pk%XVEGTYPE_PATCH(:,nvt_shrb)<0.5)
245 gwood(:) = (.NOT.gherb(:))
246 !
247 !
248 WHERE (pek%XLAI(:)==xundef) zlai(:)=0.0
249 !
250 ! See (Varlet-Granchet C., M. Chartier, G. Gosse, and R. Bonhomme, 1981:
251 ! Rayonnement utilise pour la photosynthese des vegetaux en
252 ! conditions naturelles: caracterisation et variations.
253 ! Oecol. Plant. 2(16), 189-202.)
254 !
255 !-------------------------------------
256 ! Add soil moisture stress effect to leaf conductance:
257 ! OFFENSIVE and DEFENSIVE water stress response
258 !
259 zdmax(:) = pdmax(:)
260 !
261 gf2_inf_f2i(:) = (pf2(:)<pek%XF2I(:))
262 !
263 ! -HERBACEOUS-
264 !
265 WHERE(gherb(:).AND.pek%LSTRESS(:))
266  zdmax(:) = xdmaxn
267 ENDWHERE
268 WHERE(gherb(:).AND..NOT.pek%LSTRESS(:))
269  zdmax(:) = xdmaxx
270 ENDWHERE
271 !
272 ! PAH and PBH are original coefficients of Calvet 2000
273 WHERE(gherb(:).AND.(.NOT.gf2_inf_f2i(:)))
274  zdmaxstar(:) = exp((log(zgmest(:)*1000.)-pk%XAH(:))/pk%XBH(:))/1000.
275  zdmax(:) = zdmaxstar(:) - (zdmaxstar(:)-zdmax(:))*(1.-pf2(:))/(1.-pek%XF2I(:))
276 ENDWHERE
277 !
278 WHERE(gherb(:))
279  zgmest(:) = exp(pk%XAH(:)+pk%XBH(:)*log(zdmax(:)*1000.))/1000.
280 ENDWHERE
281 !
282 WHERE (gherb(:).AND.gf2_inf_f2i(:).AND.pek%LSTRESS(:))
283  zgmest(:) = zgmest(:) * pf2(:)/pek%XF2I(:)
284 ENDWHERE
285 WHERE(gherb(:).AND.gf2_inf_f2i(:).AND.(.NOT.pek%LSTRESS(:)))
286  zdmax(:) = zdmax(:) * pf2(:)/pek%XF2I(:)
287 ENDWHERE
288 !
289 ! to limit photosynthesis under wilting point
290 WHERE (gherb(:).AND.(.NOT.pek%LSTRESS(:)).AND.zdmax(:)<=xdmaxn)
291  zdmax(:) = xdmaxn
292  zgmest(:) = (exp(pk%XAH(:)+pk%XBH(:)*log(xdmaxn*1000.))/1000.)*pf2(:)/pek%XF2I(:)
293 ENDWHERE
294 !
295 ! -WOODY but not tropical forest-
296 !
297 WHERE(gwood(:))
298  zfzerostar(:) = ( xaw - log(zgmest(:)*1000.) )/xbw
299 ENDWHERE
300 !
301 WHERE (gwood(:).AND.pek%LSTRESS(:))
302  zgmestn(:) = zgmest(:)
303 ENDWHERE
304 WHERE(gwood(:).AND.(.NOT.pek%LSTRESS(:)))
305  zgmestn(:) = exp(xasw - xbw*zfzerostar(:))/1000.
306 ENDWHERE
307 !
308 WHERE (gwood(:).AND.gf2_inf_f2i(:))
309  zgmestn(:) = zgmestn(:)*pf2(:)/pek%XF2I(:)
310 ENDWHERE
311 !
312 WHERE(gwood(:))
313  zwork(:) = max( xdenom_min, zgmestn(:) )
314  zfzeron(:) = (xasw - log(zwork(:)*1000.))/xbw
315 ENDWHERE
316 !
317 WHERE(gwood(:).AND.(.NOT.gf2_inf_f2i(:)).AND.pek%LSTRESS(:))
318  zfzero(:) = zfzerostar(:)
319  zfzero(:) = zfzero(:) - (zfzero(:)-zfzeron(:))*(1.-pf2(:))/(1.-pek%XF2I(:))
320 ENDWHERE
321 WHERE(gwood(:).AND.(.NOT.gf2_inf_f2i(:)).AND.(.NOT.pek%LSTRESS(:)))
322  zfzero(:) = zfzerostar(:)
323  zgmest(:) = zgmest(:) - (zgmest(:)-zgmestn(:))*(1.-pf2(:))/(1.-pek%XF2I(:))
324 ENDWHERE
325 !
326 WHERE(gwood(:).AND.gf2_inf_f2i(:))
327  zfzero(:) = min(.95, zfzeron(:))
328  zgmest(:) = zgmestn(:)
329 ENDWHERE
330 !
331 ! -Tropical Forest-
332 !
333 WHERE(gtrop(:))
334  zfzero(:) = pk%XFZERO(:)
335  zgmest(:) = pek%XGMES(:)*pf2(:)
336 ENDWHERE
337 !
338 !-------------------------
339 !
340 ! compensation point (ppm): temperature response
341 !
342 !before optimization (with non log PQDGAMM) :
343 !ZGAMMT(:) = PGAMM(:)*PQDGAMM(:)**(0.1*(ZTSPC(:)-25.0))
344 zwork(:) = (0.1*(ztspc(:)-25.0)) * pk%XQDGAMM(:)
345 zgammt(:) = pk%XGAMM(:) * exp(zwork(:))
346 !
347 ! specific humidity deficit (kg kg-1)
348 !
349 zdsp(:) = max( 0.0, pqsat(:) - pqa(:) - pek%XLE(:)*pek%XRESA(:)/(prhoa*xlvtt) )
350 !
351 ! cosine of solar zenith angle
352 !
353 zxmus(:) = max(cos(pzenith(:)),0.01)
354 !
355 !
356 ! Compute temperature response functions:
357 !
358 ! kg/m2/s
359 !before optimization (with non log PQDAMAX) :
360 !ZANMAX(:) = ( PAMAX(:)*PQDAMAX(:)**(0.1*(ZTSPC(:)-25.0)) ) / ...
361 zwork(:) = (0.1*(ztspc(:)-25.0)) * pk%XQDAMAX(:)
362 zanmax(:) = ( pk%XAMAX(:) * exp(zwork(:)) ) &
363  / ( (1.0+exp(0.3*(pk%XT1AMAX(:)-ztspc(:))))* (1.0+exp(0.3*(ztspc(:)-pk%XT2AMAX(:)))) )
364 !
365 ! m/s
366 !before optimization (with non log PQDGMES) :
367 !ZGMEST(:) = ( ZGMEST(:)*PQDGMES(:)**(0.1*(ZTSPC(:)-25.0)) ) / ...
368 zwork(:) = (0.1*(ztspc(:)-25.0)) * pk%XQDGMES(:)
369 zgmest(:) = ( zgmest(:) * exp(zwork(:)) ) &
370  / ( (1.0+exp(0.3*(pk%XT1GMES(:)-ztspc(:))))* (1.0+exp(0.3*(ztspc(:)-pk%XT2GMES(:)))) )
371 !
372 !
373 ! Integration over the canopy: SIZE(PABC) increments
374 ! are used to approximate the integral.
375 !
376 ztan(:) = 0.0
377 ztgs(:) = 0.0
378 ztrdk(:)= 0.0
379 !
380 ! Unit conversion
381 ! ZANMAX and ZEPSO from kgCO2/m2/s to kgCO2/kgair m/s by dividing by RHOA (kgair/m3)
382 ! ZGAMMT from ppm to kgCO2/kgair
383 zgammt(:) = zgammt(:) * xmco2 / xmd * 1e-6
384 zanmax(:) = zanmax(:) / prhoa
385 zepso(:) = pk%XEPSO(:) / prhoa
386 !
387 zia(:) = psw_rad(:)*xparcf
388 !
389 DO jint = 1, SIZE(pabc)
390  !
391  ! Diffusion of incident radiation:
392  !
393  IF (io%LTR_ML) THEN
394  !
395  zabc = 1.
396  IF (jint.LT.SIZE(pabc)) zabc = pabc(jint+1)
397  zweight = zabc - pabc(jint)
398  zxia(:) = piacan_sunlit(:,jint)
399  !
400  ELSE
401  !
402  zabc = pabc(jint)
403  zweight = ppoi(jint)
404  !
405  CALL ccetr(zxia,zia,zxmus,zabc,zlai)
406  !
407  ! PAR at different Gauss level in micmolphot/m2/s
408  !
409  piacan(:,jint)= zxia(:)
410  !
411  ENDIF
412  !
413  ! Compute conductance and assimilation of CO2:
414  !
415  !Extinction of respiration depends on LAI above only for tropical evergreen forest
416  zlaitop(:) = 0.
417  zzlai(:) = 1.
418  IF (io%LTR_ML) THEN
419  WHERE(gwood(:))
420  zlaitop(:) = (1.-(pabc(jint)+zabc)/2.)*zlai(:)
421  zzlai(:) = zlai(:)
422  ENDWHERE
423  ENDIF
424  CALL cotwo(pcsp, pf2, zxia, zdsp, zgammt, &
425  zfzero, zepso, zanmax, zgmest, pek%XGC(:), zdmax, &
426  zan0, zgs0, zrdk, zlaitop, zzlai )
427  !
428  IF (io%LTR_ML) THEN
429  !
430  zxia(:) = piacan_shade(:,jint)
431  CALL cotwo(pcsp, pf2, zxia, zdsp, zgammt, &
432  zfzero, zepso, zanmax, zgmest, pek%XGC(:), zdmax, &
433  zan0_, zgs0_, zrdk_, zlaitop, zzlai )
434  !
435  WHERE (oshade(:))
436  !ponderate sum.
437  zan0(:)=pfrac_sun(:,jint)*zan0(:)+(1.-pfrac_sun(:,jint))*zan0_(:)
438  zrdk(:)=pfrac_sun(:,jint)*zrdk(:)+(1.-pfrac_sun(:,jint))*zrdk_(:)
439  zgs0(:)=pfrac_sun(:,jint)*zgs0(:)+(1.-pfrac_sun(:,jint))*zgs0_(:)
440  ENDWHERE
441  !
442  ENDIF
443  !
444  ! kgCO2/kgair m/s
445  ztan(:) = ztan(:) + zan0(:)*zweight
446  ztgs(:) = ztgs(:) + zgs0(:)*zweight
447  ztrdk(:) = ztrdk(:) + zrdk(:)*zweight
448  !
449 END DO
450 !
451 !
452 ! Total assimilation
453 !
454 zanf(:)= ztan(:)
455 !
456 ! Net assimilation over canopy
457 !
458 pek%XAN(:) = (1.0-pdelta(:))*(1.0-ppsnv(:)-pffv(:))*zanf(:)*zlai(:)
459 !
460 ! Dark respiration over canopy (does not depend on radiation,
461 ! no need to integrate over vertical dimension)
462 !
463 presp_leaf(:) = (1.0-pdelta(:))*(1.0-ppsnv(:)-pffv(:))*ztrdk(:)*zlai(:)
464 !
465 ! Gross primary production over canopy
466 !
467 pgpp(:) = pek%XAN(:) + presp_leaf(:)
468 !
469 ! Cumulated daily net assimilation over canopy (kgCO2/m2/day)
470 !
471 pek%XANDAY(:) = pek%XANDAY(:) + pek%XAN(:) * ptstep * prhoa
472 !
473 ! Adjust maximum leaf assimilation:
474 !
475 pek%XANFM(:) = max( zanf(:), pek%XANFM(:) )
476 !
477 ! Total conductance over canopy
478 !
479 zxtgs(:) = ztgs(:)*zlai(:)
480 !
481 ! Canopy resistance from Ags:
482 !
483 prs(:) = min( 1.0/(zxtgs(:)+xdenom_min), xrs_max)
484 !
485 prs(:) = max( prs(:), zrs_min)
486 !
487 IF (lhook) CALL dr_hook('COTWORES',1,zhook_handle)
488 !
489 END SUBROUTINE cotwores
real, save xmd
Definition: modd_csts.F90:61
real, save xlvtt
Definition: modd_csts.F90:70
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine cotwores(PTSTEP, IO, OSHADE, PK, PEK, PDMAX, PPOI, PCSP, PTG, PF2, PSW_RAD, PQA, PQSAT, PPSNV, PDELTA, PRHOA, PZENITH, PFFV, PIACAN_SUNLIT, PIACAN_SHADE, PFRAC_SUN, PIACAN, PABC, PRS, PGPP, PRESP_LEAF)
Definition: cotwores.F90:10
logical lhook
Definition: yomhook.F90:15
subroutine ccetr(PXIA, PIA, PXMUS, PABC, PLAI)
Definition: ccetr.F90:7
subroutine cotwo(PCSP, PF2, PIA, PDS, PGAMMT, PFZERO, PEPSO, PANMAX, PGMEST, PGC, PDMAX, PAN, PGS, PRD, PLAITOP, PLAI)
Definition: cotwo.F90:9
real, save xtt
Definition: modd_csts.F90:66