61 USE modi_init_io_surf_n
62 USE modi_set_surfex_filein
63 USE modi_end_io_surf_n
64 USE modi_town_presence
65 USE modi_allocate_gr_snow
68 USE yomhook
,ONLY : lhook, dr_hook
69 USE parkind1
,ONLY : jprb
71 USE modi_get_type_dim_n
83 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
84 CHARACTER(LEN=3),
INTENT(IN) :: hpatch
90 INTEGER :: iversion, ibugfix
93 CHARACTER(LEN=12) :: yrecfm
94 CHARACTER(LEN=4) :: ylvl
95 REAL,
DIMENSION(:),
ALLOCATABLE :: zwork
99 INTEGER :: jlayer, jnbiomass
100 REAL(KIND=JPRB) :: zhook_handle
107 IF (lhook) CALL dr_hook(
'READ_TEB_GARDEN_N',0,zhook_handle)
114 hprogram,yrecfm,iversion,iresp)
118 hprogram,yrecfm,ibugfix,iresp)
126 iwork=gdm%TGDO%NGROUND_LAYER
128 ALLOCATE(gdm%TGD%CUR%XTG(ilu,iwork))
130 WRITE(ylvl,
'(I2)') jlayer
131 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
132 yrecfm=hpatch//
'GD_TG'//adjustl(ylvl(:len_trim(ylvl)))
134 yrecfm=
'TWN_TG'//adjustl(ylvl(:len_trim(ylvl)))
136 yrecfm=adjustl(yrecfm)
138 hprogram,yrecfm,zwork(:),iresp)
139 gdm%TGD%CUR%XTG(:,jlayer)=zwork
145 ALLOCATE(gdm%TGD%CUR%XWG(ilu,iwork))
146 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
147 WRITE(ylvl,
'(I2)') jlayer
148 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
149 yrecfm=hpatch//
'GD_WG'//adjustl(ylvl(:len_trim(ylvl)))
151 yrecfm=
'TWN_WG'//adjustl(ylvl(:len_trim(ylvl)))
153 yrecfm=adjustl(yrecfm)
155 hprogram,yrecfm,zwork(:),iresp)
156 gdm%TGD%CUR%XWG(:,jlayer)=zwork
161 ALLOCATE(gdm%TGD%CUR%XWGI(ilu,iwork))
162 DO jlayer=1,gdm%TGDO%NGROUND_LAYER
163 WRITE(ylvl,
'(I2)') jlayer
165 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
166 yrecfm=hpatch//
'GD_WGI'//adjustl(ylvl(:len_trim(ylvl)))
168 yrecfm=
'TWN_WGI'//adjustl(ylvl(:len_trim(ylvl)))
170 yrecfm=adjustl(yrecfm)
172 hprogram,yrecfm,zwork(:),iresp)
173 gdm%TGD%CUR%XWGI(:,jlayer)=zwork
178 ALLOCATE(gdm%TGD%CUR%XWR(ilu))
179 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
180 yrecfm=hpatch//
'GD_WR'
184 yrecfm=adjustl(yrecfm)
186 hprogram,yrecfm,gdm%TGD%CUR%XWR(:),iresp)
190 IF (gdm%TVG%CPHOTO==
'LAI' .OR. gdm%TVG%CPHOTO==
'LST' .OR. &
191 gdm%TVG%CPHOTO==
'NIT' .OR. gdm%TVG%CPHOTO==
'NCB')
THEN
192 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
193 yrecfm=hpatch//
'GD_LAI'
197 yrecfm=adjustl(yrecfm)
199 hprogram,yrecfm,gdm%TGDPE%CUR%XLAI(:),iresp)
207 hprogram,
'TOWN ',
'TEB ',
'READ ')
215 hprogram,
'TOWN ',
'TEB ',
'READ ')
217 IF (.NOT. gtown)
THEN
218 gdm%TGD%CUR%TSNOW%SCHEME=
'1-L'
221 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
223 hprogram,
'GD',hpatch,ilu,1,gdm%TGD%CUR%TSNOW )
226 hprogram,
'GARD',hpatch,ilu,1,gdm%TGD%CUR%TSNOW )
237 ALLOCATE(gdm%TGD%CUR%XRESA(ilu))
238 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
239 yrecfm=hpatch//
'GD_RES'
243 yrecfm=adjustl(yrecfm)
244 gdm%TGD%CUR%XRESA(:) = 100.
246 hprogram,yrecfm,gdm%TGD%CUR%XRESA(:),iresp)
248 ALLOCATE(gdm%TGD%CUR%XLE(ilu))
249 gdm%TGD%CUR%XLE(:) = xundef
253 IF (gdm%TVG%CPHOTO/=
'NON')
THEN
254 ALLOCATE(gdm%TGD%CUR%XAN (ilu))
255 ALLOCATE(gdm%TGD%CUR%XANDAY(ilu))
256 ALLOCATE(gdm%TGD%CUR%XANFM (ilu))
257 ALLOCATE(gdm%TGDP%XANF (ilu))
258 gdm%TGD%CUR%XAN(:) = 0.
259 gdm%TGD%CUR%XANDAY(:) = 0.
260 gdm%TGD%CUR%XANFM(:) = xanfminit
261 gdm%TGD%CUR%XLE(:) = 0.
263 ALLOCATE(gdm%TGD%CUR%XAN (0))
264 ALLOCATE(gdm%TGD%CUR%XANDAY(0))
265 ALLOCATE(gdm%TGD%CUR%XANFM (0))
266 ALLOCATE(gdm%TGDP%XANF (0))
269 IF(gdm%TVG%CPHOTO/=
'NON')
THEN
270 ALLOCATE(gdm%TGD%CUR%XBIOMASS (ilu,gdm%TVG%NNBIOMASS))
271 ALLOCATE(gdm%TGD%CUR%XRESP_BIOMASS (ilu,gdm%TVG%NNBIOMASS))
273 ALLOCATE(gdm%TGD%CUR%XBIOMASS (0,0))
274 ALLOCATE(gdm%TGD%CUR%XRESP_BIOMASS (0,0))
277 IF (gdm%TVG%CPHOTO==
'AGS' .OR. gdm%TVG%CPHOTO==
'AST')
THEN
279 gdm%TGD%CUR%XBIOMASS(:,:) = 0.
280 gdm%TGD%CUR%XRESP_BIOMASS(:,:) = 0.
281 ELSEIF (gdm%TVG%CPHOTO==
'LAI' .OR. gdm%TVG%CPHOTO==
'LST')
THEN
283 gdm%TGD%CUR%XBIOMASS(:,1) = gdm%TGDP%XBSLAI(:) * gdm%TGDPE%CUR%XLAI(:)
284 gdm%TGD%CUR%XRESP_BIOMASS(:,:) = 0.
285 ELSEIF (gdm%TVG%CPHOTO==
'NIT' .OR. gdm%TVG%CPHOTO==
'NCB')
THEN
287 gdm%TGD%CUR%XBIOMASS(:,:) = 0.
288 DO jnbiomass=1,gdm%TVG%NNBIOMASS
289 WRITE(ylvl,
'(I1)') jnbiomass
290 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
291 yrecfm=hpatch//
'GD_BIOMA'//adjustl(ylvl(:len_trim(ylvl)))
293 yrecfm=
'TWN_BIOMASS'//adjustl(ylvl(:len_trim(ylvl)))
295 yrecfm=adjustl(yrecfm)
297 hprogram,yrecfm,gdm%TGD%CUR%XBIOMASS(:,jnbiomass),iresp)
300 gdm%TGD%CUR%XRESP_BIOMASS(:,:) = 0.
301 DO jnbiomass=2,gdm%TVG%NNBIOMASS
302 WRITE(ylvl,
'(I1)') jnbiomass
303 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3)
THEN
304 yrecfm=hpatch//
'GD_RESPI'//adjustl(ylvl(:len_trim(ylvl)))
306 yrecfm=
'TWN_RESP_BIOM'//adjustl(ylvl(:len_trim(ylvl)))
308 yrecfm=adjustl(yrecfm)
310 hprogram,yrecfm,gdm%TGD%CUR%XRESP_BIOMASS(:,jnbiomass),iresp)
316 IF (lhook) CALL dr_hook(
'READ_TEB_GARDEN_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 read_teb_garden_n(DTCO, DGU, U, GDM, HPROGRAM, HPATCH)
subroutine allocate_gr_snow(TPSNOW, KLU, KPATCH)
subroutine end_io_surf_n(HPROGRAM)
subroutine town_presence(HFILETYPE, OTEB)
subroutine read_gr_snow(HPROGRAM, HSURFTYPE, HPREFIX, KLU, KPATCH, TPSNOW, HDIR, KVERSION, KBUGFIX)