6 SUBROUTINE pgd_teb_veg (DTCO, UG, U, USS, GDM, GRM, TOP, TG, &
67 USE modi_read_nam_pgd_isba
71 USE modi_pgd_teb_greenroof
72 USE modi_pgd_teb_garden_par
73 USE modi_pgd_teb_irrig
75 USE yomhook
,ONLY : lhook, dr_hook
76 USE parkind1
,ONLY : jprb
95 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
109 INTEGER :: iground_layer
110 CHARACTER(LEN=3) :: yisba
111 CHARACTER(LEN=4) :: ypedotf
112 CHARACTER(LEN=3) :: yphoto
115 CHARACTER(LEN=28) :: ysand
116 CHARACTER(LEN=28) :: yclay
117 CHARACTER(LEN=28) :: ycti
118 CHARACTER(LEN=28) :: yrunoffb
119 CHARACTER(LEN=28) :: ywdrain
120 CHARACTER(LEN=6) :: ysandfiletype
121 CHARACTER(LEN=6) :: yclayfiletype
122 CHARACTER(LEN=6) :: yctifiletype
123 CHARACTER(LEN=6) :: yrunoffbfiletype
124 CHARACTER(LEN=6) :: ywdrainfiletype
127 REAL :: xunif_runoffb
132 REAL,
DIMENSION(150) :: zsoilgrid
136 CHARACTER(LEN=28) :: ysoc_top
137 CHARACTER(LEN=28) :: ysoc_sub
138 CHARACTER(LEN=28) :: yperm
139 CHARACTER(LEN=28) :: ygw
140 CHARACTER(LEN=6) :: ysocfiletype
141 CHARACTER(LEN=6) :: ypermfiletype
142 CHARACTER(LEN=6) :: ygwfiletype
143 REAL :: xunif_soc_top
144 REAL :: xunif_soc_sub
151 CHARACTER(LEN=28) :: yph
152 CHARACTER(LEN=28) :: yfert
153 CHARACTER(LEN=6) :: yphfiletype
154 CHARACTER(LEN=6) :: yfertfiletype
158 REAL(KIND=JPRB) :: zhook_handle
161 IF (lhook) CALL dr_hook(
'PGD_TEB_VEG',0,zhook_handle)
169 gdm%TGDO%NGROUND_LAYER = 0
171 gdm%TVG%CPEDOTF =
' '
175 yisba, ypedotf, yphoto, gtr_ml, zrm_patch, &
176 yclay, yclayfiletype, xunif_clay, limp_clay, &
177 ysand, ysandfiletype, xunif_sand, limp_sand, &
178 ysoc_top, ysoc_sub, ysocfiletype, xunif_soc_top, &
179 xunif_soc_sub, limp_soc, ycti, yctifiletype, limp_cti, &
180 yperm, ypermfiletype, xunif_perm, limp_perm, gmeb, &
181 ygw, ygwfiletype, xunif_gw, limp_gw, &
182 yrunoffb, yrunoffbfiletype, xunif_runoffb, &
183 ywdrain, ywdrainfiletype , xunif_wdrain, zsoilgrid, &
184 yph, yphfiletype, xunif_ph, yfert, yfertfiletype, &
187 gdm%TGDO%NGROUND_LAYER = iground_layer
188 gdm%TVG%CISBA = yisba
189 gdm%TVG%CPEDOTF = ypedotf
190 gdm%TVG%CPHOTO = yphoto
191 gdm%TVG%LTR_ML = gtr_ml
200 CALL
test_nam_var_surf(iluout,
'CPHOTO',gdm%TVG%CPHOTO,
'NON',
'AGS',
'LAI',
'AST',
'LST',
'NIT',
'NCB')
202 IF (gdm%TVG%CPHOTO==
'NCB')
THEN
203 gdm%TVG%CPHOTO =
'NIT'
204 WRITE(iluout,*)
'****************************************************************'
205 WRITE(iluout,*)
'* FOR GARDENS, AGS OPTION HAS BEEN CHANGED FROM "NCB" TO "NIT" *'
206 WRITE(iluout,*)
'****************************************************************'
209 SELECT CASE (gdm%TVG%CISBA)
211 gdm%TGDO%NGROUND_LAYER = 2
212 gdm%TVG%CPEDOTF =
'CH78'
213 WRITE(iluout,*)
'*****************************************'
214 WRITE(iluout,*)
'* With option CISBA = ',gdm%TVG%CISBA,
' *'
215 WRITE(iluout,*)
'* the number of soil layers is set to 2 *'
216 WRITE(iluout,*)
'* theta(psi) function = Brook and Corey *'
217 WRITE(iluout,*)
'* Pedo transfert function = CH78 *'
218 WRITE(iluout,*)
'*****************************************'
220 gdm%TGDO%NGROUND_LAYER = 3
221 gdm%TVG%CPEDOTF =
'CH78'
222 WRITE(iluout,*)
'*****************************************'
223 WRITE(iluout,*)
'* With option CISBA = ',gdm%TVG%CISBA,
' *'
224 WRITE(iluout,*)
'* the number of soil layers is set to 3 *'
225 WRITE(iluout,*)
'* theta(psi) function = Brook and Corey *'
226 WRITE(iluout,*)
'* Pedo transfert function = CH78 *'
227 WRITE(iluout,*)
'*****************************************'
229 IF(gdm%TGDO%NGROUND_LAYER==nundef)
THEN
230 IF(top%LECOCLIMAP)
THEN
231 gdm%TGDO%NGROUND_LAYER=noptimlayer
233 WRITE(iluout,*)
'****************************************'
234 WRITE(iluout,*)
'* Number of ground layer not specified *'
235 WRITE(iluout,*)
'****************************************'
236 CALL
abor1_sfx(
'PGD_TEB_GARDEN: NGROUND_LAYER MUST BE DONE IN NAM_ISBA')
240 ALLOCATE(gdm%TGDO%XSOILGRID(gdm%TGDO%NGROUND_LAYER))
241 gdm%TGDO%XSOILGRID(:)=xundef
242 gdm%TGDO%XSOILGRID(:)=zsoilgrid(1:gdm%TGDO%NGROUND_LAYER)
243 IF(all(zsoilgrid(:)==xundef))
THEN
245 gdm%TGDO%XSOILGRID(1:gdm%TGDO%NGROUND_LAYER)=xoptimgrid(1:gdm%TGDO%NGROUND_LAYER)
246 ELSEIF(count(gdm%TGDO%XSOILGRID/=xundef)/=gdm%TGDO%NGROUND_LAYER)
THEN
247 WRITE(iluout,*)
'********************************************************'
248 WRITE(iluout,*)
'* Soil grid reference values /= number of ground layer *'
249 WRITE(iluout,*)
'********************************************************'
250 CALL
abor1_sfx(
'PGD_TEB_GARDEN: XSOILGRID must be coherent with NGROUND_LAYER in NAM_ISBA')
253 WRITE(iluout,*)
'*****************************************'
254 WRITE(iluout,*)
'* Option CISBA = ',gdm%TVG%CISBA
255 WRITE(iluout,*)
'* Pedo transfert function = ',gdm%TVG%CPEDOTF
256 WRITE(iluout,*)
'* Number of soil layers = ',gdm%TGDO%NGROUND_LAYER
257 IF(top%LECOCLIMAP)
THEN
258 WRITE(iluout,*)
'* Soil layers grid (m) = ',gdm%TGDO%XSOILGRID(1:gdm%TGDO%NGROUND_LAYER)
260 WRITE(iluout,*)
'*****************************************'
264 SELECT CASE (gdm%TVG%CPHOTO)
265 CASE (
'AGS',
'LAI',
'AST',
'LST')
266 gdm%TVG%NNBIOMASS = 1
268 gdm%TVG%NNBIOMASS = 3
270 WRITE(iluout,*)
'*****************************************'
271 WRITE(iluout,*)
'* With option CPHOTO = ',gdm%TVG%CPHOTO,
' *'
272 WRITE(iluout,*)
'* the number of biomass pools is set to ', gdm%TVG%NNBIOMASS
273 WRITE(iluout,*)
'*****************************************'
280 ALLOCATE(gdm%TGDP%XSAND(tg%NDIM,gdm%TGDO%NGROUND_LAYER))
284 CALL
abor1_sfx(
'PGD_TEB_VEG: LIMP_SAND IS NOT CONSISTENT WITH TEB_GARDEN')
289 hprogram,
'sand fraction',
'TWN',ysand,ysandfiletype,xunif_sand,gdm%TGDP%XSAND(:,1))
292 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
293 gdm%TGDP%XSAND(:,jlayer) = gdm%TGDP%XSAND(:,1)
300 ALLOCATE(gdm%TGDP%XCLAY(tg%NDIM,gdm%TGDO%NGROUND_LAYER))
304 CALL
abor1_sfx(
'PGD_TEB_VEG: LIMP_SAND IS NOT CONSISTENT WITH TEB_GARDEN')
308 hprogram,
'clay fraction',
'TWN',yclay,yclayfiletype,xunif_clay,gdm%TGDP%XCLAY(:,1))
311 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
312 gdm%TGDP%XCLAY(:,jlayer) = gdm%TGDP%XCLAY(:,1)
319 ALLOCATE(gdm%TGDP%XRUNOFFB(tg%NDIM))
321 hprogram,
'subgrid runoff',
'TWN',yrunoffb,yrunoffbfiletype,xunif_runoffb,gdm%TGDP%XRUNOFFB(:))
328 ALLOCATE(gdm%TGDP%XWDRAIN(tg%NDIM))
330 hprogram,
'subgrid drainage',
'TWN',ywdrain,ywdrainfiletype,xunif_wdrain,gdm%TGDP%XWDRAIN(:))
362 IF (top%LHYDRO) print*,
" CALL PGD_TEB_URBHYDRO(HPROGRAM,LECOCLIMAP)"
366 IF (lhook) CALL dr_hook(
'PGD_TEB_GARDEN',1,zhook_handle)
subroutine read_nam_pgd_isba(HPROGRAM, KPATCH, KGROUND_LAYER, HISBA, HPEDOTF, HPHOTO, OTR_ML, PRM_PATCH, HCLAY, HCLAYFILETYPE, PUNIF_CLAY, OIMP_CLAY, HSAND, HSANDFILETYPE, PUNIF_SAND, OIMP_SAND, HSOC_TOP, HSOC_SUB, HSOCFILETYPE, PUNIF_SOC_TOP, PUNIF_SOC_SUB, OIMP_SOC, HCTI, HCTIFILETYPE, OIMP_CTI, HPERM, HPERMFILETYPE, PUNIF_PERM, OIMP_PERM, OMEB, HGW, HGWFILETYPE, PUNIF_GW, OIMP_GW, HRUNOFFB, HRUNOFFBFILETYPE, PUNIF_RUNOFFB, HWDRAIN, HWDRAINFILETYPE, PUNIF_WDRAIN, PSOILGRID, HPH, HPHFILETYPE, PUNIF_PH, HFERT, HFERTFILETYPE, PUNIF_FERT)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine pgd_teb_greenroof(DTCO, UG, U, USS, GRM, TG, HPROGRAM)
subroutine abor1_sfx(YTEXT)
subroutine pgd_teb_irrig(DTCO, UG, U, USS, TG, TIR, HPROGRAM)
subroutine pgd_teb_veg(DTCO, UG, U, USS, GDM, GRM, TOP, TG, HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine pgd_teb_garden_par(DTCO, UG, U, USS, TG, GDM, HPROGRAM)