6 SUBROUTINE read_teb_n (B, BOP, DTCO, DGU, U, T, TOP, TPN, &
54 USE modd_assim, ONLY : lassim,xat2m_teb,nific,nvar
58 USE modi_init_io_surf_n
59 USE modi_set_surfex_filein
60 USE modi_end_io_surf_n
61 USE modi_town_presence
62 USE modi_allocate_gr_snow
68 USE yomhook
,ONLY : lhook, dr_hook
69 USE parkind1
,ONLY : jprb
71 USE modi_get_type_dim_n
80 TYPE(bem_t),
INTENT(INOUT) :: b
85 TYPE(teb_t),
INTENT(INOUT) :: t
89 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
90 INTEGER,
INTENT(IN) :: kpatch
101 CHARACTER(LEN=12) :: yrecfm
102 CHARACTER(LEN=3) :: ypatch
104 INTEGER :: iversion, ibugfix
109 REAL(KIND=JPRB) :: zhook_handle
115 IF (lhook) CALL dr_hook(
'READ_TEB_N',0,zhook_handle)
121 IF (top%NTEB_PATCH>1)
WRITE(ypatch,fmt=
'(A1,I1,A1)')
'T',kpatch,
'_'
124 hprogram,
'VERSION',iversion,iresp)
126 hprogram,
'BUG',ibugfix,iresp)
127 gold_name = (iversion<7 .OR. (iversion==7 .AND. ibugfix<=2))
134 ALLOCATE(t%CUR%XT_ROOF(ilu,top%NROOF_LAYER))
136 DO jlayer=1,top%NROOF_LAYER
137 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TROOF',jlayer
138 yrecfm=adjustl(yrecfm)
139 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_ROOF',jlayer
142 hprogram,yrecfm,t%CUR%XT_ROOF(:,jlayer),iresp)
147 ALLOCATE(t%CUR%XWS_ROOF(ilu))
149 yrecfm=ypatch//
'WS_ROOF'
150 yrecfm=adjustl(yrecfm)
152 hprogram,yrecfm,t%CUR%XWS_ROOF(:),iresp)
156 ALLOCATE(t%CUR%XT_ROAD(ilu,top%NROAD_LAYER))
158 DO jlayer=1,top%NROAD_LAYER
159 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TROAD',jlayer
160 yrecfm=adjustl(yrecfm)
161 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_ROAD',jlayer
163 hprogram,yrecfm,t%CUR%XT_ROAD(:,jlayer),iresp)
168 ALLOCATE(t%CUR%XWS_ROAD(ilu))
170 yrecfm=ypatch//
'WS_ROAD'
171 yrecfm=adjustl(yrecfm)
173 hprogram,yrecfm,t%CUR%XWS_ROAD(:),iresp)
177 ALLOCATE(t%CUR%XT_WALL_A(ilu,top%NWALL_LAYER))
178 ALLOCATE(t%CUR%XT_WALL_B(ilu,top%NWALL_LAYER))
180 DO jlayer=1,top%NWALL_LAYER
181 IF (top%CWALL_OPT==
'UNIF' .OR. gold_name)
THEN
182 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TWALL',jlayer
183 yrecfm=adjustl(yrecfm)
184 IF (gold_name)
WRITE(yrecfm,
'(A6,I1.1)')
'T_WALL',jlayer
186 hprogram,yrecfm,t%CUR%XT_WALL_A(:,jlayer),iresp)
188 t%CUR%XT_WALL_B = t%CUR%XT_WALL_A
190 WRITE(yrecfm,
'(A3,A6,I1.1)') ypatch,
'TWALLA',jlayer
191 yrecfm=adjustl(yrecfm)
193 hprogram,yrecfm,t%CUR%XT_WALL_A(:,jlayer),iresp)
195 WRITE(yrecfm,
'(A3,A6,I1.1)') ypatch,
'TWALLB',jlayer
196 yrecfm=adjustl(yrecfm)
198 hprogram,yrecfm,t%CUR%XT_WALL_B(:,jlayer),iresp)
204 ALLOCATE(b%CUR%XTI_BLD(ilu))
206 yrecfm=ypatch//
'TI_BLD'
207 yrecfm=adjustl(yrecfm)
209 hprogram,yrecfm,b%CUR%XTI_BLD(:),iresp)
214 ALLOCATE(b%CUR%XT_WIN1(ilu))
216 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
217 yrecfm=ypatch//
'T_WIN1'
218 yrecfm=adjustl(yrecfm)
220 hprogram,yrecfm,b%CUR%XT_WIN1(:),iresp)
222 b%CUR%XT_WIN1(:)=xundef
228 ALLOCATE(b%CUR%XQI_BLD(ilu))
230 IF (top%CBEM==
'BEM' .AND. (iversion>7 .OR. iversion==7 .AND. ibugfix>=3))
THEN
231 yrecfm=ypatch//
'QI_BLD'
232 yrecfm=adjustl(yrecfm)
234 hprogram,yrecfm,b%CUR%XQI_BLD(:),iresp)
236 b%CUR%XQI_BLD(:) = xundef
239 IF (top%CBEM==
'BEM')
THEN
243 ALLOCATE(b%CUR%XT_WIN2(ilu))
245 yrecfm=ypatch//
'T_WIN2'
246 yrecfm=adjustl(yrecfm)
248 hprogram,yrecfm,b%CUR%XT_WIN2(:),iresp)
252 ALLOCATE(b%CUR%XT_FLOOR(ilu,bop%NFLOOR_LAYER))
254 DO jlayer=1,bop%NFLOOR_LAYER
255 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TFLOO',jlayer
256 yrecfm=adjustl(yrecfm)
258 hprogram,yrecfm,b%CUR%XT_FLOOR(:,jlayer),iresp)
263 ALLOCATE(b%CUR%XT_MASS(ilu,bop%NFLOOR_LAYER))
265 DO jlayer=1,bop%NFLOOR_LAYER
266 WRITE(yrecfm,
'(A3,A5,I1.1)') ypatch,
'TMASS',jlayer
267 yrecfm=adjustl(yrecfm)
269 hprogram,yrecfm,b%CUR%XT_MASS(:,jlayer),iresp)
273 ALLOCATE(b%CUR%XT_WIN2(0))
274 ALLOCATE(b%CUR%XT_FLOOR(0,0))
275 ALLOCATE(b%CUR%XT_MASS(0,0))
280 ALLOCATE(t%CUR%XTI_ROAD(ilu))
282 yrecfm=ypatch//
'TI_ROAD'
283 yrecfm=adjustl(yrecfm)
285 hprogram,yrecfm,t%CUR%XTI_ROAD(:),iresp)
293 hprogram,
'TOWN ',
'TEB ',
'READ ')
301 hprogram,
'TOWN ',
'TEB ',
'READ ')
303 IF (.NOT. gtown)
THEN
304 t%CUR%TSNOW_ROAD%SCHEME=
'1-L'
306 t%CUR%TSNOW_ROOF%SCHEME=
'1-L'
309 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
311 hprogram,
'RD',ypatch,ilu,1,t%CUR%TSNOW_ROAD )
313 hprogram,
'RF',ypatch,ilu,1,t%CUR%TSNOW_ROOF )
316 hprogram,
'ROAD',ypatch,ilu,1,t%CUR%TSNOW_ROAD )
318 hprogram,
'ROOF',ypatch,ilu,1,t%CUR%TSNOW_ROOF )
329 ALLOCATE(t%CUR%XT_CANYON(ilu))
330 t%CUR%XT_CANYON(:) = t%CUR%XT_ROAD(:,1)
332 yrecfm=ypatch//
'TCANYON'
333 yrecfm=adjustl(yrecfm)
334 IF (gold_name) yrecfm=
'T_CANYON'
336 hprogram,yrecfm,t%CUR%XT_CANYON(:),iresp)
340 ALLOCATE(t%CUR%XQ_CANYON(ilu))
341 t%CUR%XQ_CANYON(:) = 0.
343 yrecfm=ypatch//
'QCANYON'
344 yrecfm=adjustl(yrecfm)
345 IF (gold_name) yrecfm=
'Q_CANYON'
347 hprogram,yrecfm,t%CUR%XQ_CANYON(:),iresp)
351 IF (top%LSOLAR_PANEL)
THEN
352 ALLOCATE(tpn%XTHER_PRODC_DAY(ilu))
353 tpn%XTHER_PRODC_DAY(:) = 0.
355 yrecfm=ypatch//
'THER_PDAY'
356 yrecfm=adjustl(yrecfm)
358 hprogram,yrecfm,tpn%XTHER_PRODC_DAY(:),iresp)
361 IF ( lassim .AND. nific/=nvar+2 )
THEN
363 IF ( .NOT.
ALLOCATED(xat2m_teb))
ALLOCATE(xat2m_teb(ilu))
366 CALL
io_buff(yrecfm,
'R',gknown)
368 hprogram,yrecfm,xat2m_teb(:),iresp)
373 IF (lhook) CALL dr_hook(
'READ_TEB_N',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine set_surfex_filein(HPROGRAM, HMASK)
subroutine allocate_gr_snow(TPSNOW, KLU, KPATCH)
subroutine read_teb_n(B, BOP, DTCO, DGU, U, T, TOP, TPN, HPROGRAM, KPATCH)
subroutine end_io_surf_n(HPROGRAM)
subroutine town_presence(HFILETYPE, OTEB)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine read_gr_snow(HPROGRAM, HSURFTYPE, HPREFIX, KLU, KPATCH, TPSNOW, HDIR, KVERSION, KBUGFIX)