6 SUBROUTINE pgd_teb_veg (DTCO, UG, U, USS, GDO, GDK, DTGD, GDIR, &
7 GRO, GRS, GRK, DTGR, TOP, KDIM, HPROGRAM)
64 USE modd_data_cover_par
, ONLY : nvegtype
67 USE modd_isba_par
, ONLY : noptimlayer, xoptimgrid
70 USE modi_read_nam_pgd_isba
74 USE modi_pgd_teb_greenroof
75 USE modi_pgd_teb_garden_par
76 USE modi_pgd_teb_irrig
92 TYPE(
sso_t),
INTENT(INOUT) :: USS
103 INTEGER,
INTENT(IN) :: KDIM
105 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
119 INTEGER :: IGROUND_LAYER
120 CHARACTER(LEN=3) :: YISBA
121 CHARACTER(LEN=4) :: YPEDOTF
122 CHARACTER(LEN=3) :: YPHOTO
124 CHARACTER(LEN=4) :: YALBEDO
126 CHARACTER(LEN=28) :: YSAND
127 CHARACTER(LEN=28) :: YCLAY
128 CHARACTER(LEN=28) :: YCTI
129 CHARACTER(LEN=28) :: YRUNOFFB
130 CHARACTER(LEN=28) :: YWDRAIN
131 CHARACTER(LEN=6) :: YSANDFILETYPE
132 CHARACTER(LEN=6) :: YCLAYFILETYPE
133 CHARACTER(LEN=6) :: YCTIFILETYPE
134 CHARACTER(LEN=6) :: YRUNOFFBFILETYPE
135 CHARACTER(LEN=6) :: YWDRAINFILETYPE
138 REAL :: XUNIF_RUNOFFB
143 REAL,
DIMENSION(150) :: ZSOILGRID
147 CHARACTER(LEN=28) :: YSOC_TOP
148 CHARACTER(LEN=28) :: YSOC_SUB
149 CHARACTER(LEN=28) :: YPERM
150 CHARACTER(LEN=6) :: YSOCFILETYPE
151 CHARACTER(LEN=6) :: YPERMFILETYPE
152 REAL :: XUNIF_SOC_TOP
153 REAL :: XUNIF_SOC_SUB
158 CHARACTER(LEN=28) :: YPH
159 CHARACTER(LEN=28) :: YFERT
160 CHARACTER(LEN=6) :: YPHFILETYPE
161 CHARACTER(LEN=6) :: YFERTFILETYPE
165 REAL(KIND=JPRB) :: ZHOOK_HANDLE
190 gdo%NGROUND_LAYER = iground_layer
192 gdo%CPEDOTF = ypedotf
195 gdo%CALBEDO = yalbedo
206 IF (gdo%CPHOTO==
'NCB')
THEN 208 WRITE(iluout,*)
'****************************************************************' 209 WRITE(iluout,*)
'* FOR GARDENS, AGS OPTION HAS BEEN CHANGED FROM "NCB" TO "NIT" *' 210 WRITE(iluout,*)
'****************************************************************' 213 SELECT CASE (gdo%CISBA)
215 gdo%NGROUND_LAYER = 2
217 WRITE(iluout,*)
'*****************************************' 218 WRITE(iluout,*)
'* With option CISBA = ',gdo%CISBA,
' *' 219 WRITE(iluout,*)
'* the number of soil layers is set to 2 *' 220 WRITE(iluout,*)
'* theta(psi) function = Brook and Corey *' 221 WRITE(iluout,*)
'* Pedo transfert function = CH78 *' 222 WRITE(iluout,*)
'*****************************************' 224 gdo%NGROUND_LAYER = 3
226 WRITE(iluout,*)
'*****************************************' 227 WRITE(iluout,*)
'* With option CISBA = ',gdo%CISBA,
' *' 228 WRITE(iluout,*)
'* the number of soil layers is set to 3 *' 229 WRITE(iluout,*)
'* theta(psi) function = Brook and Corey *' 230 WRITE(iluout,*)
'* Pedo transfert function = CH78 *' 231 WRITE(iluout,*)
'*****************************************' 233 IF(gdo%NGROUND_LAYER==
nundef)
THEN 234 IF(top%LECOCLIMAP)
THEN 235 gdo%NGROUND_LAYER=noptimlayer
237 WRITE(iluout,*)
'****************************************' 238 WRITE(iluout,*)
'* Number of ground layer not specified *' 239 WRITE(iluout,*)
'****************************************' 240 CALL abor1_sfx(
'PGD_TEB_GARDEN: NGROUND_LAYER MUST BE DONE IN NAM_ISBA' 244 ALLOCATE(gdo%XSOILGRID(gdo%NGROUND_LAYER))
246 gdo%XSOILGRID(:)=zsoilgrid(1:gdo%NGROUND_LAYER)
247 IF(all(zsoilgrid(:)==
xundef))
THEN 249 gdo%XSOILGRID(1:gdo%NGROUND_LAYER)=xoptimgrid(1:gdo%NGROUND_LAYER
250 ELSEIF(
count(gdo%XSOILGRID/=
xundef)/=gdo%NGROUND_LAYER)
THEN 251 WRITE(iluout,*)
'********************************************************' 252 WRITE(iluout,*)
'* Soil grid reference values /= number of ground layer *' 253 WRITE(iluout,*)
'********************************************************' 254 CALL abor1_sfx(
'PGD_TEB_GARDEN: XSOILGRID must be coherent with NGROUND_LAYER in NAM_ISBA' 257 WRITE(iluout,*)
'*****************************************' 258 WRITE(iluout,*)
'* Option CISBA = ',gdo%CISBA
259 WRITE(iluout,*)
'* Pedo transfert function = ',gdo%CPEDOTF
260 WRITE(iluout,*)
'* Number of soil layers = ',gdo%NGROUND_LAYER
261 IF(top%LECOCLIMAP)
THEN 262 WRITE(iluout,*)
'* Soil layers grid (m) = ',gdo%XSOILGRID(1:gdo%NGROUND_LAYER
264 WRITE(iluout,*)
'*****************************************' 268 SELECT CASE (gdo%CPHOTO)
274 WRITE(iluout,*)
'*****************************************' 275 WRITE(iluout,*)
'* With option CPHOTO = ',gdo%CPHOTO,
' *' 276 WRITE(iluout,*)
'* the number of biomass pools is set to ', gdo%NNBIOMASS
277 WRITE(iluout,*)
'*****************************************' 284 ALLOCATE(gdk%XSAND(kdim,gdo%NGROUND_LAYER))
288 CALL abor1_sfx(
'PGD_TEB_VEG: LIMP_SAND IS NOT CONSISTENT WITH TEB_GARDEN' 293 hprogram,
'sand fraction',
'TWN',ysand,ysandfiletype,xunif_sand
296 DO jlayer=1,gdo%NGROUND_LAYER
297 gdk%XSAND(:,jlayer) = gdk%XSAND(:,1)
304 ALLOCATE(gdk%XCLAY(kdim,gdo%NGROUND_LAYER))
308 CALL abor1_sfx(
'PGD_TEB_VEG: LIMP_SAND IS NOT CONSISTENT WITH TEB_GARDEN' 312 hprogram,
'clay fraction',
'TWN',yclay,yclayfiletype,xunif_clay
315 DO jlayer=1,gdo%NGROUND_LAYER
316 gdk%XCLAY(:,jlayer) = gdk%XCLAY(:,1)
323 ALLOCATE(gdk%XRUNOFFB(kdim))
325 hprogram,
'subgrid runoff',
'TWN',yrunoffb,yrunoffbfiletype
332 ALLOCATE(gdk%XWDRAIN(kdim))
334 hprogram,
'subgrid drainage',
'TWN',ywdrain,ywdrainfiletype
363 IF (top%LHYDRO) print*,
" CALL PGD_TEB_URBHYDRO(HPROGRAM,LECOCLIMAP)" 367 IF (
lhook)
CALL dr_hook(
'PGD_TEB_GARDEN',1,zhook_handle)
subroutine pgd_teb_greenroof(DTCO, UG, U, USS, IO, S, K, DTV, KDI
subroutine read_nam_pgd_isba(HPROGRAM, KPATCH, KGROUND_LAYER,
subroutine abor1_sfx(YTEXT)
subroutine pgd_teb_veg(DTCO, UG, U, USS, GDO, GDK, DTGD, GDIR, GRO, GRS, GRK, DTGR, TOP, KDIM, HPROGRAM)
integer, parameter nundef
subroutine pgd_teb_garden_par(DTCO, UG, U, USS, KDIM, IO, DTV, HP
subroutine pgd_teb_irrig(DTCO, UG, U, USS, KDIM, TIR, HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)