92 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PSNOWDEPTH,PH_VEG
94 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1),SIZE(PSNOWDEPTH,2),SIZE(PSNOWDEPTH,3)) 98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
100 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1),SIZE(PSNOWDEPTH,2),SIZE(PSNOWDEPTH,3)) 103 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_3D',0,zhook_handle)
111 zh_baseveg(:,:,:)=max(0.2*(ph_veg(:,:,:)-2.0),0.0);
113 ppalphan(:,:,:)=min(1.,max(0., (psnowdepth(:,:,:)-zh_baseveg(:,:,:))/(ph_veg
115 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_3D',1,zhook_handle)
137 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSNOWDEPTH,PH_VEG
139 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1),SIZE(PSNOWDEPTH,2)) :: PPALPHAN
143 REAL(KIND=JPRB) :: ZHOOK_HANDLE
145 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1),SIZE(PSNOWDEPTH,2)) :: ZH_BASEVEG
148 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_2D',0,zhook_handle)
155 zh_baseveg(:,:)=max(0.2*(ph_veg(:,:)-2.0),0.0);
157 ppalphan(:,:)=min(1.,max(0., (psnowdepth(:,:)-zh_baseveg(:,:))/(ph_veg(:
159 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_2D',1,zhook_handle)
181 REAL,
DIMENSION(:),
INTENT(IN) :: PSNOWDEPTH,PH_VEG
183 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1)) :: PPALPHAN
187 REAL(KIND=JPRB) :: ZHOOK_HANDLE
189 REAL,
DIMENSION(SIZE(PSNOWDEPTH,1)) :: ZH_BASEVEG
192 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_1D',0,zhook_handle)
199 zh_baseveg(:)=max(0.2*(ph_veg(:)-2.0),0.0);
202 ppalphan(:)=min(1.,max(0., (psnowdepth(:)-zh_baseveg(:))/(ph_veg(:)-zh_baseveg
204 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_1D',1,zhook_handle)
226 REAL,
INTENT(IN) :: PSNOWDEPTH,PH_VEG
232 REAL(KIND=JPRB) :: ZHOOK_HANDLE
237 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_0D',0,zhook_handle)
244 zh_baseveg=max(0.2*(ph_veg-2.0),0.0);
246 ppalphan=min(1.,max(0., (psnowdepth-zh_baseveg)/(ph_veg-zh_baseveg) ))
248 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEBPALPHAN_0D',1,zhook_handle)
260 USE modd_isba_par
, ONLY : xcvheatf
269 REAL,
INTENT(IN) :: PWRN, PWR, PCV
276 REAL(KIND=JPRB) :: ZHOOK_HANDLE
283 REAL,
PARAMETER :: ZCHEATVMIN = 1.e+4
286 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_0D',0,zhook_handle)
296 zcheatv = max(zcheatvmin,xcvheatf/pcv) + &
300 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_0D',1,zhook_handle)
311 USE modd_isba_par
, ONLY : xcvheatf
320 REAL,
DIMENSION(:),
INTENT(IN) :: PWRN, PWR, PCV
327 REAL(KIND=JPRB) :: ZHOOK_HANDLE
329 REAL,
DIMENSION(SIZE(PCV)) :: ZCHEATV
334 REAL,
PARAMETER :: ZCHEATVMIN = 1.e+4
337 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_1D',0,zhook_handle)
347 zcheatv(:) = max(zcheatvmin,xcvheatf/pcv(:)) + &
351 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_1D',1,zhook_handle)
362 USE modd_isba_par
, ONLY : xcvheatf
371 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWRN, PWR, PCV
378 REAL(KIND=JPRB) :: ZHOOK_HANDLE
380 REAL,
DIMENSION(SIZE(PCV),SIZE(PCV,2)) :: ZCHEATV
385 REAL,
PARAMETER :: ZCHEATVMIN = 1.e+4
388 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_2D',0,zhook_handle)
398 zcheatv(:,:) = max(zcheatvmin,xcvheatf/pcv(:,:)) + &
402 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SFC_HEATCAP_VEG_2D',1,zhook_handle)
430 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSW_RAD
432 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCOSZENITH
437 REAL(KIND=JPRB) :: ZHOOK_HANDLE
439 REAL,
DIMENSION(SIZE(PSW_RAD,1),SIZE(PSW_RAD,2)) :: ZSWDOWN_DIFF, ZRATIO
443 REAL,
PARAMETER :: ZSWCNT = 1.0
446 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_2D',0,zhook_handle)
448 zratio(:,:) = psw_rad(:,:)*(zswcnt/
xi0)/max(0.01,pcoszenith(:,:))
452 zratio(:,:) = min(1.0, zratio(:,:))
456 WHERE(zratio(:,:) < 0.22 ) &
457 zswdown_diff(:,:) = 1.0 - 0.09*zratio(:,:)
459 WHERE(zratio(:,:) >= 0.22 .AND. zratio(:,:) < 0.80) &
460 zswdown_diff(:,:) = 0.9511 + (-0.1604 + (4.388 + (-16.64 + &
461 12.34*zratio(:,:))*zratio(:,:))*zratio(:,:))*zratio(:,:)
463 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_2D',1,zhook_handle)
488 REAL,
DIMENSION(:),
INTENT(IN) :: PSW_RAD
490 REAL,
DIMENSION(:),
INTENT(IN) :: PCOSZENITH
495 REAL(KIND=JPRB) :: ZHOOK_HANDLE
497 REAL,
DIMENSION(SIZE(PSW_RAD)) :: ZSWDOWN_DIFF, ZRATIO
501 REAL,
PARAMETER :: ZSWCNT = 1.0
505 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_1D',0,zhook_handle)
507 zratio(:) = psw_rad(:)*(zswcnt/
xi0)/max(0.01,pcoszenith(:))
511 zratio(:) = min(1.0, zratio(:))
513 zswdown_diff(:) = 0.165
515 WHERE(zratio(:) < 0.22 ) &
516 zswdown_diff(:) = 1.0 - 0.09*zratio(:)
518 WHERE(zratio(:) >= 0.22 .AND. zratio(:) < 0.80) &
519 zswdown_diff(:) = 0.9511 + (-0.1604 + (4.388 + (-16.64 + &
520 12.34*zratio(:))*zratio(:))*zratio(:))*zratio(:)
522 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_1D',1,zhook_handle)
547 REAL,
INTENT(IN) :: PSW_RAD
549 REAL,
INTENT(IN) :: PCOSZENITH
554 REAL(KIND=JPRB) :: ZHOOK_HANDLE
556 REAL :: ZSWDOWN_DIFF, ZRATIO
560 REAL,
PARAMETER :: ZSWCNT = 1.0
563 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_0D',0,zhook_handle)
565 zratio = psw_rad*(zswcnt/
xi0)/max(0.01,pcoszenith)
569 zratio = min(1.0, zratio)
573 IF (zratio < 0.22 )
THEN 574 zswdown_diff = 1.0 - 0.09*zratio
575 ELSEIF(zratio >= 0.22 .AND. zratio < 0.80)
THEN 576 zswdown_diff = 0.9511 + (-0.1604 + (4.388 + (-16.64 + &
577 12.34*zratio)*zratio)*zratio)*zratio
580 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SWDOWN_DIFF_0D',1,zhook_handle)
616 REAL,
INTENT(IN) :: PCHIP, PVELC
620 REAL,
INTENT(IN) :: PWRVNMAX
636 REAL(KIND=JPRB) :: ZHOOK_HANDLE
640 REAL,
PARAMETER :: ZWSNOW = 0.8
643 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_0D',0,zhook_handle)
652 IF(pwrvnmax > 0.0)
THEN 653 zfcp = min(1.,max(0., pvelc/((2*zwsnow)*pchip) ) )
654 zkvn = (1.-pchip+zfcp*pchip)/pwrvnmax
657 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_0D',1,zhook_handle)
692 REAL,
DIMENSION(:),
INTENT(IN) :: PCHIP, PVELC
696 REAL,
DIMENSION(:),
INTENT(IN) :: PWRVNMAX
703 REAL,
DIMENSION(SIZE(PVELC)) :: ZKVN
710 REAL,
DIMENSION(SIZE(PVELC)) :: ZFCP
712 REAL(KIND=JPRB) :: ZHOOK_HANDLE
716 REAL,
PARAMETER :: ZWSNOW = 0.8
719 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_1D',0,zhook_handle)
728 WHERE(pwrvnmax(:) > 0.0)
729 zfcp(:) = min(1.,max(0., pvelc(:)/((2*zwsnow)*pchip(:)) ) )
730 zkvn(:) = (1.-pchip(:)+zfcp(:)*pchip(:))/pwrvnmax(:)
733 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_1D',1,zhook_handle)
768 REAL,
DIMENSION(:,:),
INTENT(IN) :: PCHIP, PVELC
772 REAL,
DIMENSION(:,:),
INTENT(IN) :: PWRVNMAX
779 REAL,
DIMENSION(SIZE(PVELC,1),SIZE(PVELC,2)) :: ZKVN
786 REAL,
DIMENSION(SIZE(PVELC,1),SIZE(PVELC,2)) :: ZFCP
788 REAL(KIND=JPRB) :: ZHOOK_HANDLE
792 REAL,
PARAMETER :: ZWSNOW = 0.8
795 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_2D',0,zhook_handle)
804 WHERE(pwrvnmax(:,:) > 0.0)
805 zfcp(:,:) = min(1.,max(0., pvelc(:,:)/((2*zwsnow)*pchip(:,:)) ) )
806 zkvn(:,:) = (1.-pchip(:,:)+zfcp(:,:)*pchip(:,:))/pwrvnmax(:,:)
809 IF (
lhook)
CALL dr_hook(
'MODE_MEB:SNOW_INTERCEPT_EFF_2D',1,zhook_handle)
846 REAL,
INTENT(IN) :: PLAI, PPALPHAN
855 REAL(KIND=JPRB) :: ZHOOK_HANDLE
858 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_0D',0,zhook_handle)
860 pchip = exp(-
xtau_lw*plai*(1.-ppalphan))
862 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_0D',1,zhook_handle)
899 REAL,
DIMENSION(:),
INTENT(IN) :: PLAI, PPALPHAN
903 REAL,
DIMENSION(SIZE(PLAI,1)) :: PCHIP
908 REAL(KIND=JPRB) :: ZHOOK_HANDLE
911 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_1D',0,zhook_handle)
913 pchip(:) = exp(-
xtau_lw*plai(:)*(1.-ppalphan(:)))
915 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_1D',1,zhook_handle)
952 REAL,
DIMENSION(:,:),
INTENT(IN) :: PLAI, PPALPHAN
956 REAL,
DIMENSION(SIZE(PLAI,1),SIZE(PLAI,2)) :: PCHIP
961 REAL(KIND=JPRB) :: ZHOOK_HANDLE
964 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_2D',0,zhook_handle)
966 pchip(:,:) = exp(-
xtau_lw*plai(:,:)*(1.-ppalphan(:,:)))
968 IF (
lhook)
CALL dr_hook(
'MODE_MEB:MEB_SHIELD_FACTOR_2D',1,zhook_handle)
real function snow_intercept_eff_0d(PCHIP, PVELC, PWRVNMAX)
real function swdown_diff_0d(PSW_RAD, PCOSZENITH)
real function, dimension(size(pvelc)) snow_intercept_eff_1d(PCHIP, PVELC, PWRVNMAX)
real function, dimension(size(psw_rad, 1), size(psw_rad, 2)) swdown_diff_2d(PSW_RAD, PCOSZENITH)
real function meb_shield_factor_0d(PLAI, PPALPHAN)
real function sfc_heatcap_veg_0d(PWRN, PWR, PCV)
real function, dimension(size(plai, 1)) meb_shield_factor_1d(PLAI, PPALPHAN)
real function, dimension(size(pcv)) sfc_heatcap_veg_1d(PWRN, PWR, PCV)
real function, dimension(size(plai, 1), size(plai, 2)) meb_shield_factor_2d(PLAI, PPALPHAN)
real function, dimension(size(pvelc, 1), size(pvelc, 2)) snow_intercept_eff_2d(PCHIP, PVELC, PWRVNMAX)
real function, dimension(size(psnowdepth, 1), size(psnowdepth, 2), size(psnowdepth, 3)!) mebpalphan_3d(PSNOWDEPTH, PH_VEG)
real function, dimension(size(psnowdepth, 1)) mebpalphan_1d(PSNOWDEPTH, PH_VEG)
real function, dimension(size(pcv), size(pcv, 2)) sfc_heatcap_veg_2d(PWRN, PWR, PCV)
real function, dimension(size(psw_rad)) swdown_diff_1d(PSW_RAD, PCOSZENITH)
real function, dimension(size(psnowdepth, 1), size(psnowdepth, 2)) mebpalphan_2d(PSNOWDEPTH, PH_VEG)
real function mebpalphan_0d(PSNOWDEPTH, PH_VEG)