58 USE modi_open_namelist
59 USE modi_close_namelist
66 USE yomhook
,ONLY : lhook, dr_hook
67 USE parkind1
,ONLY : jprb
82 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
91 LOGICAL :: gno_par_garden
98 INTEGER,
PARAMETER :: nground_max = 20
99 INTEGER,
PARAMETER :: nvegtype_max = 19
100 INTEGER,
PARAMETER :: ntime_max = 12
104 CHARACTER(LEN=4) :: ctyp_garden_hveg
105 CHARACTER(LEN=4) :: ctyp_garden_lveg
106 CHARACTER(LEN=4) :: ctyp_garden_nveg
110 REAL :: xunif_frac_hveg
111 REAL :: xunif_frac_lveg
112 REAL :: xunif_frac_nveg
113 REAL,
DIMENSION(NTIME_MAX) :: xunif_lai_hveg
114 REAL,
DIMENSION(NTIME_MAX) :: xunif_lai_lveg
119 CHARACTER(LEN=28) :: cfnam_frac_hveg
120 CHARACTER(LEN=28) :: cfnam_frac_lveg
121 CHARACTER(LEN=28) :: cfnam_frac_nveg
122 CHARACTER(LEN=28),
DIMENSION(NTIME_MAX) :: cfnam_lai_hveg
123 CHARACTER(LEN=28),
DIMENSION(NTIME_MAX) :: cfnam_lai_lveg
124 CHARACTER(LEN=28) :: cfnam_h_hveg
128 CHARACTER(LEN=28) :: cftyp_frac_hveg
129 CHARACTER(LEN=28) :: cftyp_frac_lveg
130 CHARACTER(LEN=28) :: cftyp_frac_nveg
131 CHARACTER(LEN=28),
DIMENSION(NTIME_MAX) :: cftyp_lai_hveg
132 CHARACTER(LEN=28),
DIMENSION(NTIME_MAX) :: cftyp_lai_lveg
133 CHARACTER(LEN=28) :: cftyp_h_hveg
135 REAL(KIND=JPRB) :: zhook_handle
137 namelist/nam_data_teb_garden/ ntime_gd, &
138 ctyp_garden_hveg, ctyp_garden_lveg, &
140 xunif_frac_hveg, xunif_frac_lveg, xunif_frac_nveg, &
141 xunif_lai_hveg , xunif_lai_lveg , &
143 cfnam_frac_hveg, cfnam_frac_lveg, cfnam_frac_nveg, &
144 cfnam_lai_hveg , cfnam_lai_lveg , &
146 cftyp_frac_hveg, cftyp_frac_lveg, cftyp_frac_nveg, &
147 cftyp_lai_hveg , cftyp_lai_lveg , &
155 IF (lhook) CALL dr_hook(
'PGD_TEB_GARDEN_PAR',0,zhook_handle)
159 ctyp_garden_hveg =
'TEBD'
160 ctyp_garden_lveg =
'PARK'
161 ctyp_garden_nveg =
'NO '
163 xunif_frac_hveg = xundef
164 xunif_frac_lveg = xundef
165 xunif_frac_nveg = xundef
166 xunif_lai_hveg = xundef
167 xunif_lai_lveg = xundef
168 xunif_h_hveg = xundef
170 cfnam_frac_hveg =
' '
171 cfnam_frac_lveg =
' '
172 cfnam_frac_nveg =
' '
177 cftyp_frac_hveg =
' '
178 cftyp_frac_lveg =
' '
179 cftyp_frac_nveg =
' '
194 CALL
posnam(ilunam,
'NAM_DATA_TEB_GARDEN',gfound,iluout)
195 IF (gfound)
READ(unit=ilunam,nml=nam_data_teb_garden)
199 IF (ntime_gd==1)
THEN
200 xunif_lai_hveg(2:) = xunif_lai_hveg(1)
201 xunif_lai_lveg(2:) = xunif_lai_lveg(1)
202 ELSE IF (ntime_gd/=12)
THEN
203 CALL
abor1_sfx(
'Namelist NAM_DATA_TEB_GARDEN: NTIME_GD must be equal to 1 or 12')
210 gdm%TGDO%LPAR_GARDEN = (xunif_frac_hveg /= xundef .OR. len_trim(cfnam_frac_hveg) >0 )&
211 .AND. (xunif_frac_lveg /= xundef .OR. len_trim(cfnam_frac_lveg) >0 )&
212 .AND. (xunif_frac_nveg /= xundef .OR. len_trim(cfnam_frac_nveg) >0 )
214 gno_par_garden = (xunif_frac_hveg == xundef .AND. len_trim(cfnam_frac_hveg)==0)&
215 .AND. (xunif_frac_lveg == xundef .AND. len_trim(cfnam_frac_lveg)==0)&
216 .AND. (xunif_frac_nveg == xundef .AND. len_trim(cfnam_frac_nveg)==0)
218 IF ( .NOT. gdm%TGDO%LPAR_GARDEN .AND. .NOT. gno_par_garden )
THEN
219 WRITE(iluout,*)
' Error for fraction of high, low and no vegetation fractions in gardens '
220 WRITE(iluout,*)
' You need to specify the three of them ... or none. '
221 CALL
abor1_sfx(
'Namelist NAM_DATA_TEB_GARDEN: you need to specify all of HVEG, LVEG, NVEG fractions or NONE of them')
224 IF (gno_par_garden)
THEN
225 IF (lhook) CALL dr_hook(
'PGD_TEB_GARDEN_PAR',1,zhook_handle)
231 gdm%DTGD%NTIME = ntime_gd
233 ALLOCATE(gdm%DTGD%XDATA_FRAC_HVEG (tg%NDIM ))
234 ALLOCATE(gdm%DTGD%XDATA_FRAC_LVEG (tg%NDIM ))
235 ALLOCATE(gdm%DTGD%XDATA_FRAC_NVEG (tg%NDIM ))
236 ALLOCATE(gdm%DTGD%XDATA_LAI_HVEG (tg%NDIM,gdm%DTGD%NTIME))
237 ALLOCATE(gdm%DTGD%XDATA_LAI_LVEG (tg%NDIM,gdm%DTGD%NTIME))
238 ALLOCATE(gdm%DTGD%XDATA_H_HVEG (tg%NDIM ))
240 gdm%TGDP%CTYPE_HVEG = ctyp_garden_hveg
241 gdm%TGDP%CTYPE_LVEG = ctyp_garden_lveg
242 gdm%TGDP%CTYPE_NVEG = ctyp_garden_nveg
252 hprogram,
'FRAC_HVEG: fraction of high vegetation',
'TWN',cfnam_frac_hveg, &
253 cftyp_frac_hveg,xunif_frac_hveg,gdm%DTGD%XDATA_FRAC_HVEG(:))
256 hprogram,
'FRAC_LVEG: fraction of low vegetation' ,
'TWN',cfnam_frac_lveg, &
257 cftyp_frac_lveg,xunif_frac_lveg,gdm%DTGD%XDATA_FRAC_LVEG(:))
260 hprogram,
'FRAC_NVEG: fraction of bare soil' ,
'TWN',cfnam_frac_nveg, &
261 cftyp_frac_nveg,xunif_frac_nveg,gdm%DTGD%XDATA_FRAC_NVEG(:))
264 DO jtime=1,gdm%DTGD%NTIME
267 hprogram,
'LAI_HVEG: LAI of high vegetation',
'TWN',cfnam_lai_hveg(jtime), &
268 cftyp_lai_hveg(jtime),xunif_lai_hveg(jtime),gdm%DTGD%XDATA_LAI_HVEG(:,jtime))
271 hprogram,
'LAI_LVEG: LAI of low vegetation',
'TWN',cfnam_lai_lveg(jtime), &
272 cftyp_lai_lveg(jtime),xunif_lai_lveg(jtime),gdm%DTGD%XDATA_LAI_LVEG(:,jtime))
279 hprogram,
'H_HVEG: height of trees',
'TWN',cfnam_h_hveg, &
280 cftyp_h_hveg,xunif_h_hveg,gdm%DTGD%XDATA_H_HVEG(:))
281 IF (lhook) CALL dr_hook(
'PGD_TEB_GARDEN_PAR',1,zhook_handle)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine pgd_teb_garden_par(DTCO, UG, U, USS, TG, GDM, HPROGRAM)