6 SUBROUTINE read_teb_n (B, BOP, DTCO, U, T, TOP, TPN, HPROGRAM,KPATCH)
50 USE modd_data_cover_par
, ONLY : jpcover
52 USE modd_assim
, ONLY : lassim,xat2m_teb,nific,nvar
56 USE modi_init_io_surf_n
57 USE modi_set_surfex_filein
58 USE modi_end_io_surf_n
59 USE modi_town_presence
60 USE modi_allocate_gr_snow
69 USE modi_get_type_dim_n
78 TYPE(
bem_t),
INTENT(INOUT) :: B
82 TYPE(
teb_t),
INTENT(INOUT) :: T
86 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
87 INTEGER,
INTENT(IN) :: KPATCH
96 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IMASK
99 CHARACTER(LEN=12) :: YRECFM
100 CHARACTER(LEN=3) :: YPATCH
102 INTEGER :: IVERSION, IBUGFIX
106 INTEGER :: JLAYER, JI
107 REAL(KIND=JPRB) :: ZHOOK_HANDLE
118 IF (top%NTEB_PATCH>1)
WRITE(ypatch,fmt=
'(A1,I1,A1)')
'T',kpatch,
'_' 120 CALL read_surf(hprogram,
'VERSION',iversion,iresp)
121 CALL read_surf(hprogram,
'BUG',ibugfix,iresp)
122 gold_name = (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2))
129 ALLOCATE(t%XT_ROOF(ilu,top%NROOF_LAYER))
131 DO jlayer=1,top%NROOF_LAYER
132 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TROOF',jlayer
133 yrecfm=adjustl(yrecfm)
134 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_ROOF',jlayer
136 CALL read_surf(hprogram,yrecfm,t%XT_ROOF(:,jlayer),iresp)
141 ALLOCATE(t%XWS_ROOF(ilu))
143 yrecfm=ypatch//
'WS_ROOF' 144 yrecfm=adjustl(yrecfm)
145 CALL read_surf(hprogram,yrecfm,t%XWS_ROOF(:),iresp)
149 ALLOCATE(t%XT_ROAD(ilu,top%NROAD_LAYER))
151 DO jlayer=1,top%NROAD_LAYER
152 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TROAD',jlayer
153 yrecfm=adjustl(yrecfm)
154 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_ROAD',jlayer
155 CALL read_surf(hprogram,yrecfm,t%XT_ROAD(:,jlayer),iresp)
160 ALLOCATE(t%XWS_ROAD(ilu))
162 yrecfm=ypatch//
'WS_ROAD' 163 yrecfm=adjustl(yrecfm)
164 CALL read_surf(hprogram,yrecfm,t%XWS_ROAD(:),iresp)
168 ALLOCATE(t%XT_WALL_A(ilu,top%NWALL_LAYER))
169 ALLOCATE(t%XT_WALL_B(ilu,top%NWALL_LAYER))
171 DO jlayer=1,top%NWALL_LAYER
172 IF (top%CWALL_OPT==
'UNIF' .OR. gold_name)
THEN 173 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TWALL',jlayer
174 yrecfm=adjustl(yrecfm)
175 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_WALL',jlayer
176 CALL read_surf(hprogram,yrecfm,t%XT_WALL_A(:,jlayer),iresp)
178 t%XT_WALL_B = t%XT_WALL_A
180 WRITE(yrecfm,
'(A3,A6,I1.1)') ypatch,
'TWALLA',jlayer
181 yrecfm=adjustl(yrecfm)
182 CALL read_surf(hprogram,yrecfm,t%XT_WALL_A(:,jlayer),iresp)
184 WRITE(yrecfm,
'(A3,A6,I1.1)') ypatch,
'TWALLB',jlayer
185 yrecfm=adjustl(yrecfm)
186 CALL read_surf(hprogram,yrecfm,t%XT_WALL_B(:,jlayer),iresp)
192 ALLOCATE(b%XTI_BLD(ilu))
194 yrecfm=ypatch//
'TI_BLD' 195 yrecfm=adjustl(yrecfm)
196 CALL read_surf(hprogram,yrecfm,b%XTI_BLD(:),iresp)
201 ALLOCATE(b%XT_WIN1(ilu))
203 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 204 yrecfm=ypatch//
'T_WIN1' 205 yrecfm=adjustl(yrecfm)
206 CALL read_surf(hprogram,yrecfm,b%XT_WIN1(:),iresp)
214 ALLOCATE(b%XQI_BLD(ilu))
216 IF (top%CBEM==
'BEM' .AND. (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 217 yrecfm=ypatch//
'QI_BLD' 218 yrecfm=adjustl(yrecfm)
219 CALL read_surf(hprogram,yrecfm,b%XQI_BLD(:),iresp)
224 IF (top%CBEM==
'BEM')
THEN 228 ALLOCATE(b%XT_WIN2(ilu))
230 yrecfm=ypatch//
'T_WIN2' 231 yrecfm=adjustl(yrecfm)
232 CALL read_surf(hprogram,yrecfm,b%XT_WIN2(:),iresp)
236 ALLOCATE(b%XT_FLOOR(ilu,bop%NFLOOR_LAYER))
238 DO jlayer=1,bop%NFLOOR_LAYER
239 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TFLOO',jlayer
240 yrecfm=adjustl(yrecfm)
241 CALL read_surf(hprogram,yrecfm,b%XT_FLOOR(:,jlayer),iresp)
246 ALLOCATE(b%XT_MASS(ilu,bop%NFLOOR_LAYER))
248 DO jlayer=1,bop%NFLOOR_LAYER
249 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TMASS',jlayer
250 yrecfm=adjustl(yrecfm)
251 CALL read_surf(hprogram,yrecfm,b%XT_MASS(:,jlayer),iresp)
255 ALLOCATE(b%XT_WIN2(0))
256 ALLOCATE(b%XT_FLOOR(0,0))
257 ALLOCATE(b%XT_MASS(0,0))
262 ALLOCATE(t%XTI_ROAD(ilu))
264 yrecfm=ypatch//
'TI_ROAD' 265 yrecfm=adjustl(yrecfm)
266 CALL read_surf(hprogram,yrecfm,t%XTI_ROAD(:),iresp)
281 IF (.NOT. gtown)
THEN 282 t%TSNOW_ROAD%SCHEME=
'1-L' 284 t%TSNOW_ROOF%SCHEME=
'1-L' 291 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN 292 CALL read_gr_snow(hprogram,
'RD',ypatch,ilu,ilu,imask,0,t%TSNOW_ROAD
293 CALL read_gr_snow(hprogram,
'RF',ypatch,ilu,ilu,imask,0,t%TSNOW_ROOF
295 CALL read_gr_snow(hprogram,
'ROAD',ypatch,ilu,ilu,imask,0,t%TSNOW_ROAD
296 CALL read_gr_snow(hprogram,
'ROOF',ypatch,ilu,ilu,imask,0,t%TSNOW_ROOF
308 ALLOCATE(t%XT_CANYON(ilu))
309 t%XT_CANYON(:) = t%XT_ROAD(:,1)
311 yrecfm=ypatch//
'TCANYON' 312 yrecfm=adjustl(yrecfm)
313 IF (gold_name) yrecfm=
'T_CANYON' 314 CALL read_surf(hprogram,yrecfm,t%XT_CANYON(:),iresp)
318 ALLOCATE(t%XQ_CANYON(ilu))
321 yrecfm=ypatch//
'QCANYON' 322 yrecfm=adjustl(yrecfm)
323 IF (gold_name) yrecfm=
'Q_CANYON' 324 CALL read_surf(hprogram,yrecfm,t%XQ_CANYON(:),iresp)
328 IF (top%LSOLAR_PANEL)
THEN 329 ALLOCATE(tpn%XTHER_PRODC_DAY(ilu))
330 tpn%XTHER_PRODC_DAY(:) = 0.
332 yrecfm=ypatch//
'THER_PDAY' 333 yrecfm=adjustl(yrecfm)
334 CALL read_surf(hprogram,yrecfm,tpn%XTHER_PRODC_DAY(:),iresp)
337 IF ( lassim .AND. nific/=nvar+2 )
THEN 339 IF ( .NOT.
ALLOCATED(xat2m_teb))
ALLOCATE(xat2m_teb(ilu))
342 CALL io_buff(yrecfm,
'R',gknown)
343 CALL read_surf(hprogram,yrecfm,xat2m_teb(:),iresp)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine town_presence(HFILETYPE, OTEB, HDIR)
subroutine read_teb_n(B, BOP, DTCO, U, T, TOP, TPN, HPROGRAM, KPAT
subroutine end_io_surf_n(HPROGRAM)
subroutine allocate_gr_snow(TPSNOW, KLU)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine read_gr_snow(HPROGRAM, HSURFTYPE, HPREFIX, KLU, KSIZE_P, KMASK_P, KPATCH, TPSNOW, HDI
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION