6 SUBROUTINE teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, &
7 pstart_month, pend_month, pstart_hour, pend_hour,&
48 USE yomhook
,ONLY : lhook, dr_hook
49 USE parkind1
,ONLY : jprb
56 LOGICAL,
INTENT(IN) :: oirrig
57 REAL,
INTENT(IN) :: ptstep
58 INTEGER,
INTENT(IN) :: kmonth
59 REAL,
DIMENSION(:),
INTENT(IN) :: psolar_time
60 REAL,
DIMENSION(:),
INTENT(IN) :: pstart_month
61 REAL,
DIMENSION(:),
INTENT(IN) :: pend_month
62 REAL,
DIMENSION(:),
INTENT(IN) :: pstart_hour
63 REAL,
DIMENSION(:),
INTENT(IN) :: pend_hour
64 REAL,
DIMENSION(:),
INTENT(IN) :: p24h_irrig
65 REAL,
DIMENSION(:),
INTENT(OUT) :: pirrig
67 REAL(KIND=JPRB) :: zhook_handle
71 LOGICAL,
DIMENSION(SIZE(PIRRIG)):: gmonth
72 LOGICAL,
DIMENSION(SIZE(PIRRIG)):: ghour
73 REAL,
DIMENSION(SIZE(PIRRIG)):: zduration
76 IF (lhook) CALL dr_hook(
'TEB_IRRIG',0,zhook_handle)
83 IF (.NOT. oirrig)
THEN
84 IF (lhook) CALL dr_hook(
'TEB_IRRIG',1,zhook_handle)
93 WHERE (pstart_month <= pend_month)
94 gmonth = kmonth>=pstart_month .AND. kmonth<= pend_month
97 gmonth = kmonth>=pstart_month .OR. kmonth<= pend_month
108 WHERE (pstart_hour <= pend_hour)
109 ghour = psolar_time+ptstep>=pstart_hour*3600. .AND. psolar_time<=pend_hour*3600.
110 zduration = 3600.* (pend_hour-pstart_hour)
113 ghour = psolar_time+ptstep>=pstart_hour*3600. .OR. psolar_time< pend_hour*3600.
114 zduration = 3600.* (pend_hour + 24.-pstart_hour)
123 zduration = max(zduration, ptstep)
126 WHERE(gmonth(:) .AND. ghour(:)) pirrig(:) = p24h_irrig(:) / zduration(:)
129 IF (lhook) CALL dr_hook(
'TEB_IRRIG',1,zhook_handle)
subroutine teb_irrig(OIRRIG, PTSTEP, KMONTH, PSOLAR_TIME, PSTART_MONTH, PEND_MONTH, PSTART_HOUR, PEND_HOUR, P24H_IRRIG, PIRRIG)