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 )
61 USE modd_co2v_par
, ONLY : xparcf, xlai_shade, &
64 xssa_sup_pir, xssa_inf_pir, &
67 USE modd_data_cover_par
, ONLY : nvt_c3, nvt_c4, &
69 nvt_c3w, nvt_c3s, nvegtype, nvegtype_ecosg
86 LOGICAL,
INTENT(IN) :: OAGRI_TO_GRASS
88 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
90 REAL,
DIMENSION(:),
INTENT(IN) :: PALBVIS_VEG
91 REAL,
DIMENSION(:),
INTENT(IN) :: PALBVIS_SOIL
92 REAL,
DIMENSION(:),
INTENT(IN) :: PALBNIR_VEG
93 REAL,
DIMENSION(:),
INTENT(IN) :: PALBNIR_SOIL
95 REAL,
DIMENSION(:),
INTENT(IN) :: PSW_RAD
96 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI
98 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
102 REAL,
DIMENSION(:),
INTENT(INOUT) :: PABC
105 REAL,
DIMENSION(:),
INTENT(INOUT) :: PFAPARC
106 REAL,
DIMENSION(:),
INTENT(INOUT) :: PFAPIRC
107 REAL,
DIMENSION(:),
INTENT(INOUT) :: PMUS
108 REAL,
DIMENSION(:),
INTENT(INOUT) :: PLAI_EFFC
110 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: OSHADE
111 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PIACAN
112 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PIACAN_SUNLIT, PIACAN_SHADE
115 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFRAC_SUN
117 REAL,
DIMENSION(:),
INTENT(OUT) :: PFAPAR, PFAPIR, PFAPAR_BS, PFAPIR_BS
122 REAL,
DIMENSION(SIZE(PLAI)) :: ZIA, ZLAI, ZLAI_EFF, ZXMUS, ZFD_SKY
125 REAL,
DIMENSION(SIZE(PLAI)) :: ZB_INF, ZB_SUP
126 INTEGER,
DIMENSION(1) :: IDMAX, IDMAX2
132 REAL(KIND=JPRB) :: ZHOOK_HANDLE
135 IF (
lhook)
CALL dr_hook(
'RADIATIVE_TRANSFERT',0,zhook_handle)
140 WHERE (plai(:)==
xundef) zlai(:) = 0.0
145 DO jj = 1,
SIZE(plai)
147 idmax =
maxloc(pvegtype(jj,:))
148 IF(oagri_to_grass.AND. (idmax(1)==nvt_c3 .OR. idmax(1)==nvt_c3w .OR. &
149 idmax(1)==nvt_c3s .OR. idmax(1)==nvt_c4 .OR. idmax(1)==nvt_irr)) idmax(1) = nvt_gras
151 IF (nvegtype==nvegtype_ecosg) idmax2(1) = itransfert_esg(idmax(1))
152 IF (plai(jj).LT.xlai_shade(idmax2(1))) oshade(jj) = .false.
153 zb_inf(jj) = xxb_inf(idmax2(1))
154 zb_sup(jj) = xxb_sup(idmax2(1))
162 zxmus(:) = max(cos(pzenith(:)),0.01)
170 IF (psw_rad(i) > 0.)
THEN 172 zratio = psw_rad(i)/
xi0/zxmus(i)
173 IF (zratio < 0.22)
THEN 174 zfd_sky(i) = (1 - 0.09*zratio)
175 ELSE IF (zratio < 0.8)
THEN 176 zfd_sky(i) = (0.9511 + (-0.1604 + (4.388 + (-16.64 + 12.34*zratio)*zratio)*zratio)*zratio)
180 zfd_sky(i) = (1. - ztau) /(1. - (1.-zxmus(i))*ztau)
186 zia(:) = psw_rad(:)*(1.-xparcf)
187 CALL fapair(pabc, zfd_sky, zia, zlai, zxmus, xssa_sup_pir, xssa_inf_pir, &
188 zb_sup, zb_inf, palbnir_veg, palbnir_soil, oshade, &
191 zia(:) = psw_rad(:)*xparcf
192 CALL fapair(pabc, zfd_sky, zia, zlai, zxmus, xssa_sup, xssa_inf, &
193 zb_sup, zb_inf, palbvis_veg, palbvis_soil, oshade, &
194 pfapar, pfapar_bs, plai_eff=zlai_eff, piacan=piacan, &
195 piacan_shade=piacan_shade, piacan_sunlit=piacan_sunlit, &
196 pfrac_sun=pfrac_sun )
199 IF (zia(jj).NE.0.)
THEN 200 pfapirc(jj) = pfapirc(jj) + pfapir(jj) * zxmus(jj)
201 pfaparc(jj) = pfaparc(jj) + pfapar(jj) * zxmus(jj)
202 plai_effc(jj) = plai_effc(jj) + zlai_eff(jj) * zxmus(jj)
203 pmus(jj) = pmus(jj) + zxmus(jj)
207 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)