6 SUBROUTINE zoom_pgd_teb (BOP, BDD, DTB, DTCO, DTT, UG, U, GCP, IO, K, TG, TOP, &
7 HPROGRAM,HINIFILE,HINIFILETYPE,OECOCLIMAP,OGARDEN)
58 USE modd_data_cover_par
, ONLY : jpcover
62 USE modd_isba_par
, ONLY : xoptimgrid
66 USE modi_open_aux_io_surf
67 USE modi_get_surf_size_n
69 USE modi_prep_grid_extern
70 USE modi_prep_output_grid
72 USE modi_read_pgd_teb_par_n
73 USE modi_close_aux_io_surf
74 USE modi_clean_prep_output_grid
96 TYPE(
grid_t),
INTENT(INOUT) :: TG
99 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
100 CHARACTER(LEN=28),
INTENT(IN) :: HINIFILE
101 CHARACTER(LEN=6),
INTENT(IN) :: HINIFILETYPE
102 LOGICAL,
INTENT(IN) :: OECOCLIMAP
103 LOGICAL,
INTENT(IN) :: OGARDEN
115 REAL(KIND=JPRB) :: ZHOOK_HANDLE
122 top%LECOCLIMAP = oecoclimap
123 top%LGARDEN = ogarden
125 IF (.NOT. oecoclimap)
THEN 126 WRITE(iluout,*)
'ERROR' 127 WRITE(iluout,*)
'Ecoclimap is not used' 128 WRITE(iluout,*)
'Routine zoom_pgd_teb.f90 must be updated' 129 WRITE(iluout,*)
'to interpolate all TEB physiographic fields' 130 CALL abor1_sfx(
'ZOOM_PGD_TEB: ECOCLIMAP NOT USED, ROUTINE MUST BE UPDATED' 151 ALLOCATE(top%LCOVER (jpcover))
152 ALLOCATE(top%XZS (ilu))
153 ALLOCATE(tg%XLAT (ilu))
154 ALLOCATE(tg%XLON (ilu))
155 ALLOCATE(tg%XMESH_SIZE (ilu))
157 CALL pack_pgd(dtco, u, hprogram,
'TOWN ', tg, top%LCOVER, top%XCOVER, top%XZS
162 CALL read_surf(hprogram,
'VERSION',iversion,iresp)
163 CALL read_surf(hprogram,
'BUG',ibugfix,iresp)
179 IF (iversion<7 .OR. iversion==7 .AND. ibugfix<=2)
THEN 182 CALL read_surf(hprogram,
'TEB_PATCH',top%NTEB_PATCH,iresp)
186 CALL read_surf(hprogram,
'ROOF_LAYER',top%NROOF_LAYER,iresp)
187 CALL read_surf(hprogram,
'ROAD_LAYER',top%NROAD_LAYER,iresp)
188 CALL read_surf(hprogram,
'WALL_LAYER',top%NWALL_LAYER,iresp)
190 IF (iversion<7 .OR.( iversion==7 .AND. ibugfix<=2))
THEN 194 CALL read_surf(hprogram,
'BLD_ATYPE' ,top%CBLD_ATYPE,iresp)
195 CALL read_surf(hprogram,
'BEM' ,top%CBEM ,iresp)
198 IF (top%CBEM/=
'DEF')
THEN 199 CALL read_surf(hprogram,
'FLOOR_LAYER',bop%NFLOOR_LAYER,iresp)
202 DO jpatch=1,top%NTEB_PATCH
226 USE modi_hor_interpol
231 REAL,
DIMENSION(:,:),
POINTER :: ZIN
233 REAL,
DIMENSION(INI) :: ZFIELD
234 REAL,
DIMENSION(ILU,1) :: ZOUT
235 CHARACTER(LEN=12) :: YRECFM
236 CHARACTER(LEN=4 ) :: YLVL
237 REAL(KIND=JPRB) :: ZHOOK_HANDLE
239 IF (
lhook)
CALL dr_hook(
'ZOOM_PGD_TEB:ZOOM_PGD_TEB_GARDEN',0,zhook_handle
243 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 244 CALL read_surf(hprogram,
'GD_LAYER',io%NGROUND_LAYER,iresp)
245 CALL read_surf(hprogram,
'GD_ISBA',io%CISBA,iresp)
246 CALL read_surf(hprogram,
'GD_PHOTO',io%CPHOTO,iresp)
247 CALL read_surf(hprogram,
'GD_PEDOTF',io%CPEDOTF,iresp)
248 CALL read_surf(hprogram,
'GD_TR_ML',io%LTR_ML,iresp)
250 IF (io%CPHOTO==
'NIT') io%NNBIOMASS=3
252 CALL read_surf(hprogram,
'TWN_LAYER',io%NGROUND_LAYER,iresp)
253 CALL read_surf(hprogram,
'TWN_ISBA',io%CISBA,iresp)
254 CALL read_surf(hprogram,
'TWN_PHOTO',io%CPHOTO,iresp)
255 CALL read_surf( hprogram,
'TWN_PEDOTF',io%CPEDOTF,iresp)
256 CALL read_surf(hprogram,
'TWN_NBIOMASS',io%NNBIOMASS,iresp)
257 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2)
THEN 258 CALL read_surf(hprogram,
'TWN_TR_ML',io%LTR_ML,iresp)
264 IF(io%CISBA==
'DIF')
THEN 265 ALLOCATE(io%XSOILGRID(io%NGROUND_LAYER))
267 IF (iversion>=8)
THEN 268 DO jlayer=1,io%NGROUND_LAYER
269 WRITE(ylvl,
'(I4)') jlayer
270 yrecfm=
'GD_SGRID'//adjustl(ylvl(:len_trim(ylvl)))
271 CALL read_surf(hprogram,yrecfm,io%XSOILGRID(jlayer),iresp)
273 ELSEIF (iversion==7 .AND. ibugfix>=2)
THEN 274 yrecfm=
'TWN_SOILGRID' 275 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_SOILGRID' 276 CALL read_surf(hprogram,yrecfm,io%XSOILGRID,iresp,hdir=
'-')
278 io%XSOILGRID(1:io%NGROUND_LAYER)=xoptimgrid(1:io%NGROUND_LAYER)
281 ALLOCATE(io%XSOILGRID(0))
284 IF (iversion>8 .OR. iversion==8 .AND. ibugfix>=1)
THEN 285 CALL read_surf(hprogram,
'GD_ALBEDO',io%CALBEDO,iresp)
290 ALLOCATE(io%LMEB_PATCH(1))
291 io%LMEB_PATCH(:) = .false.
295 ALLOCATE(zin(ini,io%NGROUND_LAYER))
297 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_SAND' 298 CALL read_surf(hprogram,yrecfm,zfield,iresp,hdir=
'A')
299 DO jlayer=1,io%NGROUND_LAYER
300 zin(:,jlayer) = zfield(:)
302 ALLOCATE(k%XSAND(ilu,io%NGROUND_LAYER))
308 ALLOCATE(zin(ini,io%NGROUND_LAYER))
310 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_CLAY' 311 CALL read_surf(hprogram,yrecfm,zfield,iresp,hdir=
'A')
312 DO jlayer=1,io%NGROUND_LAYER
313 zin(:,jlayer) = zfield(:)
315 ALLOCATE(k%XCLAY(ilu,io%NGROUND_LAYER))
323 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_RUNOFFB' 324 CALL read_surf(hprogram,yrecfm,zfield,iresp,hdir=
'A')
326 ALLOCATE(k%XRUNOFFB(ilu))
328 k%XRUNOFFB(:) = zout(:,1)
330 IF (iversion<=3)
THEN 334 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) yrecfm=
'GD_WDRAIN' 335 CALL read_surf(hprogram,yrecfm,zfield,iresp,hdir=
'A')
337 ALLOCATE(k%XWDRAIN(ilu))
339 k%XWDRAIN(:) = zout(:,1)
344 IF(io%CISBA==
'DIF')
THEN 345 ALLOCATE(io%XSOILGRID(io%NGROUND_LAYER))
347 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2)
THEN 348 CALL read_surf(hprogram,
'GD_SOILGRID',io%XSOILGRID,iresp,hdir=
'-')
350 io%XSOILGRID(1:io%NGROUND_LAYER)=xoptimgrid(1:io%NGROUND_LAYER)
353 ALLOCATE(io%XSOILGRID(0))
358 CALL read_surf(hprogram,
'PAR_GARDEN',io%LPAR,iresp)
362 WRITE(iluout,*)
'ERROR' 363 WRITE(iluout,*)
'Specific garden fields are prescribed' 364 WRITE(iluout,*)
'Routine zoom_pgd_teb.f90 must be updated' 365 WRITE(iluout,*)
'to interpolate all TEB physiographic garden fields' 366 CALL abor1_sfx(
'ZOOM_PGD_TEB: GARDEN fields used, ROUTINE MUST BE UPDATED' 369 IF (
lhook)
CALL dr_hook(
'ZOOM_PGD_TEB:ZOOM_PGD_TEB_GARDEN',1,zhook_handle
subroutine get_surf_size_n(DTCO, U, HTYPE, KL)
character(len=10) cingrid_type
subroutine clean_prep_output_grid
character(len=6) cinterp_type
subroutine close_aux_io_surf(HFILE, HFILETYPE)
subroutine prep_grid_extern(GCP, HFILETYPE, KLUOUT, HGRIDTYPE, HINTER
subroutine pack_pgd(DTCO, U, HPROGRAM, HSURF, G, OCOVER, PCOVER,
subroutine abor1_sfx(YTEXT)
logical, dimension(:), allocatable linterp
subroutine hor_interpol(DTCO, U, GCP, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine prep_output_grid(UG, G, KSIZE_FULL, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine zoom_pgd_teb(BOP, BDD, DTB, DTCO, DTT, UG, U, GCP, IO,
subroutine open_aux_io_surf(HFILE, HFILETYPE, HMASK, HDIR)
subroutine read_pgd_teb_par_n(DTCO, U, GCP, BDD, DTB, DTT, KDIM,
subroutine zoom_pgd_teb_garden