6 SUBROUTINE prep_teb_garden (DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, &
7 HPROGRAM,HATMFILE,HATMFILETYPE,HPGDFILE,HPGDFILETYPE,KPATCH,YDCTL)
52 USE modi_prep_hor_teb_garden_field
53 USE modi_prep_ver_teb_veg
61 USE modd_snow_par
, ONLY : xz0sn
62 USE modd_isba_par
, ONLY : xwgmin
63 USE modd_co2v_par
, ONLY : xanfminit, xca_nit, xcc_nit
83 TYPE(
sso_t),
INTENT(INOUT) :: USS
85 TYPE(
grid_t),
INTENT(INOUT) :: TG
94 type(
prep_ctl),
INTENT(INOUT) :: ydctl
96 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
97 CHARACTER(LEN=28),
INTENT(IN) :: HATMFILE
98 CHARACTER(LEN=6),
INTENT(IN) :: HATMFILETYPE
99 CHARACTER(LEN=28),
INTENT(IN) :: HPGDFILE
100 CHARACTER(LEN=6),
INTENT(IN) :: HPGDFILETYPE
102 INTEGER,
INTENT(IN) :: KPATCH
106 REAL(KIND=JPRB) :: ZHOOK_HANDLE
122 IF (
lhook)
CALL dr_hook(
'PREP_TEB_GARDEN',0,zhook_handle)
123 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
124 hprogram,
'WG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
128 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
129 hprogram,
'WGI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
133 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
134 hprogram,
'WR ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
138 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
139 hprogram,
'TG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
143 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
144 hprogram,
'SN_VEG ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
149 IF (io%CPHOTO/=
'NON') &
150 CALL prep_hor_teb_garden_field(dtco, ug, u, uss, gcp, io, s, k, p, pek, tg, top, &
151 hprogram,
'LAI ',hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch,ydctl)
160 IF (all(pek%XWGI(:,:)==0.))
THEN 161 WHERE(pek%XTG(:,1:
SIZE(pek%XWG,2)) <
xtt-10.)
162 pek%XWGI(:,:) = k%XWSAT(:,:)-xwgmin
163 pek%XWG (:,:) = xwgmin
168 IF (io%CISBA ==
'3-L')
THEN 170 pek%XWG(:,3) = min(pek%XWG(:,3)+pek%XWGI(:,3),k%XWSAT(:,3))
176 WHERE(pek%XWG(:,:) /=
xundef .AND. (pek%XWG(:,:) + pek%XWGI(:,:)) > k%XWSAT(:,:) )
177 pek%XWGI(:,:) = k%XWSAT(:,:) - pek%XWG(:,:)
193 ALLOCATE(pek%XRESA(
SIZE(pek%XLAI)))
200 IF (io%CPHOTO /=
'NON')
THEN 202 ALLOCATE(pek%XAN(
SIZE(pek%XLAI)))
205 ALLOCATE(pek%XANDAY(
SIZE(pek%XLAI)))
208 ALLOCATE(pek%XANFM(
SIZE(pek%XLAI)))
209 pek%XANFM = xanfminit
211 ALLOCATE(pek%XLE(
SIZE(pek%XLAI)))
216 IF (io%CPHOTO ==
'AST')
THEN 218 ALLOCATE(pek%XBIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
219 pek%XBIOMASS(:,1) = 0.
221 ALLOCATE(pek%XRESP_BIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
222 pek%XRESP_BIOMASS(:,:) = 0.
224 ELSEIF (io%CPHOTO ==
'NIT' .OR. io%CPHOTO ==
'NCB')
THEN 226 ALLOCATE(pek%XBIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
227 pek%XBIOMASS(:,1) = pek%XLAI(:) * p%XBSLAI_NITRO(:)
228 pek%XBIOMASS(:,2) = max( 0., (pek%XBIOMASS(:,1)/ (xcc_nit/10.**xca_nit)) &
229 **(1.0/(1.0-xca_nit)) - pek%XBIOMASS(:,1) )
230 pek%XBIOMASS(:,3:io%NNBIOMASS) = 0.
232 ALLOCATE(pek%XRESP_BIOMASS(
SIZE(pek%XLAI),io%NNBIOMASS))
233 pek%XRESP_BIOMASS(:,:) = 0.
239 IF (
lhook)
CALL dr_hook(
'PREP_TEB_GARDEN',1,zhook_handle)
subroutine prep_hor_teb_garden_field(DTCO, UG, U, USS, GCP, IO, S, K, P, PEK, TG, TOP, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
subroutine prep_teb_garden(DTCO, UG, U, USS, GCP, TG, TOP, IO, S, K, P, PEK, HPROGRAM, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH, YDCTL)
subroutine prep_ver_teb_veg(P, PEK, IO, PZS)