6 SUBROUTINE prep_teb_greenroof (DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, &
7 HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KPATCH,YDCTL)
45 USE modi_prep_hor_teb_greenroof_field
46 USE modi_prep_ver_teb_veg
53 USE modd_snow_par
, ONLY : xz0sn
54 USE modd_isba_par
, ONLY : xwgmin
55 USE modd_co2v_par
, ONLY : xcc_nit, xca_nit, xanfminit
74 TYPE(
sso_t),
INTENT(INOUT) :: USS
83 TYPE(
grid_t),
INTENT(INOUT) :: TG
85 type(
prep_ctl),
INTENT(INOUT) :: ydctl
87 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
88 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
89 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
90 CHARACTER(LEN=28),
INTENT(IN) :: HPGDFILE
91 CHARACTER(LEN=6),
INTENT(IN) :: HPGDFILETYPE
93 INTEGER,
INTENT(IN) :: KPATCH
98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 IF (
lhook)
CALL dr_hook(
'PREP_TEB_GREENROOF',0,zhook_handle)
116 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
117 hprogram,
'WG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
121 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
122 hprogram,
'WGI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
126 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
127 hprogram,
'WR ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
131 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
132 hprogram,
'TG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
136 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
137 hprogram,
'SN_VEG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
141 CALL prep_hor_teb_greenroof_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
142 hprogram,
'LAI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
151 IF (all(pek%XWGI(:,:)==0.))
THEN 152 WHERE(pek%XTG(:,1:
SIZE(pek%XWG,2)) <
xtt-10.)
153 pek%XWGI(:,:) = k%XWSAT(:,:)-xwgmin
154 pek%XWG (:,:) = xwgmin
160 WHERE(pek%XWG(:,:) /=
xundef .AND. (pek%XWG(:,:) + pek%XWGI(:,:)) > k%XWSAT(:,:) )
161 pek%XWGI(:,:) = k%XWSAT(:,:) - pek%XWG(:,:)
177 ALLOCATE(pek%XRESA(
SIZE(pek%XLAI)))
184 IF (io%CPHOTO /=
'NON')
THEN 186 ALLOCATE(pek%XAN(
SIZE(pek%XLAI)))
189 ALLOCATE(pek%XANDAY(
SIZE(pek%XLAI)))
192 ALLOCATE(pek%XANFM(
SIZE(pek%XLAI)))
193 pek%XANFM = xanfminit
195 ALLOCATE(pek%XLE(
SIZE(pek%XLAI)))
200 IF (io%CPHOTO ==
'AST')
THEN 202 ALLOCATE(pek%XBIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
203 pek%XBIOMASS(:,1) = 0.
205 ALLOCATE(pek%XRESP_BIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
206 pek%XRESP_BIOMASS(:,:) = 0.
208 ELSEIF (io%CPHOTO ==
'NIT' .OR. io%CPHOTO ==
'NCB')
THEN 210 ALLOCATE(pek%XBIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
211 pek%XBIOMASS(:,1) = pek%XLAI(:) * p%XBSLAI_NITRO(:)
212 pek%XBIOMASS(:,2) = max( 0., (pek%XBIOMASS(:,1)/ (xcc_nit/10.**xca_nit)) &
213 **(1.0/(1.0-xca_nit)) - pek%XBIOMASS(:,1) )
214 pek%XBIOMASS(:,3:io%NNBIOMASS) = 0.
216 ALLOCATE(pek%XRESP_BIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
217 pek%XRESP_BIOMASS(:,:) = 0.
223 IF (
lhook)
CALL dr_hook(
'PREP_TEB_GREENROOF',1,zhook_handle)
subroutine prep_teb_greenroof(DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
subroutine prep_hor_teb_greenroof_field(DTCO, UG, U, USS, GCP, IO, S, K, P, PEK, TG, TOP, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
subroutine prep_ver_teb_veg(P, PEK, IO, PZS)