8 pzenith,pveg,pz0,plai, &
9 omeb_patch,pgndlitter, &
14 palbnir_veg,palbvis_veg, &
16 palbnir_soil,palbvis_soil, &
20 palbnir_eco,palbvis_eco, &
23 pemis,ptsrad,ptsurf, &
75 USE modi_update_rad_isba_n
76 USE modi_isba_lwnet_meb
79 USE yomhook
,ONLY : lhook, dr_hook
80 USE parkind1
,ONLY : jprb
88 TYPE(isba_t
),
INTENT(INOUT) :: i
90 LOGICAL,
INTENT(IN) :: oflood
91 CHARACTER(LEN=4),
INTENT(IN) :: halbedo
98 REAL,
DIMENSION(:,:),
INTENT(IN) :: pveg
99 REAL,
DIMENSION(:,:),
INTENT(IN) :: pz0
100 REAL,
DIMENSION(:,:),
INTENT(IN) :: plai
101 LOGICAL,
DIMENSION(:),
INTENT(IN) :: omeb_patch
102 REAL,
DIMENSION(:,:),
INTENT(IN) :: pgndlitter
103 REAL,
DIMENSION(:,:),
INTENT(IN) :: plaigv
104 REAL,
DIMENSION(:,:),
INTENT(IN) :: pz0litter
105 REAL,
DIMENSION(:,:),
INTENT(IN) :: ph_veg
106 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptv
107 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptg1
108 REAL,
DIMENSION(:,:),
INTENT(IN) :: ppatch
109 REAL,
DIMENSION(:),
INTENT(IN) :: psw_bands
110 REAL,
DIMENSION(:),
INTENT(IN) :: pzenith
112 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbnir_veg
113 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbvis_veg
114 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbuv_veg
115 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbnir_soil
116 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbvis_soil
117 REAL,
DIMENSION(:,:),
INTENT(IN) :: palbuv_soil
118 REAL,
DIMENSION(:,:),
INTENT(IN) :: pemis_eco
121 REAL,
DIMENSION(:,:),
INTENT(OUT) :: palbnir_eco
122 REAL,
DIMENSION(:,:),
INTENT(OUT) :: palbvis_eco
123 REAL,
DIMENSION(:,:),
INTENT(OUT) :: palbuv_eco
125 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdir_alb
126 REAL,
DIMENSION(:,:),
INTENT(OUT) :: psca_alb
127 REAL,
DIMENSION(:),
INTENT(OUT) :: pemis
128 REAL,
DIMENSION(:),
INTENT(OUT) :: ptsrad
129 REAL,
DIMENSION(:),
INTENT(OUT) :: ptsurf
131 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: pdir_sw
132 REAL,
DIMENSION(:,:),
INTENT(IN),
OPTIONAL :: psca_sw
139 REAL,
DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: zdir_alb_patch
141 REAL,
DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: zsca_alb_patch
143 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1),SIZE(PALBVIS_VEG,2)) :: zemis_patch
144 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1),SIZE(PALBVIS_VEG,2)) :: ztsrad_patch
145 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1),SIZE(PALBVIS_VEG,2)) :: ztsurf_patch
146 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zemis
148 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zsnowdepth
149 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zpalphan
150 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zlw_rad
151 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zlw_up
152 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zlwnet_n
153 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zlwnet_v
154 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zlwnet_g
155 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zdummy
156 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zemisf
157 REAL,
DIMENSION(SIZE(PEMIS_ECO, 1)) :: zff
159 LOGICAL :: lexplicit_snow
165 REAL(KIND=JPRB) :: zhook_handle
171 IF (lhook) CALL dr_hook(
'AVERAGED_ALBEDO_EMIS_ISBA',0,zhook_handle)
182 zdir_alb_patch(:,:,:)=0.
183 zsca_alb_patch(:,:,:)=0.
186 lexplicit_snow = (tpsnow%SCHEME==
'3-L'.OR.tpsnow%SCHEME==
'CRO')
188 ztsrad_patch(:,:) = ptg1(:,:)
189 ztsurf_patch(:,:) = ptg1(:,:)
196 palbvis_veg,palbnir_veg,palbuv_veg,pveg, &
197 palbvis_soil,palbnir_soil,palbuv_soil, &
198 palbvis_eco,palbnir_eco,palbuv_eco )
210 IF(present(pdir_sw))
THEN
215 oflood, tpsnow%SCHEME,pzenith,psw_bands,pveg,plai,pz0, &
216 omeb_patch,plaigv,pgndlitter,pz0litter, ph_veg, &
217 palbnir_eco,palbvis_eco,palbuv_eco,pemis_eco, &
218 zdir_alb_patch,zsca_alb_patch,zemis_patch, &
220 palbnir_veg, palbnir_soil, &
221 palbvis_veg, palbvis_soil )
227 oflood, tpsnow%SCHEME,pzenith,psw_bands,pveg,plai,pz0, &
228 omeb_patch,plaigv,pgndlitter,pz0litter, ph_veg, &
229 palbnir_eco,palbvis_eco,palbuv_eco,pemis_eco, &
230 zdir_alb_patch,zsca_alb_patch,zemis_patch )
236 DO jpatch=1,
SIZE(palbvis_veg,2)
238 IF(omeb_patch(jpatch))
THEN
242 zsnowdepth(:) = sum(tpsnow%WSNOW(:,:,jpatch)/tpsnow%RHO(:,:,jpatch),2)
243 zpalphan(:) =
mebpalphan(zsnowdepth,ph_veg(:,jpatch))
248 zemisf(:) = i%XEMISF(:,jpatch)
249 zff(:) = i%XFF (:,jpatch)
256 tpsnow%EMIS(:,jpatch),zemisf(:),zff(:), &
257 ptv(:,jpatch),ptg1(:,jpatch),tpsnow%TS(:,jpatch), &
258 zlw_rad,zlwnet_n,zlwnet_v,zlwnet_g, &
259 zdummy,zdummy,zdummy, &
260 zdummy,zdummy,zdummy, &
261 zdummy,zdummy,zdummy, &
262 zdummy,zdummy,zdummy )
264 zlw_up(:) = zlw_rad(:) - (zlwnet_v(:) + zlwnet_g(:) + zlwnet_n(:))
268 WHERE (zemis_patch(:,jpatch)/=0.)
269 ztsrad_patch(:,jpatch) = ((zlw_up(:) - zlw_rad(:)*(1.0-zemis_patch(:,jpatch)))/ &
270 (xstefan*zemis_patch(:,jpatch)))**0.25
275 zemis(:) = pemis_eco(:,jpatch)
277 IF(oflood.AND.lexplicit_snow)
THEN
278 WHERE(i%XPSN(:,jpatch)<1.0.AND.pemis_eco(:,jpatch)/=xundef)
279 zemis(:) = ((1.-i%XFF(:,jpatch)-i%XPSN(:,jpatch))*pemis_eco(:,jpatch) + i%XFF(:,jpatch)*i%XEMISF(:,jpatch)) &
280 /(1.-i%XPSN(:,jpatch))
284 IF (.NOT.lexplicit_snow)
THEN
285 ztsrad_patch(:,jpatch) = ptg1(:,jpatch)
286 ELSE IF (lexplicit_snow)
THEN
287 WHERE (pemis_eco(:,jpatch)/=xundef .AND. zemis_patch(:,jpatch)/=0.)
288 ztsrad_patch(:,jpatch) =( ( (1.-i%XPSN(:,jpatch))*zemis(:) *ptg1(:,jpatch)**4 &
289 + i%XPSN(:,jpatch) *tpsnow%EMIS(:,jpatch)*tpsnow%TS(:,jpatch)**4 ) )**0.25 &
290 / zemis_patch(:,jpatch)**0.25
299 zdir_alb_patch, zsca_alb_patch, zemis_patch, ztsrad_patch, &
300 pdir_alb, psca_alb, pemis, ptsrad )
304 IF(lexplicit_snow)
THEN
305 ztsurf_patch(:,:) = ptg1(:,:)*(1.-i%XPSN(:,:)) + tpsnow%TS(:,:)*i%XPSN(:,:)
310 ptsurf(ji) = ptsurf(ji) + ppatch(ji,jp) * ztsurf_patch(ji,jp)
314 IF (lhook) CALL dr_hook(
'AVERAGED_ALBEDO_EMIS_ISBA',1,zhook_handle)
subroutine update_rad_isba_n(I, OFLOOD, HSNOW, PZENITH, PSW_BANDS, PVEG, PLAI, PZ0, OMEB_PATCH, PLAIGV, PGNDLITTER, PZ0LITTER, PH_VEG, PALBNIR, PALBVIS, PALBUV, PEMIS, PDIR_ALB_WITH_SNOW, PSCA_ALB_WITH_SNOW, PEMIST, PDIR_SW, PSCA_SW, PALBNIR_VEG, PALBNIR_SOIL, PALBVIS_VEG, PALBVIS_SOIL)
subroutine isba_lwnet_meb(PLAI, PPSN, PPSNA, PEMIS_N, PEMIS_F, PFF, PTV, PTG, PTN, PLW_RAD, PLWNET_N, PLWNET_V, PLWNET_G, PLWNET_V_DTV, PLWNET_V_DTG, PLWNET_V_DTN, PLWNET_G_DTV, PLWNET_G_DTG, PLWNET_G_DTN, PLWNET_N_DTV, PLWNET_N_DTG, PLWNET_N_DTN, PSIGMA_F, PSIGMA_FN, PLWDOWN_GN)
subroutine average_rad(PFRAC_TILE, PDIR_ALB_TILE, PSCA_ALB_TILE, PEMIS_TILE, PTRAD_TILE, PDIR_ALB, PSCA_ALB, PEMIS, PTRAD)
subroutine averaged_albedo_emis_isba(I, OFLOOD, HALBEDO, PZENITH, PVEG, PZ0, PLAI, OMEB_PATCH, PGNDLITTER, PZ0LITTER, PLAIGV, PH_VEG, PTV, PTG1, PPATCH, PSW_BANDS, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PEMIS_ECO, TPSNOW, PALBNIR_ECO, PALBVIS_ECO, PALBUV_ECO, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, PDIR_SW, PSCA_SW)