6 SUBROUTINE soil_albedo(HALBEDO, PWSAT, PWG1, KK, PEK, HBAND)
58 CHARACTER(LEN=*),
INTENT(IN) :: HALBEDO
65 REAL,
DIMENSION(:),
INTENT(IN) :: PWSAT
66 REAL,
DIMENSION(:),
INTENT(IN) :: PWG1
71 CHARACTER(LEN=*),
INTENT(IN) :: HBAND
76 REAL,
DIMENSION(SIZE(PWSAT)) :: ZX
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
82 IF (halbedo==
'USER' .AND.
lhook)
CALL dr_hook(
'SOIL_ALBEDO',1,zhook_handle
83 IF (halbedo==
'USER')
RETURN 85 IF (
trim(hband)==
"VIS".OR.
trim(hband)==
"ALL") pek%XALBVIS_SOIL =
xundef 86 IF (
trim(hband)==
"NIR".OR.
trim(hband)==
"ALL") pek%XALBNIR_SOIL =
xundef 87 IF (
trim(hband)==
"UV" .OR.
trim(hband)==
"ALL") pek%XALBUV_SOIL =
xundef 89 SELECT CASE ( halbedo )
92 zx = min( pwg1(:)/pwsat(:) , 1. )
94 IF (
trim(hband)==
"VIS".OR.
trim(hband)==
"ALL") &
96 pek%XALBVIS_SOIL(:) = kk%XALBVIS_WET(:) + &
97 (0.25*kk%XALBVIS_DRY(:)-kk%XALBVIS_WET(:)) * (1. - zx(:)) *
99 IF (
trim(hband)==
"NIR".OR.
trim(hband)==
"ALL") &
101 pek%XALBNIR_SOIL(:) = kk%XALBNIR_WET(:) + &
102 (0.25*kk%XALBNIR_DRY(:)-kk%XALBNIR_WET(:)) * (1. - zx(:)) * &
103 ( zx(:) + (kk%XALBNIR_DRY(:)-kk%XALBNIR_WET(:)) / (0.25*kk%XALBNIR_DRY
104 IF (
trim(hband)==
"UV".OR.
trim(hband)==
"ALL") &
106 pek%XALBUV_SOIL (:) = kk%XALBUV_WET (:) + &
107 (0.25*kk%XALBUV_DRY (:)-kk%XALBUV_WET (:)) * (1. - zx(:)) * &
108 ( zx(:) + (kk%XALBUV_DRY (:)-kk%XALBUV_WET (:)) / (0.25*kk%XALBUV_DRY
113 IF (
trim(hband)==
"VIS".OR.
trim(hband)==
"ALL") &
114 WHERE (pwg1(:)/=
xundef) pek%XALBVIS_SOIL(:) = kk%XALBVIS_DRY(:)
115 IF (
trim(hband)==
"NIR".OR.
trim(hband)==
"ALL") &
116 WHERE (pwg1(:)/=
xundef) pek%XALBNIR_SOIL(:) = kk%XALBNIR_DRY(:)
117 IF (
trim(hband)==
"UV".OR.
trim(hband)==
"ALL") &
118 WHERE (pwg1(:)/=
xundef) pek%XALBUV_SOIL (:) = kk%XALBUV_DRY (:)
121 IF (
trim(hband)==
"VIS".OR.
trim(hband)==
"ALL") &
122 WHERE (pwg1(:)/=
xundef) pek%XALBVIS_SOIL(:) = kk%XALBVIS_WET(:)
123 IF (
trim(hband)==
"NIR".OR.
trim(hband)==
"ALL") &
124 WHERE (pwg1(:)/=
xundef) pek%XALBNIR_SOIL(:) = kk%XALBNIR_WET(:)
125 IF (
trim(hband)==
"UV".OR.
trim(hband)==
"ALL") &
126 WHERE (pwg1(:)/=
xundef) pek%XALBUV_SOIL (:) = kk%XALBUV_WET (:)
129 IF (
trim(hband)==
"VIS".OR.
trim(hband)==
"ALL") &
130 WHERE (pwg1(:)/=
xundef) pek%XALBVIS_SOIL(:) = 0.5 * ( kk%XALBVIS_DRY
131 IF (
trim(hband)==
"NIR".OR.
trim(hband)==
"ALL") &
132 WHERE (pwg1(:)/=
xundef) pek%XALBNIR_SOIL(:) = 0.5 * ( kk%XALBNIR_DRY
133 IF (
trim(hband)==
"UV".OR.
trim(hband)==
"ALL") &
134 WHERE (pwg1(:)/=
xundef) pek%XALBUV_SOIL (:) = 0.5 * ( kk%XALBUV_DRY
static const char * trim(const char *name, int *n)
subroutine soil_albedo(HALBEDO, PWSAT, PWG1, KK, PEK, HBAND)