SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ccetr.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 ccetr(PXIA,PIA,PXMUS,PABC,PLAI)
7 !
8 !!*** *CCETR* ***
9 !!
10 !! PURPOSE
11 !! -------
12 !! Calculates radiative transfer within the canopy
13 !!
14 !!** METHOD
15 !! ------
16 !! Calvet et al. 1998 Forr. Agri. Met.
17 !! [from model of Jacobs(1994) and Roujean(1996)]
18 !!
19 !! EXTERNAL
20 !! --------
21 !! none
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !! USE MODD_CO2V_PAR
26 !!
27 !! REFERENCE
28 !! ---------
29 !! Calvet et al. 1998 Forr. Agri. Met.
30 !!
31 !! AUTHOR
32 !! ------
33 !! A. Boone * Meteo-France *
34 !! (following Belair)
35 !!
36 !! MODIFICATIONS
37 !! -------------
38 !! Original 27/10/97
39 !!
40 !-------------------------------------------------------------------------------
41 !
42 USE modd_co2v_par, ONLY : xdifracf, xxgt, xxbomega
43 !
44 !* 0. DECLARATIONS
45 ! ------------
46 !
47 !
48 USE yomhook ,ONLY : lhook, dr_hook
49 USE parkind1 ,ONLY : jprb
50 !
51 IMPLICIT NONE
52 !
53 !* 0.1 declarations of arguments
54 !
55 REAL, INTENT(IN) :: pabc
56 ! PABC = abscissa needed for integration
57 ! of net assimilation and stomatal
58 ! conductance over canopy depth
59 !
60 REAL, DIMENSION(:), INTENT(IN) :: pia,pxmus,plai
61 ! PIA = absorbed PAR
62 ! PXMUS = cosine of solar zenith angle
63 ! PLAI = leaf area index
64 !
65 REAL, DIMENSION(:), INTENT(OUT):: pxia
66 ! PXIA = incident radiation after diffusion
67 !
68 !* 0.2 declarations of local variables
69 !
70 REAL, DIMENSION(SIZE(PIA,1)) :: zxfd,zxslai,zxidf,zxidr
71 ! ZXFD = fraction of diffusion
72 ! ZXSLAI = LAI of upper layer
73 ! ZXIDF = interception of diffusion
74 ! ZXIDR = direct interception
75 !
76 REAL(KIND=JPRB) :: zhook_handle
77 !
78 !----------------------------------------------------------------------
79 !
80 IF (lhook) CALL dr_hook('CCETR',0,zhook_handle)
81 !
82 pxia(:) = 0.
83 !
84 WHERE (pia(:)>0.)
85 !
86 ! diffusion fraction
87 !
88 ! fraction of diffusion
89 !
90  zxfd(:) = xdifracf/(xdifracf + pxmus(:))
91 !
92 ! LAI of upper layer
93 !
94  zxslai(:) = plai(:)*(1.0-pabc)
95 !
96 ! interception of diffusion
97 !
98  zxidf(:) = zxfd(:)*(1.0-exp(-0.8*zxslai(:)*xxbomega))
99  !ZXIDF(:) = 0.8*XXBOMEGA*EXP(-0.8*ZXSLAI(:)*XXBOMEGA)
100 !
101 ! direct interception
102 !
103  zxidr(:) = (1.0-zxfd(:))*(1.0-exp(-xxgt*zxslai(:)*xxbomega/pxmus(:)))
104  !ZXIDR(:) = XXGT*XXBOMEGA/PXMUS(:)*EXP(-XXGT*ZXSLAI(:)*XXBOMEGA/PXMUS(:))
105 !
106 ! Adjusted radiation:
107 !
108  pxia(:) = pia(:)*(1.0-zxidf(:)-zxidr(:))
109  !PXIA(:) = PIA(:)*(ZXFD(:)*ZXIDF(:) + (1 - ZXFD(:))*ZXIDR(:))
110 !
111 END WHERE
112 !
113 IF (lhook) CALL dr_hook('CCETR',1,zhook_handle)
114 !
115 END SUBROUTINE ccetr
subroutine ccetr(PXIA, PIA, PXMUS, PABC, PLAI)
Definition: ccetr.F90:6