7 palbvis_veg, palbvis_soil, palbnir_veg, palbnir_soil, &
8 psw_rad, plai, pzenith, pabc, &
9 pfaparc, pfapirc, pmus, plai_effc, oshade, piacan, &
10 piacan_sunlit, piacan_shade, pfrac_sun, &
11 pfapar, pfapir, pfapar_bs, pfapir_bs )
64 xssa_sup_pir, xssa_inf_pir
77 USE yomhook
,ONLY : lhook, dr_hook
78 USE parkind1
,ONLY : jprb
84 LOGICAL,
INTENT(IN) :: oagri_to_grass
86 REAL,
DIMENSION(:,:),
INTENT(IN) :: pvegtype
88 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_veg
89 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_soil
90 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_veg
91 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_soil
93 REAL,
DIMENSION(:),
INTENT(IN) :: psw_rad
94 REAL,
DIMENSION(:),
INTENT(IN) :: plai
96 REAL,
DIMENSION(:),
INTENT(IN) :: pzenith
100 REAL,
DIMENSION(:),
INTENT(INOUT) :: pabc
103 REAL,
DIMENSION(:),
INTENT(INOUT) :: pfaparc
104 REAL,
DIMENSION(:),
INTENT(INOUT) :: pfapirc
105 REAL,
DIMENSION(:),
INTENT(INOUT) :: pmus
106 REAL,
DIMENSION(:),
INTENT(INOUT) :: plai_effc
108 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: oshade
109 REAL,
DIMENSION(:,:),
INTENT(OUT) :: piacan
110 REAL,
DIMENSION(:,:),
INTENT(OUT) :: piacan_sunlit, piacan_shade
113 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pfrac_sun
115 REAL,
DIMENSION(:),
INTENT(OUT) :: pfapar, pfapir, pfapar_bs, pfapir_bs
120 REAL,
DIMENSION(SIZE(PLAI)) :: zia, zlai, zlai_eff, zxmus, zfd_sky
123 REAL,
DIMENSION(SIZE(PLAI)) :: zb_inf, zb_sup
124 INTEGER,
DIMENSION(1) :: idmax
130 REAL(KIND=JPRB) :: zhook_handle
133 IF (lhook) CALL dr_hook(
'RADIATIVE_TRANSFERT',0,zhook_handle)
138 WHERE (plai(:)==xundef) zlai(:) = 0.0
143 DO jj = 1,
SIZE(plai)
145 idmax = maxloc(pvegtype(jj,:))
146 IF(oagri_to_grass.AND.(idmax(1)==nvt_c3.OR.idmax(1)==nvt_c4.OR.idmax(1)==nvt_irr))idmax(1)=nvt_gras
147 IF (plai(jj).LT.xlai_shade(idmax(1))) oshade(jj) = .false.
148 zb_inf(jj) = xxb_inf(idmax(1))
149 zb_sup(jj) = xxb_sup(idmax(1))
157 zxmus(:) = max(cos(pzenith(:)),0.01)
165 IF (psw_rad(i) > 0.)
THEN
167 zratio = psw_rad(i)/xi0/zxmus(i)
168 IF (zratio < 0.22)
THEN
169 zfd_sky(i) = (1 - 0.09*zratio)
170 ELSE IF (zratio < 0.8)
THEN
171 zfd_sky(i) = (0.9511 + (-0.1604 + (4.388 + (-16.64 + 12.34*zratio)*zratio)*zratio)*zratio)
175 zfd_sky(i) = (1. - ztau) /(1. - (1.-zxmus(i))*ztau)
181 zia(:) = psw_rad(:)*(1.-xparcf)
182 CALL
fapair(pabc, zfd_sky, zia, zlai, zxmus, xssa_sup_pir, xssa_inf_pir, &
183 zb_sup, zb_inf, palbnir_veg, palbnir_soil, oshade, &
186 zia(:) = psw_rad(:)*xparcf
187 CALL
fapair(pabc, zfd_sky, zia, zlai, zxmus, xssa_sup, xssa_inf, &
188 zb_sup, zb_inf, palbvis_veg, palbvis_soil, oshade, &
189 pfapar, pfapar_bs, plai_eff=zlai_eff, piacan=piacan, &
190 piacan_shade=piacan_shade, piacan_sunlit=piacan_sunlit, &
191 pfrac_sun=pfrac_sun )
194 IF (zia(jj).NE.0.)
THEN
195 pfapirc(jj) = pfapirc(jj) + pfapir(jj) * zxmus(jj)
196 pfaparc(jj) = pfaparc(jj) + pfapar(jj) * zxmus(jj)
197 plai_effc(jj) = plai_effc(jj) + zlai_eff(jj) * zxmus(jj)
198 pmus(jj) = pmus(jj) + zxmus(jj)
202 IF (lhook) CALL dr_hook(
'RADIATIVE_TRANSFERT',1,zhook_handle)
subroutine fapair(PABC, PFD_SKY, PIA, PLAI, PXMUS, PSSA_SUP, PSSA_INF, PB_SUP, PB_INF, PALB_VEG, PALB_SOIL, OSHADE, PFAPR, PFAPR_BS, PLAI_EFF, PIACAN, PIACAN_SHADE, PIACAN_SUNLIT, PFRAC_SUN)
subroutine radiative_transfert(OAGRI_TO_GRASS, PVEGTYPE, PALBVIS_VEG, PALBVIS_SOIL, PALBNIR_VEG, PALBNIR_SOIL, PSW_RAD, PLAI, PZENITH, PABC, PFAPARC, PFAPIRC, PMUS, PLAI_EFFC, OSHADE, PIACAN, PIACAN_SUNLIT, PIACAN_SHADE, PFRAC_SUN, PFAPAR, PFAPIR, PFAPAR_BS, PFAPIR_BS)