6 SUBROUTINE garden (DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GDO, S, K, P, PEK, &
7 HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF, &
8 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, &
9 PTSTEP, PZREF, PTA, PQA, PEXNS, PRHOA, PCO2, PPS, PRR, &
10 PSR, PZENITH, PSW, PLW, PVMOD, PALBNIR_TVEG, &
11 PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, &
12 PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, &
13 PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PIRRIG )
82 USE modi_vegetation_update
85 USE modi_flag_teb_veg_n
87 USE modi_vegetation_evol
100 TYPE(
grid_t),
INTENT(INOUT) :: G
101 TYPE(
teb_t),
INTENT(INOUT) :: T
107 TYPE(
diag_t),
INTENT(INOUT) :: DK
119 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
123 REAL,
DIMENSION(:) ,
INTENT(IN) :: PTSUN
124 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPEW_A_COEF
125 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPEW_B_COEF
126 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPEQ_A_COEF
127 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPEQ_B_COEF
128 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPET_A_COEF
129 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPET_B_COEF
130 REAL ,
INTENT(IN) :: PTSTEP
131 REAL,
DIMENSION(:) ,
INTENT(IN) :: PZREF
132 REAL,
DIMENSION(:) ,
INTENT(IN) :: PTA
133 REAL,
DIMENSION(:) ,
INTENT(IN) :: PQA
134 REAL,
DIMENSION(:) ,
INTENT(IN) :: PPS
135 REAL,
DIMENSION(:) ,
INTENT(IN) :: PEXNS
136 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRHOA
137 REAL,
DIMENSION(:) ,
INTENT(IN) :: PCO2
138 REAL,
DIMENSION(:) ,
INTENT(IN) :: PRR
139 REAL,
DIMENSION(:) ,
INTENT(IN) :: PSR
140 REAL,
DIMENSION(:) ,
INTENT(IN) :: PZENITH
141 REAL,
DIMENSION(:) ,
INTENT(IN) :: PSW
142 REAL,
DIMENSION(:) ,
INTENT(IN) :: PLW
143 REAL,
DIMENSION(:) ,
INTENT(IN) :: PVMOD
144 REAL,
DIMENSION(:) ,
INTENT(IN) :: PALBNIR_TVEG
145 REAL,
DIMENSION(:) ,
INTENT(IN) :: PALBVIS_TVEG
146 REAL,
DIMENSION(:) ,
INTENT(IN) :: PALBNIR_TSOIL
147 REAL,
DIMENSION(:) ,
INTENT(IN) :: PALBVIS_TSOIL
149 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PRN
150 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PH
151 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PLE
152 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PGFLUX
153 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PSFCO2
154 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PEVAP
155 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PUW
156 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PRUNOFF
157 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PAC
158 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PQSAT
159 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PTSRAD
160 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PAC_AGG
161 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PHU_AGG
162 REAL,
DIMENSION(:) ,
INTENT(OUT) :: PIRRIG
170 REAL,
DIMENSION(SIZE(PPS)) :: ZDIRCOSZW
171 REAL,
DIMENSION(SIZE(PPS),GDO%NNBIOMASS) :: ZRESP_BIOMASS_INST
172 REAL,
DIMENSION(SIZE(PPS)) :: ZUSTAR
176 REAL,
DIMENSION(SIZE(PPS)) :: ZTA
178 REAL,
DIMENSION(SIZE(PPS)) :: ZDEEP_FLUX
182 REAL,
DIMENSION(SIZE(PPS)) :: ZEMISF
185 REAL,
DIMENSION(SIZE(PPS)) :: ZTDEEP_A
188 REAL,
DIMENSION(SIZE(PPS)) :: ZP_MEB_SCA_SW, ZPALPHAN, ZZ0G_WITHOUT_SNOW, &
189 ZZ0_MEBV, ZZ0H_MEBV, ZZ0EFF_MEBV, ZZ0_MEBN, &
190 ZZ0H_MEBN, ZZ0EFF_MEBN
192 LOGICAL :: GMASK, GALB
195 REAL(KIND=JPRB) :: ZHOOK_HANDLE
218 CALL teb_irrig(tir%LPAR_GD_IRRIG, ptstep, tptime%TDATE%MONTH, ptsun, &
219 tir%XGD_START_MONTH, tir%XGD_END_MONTH, tir%XGD_START_HOUR, &
220 tir%XGD_END_HOUR, tir%XGD_24H_IRRIG, pirrig )
230 IF (gdo%CPHOTO==
'NIT'.OR.gdo%CPHOTO==
'NCB') galb = .true.
233 ptstep, s%TTIME, top%XCOVER, top%LCOVER, .false., &
234 'GRD', galb, yss, gupdated, oabsent=(t%XGARDEN==0.) )
237 dk%XZ0 (:) = pek%XZ0(:)
238 dk%XZ0H(:) = pek%XZ0(:) / p%XZ0_O_Z0H(:)
240 dk%XZ0EFF(:) = pek%XZ0(:)
245 ALLOCATE(gb%XIACAN(
SIZE(pps),
SIZE(s%XABC)))
247 CALL isba(gdo, k, p, pek, g, yag, dk, dek, dmk, &
248 tptime, s%XPOI, s%XABC, gb%XIACAN, .false., ptstep, &
249 himplicit_wind, pzref, pzref, zdircoszw, pta, pqa, pexns, prhoa, pps, &
250 pexns, prr, psr, pzenith, zp_meb_sca_sw, psw, plw, pvmod, ppew_a_coef, &
251 ppew_b_coef, ppet_a_coef, ppeq_a_coef, ppet_b_coef, ppeq_b_coef, &
252 palbnir_tveg, palbvis_tveg, palbnir_tsoil, palbvis_tsoil, zpalphan, &
253 zz0g_without_snow, zz0_mebv, zz0h_mebv, zz0eff_mebv, zz0_mebn, &
254 zz0h_mebn, zz0eff_mebn, ztdeep_a, pco2, k%XFFG(:), k%XFFV(:), &
255 zemisf, zustar, pac_agg, phu_agg, zresp_biomass_inst, zdeep_flux, pirrig )
257 IF (pek%TSNOW%SCHEME==
'3-L' .OR. pek%TSNOW%SCHEME==
'CRO') pek%TSNOW%TS(:)= dmk%XSNOWTEMP(:,1)
260 gmask = ( tptime%TIME - ptstep < 0. ) .AND. ( tptime%TIME >= 0. )
262 ALLOCATE(dmk%XDFAPARC(ilu),dmk%XDFAPIRC(ilu),dmk%XDLAI_EFFC(ilu))
263 dmk%XDFAPARC (:) = pek%XFAPARC (:) / pek%XMUS (:)
264 dmk%XDFAPIRC (:) = pek%XFAPIRC (:) / pek%XMUS (:)
265 dmk%XDLAI_EFFC(:) = pek%XLAI_EFFC (:) / pek%XMUS (:)
273 IF (gdo%CPHOTO==
'NIT')
THEN 274 CALL vegetation_evol(gdo, dtv, p, pek, .false., ptstep, tptime%TDATE%MONTH, tptime%TDATE%DAY, &
275 tptime%TIME, g%XLAT, prhoa, pco2, yss, zresp_biomass_inst )
283 dek%XRESP_ECO (:) = 0.
284 dek%XRESP_AUTO(:) = 0.
286 IF (gdo%CPHOTO/=
'NON' .AND. gdo%CRESPSL/=
'NON' .AND. any(pek%XLAI(:)/=
xundef))
THEN 287 CALL carbon_evol(gdo, k, p, pek, dek, ptstep, prhoa, zresp_biomass_inst )
289 psfco2(:) = - dek%XGPP(:) + dek%XRESP_ECO(:)
307 WHERE (t%XGARDEN/=0.)
311 dk%XLE(:) = pek%XLE(:)
315 zta = ppet_b_coef + ppet_a_coef * dk%XH
317 WHERE (dk%XTSRAD /= zta)
318 pac(:) = max(dk%XH(:) /
xcpd / prhoa(:) / (dk%XTSRAD - zta) , 0.)
322 pqsat(:) =
qsat(pek%XTG(:,1),pps(:))
325 puw(:) = -zustar(:)**2
343 ptsrad(:) = dk%XTSRAD(:)
348 pgflux(:) = dk%XGFLUX (:)
349 pevap(:) = dk%XEVAP (:)
350 prunoff(:) =dek%XRUNOFF(:)
subroutine sso_init(YSSO)
subroutine vegetation_evol(IO, DTI, PK, PEK, OAGRIP, PTSTEP, KMONTH, KDAY, PTIME, PLAT, PRHOA, P_CO2, ISSK, PRESP_BIOMASS_INST, PSWDIR)
subroutine flag_teb_veg_n(PEK, IO, PMASK, KFLAG)
subroutine garden(DTCO, G, T, TOP, TIR, DTV, GB, DK, DEK, DMK, GDO, S, K, P, PEK, HIMPLICIT_WIND, TPTIME, PTSUN, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PTSTEP, PZREF, PTA, PQA, PEXNS, PRHOA, PCO2, PPS, PRR, PSR, PZENITH, PSW, PLW, PVMOD, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PRN, PH, PLE, PGFLUX, PSFCO2, PEVAP, PUW, PRUNOFF, PAC, PQSAT, PTSRAD, PAC_AGG, PHU_AGG, PIRRIG)
subroutine vegetation_update(DTCO, DTV, KDIM, IO, KK, PK, PEK, KPATCH, PTSTEP, TTIME, PCOVER, OCOVER, OAGRIP, HSFTYPE, OALB, ISSK, ODUPDATED, OABSENT)
subroutine isba(IO, KK, PK, PEK, G, AG, DK, DEK, DMK, TPTIME, PPOI
subroutine teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, PSTART_MONTH, PEND_MONTH, PSTART_HOUR, PEND_HOUR, P24H_IRRIG, PIRRIG)
subroutine carbon_evol(IO, KK, PK, PEK, DEK, PTSTEP, PRHOA, PRESP_BIOMASS_INST)