6 SUBROUTINE prep_isba (DTCO, UG, U, USS, GCP, SB, IG, IO, S, NK, NP, NPE, &
7 HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,YDCTL)
66 USE modd_data_cover_par
, ONLY : nvt_snow
67 USE modd_snow_par
, ONLY : xemissn
68 USE modd_isba_par
, ONLY : xwgmin
69 USE modd_co2v_par
, ONLY : xanfminit
75 USE modd_deepsoil
, ONLY : lphysdomc
83 USE modi_prep_hor_isba_field
84 USE modi_prep_ver_isba
85 USE modi_prep_output_grid
88 USE modi_vegtype_to_patch
90 USE modi_prep_perm_snow
92 USE modi_averaged_albedo_emis_isba
93 USE modi_prep_hor_isba_cc_field
96 USE modi_clean_prep_output_grid
109 TYPE(
sso_t),
INTENT(INOUT) :: USS
113 TYPE(
grid_t),
INTENT(INOUT) :: IG
120 type(
prep_ctl),
INTENT(INOUT) :: ydctl
122 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
123 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
124 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
125 CHARACTER(LEN=28),
INTENT(IN) :: HPGDFILE
126 CHARACTER(LEN=6),
INTENT(IN) :: HPGDFILETYPE
134 INTEGER :: ILUOUT, INI
135 INTEGER :: JP, JL, JJ
136 REAL :: ZWORK, ZLOG, ZWTOT, ZMATPOT, ZWL
138 REAL,
DIMENSION(1) :: ZSW_BANDS
139 REAL,
DIMENSION(U%NSIZE_NATURE,IO%NPATCH) :: ZDIR_ALB, ZTG1
140 REAL,
DIMENSION(U%NSIZE_NATURE,IO%NPATCH) :: ZSCA_ALB
141 REAL,
DIMENSION(U%NSIZE_NATURE) :: ZEMIS
142 REAL,
DIMENSION(U%NSIZE_NATURE) :: ZZENITH
143 REAL,
DIMENSION(U%NSIZE_NATURE) :: ZTSURF
153 INTEGER :: ISIZE_LMEB_PATCH, ISNOW
155 REAL(KIND=JPRB) :: ZHOOK_HANDLE
168 isize_lmeb_patch=
count(io%LMEB_PATCH(:))
183 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
184 hprogram,
'ZS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
188 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
189 hprogram,
'WG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl,gwg)
193 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
194 hprogram,
'WGI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl,gwgi)
198 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
199 hprogram,
'WR ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
203 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
204 hprogram,
'TG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl,gtg)
208 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
209 hprogram,
'SN_VEG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl,gpermsnow)
213 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
214 hprogram,
'LAI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
219 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
220 hprogram,
'ICE_STO',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
225 IF(isize_lmeb_patch>0)
THEN 226 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
227 hprogram,
'TV ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
228 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
229 hprogram,
'TL ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
230 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
231 hprogram,
'WRL ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
232 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
233 hprogram,
'WRLI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
234 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
235 hprogram,
'WRVN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
236 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
237 hprogram,
'TC ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
238 CALL prep_hor_isba_field(dtco, ug, u, uss, gcp, ig, io, s, nk, np, npe, s%TTIME, &
239 hprogram,
'QC ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
244 IF (io%CPHOTO ==
'NIT' .OR. io%CPHOTO ==
'NCB')
THEN 246 hprogram,
'BIOMASS ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
251 IF (io%CPHOTO/=
'NON' .AND. io%CRESPSL ==
'CNT')
THEN 256 hprogram,
'LITTER ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
261 hprogram,
'SOILCARB',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
266 hprogram,
'LIGNIN ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,ydctl)
271 IF (ydctl%LPART6)
THEN 281 IF (io%CISBA ==
'3-L')
THEN 283 WHERE(pek%XWG(:,3) /=
xundef)
284 pek%XWG(:,3) = min(pek%XWG(:,3)+ pek%XWGI(:,3),kk%XWSAT(:,3))
290 WHERE(pek%XWG(:,:) /=
xundef .AND. (pek%XWG(:,:) + pek%XWGI(:,:)) > kk%XWSAT(:,:) )
291 pek%XWGI(:,:) = kk%XWSAT(:,:) - pek%XWG(:,:)
311 CALL prep_perm_snow(io, nk%AL(isnow), np%AL(isnow), npe%AL(isnow))
320 npe%AL(jp)%TSNOW%WSNOW(:,:)=0.
329 smax = maxval(npe%AL(jp)%TSNOW%WSNOW(:,:))
330 WRITE(*,*)
' MAX(Snow content (kg/m2)): ', smax
331 WRITE(*,*)
' Set MAX to',
xswemax,
'(kg/m2)' 332 npe%AL(jp)%TSNOW%WSNOW(:,:) = min(npe%AL(jp)%TSNOW%WSNOW(:,:),
xswemax)
333 smax = maxval(npe%AL(jp)%TSNOW%WSNOW(:,:))
334 WRITE(*,*)
' MAX(Snow content (kg/m2)): ', smax
342 gtemp2wgi=(gwg.OR.gwgi.OR.gtg)
344 IF (io%CISBA ==
'DIF'.AND.gtemp2wgi)
THEN 350 DO jl=1,io%NGROUND_LAYER
354 IF(pek%XWG(jj,jl)/=
xundef)
THEN 357 zwtot = pek%XWG(jj,jl)+pek%XWGI(jj,jl)
358 zwtot = min(zwtot,kk%XWSAT(jj,jl))
362 zwork = zwtot/kk%XWSAT(jj,jl)
363 zlog = kk%XBCOEF(jj,jl)*log(zwork)
364 zmatpot = kk%XMPOTSAT(jj,jl)*exp(-zlog)
368 zmatpot = min(kk%XMPOTSAT(jj,jl),
xlmtt*(pek%XTG(jj,jl)-
xtt)/(
xg*pek%XTG(jj,jl)))
369 zwork = max(1.0,zmatpot/kk%XMPOTSAT(jj,jl))
371 zwl = kk%XWSAT(jj,jl)*exp(-zlog/kk%XBCOEF(jj,jl))
372 zwl = max(zwl,xwgmin)
373 pek%XWG(jj,jl) = min(zwl,zwtot )
376 pek%XWGI(jj,jl) = max(0.0,zwtot-pek%XWG(jj,jl))
379 IF(pek%XTG(jj,jl)>=
xtt)
THEN 380 pek%XWG (jj,jl) = min(pek%XWG(jj,jl)+pek%XWGI(jj,jl),kk%XWSAT(jj,jl))
381 pek%XWGI(jj,jl) = 0.0
402 ALLOCATE(pek%XRESA(pk%NSIZE_P))
405 ALLOCATE(pek%XALBNIR(pk%NSIZE_P))
406 ALLOCATE(pek%XALBVIS(pk%NSIZE_P))
407 ALLOCATE(pek%XALBUV(pk%NSIZE_P))
412 ALLOCATE(pek%XALBNIR_SOIL(pk%NSIZE_P))
413 ALLOCATE(pek%XALBVIS_SOIL(pk%NSIZE_P))
414 ALLOCATE(pek%XALBUV_SOIL (pk%NSIZE_P))
415 CALL soil_albedo (io%CALBEDO, kk%XWSAT(:,1),pek%XWG(:,1), kk, pek,
"ALL" )
417 ALLOCATE(pek%XPSN (pk%NSIZE_P))
418 ALLOCATE(pek%XPSNG (pk%NSIZE_P))
419 ALLOCATE(pek%XPSNV (pk%NSIZE_P))
420 ALLOCATE(pek%XPSNV_A(pk%NSIZE_P))
425 ALLOCATE(kk%XDIR_ALB_WITH_SNOW(pk%NSIZE_P,1))
426 ALLOCATE(kk%XSCA_ALB_WITH_SNOW(pk%NSIZE_P,1))
428 ztg1(1:pk%NSIZE_P,jp) = pek%XTG(:,1)
432 ALLOCATE(s%XTSRAD_NAT(u%NSIZE_NATURE))
437 zzenith, ztg1, zsw_bands, zdir_alb, zsca_alb, &
438 zemis, s%XTSRAD_NAT, ztsurf )
441 DEALLOCATE(npe%AL(jp)%XPSN)
442 DEALLOCATE(npe%AL(jp)%XPSNG)
443 DEALLOCATE(npe%AL(jp)%XPSNV)
444 DEALLOCATE(npe%AL(jp)%XPSNV_A)
445 DEALLOCATE(nk%AL(jp)%XDIR_ALB_WITH_SNOW)
446 DEALLOCATE(nk%AL(jp)%XSCA_ALB_WITH_SNOW)
453 IF (io%CPHOTO /=
'NON')
THEN 460 ALLOCATE(pek%XAN(pk%NSIZE_P))
463 ALLOCATE(pek%XANDAY(pk%NSIZE_P))
466 ALLOCATE(pek%XANFM(pk%NSIZE_P))
467 pek%XANFM = xanfminit
469 ALLOCATE(pek%XLE(pk%NSIZE_P))
472 ALLOCATE(pek%XRESP_BIOMASS(pk%NSIZE_P,io%NNBIOMASS))
473 pek%XRESP_BIOMASS(:,:) = 0.
479 IF (io%CPHOTO ==
'AST')
THEN 486 ALLOCATE(pek%XBIOMASS(pk%NSIZE_P,io%NNBIOMASS))
487 pek%XBIOMASS(:,:) = 0.
499 IF (io%LCANOPY)
CALL prep_sbl(ig%NDIM, sb)
subroutine prep_sbl(KDIM, SB)
subroutine prep_isba(DTCO, UG, U, USS, GCP, SB, IG, IO, S, NK, NP, NPE, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)
subroutine clean_prep_output_grid
real, dimension(:), allocatable xzs_ls
subroutine prep_hor_isba_field(DTCO, UG, U, USS, GCP, IG, IO, S, NK, NP, NPE, TPTIME, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL, OKEY)
subroutine init_snow_lw(PEMISSN, TPSNOW)
integer function vegtype_to_patch(IVEGTYPE, INPATCH)
subroutine prep_perm_snow(IO, KK, PK, PEK)
subroutine prep_output_grid(UG, G, KSIZE_FULL, KLUOUT)
subroutine soil_albedo(HALBEDO, PWSAT, PWG1, KK, PEK, HBAND)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine averaged_albedo_emis_isba(IO, S, NK, NP, NPE, PZENITH, PTG1, PSW_BANDS, PDIR_ALB, PSC
subroutine prep_ver_isba(IO, NPE, PZS, NP)
subroutine prep_hor_isba_cc_field(DTCO, U, GCP, KLAT, IO, S, NK, NP, NPE, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, YDCTL)