6 SUBROUTINE prep_hor_teb_greenroof_field (DTCO, IG, I, UG, U, USS, TGR, TGRO, TGRPE, TGRP, &
8 hprogram,hsurf,hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kpatch)
48 USE modd_prep, ONLY : cingrid_type, cinterp_type, xzs_ls, &
49 xlat_out, xlon_out, xx_out, xy_out, &
52 xwsnow_gr, xrsnow_gr, xtsnow_gr,xlwcsnow_gr, &
53 xagesnow_gr, xasnow_gr, lsnow_ideal_gr
58 USE modi_read_prep_teb_greenroof_conf
59 USE modi_read_prep_greenroof_snow
60 USE modi_prep_teb_greenroof_ascllv
61 USE modi_prep_teb_greenroof_grib
62 USE modi_prep_teb_greenroof_unif
63 USE modi_prep_teb_greenroof_buffer
65 USE modi_vegtype_grid_to_patch_grid
66 USE modi_prep_hor_snow_fields
68 USE modi_prep_teb_greenroof_extern
69 USE modi_put_on_all_vegtypes
73 USE yomhook
,ONLY : lhook, dr_hook
74 USE parkind1
,ONLY : jprb
82 TYPE(isba_grid_t
),
INTENT(INOUT) :: ig
83 TYPE(isba_t
),
INTENT(INOUT) :: i
94 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
95 CHARACTER(LEN=7),
INTENT(IN) :: hsurf
96 CHARACTER(LEN=28),
INTENT(IN) :: hatmfile
97 CHARACTER(LEN=6),
INTENT(IN) :: hatmfiletype
98 CHARACTER(LEN=28),
INTENT(IN) :: hpgdfile
99 CHARACTER(LEN=6),
INTENT(IN) :: hpgdfiletype
101 INTEGER,
INTENT(IN) :: kpatch
105 CHARACTER(LEN=6) :: yfiletype
106 CHARACTER(LEN=28) :: yfile
107 CHARACTER(LEN=6) :: yfilepgdtype
108 CHARACTER(LEN=28) :: yfilepgd
109 CHARACTER(LEN=6) :: yfiletype_snow
110 CHARACTER(LEN=28) :: yfile_snow
111 CHARACTER(LEN=6) :: yfilepgdtype_snow
112 CHARACTER(LEN=28) :: yfilepgd_snow
113 REAL,
POINTER,
DIMENSION(:,:,:) :: zfieldin
114 REAL,
POINTER,
DIMENSION(:,:) :: zfield
115 REAL,
ALLOCATABLE,
DIMENSION(:,:,:) :: zfieldoutp
116 REAL,
ALLOCATABLE,
DIMENSION(:,:,:) :: zfieldoutv
117 REAL,
ALLOCATABLE,
DIMENSION(:,:,:) :: zvegtype_patch
118 REAL,
ALLOCATABLE,
DIMENSION(:,:) :: zw
119 REAL,
ALLOCATABLE,
DIMENSION(:,:) :: zf
120 REAL,
ALLOCATABLE,
DIMENSION(:,:) :: zdg
121 REAL,
ALLOCATABLE,
DIMENSION(:,:) :: zpatch
122 REAL,
ALLOCATABLE,
DIMENSION(:) :: zsg1snow, zsg2snow, zhistsnow
126 LOGICAL :: gunif_snow
127 INTEGER :: jvegtype, jpatch
129 INTEGER :: ini, inl, inp
131 REAL(KIND=JPRB) :: zhook_handle
137 IF (lhook) CALL dr_hook(
'PREP_HOR_TEB_GREENROOF_FIELD',0,zhook_handle)
143 hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,iluout,gunif)
152 IF (hsurf==
'SN_VEG ')
THEN
154 yfiletype_snow,yfilepgd_snow,yfilepgdtype_snow,gunif_snow)
155 IF(.NOT.gunif_snow.AND.len_trim(yfile_snow)==0.AND.len_trim(yfiletype_snow)==0)
THEN
157 IF (yfiletype==
'GRIB')
THEN
159 yfiletype_snow=yfiletype
160 yfilepgd_snow =yfilepgd
161 yfilepgdtype_snow=yfilepgdtype
164 IF(all(xwsnow_gr==xundef))xwsnow_gr=0.0
167 ALLOCATE(zsg1snow(
SIZE(xwsnow_gr)))
168 ALLOCATE(zsg2snow(
SIZE(xwsnow_gr)))
169 ALLOCATE(zhistsnow(
SIZE(xwsnow_gr)))
170 ALLOCATE(zpatch(
SIZE(tgrp%XVEGTYPE,1),1))
171 ALLOCATE(zvegtype_patch(
SIZE(tgrp%XVEGTYPE,1),
SIZE(tgrp%XVEGTYPE,2),1))
174 zvegtype_patch(:,:,1) = tgrp%XVEGTYPE(:,:)
179 yfilepgd, yfilepgdtype, &
180 iluout,gunif_snow, 1, kpatch, &
181 SIZE(tg%XLAT),tgr%CUR%TSNOW, top%TTIME, &
182 xwsnow_gr, xrsnow_gr, xtsnow_gr,&
183 xlwcsnow_gr, xasnow_gr, &
184 lsnow_ideal_gr, zsg1snow, &
185 zsg2snow, zhistsnow, xagesnow_gr, &
186 tgrp%XVEGTYPE,zvegtype_patch, zpatch )
189 DEALLOCATE(zhistsnow)
191 DEALLOCATE(zvegtype_patch)
192 IF (lhook) CALL dr_hook(
'PREP_HOR_TEB_GREENROOF_FIELD',1,zhook_handle)
202 ELSE IF (yfiletype==
'ASCLLV')
THEN
204 hprogram,hsurf,iluout,zfieldin)
205 ELSE IF (yfiletype==
'GRIB ')
THEN
207 ELSE IF (yfiletype==
'MESONH' .OR. yfiletype==
'ASCII ' .OR. yfiletype==
'LFI '.OR. yfiletype==
'FA ')
THEN
209 hprogram,hsurf,yfile,yfiletype,yfilepgd,yfilepgdtype,iluout,kpatch,zfieldin)
210 ELSE IF (yfiletype==
'BUFFER')
THEN
213 CALL
abor1_sfx(
'PREP_HOR_TEB_GREENROOF_FIELD: data file type not supported : '//yfiletype)
220 inl =
SIZE(zfieldin,2)
221 inp =
SIZE(zfieldin,3)
223 ALLOCATE(zfieldoutp(ini,inl,inp))
224 ALLOCATE(zfield(
SIZE(zfieldin,1),inl))
227 zfield=zfieldin(:,:,jpatch)
228 IF (inp==nvegtype) linterp = (tgrp%XVEGTYPE(:,jpatch) > 0.)
230 iluout,zfield,zfieldoutp(:,:,jpatch))
236 ALLOCATE(zfieldoutv(ini,inl,nvegtype))
240 DEALLOCATE(zfieldoutp)
246 ALLOCATE(zw(ini,inl))
248 DO jvegtype=1,nvegtype
249 DO jlayer=1,
SIZE(zw,2)
250 zw(:,jlayer) = zw(:,jlayer) + tgrp%XVEGTYPE(:,jvegtype) * zfieldoutv(:,jlayer,jvegtype)
257 DEALLOCATE(zfieldin )
258 DEALLOCATE(zfieldoutv)
270 ALLOCATE(zf(ini,tgro%NLAYER_GR))
276 ALLOCATE(tgr%CUR%XWG(ini,tgro%NLAYER_GR))
277 tgr%CUR%XWG(:,:) = tgrp%XWWILT + zf(:,:) * (tgrp%XWFC-tgrp%XWWILT)
278 tgr%CUR%XWG(:,:) = max(min(tgr%CUR%XWG(:,:),tgrp%XWSAT),xwgmin)
280 WHERE(zf(:,:)==xundef)tgr%CUR%XWG(:,:)=xundef
287 ALLOCATE(zf(ini,tgro%NLAYER_GR))
293 ALLOCATE(tgr%CUR%XWGI(ini,tgro%NLAYER_GR))
294 tgr%CUR%XWGI(:,:) = zf(:,:) * tgrp%XWSAT
295 tgr%CUR%XWGI(:,:) = max(min(tgr%CUR%XWGI(:,:),tgrp%XWSAT),0.)
297 WHERE(zf(:,:)==xundef)tgr%CUR%XWGI(:,:)=xundef
305 ALLOCATE(tgr%CUR%XTG(ini,iwork))
306 ALLOCATE(zdg(
SIZE(tgrp%XDG,1),iwork))
308 zdg(:,:) = tgrp%XDG(:,:)
315 ALLOCATE(tgr%CUR%XWR(ini))
316 tgr%CUR%XWR(:) = zw(:,1)
322 WHERE (zw(:,1)/=xundef) tgrpe%CUR%XLAI(:) = zw(:,1)
329 IF (lhook) CALL dr_hook(
'PREP_HOR_TEB_GREENROOF_FIELD',1,zhook_handle)
343 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt1
344 REAL,
DIMENSION(:),
INTENT(IN) :: pgrid1
345 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd2
346 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pt2
349 REAL,
DIMENSION(SIZE(PT1,1),SIZE(PT1,2)) :: zd1
351 INTEGER :: ilayer1, ilayer2
352 REAL(KIND=JPRB) :: zhook_handle
356 IF (lhook) CALL dr_hook(
'INIT_FROM_REF_GRID',0,zhook_handle)
358 IF (
SIZE(pt1,2)==3)
THEN
366 DO jl=2,tgro%NLAYER_GR
371 DO jl=2,tgro%NLAYER_GR
372 IF(tgrp%XROOTFRAC(ji,jl)<=1.0)
THEN
373 pt2(ji,jl) = pt1(ji,2)
387 zd1(:,jl) = pgrid1(jl)
396 IF (lhook) CALL dr_hook(
'INIT_FROM_REF_GRID',1,zhook_handle)
subroutine prep_teb_greenroof_buffer(HPROGRAM, HSURF, KLUOUT, PFIELD)
subroutine init_from_ref_grid(PGRID1, PT1, PD2, PT2)
subroutine read_prep_greenroof_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, OUNIF)
subroutine prep_hor_teb_greenroof_field(DTCO, IG, I, UG, U, USS, TGR, TGRO, TGRPE, TGRP, TG, TOP, HPROGRAM, HSURF, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KPATCH)
subroutine prep_teb_greenroof_ascllv(DTCO, UG, U, USS, HPROGRAM, HSURF, KLUOUT, PFIELD)
subroutine abor1_sfx(YTEXT)
subroutine prep_teb_greenroof_unif(KLUOUT, HSURF, PFIELD)
subroutine hor_interpol(DTCO, U, KLUOUT, PFIELDIN, PFIELDOUT)
subroutine prep_teb_greenroof_grib(HPROGRAM, HSURF, HFILE, KLUOUT, PFIELD)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine put_on_all_vegtypes(KNI, KLAYER, KPATCH, KVEGTYPE, PFIELD_PATCH, PFIELD_VEGTYPE)
subroutine prep_hor_snow_fields(DTCO, IG, U, HPROGRAM, HSURF, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, KLUOUT, OUNIF, KPATCH, KTEB_PATCH, KL, TPSNOW, TPTIME, PUNIF_WSNOW, PUNIF_RSNOW, PUNIF_TSNOW, PUNIF_LWCSNOW, PUNIF_ASNOW, OSNOW_IDEAL, PUNIF_SG1SNOW, PUNIF_SG2SNOW, PUNIF_HISTSNOW, PUNIF_AGESNOW, PVEGTYPE, PVEGTYPE_PATCH, PPATCH, OKEY)
subroutine prep_teb_greenroof_extern(DTCO, I, U, HPROGRAM, HSURF, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, KLUOUT, KPATCH, PFIELD)
subroutine read_prep_teb_greenroof_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT, OUNIF)