6 SUBROUTINE isba_meb(IO, KK, PK, PEK, DK, DEK, DMK, G, AG, &
7 TPTIME, OMEB, OSHADE, HIMPLICIT_WIND, PTSTEP, &
8 PSOILHCAPZ, PSOILCONDZ, PFROZEN1, PPS, PZENITH, &
9 PSCA_SW, PSW_RAD, PVMOD, PRR, PSR, PRHOA, PTA, PQA, &
10 PDIRCOSZW, PEXNS, PEXNA, PPET_A_COEF, PPET_B_COEF, &
11 PPEQ_A_COEF, PPEQ_B_COEF, PPEW_A_COEF, PPEW_B_COEF, &
12 PZREF, PUREF, PZ0G_WITHOUT_SNOW, PZ0_MEBV, PZ0H_MEBV, &
13 PZ0EFF_MEBV, PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN, &
14 PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, &
15 PABC, PIACAN, PPOI, PCSP, PRESP_BIOMASS_INST, PPALPHAN, &
16 PF2, PLW_RAD, PGRNDFLUX, PFLSN_COR, PUSTAR, PEMIST, &
17 PHU_AGG, PAC_AGG, PDELHEATV_SFC, PDELHEATG_SFC, PDELHEATG,&
18 PDELHEATN, PDELHEATN_SFC, PRESTOREN, PTDEEP_A, PDEEP_FLUX,&
19 PRISNOW, PSNOW_THRUFAL, PSNOW_THRUFAL_SOIL, PEVAPCOR, &
20 PSUBVCOR, PLITCOR, PSNOWSFCH, PQSNOW)
81 USE modd_isba_par
, ONLY : xrs_max, xlimh
82 USE modd_data_cover_par
, ONLY : nvt_snow
89 USE modi_wet_leaves_frac
91 USE modi_snow_leaves_frac_meb
92 USE modi_preps_for_meb_ebud_rad
93 USE modi_isba_lwnet_meb
96 USE modi_isba_fluxes_meb
97 USE modi_snow_load_meb
100 USE modi_radiative_transfert
120 TYPE(
grid_t),
INTENT(INOUT) :: G
121 TYPE(
agri_t),
INTENT(INOUT) :: AG
122 TYPE(
diag_t),
INTENT(INOUT) :: DK
128 LOGICAL,
INTENT(IN) :: OMEB
130 LOGICAL,
DIMENSION(:),
INTENT(INOUT) :: OSHADE
131 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
134 REAL,
INTENT(IN) :: PTSTEP
136 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
137 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
138 REAL,
DIMENSION(:),
INTENT(IN) :: PSW_RAD
139 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_RAD
140 REAL,
DIMENSION(:),
INTENT(IN) :: PSCA_SW
141 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
142 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
143 REAL,
DIMENSION(:),
INTENT(IN) :: PRR
144 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
145 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
146 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
148 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
149 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
150 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
153 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
157 REAL,
DIMENSION(:),
INTENT(IN) :: PDIRCOSZW
159 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ
161 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILCONDZ
163 REAL,
DIMENSION(:),
INTENT(IN) :: PFROZEN1
165 REAL,
DIMENSION(:),
INTENT(IN) :: PPALPHAN
166 REAL,
DIMENSION(:),
INTENT(IN) :: PALBNIR_TVEG
168 REAL,
DIMENSION(:),
INTENT(IN) :: PALBVIS_TVEG
170 REAL,
DIMENSION(:),
INTENT(IN) :: PALBNIR_TSOIL
172 REAL,
DIMENSION(:),
INTENT(IN) :: PALBVIS_TSOIL
173 REAL,
DIMENSION(:),
INTENT(IN) :: PF2
174 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0G_WITHOUT_SNOW
175 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0_MEBV
176 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0H_MEBV
177 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0EFF_MEBV
178 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0_MEBN
179 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0H_MEBN
180 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0EFF_MEBN
184 REAL,
DIMENSION(:),
INTENT(IN) :: PPET_A_COEF, PPET_B_COEF, &
185 PPEQ_A_COEF, PPEQ_B_COEF, &
186 PPEW_A_COEF, PPEW_B_COEF
193 REAL,
DIMENSION(:),
INTENT(IN) :: PTDEEP_A
201 REAL,
DIMENSION(:),
INTENT(IN) :: PCSP
203 REAL,
DIMENSION(:),
INTENT(IN) :: PPOI
207 REAL,
DIMENSION(:),
INTENT(INOUT) :: PABC
210 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PIACAN
212 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR
214 REAL,
DIMENSION(:),
INTENT(OUT) :: PGRNDFLUX
215 REAL,
DIMENSION(:),
INTENT(OUT) :: PFLSN_COR
216 REAL,
DIMENSION(:),
INTENT(OUT) :: PEMIST
217 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_AGG
219 REAL,
DIMENSION(:),
INTENT(OUT) :: PHU_AGG
221 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELHEATV_SFC
222 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELHEATG_SFC
223 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELHEATG
224 REAL,
DIMENSION(:),
INTENT(OUT) :: PRESTOREN
227 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELHEATN
228 REAL,
DIMENSION(:),
INTENT(OUT) :: PDELHEATN_SFC
229 REAL,
DIMENSION(:),
INTENT(OUT) :: PDEEP_FLUX
230 REAL,
DIMENSION(:),
INTENT(OUT) :: PRISNOW
231 REAL,
DIMENSION(:),
INTENT(OUT) :: PSNOW_THRUFAL
233 REAL,
DIMENSION(:),
INTENT(OUT) :: PSNOW_THRUFAL_SOIL
237 REAL,
DIMENSION(:),
INTENT(OUT) :: PEVAPCOR
241 REAL,
DIMENSION(:),
INTENT(OUT) :: PSUBVCOR
243 REAL,
DIMENSION(:),
INTENT(OUT) :: PLITCOR
245 REAL,
DIMENSION(:),
INTENT(OUT) :: PSNOWSFCH
247 REAL,
DIMENSION(:),
INTENT(OUT) :: PQSNOW
251 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PRESP_BIOMASS_INST
256 REAL,
PARAMETER :: ZTSTEP_EB = 30
258 REAL,
PARAMETER :: ZSWRAD_MIN = 1.e
261 INTEGER :: JTSPLIT_EB
265 REAL,
DIMENSION(SIZE(PPS)) :: ZWORK,ZWORK2,ZWORK3
266 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWCOND
267 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWHCAP
268 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWRHO
269 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWAGE
270 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWSWE
271 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZSNOWLIQ
272 REAL,
DIMENSION(SIZE(PEK%TSNOW%WSNOW,1),SIZE(PEK%TSNOW%WSNOW,2)) :: ZTAU_N
273 REAL,
DIMENSION(SIZE(PPS)) :: ZCHIP
274 REAL,
DIMENSION(SIZE(PPS)) :: ZALBS
275 REAL,
DIMENSION(SIZE(PPS)) :: ZSIGMA_F
276 REAL,
DIMENSION(SIZE(PPS)) :: ZSIGMA_FN
278 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTV
279 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTG
280 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_V_DTN
281 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTV
282 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTG
283 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_G_DTN
284 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTV
285 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTG
286 REAL,
DIMENSION(SIZE(PPS)) :: ZDLWNET_N_DTN
287 REAL,
DIMENSION(SIZE(PPS)) :: ZWRMAX
288 REAL,
DIMENSION(SIZE(PPS)) :: ZWRLMAX
289 REAL,
DIMENSION(SIZE(PPS)) :: ZRS
290 REAL,
DIMENSION(SIZE(PPS)) :: ZRSN
292 REAL,
DIMENSION(SIZE(PPS)) :: ZWRVNMAX
293 REAL,
DIMENSION(SIZE(PPS)) :: ZPSNCV
295 REAL,
DIMENSION(SIZE(PPS)) :: ZMELTVN
297 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMA_TA
298 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMB_TA
299 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMA_TC
300 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMB_TC
301 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMA_TN
302 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMB_TN
303 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMA_TG
304 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMB_TG
305 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMA_TV
306 REAL,
DIMENSION(SIZE(PPS)) :: ZTHRMB_TV
307 REAL,
DIMENSION(SIZE(PPS)) :: ZPET_A_COEF
308 REAL,
DIMENSION(SIZE(PPS)) :: ZPET_B_COEF
309 REAL,
DIMENSION(SIZE(PPS)) :: ZKVN
310 REAL,
DIMENSION(SIZE(PPS)) :: ZVELC
311 REAL,
DIMENSION(SIZE(PPS)) :: ZDELTA
313 REAL,
DIMENSION(SIZE(PPS)) :: ZHUGI
314 REAL,
DIMENSION(SIZE(PPS)) :: ZHVN
315 REAL,
DIMENSION(SIZE(PPS)) :: ZHVG
316 REAL,
DIMENSION(SIZE(PPS)) :: ZLEG_DELTA
317 REAL,
DIMENSION(SIZE(PPS)) :: ZLEGI_DELTA
318 REAL,
DIMENSION(SIZE(PPS)) :: ZHSGL
319 REAL,
DIMENSION(SIZE(PPS)) :: ZHSGF
320 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_CA
321 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_N_A
322 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_GV
323 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_GN
324 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_VG_C
325 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_VN_C
326 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_CV
327 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_MOM
328 REAL,
DIMENSION(SIZE(PPS)) :: ZQSATG
329 REAL,
DIMENSION(SIZE(PPS)) :: ZQSATV
330 REAL,
DIMENSION(SIZE(PPS)) :: ZQSATC
331 REAL,
DIMENSION(SIZE(PPS)) :: ZQSATN
332 REAL,
DIMENSION(SIZE(PPS)) :: ZDELTAVK
333 REAL,
DIMENSION(SIZE(PPS)) :: ZCHEATV
334 REAL,
DIMENSION(SIZE(PPS)) :: ZCHEATG
335 REAL,
DIMENSION(SIZE(PPS)) :: ZCHEATN
336 REAL,
DIMENSION(SIZE(PPS)) :: ZHVGS
339 REAL,
DIMENSION(SIZE(PPS)) :: ZHVNS
342 REAL,
DIMENSION(SIZE(PPS)) :: ZDQSAT_G
343 REAL,
DIMENSION(SIZE(PPS)) :: ZDQSAT_V
345 REAL,
DIMENSION(SIZE(PPS)) :: ZDQSATI_N
347 REAL,
DIMENSION(SIZE(PPS)) :: ZDELTAT_G
348 REAL,
DIMENSION(SIZE(PPS)) :: ZDELTAT_V
349 REAL,
DIMENSION(SIZE(PPS)) :: ZDELTAT_N
350 REAL,
DIMENSION(SIZE(PPS)) :: ZRNET_V
351 REAL,
DIMENSION(SIZE(PPS)) :: ZRNET_G
352 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_C_A_F
355 REAL,
DIMENSION(SIZE(PPS)) :: ZFLXC_N_A_F
358 REAL,
DIMENSION(SIZE(PPS)) :: ZEVAP_C_A
360 REAL,
DIMENSION(SIZE(PPS)) :: ZEVAP_N_A
362 REAL,
DIMENSION(SIZE(PPS)) :: ZH_N_A
364 REAL,
DIMENSION(SIZE(PPS)) :: ZVEGFACT
366 REAL,
DIMENSION(SIZE(PPS)) :: ZRRSFC
367 REAL,
DIMENSION(SIZE(PPS)) :: ZRRSFCL
368 REAL,
DIMENSION(SIZE(PPS)) :: ZLES3L
370 REAL,
DIMENSION(SIZE(PPS)) :: ZLEL3L
372 REAL,
DIMENSION(SIZE(PPS)) :: ZEVAP3L
373 REAL,
DIMENSION(SIZE(PPS)) :: ZUSTAR2_IC
374 REAL,
DIMENSION(SIZE(PPS)) :: ZTA_IC
375 REAL,
DIMENSION(SIZE(PPS)) :: ZQA_IC
376 REAL,
DIMENSION(SIZE(PPS)) :: ZSWUP
377 REAL,
DIMENSION(SIZE(PPS)) :: ZLWUP
378 REAL,
DIMENSION(SIZE(PPS)) :: ZUSTAR2SNOW
379 REAL,
DIMENSION(SIZE(PPS)) :: ZVMOD
380 REAL,
DIMENSION(SIZE(PPS)) :: ZRR
381 REAL,
DIMENSION(SIZE(PPS)) :: ZFLSN_COR
382 REAL,
DIMENSION(SIZE(PPS)) :: ZWSFC
383 REAL,
DIMENSION(SIZE(PPS)) :: ZWISFC
384 REAL,
DIMENSION(SIZE(PPS)) :: ZLESFC
385 REAL,
DIMENSION(SIZE(PPS)) :: ZLESFCI
386 REAL,
DIMENSION(SIZE(PPS)) :: ZPERMSNOWFRAC
390 REAL,
DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN_SUNLIT
391 REAL,
DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN_SHADE
392 REAL,
DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZFRAC_SUN
394 REAL,
DIMENSION(SIZE(PPS)) :: ZLAI
395 REAL,
DIMENSION(SIZE(PPS)) :: ZALBVIS_TSOIL
396 REAL,
DIMENSION(SIZE(PPS)) :: ZALBNIR_TSOIL
397 REAL,
DIMENSION(SIZE(PPS)) :: ZSWNET_S
398 REAL,
DIMENSION(SIZE(PPS)) :: ZLTT
399 REAL,
DIMENSION(SIZE(PPS)) :: ZLSTTC
400 REAL,
DIMENSION(SIZE(PPS)) :: ZLVTTC
401 REAL,
DIMENSION(SIZE(PPS)) :: ZZREF
402 REAL,
DIMENSION(SIZE(PPS)) :: ZUREF
407 REAL,
DIMENSION(SIZE(PPS)) :: ZQSAT
408 REAL,
DIMENSION(SIZE(PPS)) :: ZFFV
409 REAL,
DIMENSION(SIZE(PPS),SIZE(PABC)) :: ZIACAN
412 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZTGL
413 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSOILHCAPZ
414 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSOILCONDZ
415 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZD_G
416 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZDZG
417 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWFC
418 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWSAT
422 REAL,
DIMENSION(SIZE(PPS)) :: ZH_SUM, ZH_CA_SUM, ZH_N_A_SUM, ZH_CV_SUM
424 REAL,
DIMENSION(SIZE(PPS)) :: ZHU_AGG_SUM, ZAC_AGG_SUM
426 REAL,
DIMENSION(SIZE(PPS)) :: ZLE_SUM, ZLE_CA_SUM, ZLE_CV_SUM, ZLE_GV_SUM
434 REAL,
DIMENSION(SIZE(PPS)) :: ZGRNDFLUX_SUM, ZRESTORE_SUM
436 REAL,
DIMENSION(SIZE(PPS)) :: ZSWNET_V_SUM, ZSWNET_G_SUM, ZSWNET_N_SUM
439 REAL,
DIMENSION(SIZE(PPS)) :: ZDELHEATG_SFC_SUM, ZDELHEATV_SFC_SUM, ZDELHEATG_SUM
441 REAL,
DIMENSION(SIZE(PPS)) :: ZALBV, ZALBG, ZTR
443 REAL,
DIMENSION(SIZE(PEK%XWR,1)) :: ZPHASEL
444 REAL,
DIMENSION(SIZE(PEK%XWR,1)) :: ZCTSFC
445 REAL,
DIMENSION(SIZE(PEK%XWR,1)) :: ZFROZEN1SFC
447 INTEGER :: INJ, INL, JJ, JL
449 REAL(KIND=JPRB) :: ZHOOK_HANDLE
461 dmk%XFAPAR_BS(:) = 0.0
462 dmk%XFAPIR_BS(:) = 0.0
465 dek%XDRIPLIT(:) = 0.0
473 ziacan_sunlit(:,:) =
xundef 474 ziacan_shade(:,:) =
xundef 505 CALL prep_meb_soil(io%LMEB_LITTER, psoilhcapz, psoilcondz, kk, pk, pek,
514 zpermsnowfrac(:) = pk%XVEGTYPE_PATCH(:,nvt_snow)
519 zsnowrho(:,:) = pek%TSNOW%RHO (:,:)
520 zsnowage(:,:) = pek%TSNOW%AGE (:,:)
521 zsnowswe(:,:) = pek%TSNOW%WSNOW(:,:)
542 WHERE(pek%TSNOW%ALB(:) /=
xundef)
543 zlai(:) = pek%XLAI(:)*(1.0-ppalphan(:))
544 zalbvis_tsoil(:) = palbvis_tsoil(:)*(1.-pek%XPSN(:)) + pek%XPSN(:)*pek%TSNOW%ALBVIS
547 zlai(:) = pek%XLAI(:)
548 zalbvis_tsoil(:) = palbvis_tsoil(:)
549 zalbnir_tsoil(:) = palbnir_tsoil(:)
568 WHERE(psw_rad(:) > zswrad_min)
573 dk%XALBT(:) = 1. - (
xsw_wght_vis*(dmk%XFAPAR(:)+dmk%XFAPAR_BS(:))
589 zwork4(:) = zalbs(:)*zalbv(:)
590 zwork2(:) = -(1.-zalbs(:)*(1.-zalbv(:)))/zwork4(:)
591 zwork3(:) = zswnet_s(:)/(psw_rad(:)*zwork4(:))
592 zwork(:) = sqrt(max(0.0, zwork2(:)**2 - 4*zwork3(:)))
593 ztr(:) = 0.5*(-zwork2(:) - zwork(:))
594 ztr(:) = min(1.,max(0., ztr(:) ))
598 dek%XSWDOWN_GN(:) = psw_rad(:)*ztr(:)
602 dek%XSWNET_G(:) = (1.-pek%XPSN(:))*dek%XSWDOWN_GN(:)*(1.-zalbg(:)+zalbs
607 dek%XSWNET_NS(:) = dek%XSWNET_N(:)*(1.0 - ztau_n(:,1))
612 ztau_n(:,
SIZE(pek%TSNOW%WSNOW,2)) = ztau_n(:,
SIZE(pek%TSNOW%WSNOW,2))
619 zswup(:) = psw_rad(:)
620 dek%XSWDOWN_GN(:) = 0.
624 dek%XSWNET_NS(:) = 0.
625 ztau_n(:,
SIZE(pek%TSNOW%WSNOW,2)) = 0.
634 CALL isba_lwnet_meb(pek%XLAI, pek%XPSN, ppalphan,pek%TSNOW%EMIS, kk%XEMISF
649 zwork(:) = (1.0 - pek%XPSN(:) + pek%XPSN(:)*(1.0 - ppalphan(:)))
651 CALL wet_leaves_frac(pek%XWR(:), zwork, pek%XWRMAX_CF(:), pz0_mebv, pek%XLAI
661 IF (io%CPHOTO==
'NON')
THEN 665 CALL veg(psw_rad, pek%XTC(:), pek%XQC(:), pps, pek%XRGL(:), pek%XLAI(
669 ELSE IF (maxval(pek%XGMES) /=
xundef .OR. minval(pek%XGMES) /=
xundef)
THEN 677 zqsat(:) =
qsat(pek%XTV(:),pps)
679 zwork(:) = pek%XLE(:)
682 CALL cotwores(ptstep, io, oshade, pk, pek, pk%XDMAX, ppoi, pcsp, pek%XTV
688 piacan(:,:) = ziacan(:,:)
691 presp_biomass_inst(:,1) = 0.0
697 zrsn(:) = zrs(:)/( 1.0 - min(ppalphan(:), 1.0 - (zrs(:)/xrs_max)) )
715 zpet_a_coef(:) = -ppet_a_coef(:)*
xcpd 716 zpet_b_coef(:) = ppet_b_coef(:)*
xcpd 717 zthrma_ta(:) =
xcpd/pexna(:)
719 zwork(:) =
xcpd/pexns(:)
720 zthrma_tc(:) = zwork(:)
722 zthrma_tn(:) = zwork(:)
724 zthrma_tg(:) = zwork(:)
726 zthrma_tv(:) = zwork(:)
740 IF(io%LFORC_MEASURE)
THEN 741 WHERE(pzref(:) - pek%XH_VEG(:) < xlimh)
742 zzref(:) = pek%XH_VEG(:) + xlimh
743 zuref(:) = pek%XH_VEG(:) + xlimh + max(0.,puref(:)-pzref(:))
753 zlvttc(:) = ( zsigma_f(:)*(1.-zpsncv(:)) + (1.0-pek%XPSN(:)-kk%XFF(:))*(
771 jtsplit_eb = 1 + int(ptstep/ztstep_eb)
772 ztstep = ptstep/jtsplit_eb
790 loop_time_split_eb:
DO jdt=1,jtsplit_eb
795 ztgl(:,1), zta_ic, zqa_ic, zvmod, zwsfc, zwisfc, &
796 zwsat(:,1), zwfc(:,1), pexns, pexna, pps, prr, psr, &
797 prhoa, pz0g_without_snow, pz0_mebv, pz0h_mebv, &
798 pz0eff_mebv, pz0_mebn, pz0h_mebn, pz0eff_mebn, &
799 zsnowswe(:,1), zchip, ztstep, zrs, zrsn, ppalphan, &
800 zzref, zuref, pdircoszw, zpsncv, zdelta, zvelc, &
801 prisnow, zustar2snow, zhugi, zhvg, &
802 zhvn, zleg_delta, zlegi_delta, zhsgl, zhsgf, &
803 zflxc_ca, zflxc_n_a, zflxc_gv, zflxc_gn, &
804 zflxc_vg_c, zflxc_vn_c, zflxc_mom, zqsatg, zqsatv, &
805 zqsatc, zqsatn, zdeltavk )
813 ztstep, zltt, pps, zctsfc, ptdeep_a, zd_g, zsoilcondz
851 zflxc_c_a_f(:) = zflxc_ca(:)*(1.0-pek%XPSN(:)*ppalphan(:))
852 zflxc_n_a_f(:) = zflxc_n_a(:)* pek%XPSN(:)*ppalphan(:)
854 phu_agg(:) = (zflxc_c_a_f(:)*pek%XQC(:)+ zflxc_n_a_f(:)*zqsatn(:)
863 ENDDO loop_time_split_eb
872 CALL snow_load_meb(pk, pek, dek, ptstep, psr, zwrvnmax, zkvn, zcheatv, zmeltvn
882 dek%XIRRIG_FLUX(:) = 0.0
887 IF (
SIZE(ag%LIRRIGATE,1)>0)
THEN 888 WHERE (ag%LIRRIGATE(:) .AND. pek%XIRRIG(:)>0. .AND. pek%XIRRIG(:) /=
xundef 900 zvegfact(:) = zsigma_f(:)*(1.0-ppalphan(:)*pek%XPSN(:))
907 CALL hydro_veg(io%CRAIN, ptstep, kk%XMUF, zrr, dek%XLEV_CV, dek%XLETR_CV
916 CALL snow3l_isba(io, g, pk, pek, dk, dek, dmk, omeb, himplicit_wind,
931 IF(io%LMEB_LITTER)
THEN 934 zwork2(:) = pek%XWRL(:)
936 zwork4(:) = psnow_thrufal(:) + zrrsfc(:)*(1-pek%XPSN)
937 zwrlmax(:) = pek%XGNDLITTER(:)*zwfc(:,1)*
xrholw 939 CALL hydro_veg(io%CRAIN, ptstep, kk%XMUF, zwork4(:), zlesfc, zwork, zwork3
947 psnow_thrufal_soil(:) = psnow_thrufal(:)
962 IF(io%LMEB_LITTER)
THEN 964 CALL ice_litter(ptstep, dek%XLELITTERI, psoilhcapz, pek, pk%NWG_LAYER,
984 REAL(KIND=JPRB) :: ZHOOK_HANDLE
988 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:INIT_SUM_FLUXES_MEB_TSPLIT ',0,zhook_handle
1009 zletr_cv_sum(:) = 0.0
1010 zler_cv_sum(:) = 0.0
1011 zles_cv_sum(:) = 0.0
1016 zlesfci_sum(:) = 0.0
1017 zle_flood_sum(:) = 0.0
1018 zlei_flood_sum(:)= 0.0
1025 zevap3l_sum(:) = 0.0
1028 zhu_agg_sum(:) = 0.0
1029 zac_agg_sum(:) = 0.0
1033 zustar2_sum(:) = 0.0
1034 zustar2snow_sum(:) = 0.
1041 zgrndflux_sum(:) = 0.0
1042 zrestore_sum(:) = 0.0
1043 zhpsnow_sum(:) = 0.0
1047 zswnet_v_sum(:) = 0.0
1048 zswnet_g_sum(:) = 0.0
1049 zswnet_n_sum(:) = 0.0
1050 zlwnet_v_sum(:) = 0.0
1051 zlwnet_g_sum(:) = 0.0
1052 zlwnet_n_sum(:) = 0.0
1057 zdelheatv_sfc_sum(:) = 0.0
1058 zdelheatg_sfc_sum(:) = 0.0
1059 zdelheatg_sum(:) = 0.0
1061 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:INIT_SUM_FLUXES_MEB_TSPLIT ',1,zhook_handle
1073 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1077 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:SUM_FLUXES_MEB_TSPLIT ',0,zhook_handle
1083 zh_n_a_sum(:) = zh_n_a_sum(:) + zh_n_a(:)
1085 zh_sum(:) = zh_sum(:) + dk%XH(:)
1087 zh_ca_sum(:) = zh_ca_sum(:) + dek%XH_CA(:)
1088 zh_cv_sum(:) = zh_cv_sum(:) + dek%XH_CV(:)
1089 zh_gv_sum(:) = zh_gv_sum(:) + dek%XH_GV(:)
1090 zh_gn_sum(:) = zh_gn_sum(:) + dek%XH_GN(:)
1092 zhsnow_sum(:) = zhsnow_sum(:) + dmk%XHSNOW(:)
1096 zle_sum(:) = zle_sum(:) + pek%XLE(:)
1098 zlei_sum(:) = zlei_sum(:) + dk%XLEI(:)
1099 zevap_sum(:) = zevap_sum(:) + dk%XEVAP(:)
1101 zle_ca_sum(:) = zle_ca_sum(:) + dek%XLE_CA(:)
1102 zle_cv_sum(:) = zle_cv_sum(:) + dek%XLE_CV(:)
1103 zle_gv_sum(:) = zle_gv_sum(:) + dek%XLE_GV(:)
1104 zle_gn_sum(:) = zle_gn_sum(:) + dek%XLE_GN(:)
1106 zletr_cv_sum(:) = zletr_cv_sum(:) + dek%XLETR_CV(:)
1107 zler_cv_sum(:) = zler_cv_sum(:) + dek%XLER_CV(:)
1108 zles_cv_sum(:) = zles_cv_sum(:) + dek%XLES_CV(:)
1110 zletr_sum(:) = zletr_sum(:) + dek%XLETR(:)
1111 zler_sum(:) = zler_sum(:) + dek%XLER(:)
1112 zlev_sum(:) = zlev_sum(:) + dek%XLEV(:)
1114 zleg_sum(:) = zleg_sum(:) + dek%XLEG(:)
1115 zlegi_sum(:) = zlegi_sum(:) + dek%XLEGI(:)
1117 zle_flood_sum(:) = zle_flood_sum(:) + dek%XLE_FLOOD(:)
1118 zlei_flood_sum(:) = zlei_flood_sum(:) + dek%XLEI_FLOOD(:)
1120 zlesfc_sum(:) = zlesfc_sum(:) + zlesfc(:)
1121 zlesfci_sum(:) = zlesfci_sum(:) + zlesfci(:)
1123 zles3l_sum(:) = zles3l_sum(:) + zles3l(:)
1124 zlel3l_sum(:) = zlel3l_sum(:) + zlel3l(:)
1125 zevap3l_sum(:) = zevap3l_sum(:) + zevap3l(:)
1127 zhu_agg_sum(:) = zhu_agg_sum(:) + phu_agg(:)
1128 zac_agg_sum(:) = zac_agg_sum(:) + pac_agg(:)
1132 zcdsnow_sum(:) = zcdsnow_sum(:) + dmk%XCDSNOW(:)
1133 zchsnow_sum(:) = zchsnow_sum(:) + dmk%XCHSNOW(:)
1135 zustar2_sum(:) = zustar2_sum(:) + zustar2_ic(:)
1136 zustar2snow_sum(:) = zustar2snow_sum(:) + zustar2snow(:)
1137 zrisnow_sum(:) = zrisnow_sum(:) + prisnow(:)
1141 zgrndflux_sum(:) = zgrndflux_sum(:) + pgrndflux(:)
1143 zrestore_sum(:) = zrestore_sum(:) + dek%XRESTORE(:)
1145 zhpsnow_sum(:) = zhpsnow_sum(:) + dmk%XHPSNOW(:)
1149 zswnet_v_sum(:) = zswnet_v_sum(:) + dek%XSWNET_V(:)
1150 zswnet_g_sum(:) = zswnet_g_sum(:) + dek%XSWNET_G(:)
1151 zswnet_n_sum(:) = zswnet_n_sum(:) + dek%XSWNET_N(:)
1152 zlwnet_v_sum(:) = zlwnet_v_sum(:) + dek%XLWNET_V(:)
1153 zlwnet_g_sum(:) = zlwnet_g_sum(:) + dek%XLWNET_G(:)
1154 zlwnet_n_sum(:) = zlwnet_n_sum(:) + dek%XLWNET_N(:)
1156 zemist_sum(:) = zemist_sum(:) + pemist(:)
1157 zswup_sum(:) = zswup_sum(:) + zswup(:)
1158 zlwup_sum(:) = zlwup_sum(:) + zlwup(:)
1160 zdelheatv_sfc_sum(:) = zdelheatv_sfc_sum(:) + pdelheatv_sfc(:)
1161 zdelheatg_sfc_sum(:) = zdelheatg_sfc_sum(:) + pdelheatg_sfc(:)
1162 zdelheatg_sum(:) = zdelheatg_sum(:) + pdelheatg(:)
1164 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:SUM_FLUXES_MEB_TSPLIT ',1,zhook_handle
1178 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1182 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:AVG_FLUXES_MEB_TSPLIT ',0,zhook_handle
1188 zh_n_a(:) = zh_n_a_sum(:) /jtsplit_eb
1190 dk%XH(:) = zh_sum(:) /jtsplit_eb
1192 dek%XH_CA(:) = zh_ca_sum(:) /jtsplit_eb
1193 dek%XH_CV(:) = zh_cv_sum(:) /jtsplit_eb
1194 dek%XH_GV(:) = zh_gv_sum(:) /jtsplit_eb
1195 dek%XH_GN(:) = zh_gn_sum(:) /jtsplit_eb
1197 dmk%XHSNOW(:) = zhsnow_sum(:) /jtsplit_eb
1201 zlesfc(:) = zlesfc_sum(:) /jtsplit_eb
1202 zlesfci(:) = zlesfci_sum(:) /jtsplit_eb
1204 dk%XLEI(:) = zlei_sum(:) /jtsplit_eb
1205 dk%XEVAP(:) = zevap_sum(:) /jtsplit_eb
1207 pek%XLE(:) = zle_sum(:) /jtsplit_eb
1209 dek%XLE_CA(:) = zle_ca_sum(:) /jtsplit_eb
1210 dek%XLE_CV(:) = zle_cv_sum(:) /jtsplit_eb
1211 dek%XLE_GV(:) = zle_gv_sum(:) /jtsplit_eb
1212 dek%XLE_GN(:) = zle_gn_sum(:) /jtsplit_eb
1214 dek%XLETR_CV(:) = zletr_cv_sum(:) /jtsplit_eb
1215 dek%XLER_CV(:) = zler_cv_sum(:) /jtsplit_eb
1216 dek%XLES_CV(:) = zles_cv_sum(:) /jtsplit_eb
1218 dek%XLETR(:) = zletr_sum(:) /jtsplit_eb
1219 dek%XLER(:) = zler_sum(:) /jtsplit_eb
1220 dek%XLEV(:) = zlev_sum(:) /jtsplit_eb
1222 dek%XLEG(:) = zleg_sum(:) /jtsplit_eb
1223 dek%XLEGI(:) = zlegi_sum(:) /jtsplit_eb
1224 dek%XLE_FLOOD(:) = zle_flood_sum(:) /jtsplit_eb
1225 dek%XLEI_FLOOD(:) = zlei_flood_sum(:)/jtsplit_eb
1226 dek%XLES(:) = zles3l_sum(:) /jtsplit_eb
1227 dek%XLESL(:) = zlel3l_sum(:) /jtsplit_eb
1229 zevap3l(:) = zevap3l_sum(:) /jtsplit_eb
1231 phu_agg(:) = zhu_agg_sum(:) /jtsplit_eb
1232 pac_agg(:) = zac_agg_sum(:) /jtsplit_eb
1236 pustar(:) = sqrt( zustar2_sum(:) /jtsplit_eb )
1237 prisnow(:) = zrisnow_sum(:) /jtsplit_eb
1239 dmk%XUSTARSNOW(:) = sqrt( zustar2snow_sum(:)/jtsplit_eb )
1240 dmk%XCDSNOW(:) = zcdsnow_sum(:) /jtsplit_eb
1241 dmk%XCHSNOW(:) = zchsnow_sum(:) /jtsplit_eb
1245 pgrndflux(:) = zgrndflux_sum(:) /jtsplit_eb
1247 dek%XRESTORE(:) = zrestore_sum(:) /jtsplit_eb
1248 dmk%XHPSNOW(:) = zhpsnow_sum(:) /jtsplit_eb
1252 dek%XSWNET_V(:) = zswnet_v_sum(:) /jtsplit_eb
1253 dek%XSWNET_G(:) = zswnet_g_sum(:) /jtsplit_eb
1254 dek%XSWNET_N(:) = zswnet_n_sum(:) /jtsplit_eb
1255 dek%XLWNET_V(:) = zlwnet_v_sum(:) /jtsplit_eb
1256 dek%XLWNET_G(:) = zlwnet_g_sum(:) /jtsplit_eb
1257 dek%XLWNET_N(:) = zlwnet_n_sum(:) /jtsplit_eb
1259 pemist(:) = zemist_sum(:) /jtsplit_eb
1260 zswup(:) = zswup_sum(:) /jtsplit_eb
1261 zlwup(:) = zlwup_sum(:) /jtsplit_eb
1263 pdelheatv_sfc(:) = zdelheatv_sfc_sum(:) /jtsplit_eb
1264 pdelheatg_sfc(:) = zdelheatg_sfc_sum(:) /jtsplit_eb
1265 pdelheatg(:) = zdelheatg_sum(:) /jtsplit_eb
1269 dk%XTSRAD(:) = ((zlwup(:) - plw_rad(:)*(1.0-pemist(:)))/(
xstefan*pemist
1271 zrnet_v(:) = dek%XSWNET_V(:) + dek%XLWNET_V(:)
1273 zrnet_g(:) = dek%XSWNET_G(:) + dek%XLWNET_G(:)
1275 dmk%XRNSNOW(:) = dek%XSWNET_N(:) + dek%XLWNET_N(:)
1277 dk%XRN(:) = zrnet_v(:) + zrnet_g(:) + dmk%XRNSNOW(:)
1279 dek%XLEV_CV(:) = dek%XLE_CV(:) - dek%XLES_CV(:)
1281 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:AVG_FLUXES_MEB_TSPLIT ',1,zhook_handle
1287 PSNOWDZ,PZENITH,PTAU_N)
1293 USE modd_data_cover_par
, ONLY : nvt_snow
1295 USE modd_snow_par
, ONLY : nspec_band_snow
1305 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
1306 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWRHO
1307 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWDZ
1308 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
1309 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWAGE
1310 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
1311 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PTAU_N
1315 INTEGER :: JJ, JI, INJ, INLVLS
1316 REAL,
DIMENSION(SIZE(PPS)) :: ZWORK, ZWORKA, ZAGE
1317 REAL,
DIMENSION(SIZE(PPS)) :: ZPROJLAT, ZDSGRAIN, ZBETA1, ZBETA2
1319 REAL,
DIMENSION(SIZE(PPS)) :: ZPERMSNOWFRAC
1320 REAL,
DIMENSION(SIZE(PSNOWDZ,1),SIZE(PSNOWDZ,2)) :: ZSNOWDZ
1321 REAL,
DIMENSION(SIZE(PPS),NSPEC_BAND_SNOW) :: ZSPECTRALALBEDO
1326 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1330 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:SNOWALB_SPECTRAL_BANDS_MEB',0,zhook_handle
1332 inj =
SIZE(psnowdz,1)
1333 inlvls =
SIZE(psnowdz,2)
1339 zworka(:) = pek%TSNOW%ALB(:)
1340 zpermsnowfrac(:) = pvegtype(:,nvt_snow)
1342 CALL snow3lalb(zworka,zspectralalbedo,psnowrho(:,1),psnowage(:,1),zpermsnowfrac
1347 WHERE(pek%TSNOW%ALB(:)/=
xundef)
1349 pek%TSNOW%ALBVIS(:) = zspectralalbedo(:,1)
1354 pek%TSNOW%ALBNIR(:) = (pek%TSNOW%ALB(:) -
xsw_wght_vis*pek%TSNOW%ALBVIS
1358 pek%TSNOW%ALBFIR(:) =
xundef 1362 zspectralalbedo(:,1) = pek%TSNOW%ALBVIS(:)
1363 zspectralalbedo(:,2) = pek%TSNOW%ALBNIR(:)
1364 zspectralalbedo(:,3) = pek%TSNOW%ALBFIR(:)
1368 pek%TSNOW%ALBVIS(:) =
xundef 1369 pek%TSNOW%ALBNIR(:) =
xundef 1370 pek%TSNOW%ALBFIR(:) =
xundef 1376 zage(:) = (1.0-zpermsnowfrac(:))*psnowage(:,1)
1384 zspectralalbedo(:,2) = (pek%TSNOW%ALB(:) -
xsw_wght_vis*zspectralalbedo(
1391 zsnowdz(ji,jj) = psnowdz(ji,jj)/max(1.e-4,pek%XPSN(ji))
1396 zpermsnowfrac, pzenith, psnowage, ptau_n)
1402 ptau_n(:,:) = max(0., ptau_n(:,:))
1404 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:SNOWALB_SPECTRAL_BANDS_MEB',1,zhook_handle
1408 SUBROUTINE snow3lradtrans(PSNOWDZMIN, PSPECTRALALBEDO, PSNOWDZ, PSNOWRHO, &
1409 PPERMSNOWFRAC, PZENITH, PSNOWAGE, PRADTRANS)
1426 REAL,
INTENT(IN) :: PSNOWDZMIN
1428 REAL,
DIMENSION(:),
INTENT(IN) :: PPERMSNOWFRAC
1429 REAL,
DIMENSION(:),
INTENT(IN) :: PZENITH
1430 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWRHO, PSNOWDZ, PSNOWAGE
1431 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSPECTRALALBEDO
1433 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PRADTRANS
1443 REAL,
DIMENSION(SIZE(PSNOWRHO,1),SIZE(PSNOWRHO,2)) :: ZDSGRAIN, ZCOEF, ZSNOWDZ
1445 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1451 IF (
lhook)
CALL dr_hook(
'SNOW3LRADTRANS',0,zhook_handle)
1453 inj =
SIZE(psnowdz(:,:),1)
1454 inlvls =
SIZE(psnowdz(:,:),2)
1465 zsnowdz(:,:) = max(psnowdzmin, psnowdz(:,:))
1479 IF(psnowage(ji,jj)/=
xundef)
THEN 1480 zage(ji,jj) = (1.0-ppermsnowfrac(ji))*psnowage(ji,jj)
1488 pzenith,ppermsnowfrac,zdsgrain)
1494 pradtrans(:,:) = zcoef(:,:)
1496 IF (
lhook)
CALL dr_hook(
'SNOW3LRADTRANS',1,zhook_handle)
1511 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1515 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:ALLOCATE_LOCAL_VARS_PREP_GRID_SOIL ',0
1518 IF(io%LMEB_LITTER)inll = inl + 1
1520 ALLOCATE ( ztgl(inj, inll ))
1521 ALLOCATE ( zsoilhcapz(inj, inll ))
1522 ALLOCATE ( zsoilcondz(inj, inll ))
1523 ALLOCATE ( zd_g(inj, inll ))
1524 ALLOCATE ( zdzg(inj, inll ))
1525 ALLOCATE ( zwfc(inj, inll ))
1526 ALLOCATE ( zwsat(inj, inll ))
1528 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:ALLOCATE_LOCAL_VARS_PREP_GRID_SOIL ',1
1538 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1542 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:DEALLOCATE_LOCAL_VARS_PREP_GRID_SOIL ' 1545 DEALLOCATE ( zsoilhcapz )
1546 DEALLOCATE ( zsoilcondz )
1549 DEALLOCATE ( zwsat )
1552 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:DEALLOCATE_LOCAL_VARS_PREP_GRID_SOIL ' 1562 LOGICAL,
INTENT(IN) :: OMEB_LITTER
1563 REAL,
DIMENSION(:,:),
INTENT(IN) :: PTGL
1564 REAL,
DIMENSION(:),
INTENT(IN) :: PLESFC
1565 REAL,
DIMENSION(:),
INTENT(IN) :: PLESFCI
1573 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1577 inj =
SIZE(pek%XTG(:,:),1)
1578 inl =
SIZE(pek%XTG(:,:),2)
1580 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:FINISH_MEB_SOIL ',0,zhook_handle)
1582 IF (omeb_litter)
THEN 1584 pek%XTL(:) = ptgl(:,1)
1588 pek%XTG(jj,jl) = ptgl(jj,jl+1)
1594 dek%XLELITTER(:) = plesfc(:)
1595 dek%XLELITTERI(:) = plesfci(:)
1598 pek%XTG(:,:) = ptgl(:,:)
1600 dek%XLEG(:) = plesfc(:)
1601 dek%XLEGI(:) = plesfci(:)
1602 dek%XLELITTER(:) = 0.
1603 dek%XLELITTERI(:) = 0.
1608 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:FINISH_MEB_SOIL ',1,zhook_handle)
1612 SUBROUTINE prep_meb_soil(OMEB_LITTER,PSOILHCAPZ,PSOILCONDZ,KK,PK,PEK,PD_GL,&
1613 PDZGL,PTGL,PSOILHCAPL,PSOILCONDL,PWSATL,PWFCL,PWSFC,&
1614 PWISFC,PCTSFC,PCT,PFROZEN1,PFROZEN1SFC)
1617 USE modd_isba_par
, ONLY : xwgmin, xomsph
1623 TYPE(
isba_k_t),
INTENT(INOUT) :: KK
1624 TYPE(
isba_p_t),
INTENT(INOUT) :: PK
1626 LOGICAL,
INTENT(IN) :: OMEB_LITTER
1627 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ
1628 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILCONDZ
1630 REAL,
DIMENSION(:),
INTENT(IN) :: PCT
1631 REAL,
DIMENSION(:),
INTENT(IN) :: PFROZEN1
1632 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PD_GL
1633 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PDZGL
1634 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PTGL
1635 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PSOILHCAPL
1636 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PSOILCONDL
1637 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWSATL
1638 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PWFCL
1639 REAL,
DIMENSION(:),
INTENT(OUT) :: PWSFC
1640 REAL,
DIMENSION(:),
INTENT(OUT) :: PWISFC
1641 REAL,
DIMENSION(:),
INTENT(OUT) :: PCTSFC
1642 REAL,
DIMENSION(:),
INTENT(OUT) :: PFROZEN1SFC
1646 INTEGER :: INJ, INL, JJ, JL
1648 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1652 REAL,
PARAMETER :: Z1 = 45.0
1653 REAL,
PARAMETER :: Z2 = 0.1
1654 REAL,
PARAMETER :: Z3 = 0.03
1655 REAL,
PARAMETER :: Z4 = 0.95
1656 REAL,
PARAMETER :: Z5 = 0.12
1658 REAL,
DIMENSION(SIZE(PEK%XWG,1)) :: ZWORK
1662 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:PREP_MEB_SOIL',0,zhook_handle)
1664 inj =
SIZE(pk%XDG,1)
1665 inl =
SIZE(pk%XDG,2)
1669 ptgl(:,1) = pek%XTL(:)
1670 zwork(:) = pek%XWRL(:)/(
xrholw*pek%XGNDLITTER(:))
1671 psoilhcapl(:,1) = xomsph*z1 + (
xcl*
xrholw)*zwork(:) + (
xci 1682 ptgl(jj,jl+1) = pek%XTG(jj,min(jl,
SIZE(pek%XTG,2)))
1683 psoilhcapl(jj,jl+1) = psoilhcapz(jj,jl)
1684 psoilcondl(jj,jl+1) = psoilcondz(jj,jl)
1685 pwsatl(jj,jl+1) = kk%XWSAT(jj,jl)
1686 pwfcl(jj,jl+1) = kk%XWFC(jj,jl)
1687 pd_gl(jj,jl+1) = pek%XGNDLITTER(jj) + pk%XDG(jj,jl)
1688 pdzgl(jj,jl+1) = pk%XDZG(jj,jl)
1691 pwsfc(:) = pek%XWRL(:) /(
xrholw*pek%XGNDLITTER(:))
1692 pwisfc(:) = pek%XWRLI(:)/(
xrholw*pek%XGNDLITTER(:))
1695 ptgl(:,:) = pek%XTG(:,:)
1696 psoilhcapl(:,:) = psoilhcapz(:,:)
1697 psoilcondl(:,:) = psoilcondz(:,:)
1698 pwsatl(:,:) = kk%XWSAT(:,:)
1699 pwfcl(:,:) = kk%XWFC(:,:)
1700 pd_gl(:,:) = pk%XDG(:,:)
1701 pdzgl(:,:) = pk%XDZG(:,:)
1703 pwsfc(:) = pek%XWG(:,1)
1704 pwisfc(:) = pek%XWGI(:,1)
1705 pfrozen1sfc(:) = pfrozen1(:)
1707 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:PREP_MEB_SOIL',1,zhook_handle)
1711 SUBROUTINE ice_litter(PTSTEP, PLELITTERI, PSOILHCAPZ, PEK, &
1712 KWG_LAYER, PDZG, PPHASEL, PCTSFC, PLSTT, PLITCOR )
1721 REAL,
INTENT(IN) :: PTSTEP
1724 REAL,
DIMENSION(:),
INTENT(IN) :: PLELITTERI
1726 REAL,
DIMENSION(:),
INTENT(IN) :: PCTSFC
1727 REAL,
DIMENSION(:),
INTENT(IN) :: PLSTT
1729 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILHCAPZ
1731 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDZG
1734 INTEGER,
DIMENSION(:),
INTENT(IN) :: KWG_LAYER
1737 REAL,
DIMENSION(:),
INTENT(OUT) :: PPHASEL
1739 REAL,
DIMENSION(:),
INTENT(OUT) :: PLITCOR
1749 REAL,
DIMENSION(SIZE(PEK%XTG,1)) :: ZEXCESS, ZK, ZHCAPL,ZELITTERI,
1755 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1759 REAL,
PARAMETER :: ZERTOL = 1.e-6
1760 REAL,
PARAMETER :: ZTAUICE = 3300.
1761 REAL,
PARAMETER :: ZWRLSAT = 0.85
1765 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:ICE_LITTER',0,zhook_handle)
1770 IF (
SIZE(kwg_layer)>0)
THEN 1771 inl = maxval(kwg_layer(:))
1773 inl =
SIZE(pek%XWG,2)
1780 zhcapl(:) = 1/(pctsfc(:)*pek%XGNDLITTER(:))
1790 zwrl(:)= pek%XWRL(:) /(
xrholw*pek%XGNDLITTER(:))
1791 zwrli(:)=pek%XWRLI(:)/(
xrholw*pek%XGNDLITTER(:))
1796 zdeltat(:) = pek%XTL(:) -
xtt 1800 zphasem(:) = (ptstep/ztauice)*min((
xci*
xrholi)*max(0.0,zdeltat),zwrli(:
1803 zphasef(:) = (ptstep/ztauice)*min((
xci*
xrholi)*max(0.0,-zdeltat),zwrl(:
1806 zphase(:) = zphasef(:) - zphasem(:)
1809 pek%XTL(:) = pek%XTL(:) + zphase(:)/zhcapl(:)
1813 zphasex(:) = zphase(:)
1823 pek%XWRL(:) = zwrl(:) * pek%XGNDLITTER(:) *
xrholw 1824 pek%XWRLI(:)= zwrli(:) * pek%XGNDLITTER(:) *
xrholw 1829 zelitteri = plelitteri(:) * (ptstep/plstt(:))
1830 zexcess(:) = max( 0.0 , zelitteri - pek%XWRLI(:) )
1831 plitcor = zexcess / ptstep
1832 pek%XWRLI(:) = pek%XWRLI(:) - ( zelitteri - zexcess )
1837 pek%XWGI (:,1) = pek%XWGI(:,1)- zexcess / (
xrholw * pdzg(:,1))
1839 zexcess(:) = max( 0.0, - pek%XWGI(:,1) )
1840 pek%XWGI(:,1) = pek%XWGI(:,1) + zexcess(:)
1845 zexcess = max(0.0,-pek%XWG(:,jl))
1846 pek%XWG(:,jl+1) = pek%XWG(:,jl+1) - zexcess*pdzg(:,jl)/pdzg(:,jl+1)
1847 pek%XWG(:,jl) = pek%XWG(:,jl) + zexcess
1853 WHERE (pek%XWRLI(:) < zertol )
1854 pek%XWRL (:) = pek%XWRL(:) + pek%XWRLI(:)
1855 pek%XTL (:) = pek%XTL(:) + pek%XWRLI(:) *
xlmtt / pek%XGNDLITTER(:)
1862 pphasel(:)=(zphase(:) + zphasec(:))/ptstep*pek%XGNDLITTER
1864 IF (
lhook)
CALL dr_hook(
'ISBA_MEB:ICE_LITTER',1,zhook_handle)
subroutine snowalb_spectral_bands_meb(PVEGTYPE, PEK, PSNOWRHO, PSNOWAGE, PPS
real, parameter xsw_wght_vis
subroutine isba_meb(IO, KK, PK, PEK, DK, DEK, DMK, G, AG,
subroutine deallocate_local_vars_prep_grid_soil
subroutine hydro_veg(HRAIN, PTSTEP, PMUF, PRR, PLEV, PLETR, PVEG, PPSNV, PWR, PWRMAX, PPG, PDRIP, PRRVEG, PLVTT)
subroutine snow3lradtrans(PSNOWDZMIN, PSPECTRALALBEDO, PSNOWDZ, PS
subroutine sum_fluxes_meb_tsplit
subroutine e_budget_meb(IO, KK, PK, PEK, DK, DEK, DMK, PTSTEP, PLTT, PPS, PCT, PTDEEP_A, PD_G, PS
subroutine wet_leaves_frac(PWRM, PVEG, PWRMAX_CF, PZ0, PLAI, PWRMAX, PDELTA)
subroutine allocate_local_vars_prep_grid_soil
subroutine avg_fluxes_meb_tsplit
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)
subroutine init_sum_fluxes_meb_tsplit
subroutine isba_fluxes_meb(KK, PK, PEK, DK, DEK, DMK, PRHOA, PLTT,
subroutine snow3l_isba(IO, G, PK, PEK, DK, DEK, DMK, OMEB, HIMPLICIT_WIND, TPTIME, PTSTEP, PVEGTYPE, PTG, PCT, PSOILHCAPZ, PSOILCONDZ, PPS, PTA, PSW_RAD, PQA, PVMOD, PLW_RAD, PRR, PSR, PRHOA, PUREF, PEXNS, PEXNA, PDIRCOSZW, PZREF, PALB, PD_G, PDZG, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTHRUFAL, PGRNDFLUX, PFLSN_COR, PGSFCSNOW, PEVAPCOR, PLES3L, PLEL3L, PEVAP, PSNOWSFCH, PDELHEATN, PDELHEATN_SFC, PRI, PZENITH, PDELHEATG, PDELHEATG_SFC, PQS)
subroutine ice_litter(PTSTEP, PLELITTERI, PSOILHCAPZ, PEK, KWG_LAYER, PDZG, PPHASEL, PCTSFC, PLSTT, PLITCOR
subroutine snow_load_meb(PK, PEK, DEK, PTSTEP, PSR, PWRVNMAX, PKVN, PCHEATV, PMELTVN, PVELC, PSUBVCOR)
subroutine reshift_meb_soil(OMEB_LITTER, PTGL, PLESFC, PLESFCI, PEK, DEK)
subroutine preps_for_meb_ebud_rad(PPS, PLAICV, PSNOWRHO, PSNOWSWE, PSNOWHEAT, PSNOWLIQ, PSNOWTEMP, PSNOWDZ, PSCOND, PHEATCAPS, PEMISNOW, PSIGMA_F, PCHIP, PTSTEP, PSR, PTA, PVMOD, PSNOWAGE, PPERMSNOWFRAC)
subroutine veg(PSW_RAD, PTA, PQA, PPS, PRGL, PLAI, PRSMIN, PGAMMA, PF2, PRS)
subroutine drag_meb(IO, PEK, DMK, DK, PTG, PTA, PQA, PVMOD, PWG, PWGI, PWSAT, PWFC, PEXNS, PEXNA, PPS, PRR, PSR, PRHOA, PZ0G_WITHOUT_SNOW, PZ0_MEBV, PZ0H_MEBV, PZ0EFF_MEBV, PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN, PSNOWSWE, PCHIP, PTSTEP, PRS_VG, PRS_VN, PPALPHAN, PZREF, PUREF, PDIRCOSZW, PSNCV, PDELTA, PVELC, PRISNOW, PUSTAR2SNOW, PHUGI, PHVG, PHVN, PLEG_DELTA, PLEGI_DELTA, PHSGL, PHSGF, PFLXC_C_A, PFLXC_N_A, PFLXC_G_C, PFLXC_N_C, PFLXC_VG_C, PFLXC_VN_C, PFLXC_MOM, PQSATG, PQSATV, PQSATC, PQSATN, PDELTAVK)
subroutine isba_lwnet_meb(PLAI, PPSN, PPSNA, PEMIS_N, PEMIS_F, PFF,
subroutine snow_leaves_frac_meb(PPSN, PPALPHAN, PWRVN, PTV, PCHIP, PLAIV, PWRVNMAX, PDELTAVN, PMELTVN)
subroutine prep_meb_soil(OMEB_LITTER, PSOILHCAPZ, PSOILCONDZ, KK, PK, PEK, PD_
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)
real, parameter xsw_wght_nir