5 &(fformat,fid,var_name,res,n,ierr,time,eps_time,record,
57 CHARACTER(LEN=8),
INTENT(IN) :: FFORMAT
58 INTEGER,
INTENT(IN) :: FID
59 CHARACTER(LEN=16),
INTENT(IN) :: VAR_NAME
60 INTEGER,
INTENT(IN) :: N
61 DOUBLE PRECISION,
INTENT(INOUT) :: RES(n)
62 INTEGER,
INTENT(INOUT) :: IERR
63 DOUBLE PRECISION,
INTENT(IN) ,
OPTIONAL :: EPS_TIME,TIME
64 INTEGER,
INTENT(IN) ,
OPTIONAL :: RECORD
65 DOUBLE PRECISION,
INTENT(INOUT),
OPTIONAL :: TIME_RECORD
66 DOUBLE PRECISION,
INTENT(IN),
OPTIONAL :: OFFSET
70 INTEGER RECORD1,RECORD2
71 DOUBLE PRECISION :: TIME1,TIME2,COEF,EPS
72 DOUBLE PRECISION,
ALLOCATABLE :: RES2(:)
75 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_LIST(:)
76 CHARACTER(LEN=16),
ALLOCATABLE :: UNIT_LIST(:)
78 DOUBLE PRECISION :: TEL_OFFSET1
79 INTEGER,
DIMENSION(6) :: DATE
80 DOUBLE PRECISION :: OFFSET_FILE
81 DOUBLE PRECISION :: TIME_FULL
85 IF(
PRESENT(offset))
THEN 91 IF(
PRESENT(time))
THEN 96 IF(
PRESENT(eps_time))
THEN 105 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC1')
110 record2 = ntimestep-1
112 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC1')
114 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC2')
116 IF (tel_offset1.GE.1.d-16)
THEN 118 IF (any(date.NE.0))
THEN 120 time_full = time + tel_offset1
130 time1 = time1+offset_file
131 time2 = time2+offset_file
137 IF((time1.GT.time_full.AND.abs(time1-time_full).GT.eps)
138 & .OR.(time2.LT.time_full.AND.abs(time2-time_full).GT.eps))
THEN 139 WRITE(
lu,*)
'TIME: ',time_full,
140 &
'IS NOT WITHIN THE RANGE',
141 &
' OF THE FILE I.E.[',
142 & time1,
'-',time2,
']' 147 DO WHILE ((time1.LT.time_full).AND.
148 & (abs(time1-time_full).GT.eps) )
149 record1 = record1 + 1
151 time1 = time1+offset_file
152 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC1')
156 IF(abs(time1-time_full).LE.eps)
THEN 158 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_VALUE:REC1')
164 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC1')
166 time1 = time1+offset_file
167 time2 = time2+offset_file
168 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_TIME:REC2')
171 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_VALUE:REC1')
172 ALLOCATE(res2(n),stat=ierr)
173 CALL check_allocate(ierr,
'FIND_VARIABLE:RES2')
175 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_VALUE:REC1')
178 coef=(time_full-time1)/(time2-time1)
181 res(i)=(res2(i)-res(i))*coef+res(i)
188 CALL check_call(ierr,
'READ_DATA:GET_DATA_NTIMESTEP')
190 IF (
PRESENT(record))
THEN 192 IF(record.EQ.-1)
THEN 193 rrecord = ntimestep - 1
203 IF((rrecord.LT.0).AND.(rrecord.GE.ntimestep))
THEN 210 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_NVAR')
211 ALLOCATE(var_list(nvar),stat=ierr)
212 ALLOCATE(unit_list(nvar),stat=ierr)
213 CALL check_allocate(ierr,
'VAR_LIST')
216 CALL check_call(ierr,
'FIND_VARIABLE:GET_DATA_VAR_LIST')
219 IF (var_list(i).EQ.var_name)
EXIT 227 DEALLOCATE(unit_list)
232 IF(
PRESENT(time_record))
THEN 235 WRITE(
lu,*)
'ERROR WHILE READING TIME VALUE ',
236 &
'FOR RECORD:',rrecord
244 WRITE(
lu,*)
'ERROR WHILE READING VALUE ',
245 &
'FOR VARIABLE:',var_name,
246 &
'FOR RECORD:',rrecord
subroutine get_data_nvar(FFORMAT, FID, NVAR, IERR)
subroutine get_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
subroutine get_data_value(FFORMAT, FID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
integer, parameter hermes_record_unknown_err
subroutine get_mesh_date(FFORMAT, FID, DATE, IERR)
subroutine find_variable(FFORMAT, FID, VAR_NAME, RES, N, IERR, TIME, EPS_TIME, RECORD, TIME_RECORD, OFFSET)
double precision function date_mjd2sec(DATE, TIME)
integer, parameter hermes_var_unknown_err
subroutine get_data_time(FFORMAT, FID, RECORD, TIME, IERR)
subroutine get_data_ntimestep(FFORMAT, FID, NTIMESTEP, IERR)