14 palbvis_dry,palbnir_dry,palbuv_dry, &
15 palbvis_wet,palbnir_wet,palbuv_wet, &
16 palbvis_soil, palbnir_soil,palbuv_soil )
22 CHARACTER(LEN=*),
INTENT(IN) :: halbedo
29 REAL,
DIMENSION(:),
INTENT(IN) :: pwsat
30 REAL,
DIMENSION(:),
INTENT(IN) :: pwg1
31 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_dry
32 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_dry
33 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_dry
34 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_wet
35 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_wet
36 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_wet
38 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbvis_soil
39 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbnir_soil
40 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbuv_soil
46 palbvis_dry,palbnir_dry,palbuv_dry, &
47 palbvis_wet,palbnir_wet,palbuv_wet, &
48 palbvis_soil, palbnir_soil,palbuv_soil )
55 CHARACTER(LEN=*),
INTENT(IN) :: halbedo
62 REAL,
DIMENSION(:),
INTENT(IN) :: pwsat
63 REAL,
DIMENSION(:,:),
INTENT(IN) :: pwg1
64 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_dry
65 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_dry
66 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_dry
67 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_wet
68 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_wet
69 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_wet
71 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbvis_soil
72 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbnir_soil
73 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbuv_soil
84 palbvis_dry,palbnir_dry,palbuv_dry, &
85 palbvis_wet,palbnir_wet,palbuv_wet, &
86 palbvis_soil, palbnir_soil,palbuv_soil )
126 USE yomhook
,ONLY : lhook, dr_hook
127 USE parkind1
,ONLY : jprb
134 CHARACTER(LEN=*),
INTENT(IN) :: halbedo
141 REAL,
DIMENSION(:),
INTENT(IN) :: pwsat
142 REAL,
DIMENSION(:),
INTENT(IN) :: pwg1
143 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_dry
144 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_dry
145 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_dry
146 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_wet
147 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_wet
148 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_wet
150 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbvis_soil
151 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbnir_soil
152 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: palbuv_soil
157 REAL,
DIMENSION(SIZE(PWSAT)) :: zx
158 REAL(KIND=JPRB) :: zhook_handle
162 IF (lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D',0,zhook_handle)
163 IF (halbedo==
'USER' .AND. lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D',1,zhook_handle)
164 IF (halbedo==
'USER')
RETURN
166 SELECT CASE ( halbedo )
169 zx = min( pwg1(:)/pwsat(:) , 1. )
176 IF (present(palbvis_soil)) &
177 palbvis_soil(:) = palbvis_wet(:) &
178 + (0.25*palbvis_dry(:)-palbvis_wet(:)) &
180 * ( zx(:) + ( palbvis_dry(:)-palbvis_wet(:)) &
181 /(0.25*palbvis_dry(:)-palbvis_wet(:)) )
182 IF (present(palbnir_soil)) &
183 palbnir_soil(:) = palbnir_wet(:) &
184 + (0.25*palbnir_dry(:)-palbnir_wet(:)) &
186 * ( zx(:) + ( palbnir_dry(:)-palbnir_wet(:)) &
187 /(0.25*palbnir_dry(:)-palbnir_wet(:)) )
188 IF (present(palbuv_soil)) &
189 palbuv_soil(:) = palbuv_wet(:) &
190 + (0.25*palbuv_dry(:)-palbuv_wet(:)) &
192 * ( zx(:) + ( palbuv_dry(:)-palbuv_wet(:)) &
193 /(0.25*palbuv_dry(:)-palbuv_wet(:)) )
196 IF (present(palbvis_soil)) palbvis_soil(:) = palbvis_dry(:)
197 IF (present(palbnir_soil)) palbnir_soil(:) = palbnir_dry(:)
198 IF (present(palbuv_soil)) palbuv_soil(:) = palbuv_dry(:)
200 IF (present(palbvis_soil)) palbvis_soil(:) = palbvis_wet(:)
201 IF (present(palbnir_soil)) palbnir_soil(:) = palbnir_wet(:)
202 IF (present(palbuv_soil)) palbuv_soil(:) = palbuv_wet(:)
204 IF (present(palbvis_soil)) palbvis_soil(:) = 0.5 * ( palbvis_dry(:) + palbvis_wet(:) )
205 IF (present(palbnir_soil)) palbnir_soil(:) = 0.5 * ( palbnir_dry(:) + palbnir_wet(:) )
206 IF (present(palbuv_soil)) palbuv_soil(:) = 0.5 * ( palbuv_dry(:) + palbuv_wet(:) )
208 IF (lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D',1,zhook_handle)
219 palbvis_dry,palbnir_dry,palbuv_dry, &
220 palbvis_wet,palbnir_wet,palbuv_wet, &
221 palbvis_soil, palbnir_soil,palbuv_soil )
263 USE yomhook
,ONLY : lhook, dr_hook
264 USE parkind1
,ONLY : jprb
271 CHARACTER(LEN=*),
INTENT(IN) :: halbedo
278 REAL,
DIMENSION(:),
INTENT(IN) :: pwsat
279 REAL,
DIMENSION(:,:),
INTENT(IN) :: pwg1
280 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_dry
281 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_dry
282 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_dry
283 REAL,
DIMENSION(:),
INTENT(IN) :: palbvis_wet
284 REAL,
DIMENSION(:),
INTENT(IN) :: palbnir_wet
285 REAL,
DIMENSION(:),
INTENT(IN) :: palbuv_wet
287 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbvis_soil
288 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbnir_soil
289 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: palbuv_soil
294 REAL,
DIMENSION(SIZE(PWSAT)) :: zx
298 REAL(KIND=JPRB) :: zhook_handle
301 IF (lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D_PATCH',0,zhook_handle)
302 IF (halbedo==
'USER' .AND. lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D_PATCH',1,zhook_handle)
303 IF (halbedo==
'USER')
RETURN
305 ipatch =
SIZE(pwg1,2)
307 IF (present(palbvis_soil)) palbvis_soil = xundef
308 IF (present(palbnir_soil)) palbnir_soil = xundef
309 IF (present(palbuv_soil)) palbuv_soil = xundef
311 SELECT CASE ( halbedo )
315 zx = min( pwg1(:,jpatch)/pwsat(:) , 1. )
323 IF (present(palbvis_soil)) &
324 WHERE (pwg1(:,jpatch)/=xundef) &
325 palbvis_soil(:,jpatch) = palbvis_wet(:) &
326 + (0.25*palbvis_dry(:)-palbvis_wet(:)) &
328 * ( zx(:) + ( palbvis_dry(:)-palbvis_wet(:)) &
329 /(0.25*palbvis_dry(:)-palbvis_wet(:)) )
330 IF (present(palbnir_soil)) &
331 WHERE (pwg1(:,jpatch)/=xundef) &
332 palbnir_soil(:,jpatch) = palbnir_wet(:) &
333 + (0.25*palbnir_dry(:)-palbnir_wet(:)) &
335 * ( zx(:) + ( palbnir_dry(:)-palbnir_wet(:)) &
336 /(0.25*palbnir_dry(:)-palbnir_wet(:)) )
337 IF (present(palbuv_soil)) &
338 WHERE (pwg1(:,jpatch)/=xundef) &
339 palbuv_soil(:,jpatch) = palbuv_wet(:) &
340 + (0.25*palbuv_dry(:)-palbuv_wet(:)) &
342 * ( zx(:) + ( palbuv_dry(:)-palbuv_wet(:)) &
343 /(0.25*palbuv_dry(:)-palbuv_wet(:)) )
349 IF (present(palbvis_soil)) palbvis_soil(:,:) = spread(palbvis_dry(:),2,ipatch)
350 IF (present(palbnir_soil)) palbnir_soil(:,:) = spread(palbnir_dry(:),2,ipatch)
351 IF (present(palbuv_soil)) palbuv_soil(:,:) = spread(palbuv_dry(:),2,ipatch)
354 IF (present(palbvis_soil)) palbvis_soil(:,:) = spread(palbvis_wet(:),2,ipatch)
355 IF (present(palbnir_soil)) palbnir_soil(:,:) = spread(palbnir_wet(:),2,ipatch)
356 IF (present(palbuv_soil)) palbuv_soil(:,:) = spread(palbuv_wet(:),2,ipatch)
359 IF (present(palbvis_soil)) palbvis_soil(:,:) = 0.5 * ( spread(palbvis_dry(:),2,ipatch) + spread(palbvis_wet(:),2,ipatch) )
360 IF (present(palbnir_soil)) palbnir_soil(:,:) = 0.5 * ( spread(palbnir_dry(:),2,ipatch) + spread(palbnir_wet(:),2,ipatch) )
361 IF (present(palbuv_soil)) palbuv_soil(:,:) = 0.5 * ( spread(palbuv_dry(:),2,ipatch) + spread(palbuv_wet(:),2,ipatch) )
364 IF (lhook) CALL dr_hook(
'MODI_SOIL_ALBEDO:SOIL_ALBEDO_1D_PATCH',1,zhook_handle)
subroutine soil_albedo_1d_patch(HALBEDO, PWSAT, PWG1, PALBVIS_DRY, PALBNIR_DRY, PALBUV_DRY, PALBVIS_WET, PALBNIR_WET, PALBUV_WET, PALBVIS_SOIL, PALBNIR_SOIL, PALBUV_SOIL)
subroutine soil_albedo_1d(HALBEDO, PWSAT, PWG1, PALBVIS_DRY, PALBNIR_DRY, PALBUV_DRY, PALBVIS_WET, PALBNIR_WET, PALBUV_WET, PALBVIS_SOIL, PALBNIR_SOIL, PALBUV_SOIL)