6 SUBROUTINE init_teb_greenroof_pgd_n (DTCO, U, CHI, DTI, I, DST, SLT, CHT, TG, T, TOP, TVG, GRM, &
7 hprogram,hinit,oread_pgd, ki, ksv, hsv, kversion, pco2, prhoa)
68 USE modi_allocate_teb_greenroof_pgd
69 USE modi_read_pgd_teb_greenroof_n
70 USE modi_convert_patch_teb_greenroof
71 USE modi_init_from_data_greenroof_n
72 USE modi_init_veg_pgd_garden_n
73 USE modi_exp_decay_soil_fr
76 USE yomhook
,ONLY : lhook, dr_hook
77 USE parkind1
,ONLY : jprb
89 TYPE(isba_t
),
INTENT(INOUT) :: i
90 TYPE(dst_t),
INTENT(INOUT) :: dst
91 TYPE(slt_t),
INTENT(INOUT) :: slt
94 TYPE(teb_t),
INTENT(INOUT) :: t
99 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
100 CHARACTER(LEN=3),
INTENT(IN) :: hinit
101 LOGICAL,
INTENT(IN) :: oread_pgd
102 INTEGER,
INTENT(IN) :: ki
103 INTEGER,
INTENT(IN) :: ksv
104 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN) :: hsv
105 INTEGER,
INTENT(IN) :: kversion
106 REAL,
DIMENSION(KI),
INTENT(IN) :: pco2
107 REAL,
DIMENSION(KI),
INTENT(IN) :: prhoa
119 INTEGER :: jvegtype, jlayer
121 REAL,
DIMENSION(KI) :: zf
122 REAL,
DIMENSION(KI) :: zwork
127 REAL,
PARAMETER :: zwsat_om = 0.9
128 REAL,
PARAMETER :: zcondsat_om = 2.8e-4
129 REAL,
PARAMETER :: zmpotsat_om = -10.3e-3
130 REAL,
PARAMETER :: zbcoef_om = 2.7
132 REAL,
PARAMETER :: zconddry_om = 0.05
133 REAL,
PARAMETER :: zcondsld_om = 0.25
134 REAL,
PARAMETER :: zhcapsoil_om = 2.5e+6
136 REAL,
PARAMETER :: zmpot_wwilt = -150.
137 REAL,
PARAMETER :: zhydcond_wfc = 1.157e-9
140 REAL(KIND=JPRB) :: zhook_handle
146 IF (lhook) CALL dr_hook(
'INIT_TEB_GREENROOF_PGD_n',0,zhook_handle)
166 oread_pgd, ki, nvegtype, grm%TGRO%NLAYER_GR, ndimtab)
171 IF (top%TTIME%TDATE%MONTH /= nundef)
THEN
172 idecade = 3 * ( top%TTIME%TDATE%MONTH - 1 ) + min(top%TTIME%TDATE%DAY-1,29) / 10 + 1
178 IF (.NOT. grm%TGRO%LPAR_GREENROOF)
THEN
183 grm%TGRP%XOM_GR, grm%TGRP%XSAND_GR, grm%TGRP%XCLAY_GR, &
184 grm%TGRPE%CUR%XVEG, grm%TGRPE%CUR%XLAI,grm%TGRP%XRSMIN, &
185 grm%TGRP%XGAMMA,grm%TGRP%XWRMAX_CF,grm%TGRP%XRGL,grm%TGRP%XCV,&
186 grm%TGRP%XDG,grm%TGRP%XD_ICE,grm%TGRPE%CUR%XZ0,grm%TGRP%XZ0_O_Z0H, &
187 grm%TGRP%XALBNIR_VEG,grm%TGRP%XALBVIS_VEG,grm%TGRP%XALBUV_VEG,&
188 grm%TGRPE%CUR%XEMIS,grm%TGRP%XVEGTYPE,grm%TGRP%XROOTFRAC, &
189 grm%TGRP%XGMES,grm%TGRP%XBSLAI,grm%TGRP%XLAIMIN,grm%TGRP%XSEFOLD,grm%TGRP%XGC, &
190 grm%TGRP%XDMAX, grm%TGRP%XF2I, grm%TGRP%LSTRESS, grm%TGRP%XH_TREE,grm%TGRP%XRE25,&
191 grm%TGRP%XCE_NITRO,grm%TGRP%XCF_NITRO,grm%TGRP%XCNA_NITRO )
192 IF (grm%TGRO%CISBA_GR==
'DIF')
THEN
193 WHERE(t%CUR%XGREENROOF(:)/=0.)
194 grm%TGRP%NWG_LAYER(:)=grm%TGRO%NLAYER_GR
195 grm%TGRP%XDG2 (:)=0.0
196 grm%TGRP%XDROOT(:)=0.0
198 DO jlayer=grm%TGRO%NLAYER_GR,1,-1
200 IF(t%CUR%XGREENROOF(jilu)/=0..AND.grm%TGRP%XROOTFRAC(jilu,jlayer)>=1.0)
THEN
201 grm%TGRP%XDG2 (jilu)=grm%TGRP%XDG(jilu,jlayer)
202 grm%TGRP%XDROOT(jilu)=grm%TGRP%XDG(jilu,jlayer)
209 WHERE (t%CUR%XGREENROOF(:)==0.)
211 grm%TGRP%XOM_GR (:,1) = 0.5
212 grm%TGRP%XOM_GR (:,2) = 0.5
213 grm%TGRP%XSAND_GR (:,1) = 0.33
214 grm%TGRP%XSAND_GR (:,2) = 0.33
215 grm%TGRP%XCLAY_GR (:,1) = 0.33
216 grm%TGRP%XCLAY_GR (:,2) = 0.33
217 grm%TGRPE%CUR%XVEG (: ) = 0.
218 grm%TGRPE%CUR%XLAI (: ) = 0.
219 grm%TGRP%XRSMIN (: ) = 40.
220 grm%TGRP%XGAMMA (: ) = 0.
221 grm%TGRP%XWRMAX_CF (: ) = 0.2
222 grm%TGRP%XRGL (: ) = 100.
223 grm%TGRP%XCV (: ) = 2.e-5
224 grm%TGRPE%CUR%XZ0 (: ) = 0.013
225 grm%TGRP%XZ0_O_Z0H (: ) = 10.
226 grm%TGRP%XALBNIR_VEG(: ) = 0.30
227 grm%TGRP%XALBVIS_VEG(: ) = 0.30
228 grm%TGRP%XALBUV_VEG (: ) = 0.06
229 grm%TGRPE%CUR%XEMIS (: ) = 0.94
231 IF (tvg%CPHOTO/=
'NON')
THEN
232 WHERE (t%CUR%XGREENROOF(:)==0.)
233 grm%TGRP%XGMES (: ) = 0.020
234 grm%TGRP%XBSLAI (: ) = 0.36
235 grm%TGRP%XLAIMIN (: ) = 0.3
236 grm%TGRP%XSEFOLD (: ) = 90*86400.
237 grm%TGRP%XH_TREE (: ) = 0.
238 grm%TGRP%XRE25 (: ) = 3.6e-7
239 grm%TGRP%XGC (: ) = 0.00025
241 IF (tvg%CPHOTO/=
'AGS' .AND. tvg%CPHOTO/=
'LAI')
THEN
242 WHERE (t%CUR%XGREENROOF(:)==0.)
243 grm%TGRP%XDMAX (: ) = 0.1
244 grm%TGRP%XF2I (: ) = 0.3
246 IF (tvg%CPHOTO==
'NIT' .OR. tvg%CPHOTO==
'NCB')
THEN
247 WHERE (t%CUR%XGREENROOF(:)==0.)
248 grm%TGRP%XCE_NITRO (: ) = 7.68
249 grm%TGRP%XCF_NITRO (: ) = -4.33
250 grm%TGRP%XCNA_NITRO (: ) = 1.3
255 IF(grm%TGRO%CISBA_GR/=
'DIF')
THEN
256 DO jlayer=1,grm%TGRO%NLAYER_GR
257 WHERE (t%CUR%XGREENROOF(:)==0.)
258 grm%TGRP%XDG(:,jlayer)=0.2*jlayer
262 WHERE (t%CUR%XGREENROOF(:)==0.)
263 grm%TGRP%XDG(:,1)=0.01
264 grm%TGRP%XDG(:,2)=0.04
265 grm%TGRP%XROOTFRAC(:,1)=0.
266 grm%TGRP%XROOTFRAC(:,2)=0.
268 DO jlayer=3,grm%TGRO%NLAYER_GR
269 WHERE (t%CUR%XGREENROOF(:)==0.)
270 grm%TGRP%XDG(:,jlayer)=0.1*(jlayer-2)
271 grm%TGRP%XROOTFRAC(:,jlayer)=0.
274 WHERE (t%CUR%XGREENROOF(:)==0.)
275 grm%TGRP%NWG_LAYER(:)=grm%TGRO%NLAYER_GR
276 grm%TGRP%XDROOT (:)=0.0
277 grm%TGRP%XDG2 (:)=grm%TGRP%XDG(:,grm%TGRO%NLAYER_GR-1)
280 WHERE (t%CUR%XGREENROOF(:)==0.)
281 grm%TGRP%XD_ICE(:)=0.8*grm%TGRP%XDG(:,2)
283 DO jvegtype=1,nvegtype
284 WHERE (t%CUR%XGREENROOF(:)==0.)
285 grm%TGRP%XVEGTYPE(:,jvegtype)=0.
286 grm%TGRP%XVEGTYPE(:,1)=1.
291 hprogram, iluout, ki, grm%TGRO%NLAYER_GR, top%TTIME%TDATE%MONTH, &
292 grm%TGRP%XVEGTYPE, grm%TGRP%XTDEEP, grm%TGRP%XGAMMAT, tvg%CPHOTO, hinit, &
293 grm%TGRO%LTR_ML_GR, grm%TGRO%CRUNOFF_GR, tvg%NNBIOMASS, pco2, prhoa, &
294 grm%TGRP%XABC, grm%TGRP%XPOI, grm%TGRP%XGMES, grm%TGRP%XGC, grm%TGRP%XDMAX, &
295 grm%TGRP%XANMAX, grm%TGRP%XFZERO, grm%TGRP%XEPSO, grm%TGRP%XGAMM, grm%TGRP%XQDGAMM, &
296 grm%TGRP%XQDGMES, grm%TGRP%XT1GMES, grm%TGRP%XT2GMES, grm%TGRP%XAMAX, grm%TGRP%XQDAMAX, &
297 grm%TGRP%XT1AMAX, grm%TGRP%XT2AMAX,grm%TGRP%XAH, grm%TGRP%XBH, &
298 ksv, hsv, cht%SVT, cht%CCH_NAMES, cht%CAER_NAMES,cht%CDSTNAMES, cht%CSLTNAMES, &
299 cht%CCHEM_SURF_FILE, grm%TGRP%XCLAY_GR, grm%TGRP%XSAND_GR, tvg%CPEDOTF, &
300 grm%TGRP%XCONDSAT, grm%TGRP%XMPOTSAT, grm%TGRP%XBCOEF, grm%TGRP%XWWILT, &
301 grm%TGRP%XWFC, grm%TGRP%XWSAT, grm%TGRP%XTAUICE, grm%TGRP%XCGSAT, grm%TGRP%XC1SAT, &
302 grm%TGRP%XC2REF, grm%TGRP%XC3, grm%TGRP%XC4B, grm%TGRP%XACOEF, grm%TGRP%XPCOEF, &
303 grm%TGRP%XC4REF, grm%TGRP%XPCPS, grm%TGRP%XPLVTT, grm%TGRP%XPLSTT, &
304 grm%TGRO%CSCOND_GR, grm%TGRO%CISBA_GR, grm%TGRP%XHCAPSOIL, grm%TGRP%XCONDDRY, &
305 grm%TGRP%XCONDSLD, tvg%CCPSURF, grm%TGRP%XDG, grm%TGRP%XDROOT, grm%TGRP%XDG2, &
306 grm%TGRP%XROOTFRAC, grm%TGRP%XRUNOFFD, grm%TGRP%XDZG, grm%TGRP%XDZDIF, &
307 grm%TGRP%XSOILWGHT, grm%TGRP%NWG_LAYER, grm%TGRO%NLAYER_HORT_GR, &
308 grm%TGRO%NLAYER_DUN_GR, grm%TGRP%XD_ICE, &
309 grm%TGRP%XKSAT_ICE, grm%TGRP%XALBNIR_DRY, grm%TGRP%XALBVIS_DRY, grm%TGRP%XALBUV_DRY, &
310 grm%TGRP%XALBNIR_WET, grm%TGRP%XALBVIS_WET, grm%TGRP%XALBUV_WET, grm%TGRP%XBSLAI_NITRO, &
311 grm%TGRP%XCE_NITRO, grm%TGRP%XCNA_NITRO, grm%TGRP%XCF_NITRO )
322 IF (grm%TGRO%CSCOND_GR==
'PL98' .OR. grm%TGRO%CISBA_GR==
'DIF')
THEN
323 DO jlayer=1,grm%TGRO%NLAYER_GR
324 grm%TGRP%XHCAPSOIL(:,jlayer) = grm%TGRP%XOM_GR(:,jlayer) * zhcapsoil_om + &
325 (1-grm%TGRP%XOM_GR(:,jlayer)) * grm%TGRP%XHCAPSOIL(:,jlayer)
326 grm%TGRP%XCONDDRY(:,jlayer) = (zconddry_om * grm%TGRP%XCONDDRY(:,jlayer)) &
327 /( grm%TGRP%XOM_GR(:,jlayer) * grm%TGRP%XCONDDRY(:,jlayer) + &
328 (1-grm%TGRP%XOM_GR(:,jlayer)) * zconddry_om)
329 grm%TGRP%XCONDSLD(:,jlayer) = (zcondsld_om * grm%TGRP%XCONDSLD(:,jlayer)) &
330 /( grm%TGRP%XOM_GR(:,jlayer) * grm%TGRP%XCONDSLD(:,jlayer) + &
331 (1-grm%TGRP%XOM_GR(:,jlayer)) * zcondsld_om)
340 grm%TGRP%XCONDDRY (:,jlayer) = 0.15
341 grm%TGRP%XHCAPSOIL(:,jlayer) = 1342000.
345 grm%TGRP%XCONDDRY (:,jlayer) = 0.09
346 grm%TGRP%XHCAPSOIL(:,jlayer) = 331500.
353 DO jlayer=1,grm%TGRO%NLAYER_GR
354 grm%TGRP%XCONDSAT(:,jlayer) = grm%TGRP%XOM_GR(:,jlayer)* zcondsat_om &
355 +(1-grm%TGRP%XOM_GR(:,jlayer))* grm%TGRP%XCONDSAT(:,jlayer)
359 DO jlayer=1,grm%TGRO%NLAYER_GR
360 grm%TGRP%XBCOEF (:,jlayer) = grm%TGRP%XOM_GR(:,jlayer) * zbcoef_om &
361 +(1-grm%TGRP%XOM_GR(:,jlayer))* grm%TGRP%XBCOEF(:,jlayer)
362 grm%TGRP%XMPOTSAT(:,jlayer) = grm%TGRP%XOM_GR(:,jlayer) * zmpotsat_om &
363 +(1-grm%TGRP%XOM_GR(:,jlayer))* grm%TGRP%XMPOTSAT(:,jlayer)
366 DO jlayer=1,grm%TGRO%NLAYER_GR
367 grm%TGRP%XWSAT (:,jlayer) = grm%TGRP%XOM_GR(:,jlayer)* zwsat_om &
368 +(1-grm%TGRP%XOM_GR(:,jlayer))* grm%TGRP%XWSAT(:,jlayer)
369 grm%TGRP%XWWILT(:,jlayer) = exp(((log(-1*zmpot_wwilt)-log(-1*grm%TGRP%XMPOTSAT(:,jlayer))) &
370 / (-1*grm%TGRP%XBCOEF(:,jlayer)))+log(grm%TGRP%XWSAT(:,jlayer)))
371 grm%TGRP%XWFC (:,jlayer) = exp(((log(zhydcond_wfc)-log(grm%TGRP%XCONDSAT(:,jlayer))) &
372 / (2*grm%TGRP%XBCOEF(:,jlayer)+3))+log(grm%TGRP%XWSAT(:,jlayer)))
380 grm%TGRP%XWSAT (:,jlayer) = 0.674
381 grm%TGRP%XCONDSAT(:,jlayer) = 2.162e-3
382 grm%TGRP%XMPOTSAT(:,jlayer) = -0.932
383 grm%TGRP%XBCOEF (:,jlayer) = 3.9
384 grm%TGRP%XWWILT (:,jlayer) = 0.15
385 grm%TGRP%XWFC (:,jlayer) = 0.37
389 grm%TGRP%XWSAT (:,jlayer) = 0.9
390 grm%TGRP%XCONDSAT(:,jlayer) = 3.32e-3
391 grm%TGRP%XMPOTSAT(:,jlayer) = -0.121
392 grm%TGRP%XBCOEF (:,jlayer) = 2.7
393 grm%TGRP%XWWILT (:,jlayer) = 0.15
394 grm%TGRP%XWFC (:,jlayer) = 0.37
401 IF(grm%TGRO%CKSAT_GR==
'SGH' .AND. grm%TGRO%CISBA_GR/=
'DIF' .AND. hinit/=
'PRE')
THEN
402 zf(:)=min(4.0/grm%TGRP%XDG(:,2),xf_decay)
403 CALL
exp_decay_soil_fr(grm%TGRO%CISBA_GR, zf(:),grm%TGRP%XC1SAT(:),grm%TGRP%XC2REF(:),&
404 grm%TGRP%XDG(:,:),grm%TGRP%XD_ICE(:),grm%TGRP%XC4REF(:),&
405 grm%TGRP%XC3(:,:),grm%TGRP%XCONDSAT(:,:),grm%TGRP%XKSAT_ICE(:))
410 IF (lhook) CALL dr_hook(
'INIT_TEB_GREENROOF_PGD_n',1,zhook_handle)
subroutine allocate_teb_greenroof_pgd(TGRPE, TGRP, OALLOC, KLU, KVEGTYPE, KLAYER_GR, KDIMTAB)
subroutine convert_patch_teb_greenroof(DTCO, DTI, I, TGRO, TGRPE, TGRP, TOP, TVG, KLU, KDECADE)
subroutine init_veg_pgd_garden_n(CHI, DTCO, DST, I, SLT, U, HPROGRAM, KLUOUT, KI, KGROUND_LAYER, KMONTH, PVEGTYPE, PTDEEP, PGAMMAT, HPHOTO, HINIT, OTR_ML, HRUNOFF, KNBIOMASS, PCO2, PRHOA, PABC, PPOI, PGMES, PGC, PDMAX, PANMAX, PFZERO, PEPSO, PGAMM, PQDGAMM, PQDGMES, PT1GMES, PT2GMES, PAMAX, PQDAMAX, PT1AMAX, PT2AMAX, PAH, PBH, KSV, HSV, YSV, HCH_NAMES, HAER_NAMES, HDSTNAMES, HSLTNAMES, HCHEM_SURF_FILE, PCLAY, PSAND, HPEDOTF, PCONDSAT, PMPOTSAT, PBCOEF, PWWILT, PWFC, PWSAT, PTAUICE, PCGSAT, PC1SAT, PC2REF, PC3, PC4B, PACOEF, PPCOEF, PC4REF, PPCPS, PPLVTT, PPLSTT, HSCOND, HISBA, PHCAPSOIL, PCONDDRY, PCONDSLD, HCPSURF, PDG, PDROOT, PDG2, PROOTFRAC, PRUNOFFD, PDZG, PDZDIF, PSOILWGHT, KWG_LAYER, KLAYER_HORT, KLAYER_DUN, PD_ICE, PKSAT_ICE, PALBNIR_DRY, PALBVIS_DRY, PALBUV_DRY, PALBNIR_WET, PALBVIS_WET, PALBUV_WET, PBSLAI_NITRO, PCE_NITRO, PCNA_NITRO, PCF_NITRO)
subroutine init_from_data_greenroof_n(DTGR, TGRO, KDECADE, HPHOTO, POM_GR, PSAND_GR, PCLAY_GR, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PDG, PD_ICE, PZ0, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PEMIS, PVEGTYPE, PROOTFRAC, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PH_TREE, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_pgd_teb_greenroof_n(CHT, DTCO, DTGR, GBGR, U, TGRO, TGRP, TG, HPROGRAM, KVERSION)
subroutine init_teb_greenroof_pgd_n(DTCO, U, CHI, DTI, I, DST, SLT, CHT, TG, T, TOP, TVG, GRM, HPROGRAM, HINIT, OREAD_PGD, KI, KSV, HSV, KVERSION, PCO2, PRHOA)
subroutine exp_decay_soil_fr(HISBA, PF, PC1SAT, PC2REF, PD_G, PD_ICE, PC4REF, PC3, PCONDSAT, PKSAT_ICE)