6 SUBROUTINE init_teb_greenroof_pgd_n (DTCO, U, OCH_BIO_FLUX, G, PGREENROOF, TOP, IO, S, K, P, PEK, DTV, GB, &
7 HPROGRAM, HINIT, OPATCH1, KI, KVERSION, PCO2, PRHOA)
59 USE modd_data_cover_par
, ONLY: nvegtype
64 USE modi_read_prep_greenroof_snow
66 USE modi_allocate_teb_veg_pgd
67 USE modi_read_pgd_teb_greenroof_n
68 USE modi_convert_patch_isba
69 USE modi_init_from_data_teb_veg_n
70 USE modi_init_veg_pgd_n
71 USE modi_exp_decay_soil_fr
88 LOGICAL,
INTENT(IN) :: OCH_BIO_FLUX
89 TYPE(
grid_t),
INTENT(INOUT) :: G
90 REAL,
DIMENSION(:),
INTENT(IN) :: PGREENROOF
102 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
103 CHARACTER(LEN=3),
INTENT(IN) :: HINIT
104 LOGICAL,
INTENT(IN) :: OPATCH1
105 INTEGER,
INTENT(IN) :: KI
106 INTEGER,
INTENT(IN) :: KVERSION
107 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
108 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
123 INTEGER :: JVEG, JL, JI
125 REAL,
DIMENSION(KI) :: ZF
126 REAL,
DIMENSION(KI) :: ZWORK
131 REAL,
PARAMETER :: ZWSAT_OM = 0.9
132 REAL,
PARAMETER :: ZCONDSAT_OM = 2.8e-4
133 REAL,
PARAMETER :: ZMPOTSAT_OM = -10.3e-3
134 REAL,
PARAMETER :: ZBCOEF_OM = 2.7
136 REAL,
PARAMETER :: ZCONDDRY_OM = 0.05
137 REAL,
PARAMETER :: ZCONDSLD_OM = 0.25
138 REAL,
PARAMETER :: ZHCAPSOIL_OM = 2.5e+6
140 REAL,
PARAMETER :: ZMPOT_WWILT = -150.
141 REAL,
PARAMETER :: ZHYDCOND_WFC = 1.157e-9
143 REAL,
DIMENSION(0) :: ZTDEEP_CLI, ZGAMMAT_CLI, ZTHRESHOLD
145 REAL(KIND=JPRB) :: ZHOOK_HANDLE
151 IF (
lhook)
CALL dr_hook(
'INIT_TEB_GREENROOF_PGD_n',0,zhook_handle)
163 IF (hinit==
'PRE')
THEN 166 IF (pek%TSNOW%SCHEME.NE.
'3-L' .AND. pek%TSNOW%SCHEME.NE.
'CRO' .AND. io%CISBA==
'DIF')
THEN 167 CALL abor1_sfx(
"INIT_TEB_GREENROOF_n: WITH CISBA_GR = DIF, CSNOW MUST BE 3-L OR CRO")
182 IF (top%TTIME%TDATE%MONTH /=
nundef)
THEN 183 idecade = 3 * ( top%TTIME%TDATE%MONTH - 1 ) + min(top%TTIME%TDATE%DAY-1,29) / 10 + 1
191 io, s, k, g%NDIM, hprogram,kversion)
193 ALLOCATE(s%XVEGTYPE(ki,nvegtype))
195 s%XVEGTYPE = dtv%XPAR_VEGTYPE
199 CALL av_pgd(dtco, s%XVEGTYPE(:,jveg),top%XCOVER ,dtco%XDATA_VEGTYPE(:,jveg),
'GRD',
'ARI',top%LCOVER)
203 WHERE (pgreenroof==0)
204 s%XVEGTYPE(:,jveg) = 0.
209 ALLOCATE(s%XPATCH(ki,1),p%XPATCH(ki))
210 ALLOCATE(s%XVEGTYPE_PATCH(ki,nvegtype,1),p%XVEGTYPE_PATCH(ki,nvegtype))
212 p%XPATCH(:) = s%XPATCH(:,1)
213 s%XVEGTYPE_PATCH(:,:,1) = s%XVEGTYPE
214 p%XVEGTYPE_PATCH(:,:) = s%XVEGTYPE_PATCH(:,:,1)
217 DO ji = 1,
SIZE(p%NR_P)
221 IF (.NOT. io%LPAR)
THEN 223 .false.,
'GRD', 1, k, p, pek, &
224 .true., .false., .false., .false., .false., .false., &
225 psoilgrid=io%XSOILGRID )
230 ALLOCATE(s%XWSN_WR(0,0,1))
231 ALLOCATE(s%XRHO_WR(0,0,1))
232 ALLOCATE(s%XALB_WR(0,1))
233 ALLOCATE(s%XHEA_WR(0,0,1))
234 ALLOCATE(s%XAGE_WR(0,0,1))
235 ALLOCATE(s%XSG1_WR(0,0,1))
236 ALLOCATE(s%XSG2_WR(0,0,1))
237 ALLOCATE(s%XHIS_WR(0,0,1))
244 IF (.NOT. io%LPAR)
THEN 246 .false.,
'GRD', 1, k, p, pek, &
247 .false., .true., .false., .false., .false., .false. )
252 IF (io%CISBA==
'DIF')
CALL init_if_dif(io%NGROUND_LAYER, pgreenroof, p)
258 ALLOCATE(k%XVEGTYPE(ki,nvegtype))
259 k%XVEGTYPE = s%XVEGTYPE
261 ALLOCATE(yss%XAOSIP(0))
263 CALL init_veg_pgd_n(yss, dtv, io, s, k, k, p, pek, yag, ki, &
264 hprogram,
'TOWN ',iluout, ki, top%TTIME%TDATE%MONTH, &
265 .false., .false., ztdeep_cli, zgammat_cli, &
266 .false., zthreshold, hinit, pco2, prhoa )
279 IF (io%CSCOND==
'PL98' .OR. io%CISBA==
'DIF')
THEN 280 DO jl=1,io%NGROUND_LAYER
281 k%XHCAPSOIL(:,jl) = s%XSOC(:,jl) * zhcapsoil_om + (1-s%XSOC(:,jl)) * k%XHCAPSOIL(:,jl)
282 k%XCONDDRY (:,jl) = (zconddry_om * k%XCONDDRY(:,jl)) / &
283 ( s%XSOC(:,jl) * k%XCONDDRY(:,jl) + (1-s%XSOC(:,jl)) * zconddry_om )
284 k%XCONDSLD (:,jl) = (zcondsld_om * k%XCONDSLD(:,jl)) / &
285 ( s%XSOC(:,jl) * k%XCONDSLD(:,jl) + (1-s%XSOC(:,jl)) * zcondsld_om )
294 k%XCONDDRY (:,jl) = 0.15
295 k%XHCAPSOIL(:,jl) = 1342000.
299 k%XCONDDRY (:,jl) = 0.09
300 k%XHCAPSOIL(:,jl) = 331500.
309 DO jl=1,io%NGROUND_LAYER
310 p%XCONDSAT(:,jl) = s%XSOC(:,jl)* zcondsat_om + (1-s%XSOC(:,jl)) * p%XCONDSAT(:,jl)
317 DO jl=1,io%NGROUND_LAYER
318 k%XBCOEF (:,jl) = s%XSOC(:,jl) * zbcoef_om + (1-s%XSOC(:,jl)) * k%XBCOEF(:,jl)
319 k%XMPOTSAT(:,jl) = s%XSOC(:,jl) * zmpotsat_om + (1-s%XSOC(:,jl)) * k%XMPOTSAT(:,jl)
322 DO jl=1,io%NGROUND_LAYER
323 k%XWSAT (:,jl) = s%XSOC(:,jl)* zwsat_om +(1-s%XSOC(:,jl))* k%XWSAT(:,jl)
324 k%XWWILT(:,jl) = exp(((log(-1*zmpot_wwilt)-log(-1*k%XMPOTSAT(:,jl))) &
325 / (-1*k%XBCOEF(:,jl)))+log(k%XWSAT(:,jl)))
326 k%XWFC (:,jl) = exp(((log(zhydcond_wfc)-log(p%XCONDSAT(:,jl))) &
327 / (2*k%XBCOEF(:,jl)+3))+log(k%XWSAT(:,jl)))
335 k%XWSAT (:,jl) = 0.674
336 k%XMPOTSAT(:,jl) = -0.932
337 k%XBCOEF (:,jl) = 3.9
338 k%XWWILT (:,jl) = 0.15
344 k%XMPOTSAT(:,jl) = -0.121
345 k%XBCOEF (:,jl) = 2.7
346 k%XWWILT (:,jl) = 0.15
354 p%XCONDSAT(:,jl) = 2.162e-3
358 p%XCONDSAT(:,jl) = 3.32e-3
366 IF(io%CKSAT==
'SGH' .AND. io%CISBA/=
'DIF' .AND. hinit/=
'PRE')
THEN 373 IF (
lhook)
CALL dr_hook(
'INIT_TEB_GREENROOF_PGD_n',1,zhook_handle)
subroutine init_if_noveg(PMASK, IO, S, P, PEK)
subroutine convert_patch_isba(DTCO, DTV, IO, KDEC, KDEC2, PCOVER,
subroutine allocate_teb_veg_pgd(PEK, S, K, P, OALLOC, KLU, KVEGTYPE, KGROUND_LAYER)
subroutine init_teb_greenroof_pgd_n(DTCO, U, OCH_BIO_FLUX, G, PGREENROOF, TOP, IO, S, K, P, PEK, DTV, GB, HPROGRAM, HINIT, OPATCH1, KI, KVERSION, PCO2, PRHOA)
subroutine sso_init(YSSO)
subroutine init_veg_pgd_n(ISSK, DTI, IO, S, K, KK, PK, PEK, AGK, KI, HPROGRAM, HSURF, KLUOUT, KSIZE, KMONTH, ODEEPSOIL, OPHYSDOMC, PTDEEP_CLI, PGAMMAT_CLI, OAGRIP, PTHRESHOLD, HINIT, PCO2, PRHOA)
subroutine abor1_sfx(YTEXT)
integer, parameter nundef
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine exp_decay_soil_fr(HISBA, PF, PK, PC_DEPTH_RATIO)
subroutine read_prep_greenroof_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFI
subroutine init_from_data_teb_veg_n(DTV, K, P, PEK, KDECADE, OUPD
subroutine init_if_dif(KGROUND_LAYER, PMASK, P)
subroutine read_pgd_teb_greenroof_n(OCH_BIO_FLUX, DTCO, DTV, GB,