57 USE modi_open_namelist
58 USE modi_close_namelist
65 USE yomhook
,ONLY : lhook, dr_hook
66 USE parkind1
,ONLY : jprb
81 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
90 LOGICAL :: gno_par_gd_irrig
91 LOGICAL :: gno_par_gr_irrig
92 LOGICAL :: gno_par_rd_irrig
101 REAL :: xunif_gd_start_month
102 REAL :: xunif_gd_end_month
103 REAL :: xunif_gd_start_hour
104 REAL :: xunif_gd_end_hour
105 REAL :: xunif_gd_24h_irrig
106 REAL :: xunif_gr_start_month
107 REAL :: xunif_gr_end_month
108 REAL :: xunif_gr_start_hour
109 REAL :: xunif_gr_end_hour
110 REAL :: xunif_gr_24h_irrig
111 REAL :: xunif_rd_start_month
112 REAL :: xunif_rd_end_month
113 REAL :: xunif_rd_start_hour
114 REAL :: xunif_rd_end_hour
115 REAL :: xunif_rd_24h_irrig
119 CHARACTER(LEN=28) :: cfnam_gd_start_month
120 CHARACTER(LEN=28) :: cfnam_gd_end_month
121 CHARACTER(LEN=28) :: cfnam_gd_start_hour
122 CHARACTER(LEN=28) :: cfnam_gd_end_hour
123 CHARACTER(LEN=28) :: cfnam_gd_24h_irrig
124 CHARACTER(LEN=28) :: cfnam_gr_start_month
125 CHARACTER(LEN=28) :: cfnam_gr_end_month
126 CHARACTER(LEN=28) :: cfnam_gr_start_hour
127 CHARACTER(LEN=28) :: cfnam_gr_end_hour
128 CHARACTER(LEN=28) :: cfnam_gr_24h_irrig
129 CHARACTER(LEN=28) :: cfnam_rd_start_month
130 CHARACTER(LEN=28) :: cfnam_rd_end_month
131 CHARACTER(LEN=28) :: cfnam_rd_start_hour
132 CHARACTER(LEN=28) :: cfnam_rd_end_hour
133 CHARACTER(LEN=28) :: cfnam_rd_24h_irrig
137 CHARACTER(LEN=28) :: cftyp_gd_start_month
138 CHARACTER(LEN=28) :: cftyp_gd_end_month
139 CHARACTER(LEN=28) :: cftyp_gd_start_hour
140 CHARACTER(LEN=28) :: cftyp_gd_end_hour
141 CHARACTER(LEN=28) :: cftyp_gd_24h_irrig
142 CHARACTER(LEN=28) :: cftyp_gr_start_month
143 CHARACTER(LEN=28) :: cftyp_gr_end_month
144 CHARACTER(LEN=28) :: cftyp_gr_start_hour
145 CHARACTER(LEN=28) :: cftyp_gr_end_hour
146 CHARACTER(LEN=28) :: cftyp_gr_24h_irrig
147 CHARACTER(LEN=28) :: cftyp_rd_start_month
148 CHARACTER(LEN=28) :: cftyp_rd_end_month
149 CHARACTER(LEN=28) :: cftyp_rd_start_hour
150 CHARACTER(LEN=28) :: cftyp_rd_end_hour
151 CHARACTER(LEN=28) :: cftyp_rd_24h_irrig
153 REAL(KIND=JPRB) :: zhook_handle
155 namelist/nam_data_teb_irrig / xunif_gd_start_month, &
156 xunif_gd_end_month, &
157 xunif_gd_start_hour, &
159 xunif_gd_24h_irrig, &
160 xunif_gr_start_month, &
161 xunif_gr_end_month, &
162 xunif_gr_start_hour, &
164 xunif_gr_24h_irrig, &
165 xunif_rd_start_month, &
166 xunif_rd_end_month, &
167 xunif_rd_start_hour, &
169 xunif_rd_24h_irrig, &
170 cfnam_gd_start_month, &
171 cfnam_gd_end_month , &
172 cfnam_gd_start_hour, &
174 cfnam_gd_24h_irrig, &
175 cfnam_gr_start_month, &
176 cfnam_gr_end_month , &
177 cfnam_gr_start_hour, &
179 cfnam_gr_24h_irrig, &
180 cfnam_rd_start_month, &
181 cfnam_rd_end_month , &
182 cfnam_rd_start_hour, &
184 cfnam_rd_24h_irrig, &
185 cftyp_gd_start_month, &
186 cftyp_gd_end_month, &
187 cftyp_gd_start_hour, &
189 cftyp_gd_24h_irrig, &
190 cftyp_gr_start_month, &
191 cftyp_gr_end_month, &
192 cftyp_gr_start_hour, &
194 cftyp_gr_24h_irrig, &
195 cftyp_rd_start_month, &
196 cftyp_rd_end_month, &
197 cftyp_rd_start_hour, &
206 IF (lhook) CALL dr_hook(
'PGD_TEB_IRRIG',0,zhook_handle)
209 xunif_gd_start_month= xundef
210 xunif_gd_end_month = xundef
211 xunif_gd_start_hour = xundef
212 xunif_gd_end_hour = xundef
213 xunif_gd_24h_irrig = xundef
214 xunif_gr_start_month= xundef
215 xunif_gr_end_month = xundef
216 xunif_gr_start_hour = xundef
217 xunif_gr_end_hour = xundef
218 xunif_gr_24h_irrig = xundef
219 xunif_rd_start_month= xundef
220 xunif_rd_end_month = xundef
221 xunif_rd_start_hour = xundef
222 xunif_rd_end_hour = xundef
223 xunif_rd_24h_irrig = xundef
225 cfnam_gd_start_month =
' '
226 cfnam_gd_end_month =
' '
227 cfnam_gd_start_hour =
' '
228 cfnam_gd_end_hour =
' '
229 cfnam_gd_24h_irrig =
' '
230 cfnam_gr_start_month =
' '
231 cfnam_gr_end_month =
' '
232 cfnam_gr_start_hour =
' '
233 cfnam_gr_end_hour =
' '
234 cfnam_gr_24h_irrig =
' '
235 cfnam_rd_start_month =
' '
236 cfnam_rd_end_month =
' '
237 cfnam_rd_start_hour =
' '
238 cfnam_rd_end_hour =
' '
239 cfnam_rd_24h_irrig =
' '
241 cftyp_gd_start_month =
' '
242 cftyp_gd_end_month =
' '
243 cftyp_gd_start_hour =
' '
244 cftyp_gd_end_hour =
' '
245 cftyp_gd_24h_irrig =
' '
246 cftyp_gr_start_month =
' '
247 cftyp_gr_end_month =
' '
248 cftyp_gr_start_hour =
' '
249 cftyp_gr_end_hour =
' '
250 cftyp_gr_24h_irrig =
' '
251 cftyp_rd_start_month =
' '
252 cftyp_rd_end_month =
' '
253 cftyp_rd_start_hour =
' '
254 cftyp_rd_end_hour =
' '
255 cftyp_rd_24h_irrig =
' '
264 CALL
posnam(ilunam,
'NAM_DATA_TEB_IRRIG',gfound,iluout)
265 IF (gfound)
READ(unit=ilunam,nml=nam_data_teb_irrig)
274 tir%LPAR_GD_IRRIG = (xunif_gd_start_month /= xundef .OR. len_trim(cfnam_gd_start_month) >0 )&
275 .AND. (xunif_gd_end_month /= xundef .OR. len_trim(cfnam_gd_end_month ) >0 )&
276 .AND. (xunif_gd_start_hour /= xundef .OR. len_trim(cfnam_gd_start_hour ) >0 )&
277 .AND. (xunif_gd_end_hour /= xundef .OR. len_trim(cfnam_gd_end_hour ) >0 )&
278 .AND. (xunif_gd_24h_irrig /= xundef .OR. len_trim(cfnam_gd_24h_irrig ) >0 )
280 gno_par_gd_irrig = (xunif_gd_start_month == xundef .AND. len_trim(cfnam_gd_start_month)==0 )&
281 .AND. (xunif_gd_end_month == xundef .AND. len_trim(cfnam_gd_end_month )==0 )&
282 .AND. (xunif_gd_start_hour == xundef .AND. len_trim(cfnam_gd_start_hour )==0 )&
283 .AND. (xunif_gd_end_hour == xundef .AND. len_trim(cfnam_gd_end_hour )==0 )&
284 .AND. (xunif_gd_24h_irrig == xundef .AND. len_trim(cfnam_gd_24h_irrig )==0 )
286 IF ( .NOT. tir%LPAR_GD_IRRIG .AND. .NOT. gno_par_gd_irrig)
THEN
287 WRITE(iluout,*)
' Error for prescription of irrigation in gardens '
288 WRITE(iluout,*)
' You need to specify the five parameters ... or none. '
289 CALL
abor1_sfx(
'Namelist NAM_DATA_TEB_IRRIG: you need to specify ALL of parameters for GARDEN or NONE of them')
293 IF (tir%LPAR_GD_IRRIG)
THEN
295 ALLOCATE(tir%XGD_START_MONTH (tg%NDIM ))
296 ALLOCATE(tir%XGD_END_MONTH (tg%NDIM ))
297 ALLOCATE(tir%XGD_START_HOUR (tg%NDIM ))
298 ALLOCATE(tir%XGD_END_HOUR (tg%NDIM ))
299 ALLOCATE(tir%XGD_24H_IRRIG (tg%NDIM ))
309 hprogram,
'GD_START_MONTH : start month for irrigation of gardens',
'TWN',cfnam_gd_start_month, &
310 cftyp_gd_start_month,xunif_gd_start_month,tir%XGD_START_MONTH(:))
312 hprogram,
'GD_END_MONTH : end month for irrigation of gardens',
'TWN',cfnam_gd_end_month, &
313 cftyp_gd_end_month ,xunif_gd_end_month ,tir%XGD_END_MONTH (:))
315 hprogram,
'GD_START_HOUR : start HOUR for irrigation of gardens',
'TWN',cfnam_gd_start_hour , &
316 cftyp_gd_start_hour ,xunif_gd_start_hour ,tir%XGD_START_HOUR (:))
318 hprogram,
'GD_END_HOUR : end HOUR for irrigation of gardens',
'TWN',cfnam_gd_end_hour , &
319 cftyp_gd_end_hour ,xunif_gd_end_hour ,tir%XGD_END_HOUR (:))
322 hprogram,
'GD_24H_IRRIG : total irrigation over 24h for gardens',
'TWN',cfnam_gd_24h_irrig , &
323 cftyp_gd_24h_irrig ,xunif_gd_24h_irrig ,tir%XGD_24H_IRRIG (:))
332 tir%LPAR_GR_IRRIG = (xunif_gr_start_month /= xundef .OR. len_trim(cfnam_gr_start_month) >0 )&
333 .AND. (xunif_gr_end_month /= xundef .OR. len_trim(cfnam_gr_end_month ) >0 )&
334 .AND. (xunif_gr_start_hour /= xundef .OR. len_trim(cfnam_gr_start_hour ) >0 )&
335 .AND. (xunif_gr_end_hour /= xundef .OR. len_trim(cfnam_gr_end_hour ) >0 )&
336 .AND. (xunif_gr_24h_irrig /= xundef .OR. len_trim(cfnam_gr_24h_irrig ) >0 )
338 gno_par_gr_irrig = (xunif_gr_start_month == xundef .AND. len_trim(cfnam_gr_start_month)==0 )&
339 .AND. (xunif_gr_end_month == xundef .AND. len_trim(cfnam_gr_end_month )==0 )&
340 .AND. (xunif_gr_start_hour == xundef .AND. len_trim(cfnam_gr_start_hour )==0 )&
341 .AND. (xunif_gr_end_hour == xundef .AND. len_trim(cfnam_gr_end_hour )==0 )&
342 .AND. (xunif_gr_24h_irrig == xundef .AND. len_trim(cfnam_gr_24h_irrig )==0 )
344 IF ( .NOT. tir%LPAR_GR_IRRIG .AND. .NOT. gno_par_gr_irrig)
THEN
345 WRITE(iluout,*)
' Error for prescription of irrigation in greenroofs '
346 WRITE(iluout,*)
' You need to specify the five parameters ... or none. '
347 CALL
abor1_sfx(
'Namelist NAM_DATA_TEB_IRRIG: you need to specify ALL of parameters for GREENROOFS or NONE of them')
351 IF (tir%LPAR_GR_IRRIG)
THEN
353 ALLOCATE(tir%XGR_START_MONTH (tg%NDIM ))
354 ALLOCATE(tir%XGR_END_MONTH (tg%NDIM ))
355 ALLOCATE(tir%XGR_START_HOUR (tg%NDIM ))
356 ALLOCATE(tir%XGR_END_HOUR (tg%NDIM ))
357 ALLOCATE(tir%XGR_24H_IRRIG (tg%NDIM ))
367 hprogram,
'GR_START_MONTH : start month for irrigation of greenroofs',
'TWN',cfnam_gr_start_month, &
368 cftyp_gr_start_month,xunif_gr_start_month,tir%XGR_START_MONTH(:))
370 hprogram,
'GR_END_MONTH : end month for irrigation of greenroofs',
'TWN',cfnam_gr_end_month, &
371 cftyp_gr_end_month ,xunif_gr_end_month ,tir%XGR_END_MONTH (:))
373 hprogram,
'GR_START_HOUR : start HOUR for irrigation of greenroofs',
'TWN',cfnam_gr_start_hour , &
374 cftyp_gr_start_hour ,xunif_gr_start_hour ,tir%XGR_START_HOUR (:))
376 hprogram,
'GR_END_HOUR : end HOUR for irrigation of greenroofs',
'TWN',cfnam_gr_end_hour , &
377 cftyp_gr_end_hour ,xunif_gr_end_hour ,tir%XGR_END_HOUR (:))
380 hprogram,
'GR_24H_IRRIG : total irrigation over 24h for greenroofs',
'TWN',cfnam_gr_24h_irrig , &
381 cftyp_gr_24h_irrig ,xunif_gr_24h_irrig ,tir%XGR_24H_IRRIG (:))
389 tir%LPAR_RD_IRRIG = (xunif_rd_start_month /= xundef .OR. len_trim(cfnam_rd_start_month) >0 )&
390 .AND. (xunif_rd_end_month /= xundef .OR. len_trim(cfnam_rd_end_month ) >0 )&
391 .AND. (xunif_rd_start_hour /= xundef .OR. len_trim(cfnam_rd_start_hour ) >0 )&
392 .AND. (xunif_rd_end_hour /= xundef .OR. len_trim(cfnam_rd_end_hour ) >0 )&
393 .AND. (xunif_rd_24h_irrig /= xundef .OR. len_trim(cfnam_rd_24h_irrig ) >0 )
395 gno_par_rd_irrig = (xunif_rd_start_month == xundef .AND. len_trim(cfnam_rd_start_month)==0 )&
396 .AND. (xunif_rd_end_month == xundef .AND. len_trim(cfnam_rd_end_month )==0 )&
397 .AND. (xunif_rd_start_hour == xundef .AND. len_trim(cfnam_rd_start_hour )==0 )&
398 .AND. (xunif_rd_end_hour == xundef .AND. len_trim(cfnam_rd_end_hour )==0 )&
399 .AND. (xunif_rd_24h_irrig == xundef .AND. len_trim(cfnam_rd_24h_irrig )==0 )
401 IF ( .NOT. tir%LPAR_RD_IRRIG .AND. .NOT. gno_par_rd_irrig)
THEN
402 WRITE(iluout,*)
' Error for prescription of irrigation on roads '
403 WRITE(iluout,*)
' You need to specify the five parameters ... or none. '
404 CALL
abor1_sfx(
'Namelist NAM_DATA_TEB_IRRIG: you need to specify ALL of parameters for ROADS or NONE of them')
408 IF (tir%LPAR_RD_IRRIG)
THEN
410 ALLOCATE(tir%XRD_START_MONTH (tg%NDIM ))
411 ALLOCATE(tir%XRD_END_MONTH (tg%NDIM ))
412 ALLOCATE(tir%XRD_START_HOUR (tg%NDIM ))
413 ALLOCATE(tir%XRD_END_HOUR (tg%NDIM ))
414 ALLOCATE(tir%XRD_24H_IRRIG (tg%NDIM ))
424 hprogram,
'RD_START_MONTH : start month for irrigation of roads',
'TWN',cfnam_rd_start_month, &
425 cftyp_rd_start_month,xunif_rd_start_month,tir%XRD_START_MONTH(:))
427 hprogram,
'RD_END_MONTH : end month for irrigation of roads',
'TWN',cfnam_rd_end_month, &
428 cftyp_rd_end_month ,xunif_rd_end_month ,tir%XRD_END_MONTH (:))
430 hprogram,
'RD_START_HOUR : start HOUR for irrigation of roads',
'TWN',cfnam_rd_start_hour , &
431 cftyp_rd_start_hour ,xunif_rd_start_hour ,tir%XRD_START_HOUR (:))
433 hprogram,
'RD_END_HOUR : end HOUR for irrigation of roads',
'TWN',cfnam_rd_end_hour , &
434 cftyp_rd_end_hour ,xunif_rd_end_hour ,tir%XRD_END_HOUR (:))
437 hprogram,
'RD_24H_IRRIG : total irrigation over 24h for roads',
'TWN',cfnam_rd_24h_irrig , &
438 cftyp_rd_24h_irrig ,xunif_rd_24h_irrig ,tir%XRD_24H_IRRIG (:))
444 IF (lhook) CALL dr_hook(
'PGD_TEB_IRRIG',1,zhook_handle)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine abor1_sfx(YTEXT)
subroutine pgd_teb_irrig(DTCO, UG, U, USS, TG, TIR, HPROGRAM)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)