SURFEX v8.1
General documentation of Surfex
read_forcing_date.F90
Go to the documentation of this file.
1 ! ######
2 SUBROUTINE read_forcing_date(KLISTING,HFILE,KNB_TSTEP_RUN, &
3  KYEAR,KMONTH,KDAY,PTIME )
4 !#############################################################
5 !
6 USE modd_trip_par, ONLY : lncprint
7 !
10 !
11 USE modi_abort_trip
12 !
13 USE yomhook ,ONLY : lhook, dr_hook
14 USE parkind1 ,ONLY : jprb
15 !
16 USE netcdf
17 !
18 IMPLICIT NONE
19 !
20 !* 0.1 Declarations of arguments
21 !
22 INTEGER, INTENT(IN) :: KLISTING
23  CHARACTER(LEN=*), INTENT(IN) :: HFILE
24 INTEGER, INTENT(IN) :: KNB_TSTEP_RUN
25 !
26 INTEGER, INTENT(OUT) :: KYEAR
27 INTEGER, INTENT(OUT) :: KMONTH
28 INTEGER, INTENT(OUT) :: KDAY
29 REAL, INTENT(OUT) :: PTIME
30 !
31 !* 0.2 Declarations of local variables
32 !
33  CHARACTER(LEN=NF90_MAX_NAME) :: YFNAME
34  CHARACTER(LEN=NF90_MAX_NAME) :: YVAR
35  CHARACTER(LEN=NF90_MAX_NAME) :: YUNITS
36 !
37 REAL, DIMENSION(KNB_TSTEP_RUN) :: ZTIME
38 !
39 INTEGER :: IFILE_ID
40 INTEGER :: IVAR_ID
41 INTEGER :: IRET
42 !
43 REAL(KIND=JPRB) :: ZHOOK_HANDLE
44 !
45 !-------------------------------------------------------------------------------
46 IF (lhook) CALL dr_hook('READ_FORCING_DATE',0,zhook_handle)
47 !
48 yfname = hfile(1:len_trim(hfile))
49 yvar = 'time'
50 !
51 iret=nf90_open(yfname,nf90_nowrite,ifile_id)
52 IF(iret/=nf90_noerr)THEN
53  WRITE(klisting,*)'READ_FORCING_DATE : error in NF90_OPEN'
54  CALL abort_trip('READ_FORCING_DATE : error in NF90_OPEN')
55 ENDIF
56 !
57 iret=nf90_inq_varid(ifile_id,yvar,ivar_id)
58 IF(iret/=nf90_noerr)THEN
59  WRITE(klisting,*)'READ_FORCING_DATE : error in NF90_INQ_VARID'
60  CALL abort_trip('READ_FORCING_DATE : error in NF90_INQ_VARID')
61 ENDIF
62 !
63 iret=nf90_get_att(ifile_id,ivar_id,'units',yunits)
64 IF(iret/=nf90_noerr)THEN
65  WRITE(klisting,*)'READ_FORCING_DATE : error in NF90_GET_ATT'
66  CALL abort_trip('READ_FORCING_DATE : error in NF90_GET_ATT')
67 ENDIF
68 !
69  CALL ncread(klisting,ifile_id,yvar,ztime,lncprint)
70 !
71 iret=nf90_close(ifile_id)
72 IF(iret/=nf90_noerr)THEN
73  WRITE(klisting,*)'READ_FORCING_DATE : error in NF90_CLOSE'
74  CALL abort_trip('READ_FORCING_DATE : error in NF90_CLOSE')
75 ENDIF
76 !
77  CALL read_date(ztime,yunits,kyear,kmonth,kday,ptime)
78 !
79 IF (lhook) CALL dr_hook('READ_FORCING_DATE',1,zhook_handle)
80 !-------------------------------------------------------------------------------
81 END SUBROUTINE read_forcing_date
subroutine read_forcing_date(KLISTING, HFILE, KNB_TSTEP_RUN, KYEAR, KMONTH, KDAY, PTIME)
integer, parameter jprb
Definition: parkind1.F90:32
logical, save lncprint
subroutine read_date(PTIME, HUNITS, KYEAR, KMONTH, KDAY, PTIME_DATE)
logical lhook
Definition: yomhook.F90:15
subroutine abort_trip(YTEXT)
Definition: abort_trip.F90:3