6 SUBROUTINE zoom_pgd_teb (B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, &
7 bop, bdd, dtb, dtco, dtt, ug, u, tgdo, tgdp, tg, &
9 hprogram,hinifile,hinifiletype,oecoclimap,ogarden)
69 USE modd_prep, ONLY : cingrid_type, cinterp_type, linterp
73 USE modi_open_aux_io_surf
74 USE modi_get_surf_size_n
76 USE modi_prep_grid_extern
77 USE modi_prep_output_grid
79 USE modi_read_pgd_teb_par_n
80 USE modi_close_aux_io_surf
81 USE modi_clean_prep_output_grid
82 USE modi_goto_wrapper_teb_patch
84 USE yomhook
,ONLY : lhook, dr_hook
85 USE parkind1
,ONLY : jprb
94 TYPE(bem_t),
INTENT(INOUT) :: b
97 TYPE(teb_t),
INTENT(INOUT) :: t
115 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
116 CHARACTER(LEN=28),
INTENT(IN) :: hinifile
117 CHARACTER(LEN=6),
INTENT(IN) :: hinifiletype
118 LOGICAL,
INTENT(IN) :: oecoclimap
119 LOGICAL,
INTENT(IN) :: ogarden
131 REAL(KIND=JPRB) :: zhook_handle
135 IF (lhook) CALL dr_hook(
'ZOOM_PGD_TEB',0,zhook_handle)
138 top%LECOCLIMAP = oecoclimap
139 top%LGARDEN = ogarden
141 IF (.NOT. oecoclimap)
THEN
142 WRITE(iluout,*)
'ERROR'
143 WRITE(iluout,*)
'Ecoclimap is not used'
144 WRITE(iluout,*)
'Routine zoom_pgd_teb.f90 must be updated'
145 WRITE(iluout,*)
'to interpolate all TEB physiographic fields'
146 CALL
abor1_sfx(
'ZOOM_PGD_TEB: ECOCLIMAP NOT USED, ROUTINE MUST BE UPDATED')
158 hinifile,hinifiletype,
'FULL ')
170 ALLOCATE(top%LCOVER (jpcover))
171 ALLOCATE(top%XZS (ilu))
172 ALLOCATE(tg%XLAT (ilu))
173 ALLOCATE(tg%XLON (ilu))
174 ALLOCATE(tg%XMESH_SIZE (ilu))
178 tg%CGRID, tg%XGRID_PAR, &
179 top%LCOVER, top%XCOVER, top%XZS, &
180 tg%XLAT, tg%XLON, tg%XMESH_SIZE )
186 hprogram,
'VERSION',iversion,iresp)
188 hprogram,
'BUG',ibugfix,iresp)
195 hinifiletype,iluout,cingrid_type,cinterp_type,ini)
198 iluout,tg%CGRID,tg%XGRID_PAR,tg%XLAT,tg%XLON)
207 IF (iversion<7 .OR. iversion==7 .AND. ibugfix<=2)
THEN
211 hprogram,
'TEB_PATCH',top%NTEB_PATCH,iresp)
216 hprogram,
'ROOF_LAYER',top%NROOF_LAYER,iresp)
218 hprogram,
'ROAD_LAYER',top%NROAD_LAYER,iresp)
220 hprogram,
'WALL_LAYER',top%NWALL_LAYER,iresp)
222 IF (iversion<7 .OR.( iversion==7 .AND. ibugfix<=2))
THEN
227 hprogram,
'BLD_ATYPE' ,top%CBLD_ATYPE,iresp)
229 hprogram,
'BEM' ,top%CBEM ,iresp)
232 IF (top%CBEM/=
'DEF')
THEN
234 hprogram,
'FLOOR_LAYER',bop%NFLOOR_LAYER,iresp)
237 DO jpatch=1,top%NTEB_PATCH
240 bdd, dtb, dtt, tg, top, &
256 IF (lhook) CALL dr_hook(
'ZOOM_PGD_TEB',1,zhook_handle)
263 USE modi_hor_interpol
268 REAL,
DIMENSION(:,:),
POINTER :: zin
270 REAL,
DIMENSION(INI) :: zfield
271 REAL,
DIMENSION(ILU,1) :: zout
272 REAL(KIND=JPRB) :: zhook_handle
273 CHARACTER(LEN=12) :: yrecfm
275 IF (lhook) CALL dr_hook(
'ZOOM_PGD_TEB:ZOOM_PGD_TEB_GARDEN',0,zhook_handle)
279 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
281 hprogram,
'GD_LAYER',tgdo%NGROUND_LAYER,iresp)
283 hprogram,
'GD_ISBA',tvg%CISBA,iresp)
285 hprogram,
'GD_PHOTO',tvg%CPHOTO,iresp)
287 hprogram,
'GD_PEDOTF',tvg%CPEDOTF,iresp)
289 IF (tvg%CPHOTO==
'NIT') tvg%NNBIOMASS=3
292 hprogram,
'TWN_LAYER',tgdo%NGROUND_LAYER,iresp)
294 hprogram,
'TWN_ISBA',tvg%CISBA,iresp)
296 hprogram,
'TWN_PHOTO',tvg%CPHOTO,iresp)
298 hprogram,
'TWN_PEDOTF',tvg%CPEDOTF,iresp)
300 hprogram,
'TWN_NBIOMASS',tvg%NNBIOMASS,iresp)
305 ALLOCATE(zin(ini,tgdo%NGROUND_LAYER))
307 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_SAND'
309 hprogram,yrecfm,zfield,iresp,hdir=
'A')
310 DO jlayer=1,tgdo%NGROUND_LAYER
311 zin(:,jlayer) = zfield(:)
313 ALLOCATE(tgdp%XSAND(ilu,tgdo%NGROUND_LAYER))
315 iluout,zin,tgdp%XSAND)
320 ALLOCATE(zin(ini,tgdo%NGROUND_LAYER))
322 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_CLAY'
324 hprogram,yrecfm,zfield,iresp,hdir=
'A')
325 DO jlayer=1,tgdo%NGROUND_LAYER
326 zin(:,jlayer) = zfield(:)
328 ALLOCATE(tgdp%XCLAY(ilu,tgdo%NGROUND_LAYER))
330 iluout,zin,tgdp%XCLAY)
337 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_RUNOFFB'
339 hprogram,yrecfm,zfield,iresp,hdir=
'A')
341 ALLOCATE(tgdp%XRUNOFFB(ilu))
344 tgdp%XRUNOFFB(:) = zout(:,1)
346 IF (iversion<=3)
THEN
350 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_WDRAIN'
352 hprogram,yrecfm,zfield,iresp,hdir=
'A')
354 ALLOCATE(tgdp%XWDRAIN(ilu))
357 tgdp%XWDRAIN(:) = zout(:,1)
365 hprogram,
'PAR_GARDEN',tgdo%LPAR_GARDEN,iresp)
368 IF (tgdo%LPAR_GARDEN)
THEN
369 WRITE(iluout,*)
'ERROR'
370 WRITE(iluout,*)
'Specific garden fields are prescribed'
371 WRITE(iluout,*)
'Routine zoom_pgd_teb.f90 must be updated'
372 WRITE(iluout,*)
'to interpolate all TEB physiographic garden fields'
373 CALL
abor1_sfx(
'ZOOM_PGD_TEB: GARDEN fields used, ROUTINE MUST BE UPDATED')
376 IF (lhook) CALL dr_hook(
'ZOOM_PGD_TEB:ZOOM_PGD_TEB_GARDEN',1,zhook_handle)
subroutine get_surf_size_n(DTCO, U, HTYPE, KL)
subroutine pack_pgd(DTCO, U, HPROGRAM, HSURF, HGRID, PGRID_PAR, OCOVER, PCOVER, PZS, PLAT, PLON, PMESH_SIZE, PDIR)
subroutine clean_prep_output_grid
subroutine zoom_pgd_teb(B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, BOP, BDD, DTB, DTCO, DTT, UG, U, TGDO, TGDP, TG, TOP, TVG, HPROGRAM, HINIFILE, HINIFILETYPE, OECOCLIMAP, OGARDEN)
subroutine close_aux_io_surf(HFILE, HFILETYPE)
subroutine abor1_sfx(YTEXT)
subroutine hor_interpol(DTCO, U, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine open_aux_io_surf(HFILE, HFILETYPE, HMASK)
subroutine goto_wrapper_teb_patch(B, DGCT, DGMT, T, TGD, TGDPE, TGR, TGRPE, KTO_PATCH)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_pgd_teb_par_n(DTCO, U, BDD, DTB, DTT, TG, TOP, HPROGRAM, KNI, HDIRIN)
subroutine prep_grid_extern(HFILETYPE, KLUOUT, HGRIDTYPE, HINTERP_TYPE, KNI)
subroutine prep_output_grid(UG, U, KLUOUT, HGRID, PGRID_PAR, PLAT, PLON)
subroutine zoom_pgd_teb_garden