2015-01-28 22:54:42 +00:00
|
|
|
|
|
|
|
contains
|
|
|
|
|
2014-12-29 12:49:37 +00:00
|
|
|
!>
|
|
|
|
!> Wrapper for eccodes
|
|
|
|
!>
|
|
|
|
subroutine codes_set_missing ( gribid, key, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_missing ( gribid, key, status )
|
|
|
|
end subroutine codes_set_missing
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_create ( indexid, filename, keys, status )
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: indexid
|
|
|
|
character(len=*), intent(in) :: filename
|
|
|
|
character(len=*), intent(in) :: keys
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_create ( indexid, filename, keys, status )
|
|
|
|
end subroutine codes_index_create
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_add_file ( indexid, filename, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: filename
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_add_file ( indexid, filename, status )
|
|
|
|
end subroutine codes_index_add_file
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_size_long( indexid, key, size, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), intent(out) :: size
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_get_size_long( indexid, key, size, status )
|
|
|
|
end subroutine codes_index_get_size_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_size_int( indexid, key, size, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(out) :: size
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_get_size_int( indexid, key, size, status )
|
|
|
|
end subroutine codes_index_get_size_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_int( indexid, key, values, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), dimension(:), intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_index_get_int( indexid, key, values, status )
|
|
|
|
end subroutine codes_index_get_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_long( indexid, key, values, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), dimension(:), intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_index_get_long( indexid, key, values, status )
|
|
|
|
end subroutine codes_index_get_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_real8( indexid, key, values, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind=kindOfDouble), dimension(:), intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_index_get_real8( indexid, key, values, status )
|
|
|
|
end subroutine codes_index_get_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_get_string( indexid, key, values, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
character(len=*), dimension(:), intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
integer(kind=kindOfInt) :: size_value
|
|
|
|
|
|
|
|
call grib_index_get_string( indexid, key, values, status )
|
|
|
|
end subroutine codes_index_get_string
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_select_string( indexid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
character(len=*), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_select_string( indexid, key, value, status )
|
|
|
|
end subroutine codes_index_select_string
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_select_int( indexid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_select_int( indexid, key, value, status )
|
|
|
|
end subroutine codes_index_select_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_select_long( indexid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_select_long( indexid, key, value, status )
|
|
|
|
end subroutine codes_index_select_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_select_real8( indexid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind=kindOfDouble), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_select_real8( indexid, key, value, status )
|
|
|
|
end subroutine codes_index_select_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_new_from_index ( indexid, gribid , status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: indexid
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_new_from_index ( indexid, gribid , status)
|
|
|
|
end subroutine codes_new_from_index
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_read ( indexid, filename, status )
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: indexid
|
|
|
|
character(len=*), intent(in) :: filename
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_read ( indexid, filename, status )
|
|
|
|
end subroutine codes_index_read
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_write ( indexid, filename, status )
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: indexid
|
|
|
|
character(len=*), intent(in) :: filename
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_write ( indexid, filename, status )
|
|
|
|
end subroutine codes_index_write
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_index_release ( indexid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: indexid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_index_release ( indexid, status )
|
|
|
|
end subroutine codes_index_release
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_open_file ( ifile, filename, mode, status )
|
|
|
|
integer(kind=kindOfInt),intent(out) :: ifile
|
|
|
|
character(len=*), intent(in) :: filename
|
|
|
|
character(LEN=*), intent(in) :: mode
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_open_file ( ifile, filename, mode, status )
|
|
|
|
end subroutine codes_open_file
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_char ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_char ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_char
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_char_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_int4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_int4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_real4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_real4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_bytes_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_bytes_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_bytes_real8_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_int4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_int4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_real4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_real4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_real8_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_char ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_char ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_char
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_read_from_file_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1),dimension(:), intent(out) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(inout) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_read_from_file_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_read_from_file_char_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_char ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_char ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_char
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
character(len=1), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_char_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_char_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_int4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_int4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=4), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_int4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_int4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_real4 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_real4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=4), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_real4_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_real4_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfInt), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_real8 ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write_bytes_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
real(kind=8), dimension(:),intent(in) :: buffer
|
|
|
|
integer(kind=kindOfSize_t), intent(in) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write_bytes_real8_size_t ( ifile, buffer, nbytes, status )
|
|
|
|
end subroutine codes_write_bytes_real8_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_close_file ( ifile , status )
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_close_file ( ifile , status )
|
|
|
|
end subroutine codes_close_file
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_count_in_file ( ifile, n , status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: n
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_count_in_file ( ifile, n , status)
|
|
|
|
end subroutine codes_count_in_file
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_headers_only_new_from_file ( ifile, gribid , status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_headers_only_new_from_file ( ifile, gribid , status)
|
|
|
|
end subroutine codes_headers_only_new_from_file
|
|
|
|
|
2015-03-04 17:11:18 +00:00
|
|
|
!------------------
|
|
|
|
subroutine codes_new_from_file (ifile, gribid , product_kind, status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
integer(kind=kindOfInt),intent(in) :: product_kind
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
if (product_kind == CODES_PRODUCT_GRIB) then
|
|
|
|
call codes_grib_new_from_file ( ifile, gribid , status)
|
|
|
|
else if (product_kind == CODES_PRODUCT_BUFR) then
|
|
|
|
call codes_bufr_new_from_file ( ifile, gribid , status)
|
|
|
|
else
|
2015-03-12 16:28:31 +00:00
|
|
|
if (product_kind /= CODES_PRODUCT_ANY) then
|
|
|
|
call grib_check(CODES_INTERNAL_ERROR,'codes_new_from_file','invalid_product_kind')
|
|
|
|
end if
|
|
|
|
call codes_any_new_from_file ( ifile, gribid , status)
|
2015-03-04 17:11:18 +00:00
|
|
|
end if
|
|
|
|
end subroutine codes_new_from_file
|
|
|
|
|
2015-03-12 16:28:31 +00:00
|
|
|
!
|
|
|
|
subroutine codes_any_new_from_file ( ifile, id , status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: id
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call any_new_from_file ( ifile, id , status)
|
|
|
|
end subroutine codes_any_new_from_file
|
|
|
|
|
2014-12-29 12:49:37 +00:00
|
|
|
!
|
2015-03-04 17:11:18 +00:00
|
|
|
subroutine codes_grib_new_from_file ( ifile, gribid , status)
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_new_from_file ( ifile, gribid , status)
|
2015-03-04 17:11:18 +00:00
|
|
|
end subroutine codes_grib_new_from_file
|
2014-12-29 12:49:37 +00:00
|
|
|
|
2015-03-04 17:11:18 +00:00
|
|
|
!
|
2015-01-28 14:51:10 +00:00
|
|
|
subroutine codes_bufr_new_from_file ( ifile, bufrid , status)
|
|
|
|
integer(kind=kindOfInt),intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),intent(out) :: bufrid
|
|
|
|
integer(kind=kindOfInt),optional,intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call bufr_new_from_file ( ifile, bufrid, status)
|
|
|
|
end subroutine codes_bufr_new_from_file
|
|
|
|
|
|
|
|
|
2014-12-29 12:49:37 +00:00
|
|
|
!
|
|
|
|
subroutine codes_new_from_message_char( gribid, message, status )
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
character(len=1), dimension(:),intent(in) :: message
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: size_bytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_new_from_message_char( gribid, message, status )
|
|
|
|
end subroutine codes_new_from_message_char
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_new_from_message_int4 ( gribid, message, status )
|
|
|
|
integer(kind=kindOfInt),intent(out) :: gribid
|
|
|
|
integer(kind=4), dimension(:),intent(in) :: message
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfSize_t) :: size_bytes
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_new_from_message_int4 ( gribid, message, status )
|
|
|
|
end subroutine codes_new_from_message_int4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_new_from_samples ( gribid, samplename, status )
|
|
|
|
integer(kind=kindOfInt), intent(out) :: gribid
|
|
|
|
character(len=*), intent(in) :: samplename
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_new_from_samples ( gribid, samplename, status )
|
|
|
|
end subroutine codes_new_from_samples
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_release ( gribid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_release ( gribid, status )
|
|
|
|
end subroutine codes_release
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_clone ( gribid_src, gribid_dest, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid_src
|
|
|
|
integer(kind=kindOfInt), intent(out) :: gribid_dest
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_clone ( gribid_src, gribid_dest, status )
|
|
|
|
end subroutine codes_clone
|
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_util_sections_copy ( gribid_from, gribid_to, what, gribid_out,status )
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid_from
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid_to
|
|
|
|
integer(kind=kindOfInt), intent(out) :: gribid_out
|
|
|
|
integer(kind=kindOfInt), intent(in) :: what
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_util_sections_copy ( gribid_from, gribid_to, what, gribid_out,status )
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_util_sections_copy
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_copy_namespace ( gribid_src, namespace, gribid_dest, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid_src
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid_dest
|
|
|
|
character(LEN=*), intent(in) :: namespace
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_copy_namespace ( gribid_src, namespace, gribid_dest, status )
|
|
|
|
end subroutine codes_copy_namespace
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_check ( status,caller,string )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: status
|
|
|
|
character(len=*), intent(in) :: caller
|
|
|
|
character(len=*), intent(in) :: string
|
|
|
|
|
|
|
|
call grib_check ( status,caller,string )
|
|
|
|
end subroutine codes_check
|
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_get_data_real4 ( gribid, lats, lons, values, status )
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
real ( kind = kindOfFloat ), dimension(:),intent(out) :: lats, lons
|
|
|
|
real ( kind = kindOfFloat ), dimension(:),intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfSize_t) :: npoints
|
|
|
|
|
|
|
|
call grib_get_data_real4 ( gribid, lats, lons, values, status )
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_get_data_real4
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_get_data_real8 ( gribid, lats, lons, values, status )
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
real ( kind = kindOfDouble ), dimension(:),intent(out) :: lats, lons
|
|
|
|
real ( kind = kindOfDouble ), dimension(:),intent(out) :: values
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfSize_t) :: npoints
|
|
|
|
|
|
|
|
call grib_get_data_real8 ( gribid, lats, lons, values, status )
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_get_data_real8
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_keys_iterator_new ( gribid, iterid, namespace, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfInt), intent(inout) :: iterid
|
|
|
|
character(LEN=*), intent(in) :: namespace
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_keys_iterator_new ( gribid, iterid, namespace, status )
|
|
|
|
end subroutine codes_keys_iterator_new
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_keys_iterator_next ( iterid , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_keys_iterator_next ( iterid , status)
|
|
|
|
end subroutine codes_keys_iterator_next
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_keys_iterator_delete ( iterid , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_keys_iterator_delete ( iterid , status)
|
|
|
|
end subroutine codes_keys_iterator_delete
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_keys_iterator_get_name ( iterid, name, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
character(LEN=*), intent(out) :: name
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_keys_iterator_get_name ( iterid, name, status )
|
|
|
|
end subroutine codes_keys_iterator_get_name
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_keys_iterator_rewind ( iterid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_keys_iterator_rewind ( iterid, status )
|
|
|
|
end subroutine codes_keys_iterator_rewind
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_dump ( gribid , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_dump ( gribid , status)
|
|
|
|
end subroutine codes_dump
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_error_string ( error, error_message, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: error
|
|
|
|
character(len=*), intent(out) :: error_message
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_error_string ( error, error_message, status )
|
|
|
|
end subroutine codes_get_error_string
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_size_int ( gribid, key, size , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(out) :: size
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_size_int ( gribid, key, size , status)
|
|
|
|
end subroutine codes_get_size_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_size_long ( gribid, key, size , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), intent(out) :: size
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_size_long ( gribid, key, size , status)
|
|
|
|
end subroutine codes_get_size_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_int(gribid,key,value,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind = kindOfInt), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_int(gribid,key,value,status)
|
|
|
|
end subroutine codes_get_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_long(gribid,key,value,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind = kindOfLong), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_long(gribid,key,value,status)
|
|
|
|
end subroutine codes_get_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_is_missing(gribid,key,is_missing,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind = kindOfInt), intent(out) :: is_missing
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_is_missing(gribid,key,is_missing,status)
|
|
|
|
end subroutine codes_is_missing
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_is_defined(gribid,key,is_defined,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind = kindOfInt), intent(out) :: is_defined
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_is_defined(gribid,key,is_defined,status)
|
|
|
|
end subroutine codes_is_defined
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real4 ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfFloat), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_real4 ( gribid, key, value, status )
|
|
|
|
end subroutine codes_get_real4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real8 ( gribid, key, value , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfDouble), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_real8 ( gribid, key, value , status)
|
|
|
|
end subroutine codes_get_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_string ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
character(len=*), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_string ( gribid, key, value, status )
|
|
|
|
end subroutine codes_get_string
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
! Note: This function supports the allocatable array attribute
|
|
|
|
! -------------------------------------------------------------
|
2014-12-29 12:49:37 +00:00
|
|
|
subroutine codes_get_int_array ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
2016-03-29 14:47:55 +00:00
|
|
|
character(len=*), intent(in) :: key
|
2015-05-28 08:56:33 +00:00
|
|
|
integer(kind=kindOfInt), dimension(:),allocatable,intent(inout) :: value
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
2016-03-29 14:47:55 +00:00
|
|
|
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
2016-03-29 14:47:55 +00:00
|
|
|
integer(kind=kindOfInt) :: size_value
|
|
|
|
integer(kind=kindOfInt) :: i
|
|
|
|
|
|
|
|
iret=grib_f_get_size_int(gribid,key,nb_values)
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
if (allocated(value) .eqv. .false.) then
|
|
|
|
allocate(value(nb_values))
|
|
|
|
end if
|
|
|
|
size_value=size(value)
|
|
|
|
iret=grib_f_get_int_array ( gribid, key, value , nb_values )
|
|
|
|
if (iret==0 .and. nb_values==1 .and. size_value/=1) then
|
|
|
|
do i=2,size_value
|
|
|
|
value(i)=value(1)
|
|
|
|
enddo
|
|
|
|
endif
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
endif
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
end subroutine codes_get_int_array
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
|
|
|
|
! Note: This function supports the allocatable array attribute
|
|
|
|
! -------------------------------------------------------------
|
2014-12-29 12:49:37 +00:00
|
|
|
subroutine codes_get_long_array ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
2015-05-28 08:56:33 +00:00
|
|
|
integer(kind=kindOfLong), dimension(:),allocatable,intent(inout) :: value
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
2016-03-29 14:47:55 +00:00
|
|
|
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt) :: nb_values
|
2016-03-29 14:47:55 +00:00
|
|
|
integer(kind=kindOfInt) :: size_value
|
|
|
|
integer(kind=kindOfInt) :: i
|
|
|
|
|
|
|
|
iret=grib_f_get_size_int(gribid,key,nb_values)
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
if (allocated(value) .eqv. .false.) then
|
|
|
|
allocate(value(nb_values))
|
|
|
|
end if
|
|
|
|
size_value=size(value)
|
|
|
|
iret=grib_f_get_long_array ( gribid, key, value , nb_values )
|
|
|
|
if (iret==0 .and. nb_values==1 .and. size_value/=1) then
|
|
|
|
do i=2,size_value
|
|
|
|
value(i)=value(1)
|
|
|
|
enddo
|
|
|
|
endif
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
endif
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
end subroutine codes_get_long_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_byte_array ( gribid, key, value, length, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
2015-05-28 08:56:33 +00:00
|
|
|
character(len=1), dimension(:), intent(inout) :: value
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), optional, intent(out) :: length
|
|
|
|
integer(kind=kindOfInt), optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
character :: bytes(size(value))
|
|
|
|
|
|
|
|
call grib_get_byte_array ( gribid, key, value, length, status )
|
|
|
|
end subroutine codes_get_byte_array
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
! Note: This function supports the allocatable array attribute
|
|
|
|
! -------------------------------------------------------------
|
2014-12-29 12:49:37 +00:00
|
|
|
subroutine codes_get_real4_array ( gribid, key, value, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
2015-05-28 08:56:33 +00:00
|
|
|
real(kind = kindOfFloat), dimension(:),allocatable, intent(inout) :: value
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
integer(kind=kindOfInt) :: size_value
|
|
|
|
integer(kind=kindOfInt) :: i
|
|
|
|
|
|
|
|
iret=grib_f_get_size_int(gribid,key,nb_values)
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
if (allocated(value) .eqv. .false.) then
|
|
|
|
allocate(value(nb_values))
|
|
|
|
end if
|
|
|
|
size_value=size(value)
|
|
|
|
iret=grib_f_get_real4_array ( gribid, key, value , nb_values )
|
|
|
|
if (iret==0 .and. nb_values==1 .and. size_value/=1) then
|
|
|
|
do i=2,size_value
|
|
|
|
value(i)=value(1)
|
|
|
|
enddo
|
|
|
|
endif
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
endif
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
2014-12-29 12:49:37 +00:00
|
|
|
end subroutine codes_get_real4_array
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
! Note: This function supports the allocatable array attribute
|
|
|
|
! -------------------------------------------------------------
|
2014-12-29 12:49:37 +00:00
|
|
|
subroutine codes_get_real8_array ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
2015-05-28 08:56:33 +00:00
|
|
|
real(kind = kindOfDouble), dimension(:),allocatable, intent(inout) :: value
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
2016-03-29 14:47:55 +00:00
|
|
|
integer(kind=kindOfInt) :: size_value
|
|
|
|
integer(kind=kindOfInt) :: i
|
|
|
|
|
|
|
|
iret=grib_f_get_size_int(gribid,key,nb_values)
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
|
|
|
return
|
|
|
|
endif
|
|
|
|
if (allocated(value) .eqv. .false.) then
|
|
|
|
allocate(value(nb_values))
|
|
|
|
end if
|
|
|
|
size_value=size(value)
|
|
|
|
iret=grib_f_get_real8_array ( gribid, key, value, nb_values )
|
|
|
|
if (iret==0 .and. nb_values==1 .and. size_value/=1) then
|
|
|
|
do i=2,size_value
|
|
|
|
value(i)=value(1)
|
|
|
|
enddo
|
|
|
|
endif
|
|
|
|
if (iret /= 0) then
|
|
|
|
call grib_f_write_on_fail(gribid)
|
|
|
|
endif
|
|
|
|
if (present(status)) then
|
|
|
|
status = iret
|
|
|
|
else
|
|
|
|
call grib_check(iret,'grib_get',key)
|
|
|
|
endif
|
2014-12-29 12:49:37 +00:00
|
|
|
end subroutine codes_get_real8_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real4_element ( gribid, key, index,value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(in) :: index
|
|
|
|
real(kind = kindOfFloat), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_real4_element ( gribid, key, index,value, status )
|
|
|
|
end subroutine codes_get_real4_element
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real8_element ( gribid, key, index,value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(in) :: index
|
|
|
|
real(kind = kindOfDouble), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_real8_element ( gribid, key, index,value, status )
|
|
|
|
end subroutine codes_get_real8_element
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real4_elements ( gribid, key, index,value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt),dimension(:), intent(in) :: index
|
|
|
|
real(kind = kindOfFloat), dimension(:), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) ::npoints
|
|
|
|
|
|
|
|
call grib_get_real4_elements ( gribid, key, index,value, status )
|
|
|
|
end subroutine codes_get_real4_elements
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_real8_elements ( gribid, key, index,value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt),dimension(:), intent(in) :: index
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(out) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: npoints
|
|
|
|
|
|
|
|
call grib_get_real8_elements ( gribid, key, index,value, status )
|
|
|
|
end subroutine codes_get_real8_elements
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_int ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_int ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_long ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_long ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_long
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_real4 ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfFloat), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_real4 ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_real4
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_real8 ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfDouble), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_real8 ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_real8
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_int_array ( gribid, key, value, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfInt), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_int_array ( gribid, key, value, status)
|
|
|
|
end subroutine codes_set_int_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_long_array ( gribid, key, value, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
integer(kind=kindOfLong), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_long_array ( gribid, key, value, status)
|
|
|
|
end subroutine codes_set_long_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_byte_array ( gribid, key, value, length, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
character(len=1), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt), optional, intent(out) :: length
|
|
|
|
integer(kind=kindOfInt), optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
character :: bytes(size(value))
|
|
|
|
|
|
|
|
call grib_set_byte_array ( gribid, key, value, length, status )
|
|
|
|
end subroutine codes_set_byte_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_real4_array ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfFloat), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_real4_array ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_real4_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_real8_array ( gribid, key, value, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_real8_array ( gribid, key, value, status)
|
|
|
|
end subroutine codes_set_real8_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_force_real4_array ( gribid, key, value, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfFloat), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_force_real4_array ( gribid, key, value, status )
|
|
|
|
end subroutine codes_set_force_real4_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_force_real8_array ( gribid, key, value, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: nb_values
|
|
|
|
|
|
|
|
call grib_set_force_real8_array ( gribid, key, value, status)
|
|
|
|
end subroutine codes_set_force_real8_array
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_set_string ( gribid, key, value , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=*), intent(in) :: key
|
|
|
|
character(len=*), intent(in) :: value
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_set_string ( gribid, key, value , status)
|
|
|
|
end subroutine codes_set_string
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_message_size_int ( gribid, nbytes, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfInt), intent(out) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfSize_t) :: ibytes
|
|
|
|
|
|
|
|
call grib_get_message_size_int ( gribid, nbytes, status)
|
|
|
|
end subroutine codes_get_message_size_int
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_get_message_size_size_t ( gribid, nbytes, status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfSize_t), intent(out) :: nbytes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_get_message_size_size_t ( gribid, nbytes, status)
|
|
|
|
end subroutine codes_get_message_size_size_t
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_copy_message ( gribid, message, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
character(len=1), dimension(:), intent(out) :: message
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfSize_t) :: size_bytes
|
|
|
|
|
|
|
|
call grib_copy_message ( gribid, message, status )
|
|
|
|
end subroutine codes_copy_message
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_write ( gribid, ifile , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
integer(kind=kindOfInt), intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_write ( gribid, ifile , status)
|
|
|
|
end subroutine codes_write
|
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_multi_write ( multigribid, ifile , status)
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), intent(in) :: multigribid
|
|
|
|
integer(kind=kindOfInt), intent(in) :: ifile
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_multi_write ( multigribid, ifile , status)
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_multi_write
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_multi_append ( ingribid, startsection, multigribid , status)
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt), intent(in) :: ingribid
|
|
|
|
integer(kind=kindOfInt), intent(in) :: startsection
|
|
|
|
integer(kind=kindOfInt), intent(out) :: multigribid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_multi_append ( ingribid, startsection, multigribid , status)
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_multi_append
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_find_nearest_multiple(gribid,is_lsm, &
|
2014-12-29 12:49:37 +00:00
|
|
|
inlats,inlons,outlats,outlons, &
|
|
|
|
values,distances, indexes,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
logical, intent(in) :: is_lsm
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(in) :: inlats
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(in) :: inlons
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(out) :: outlats
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(out) :: outlons
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(out) :: distances
|
|
|
|
real(kind = kindOfDouble), dimension(:), intent(out) :: values
|
|
|
|
integer(kind = kindOfInt), dimension(:), intent(out) :: indexes
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: npoints
|
|
|
|
integer(kind=kindOfInt) :: intis_lsm
|
|
|
|
|
|
|
|
call grib_find_nearest_multiple(gribid,is_lsm, &
|
|
|
|
inlats,inlons,outlats,outlons, &
|
|
|
|
values,distances, indexes,status)
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_find_nearest_multiple
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_find_nearest_single(gribid,is_lsm, &
|
2014-12-29 12:49:37 +00:00
|
|
|
inlat,inlon,outlat,outlon, &
|
|
|
|
value,distance, index,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
logical, intent(in) :: is_lsm
|
|
|
|
real(kind = kindOfDouble), intent(in) :: inlat
|
|
|
|
real(kind = kindOfDouble), intent(in) :: inlon
|
|
|
|
real(kind = kindOfDouble), intent(out) :: outlat
|
|
|
|
real(kind = kindOfDouble), intent(out) :: outlon
|
|
|
|
real(kind = kindOfDouble), intent(out) :: distance
|
|
|
|
real(kind = kindOfDouble), intent(out) :: value
|
|
|
|
integer(kind = kindOfInt), intent(out) :: index
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: intis_lsm =0
|
|
|
|
|
|
|
|
call grib_find_nearest_single(gribid,is_lsm, &
|
|
|
|
inlat,inlon,outlat,outlon, &
|
|
|
|
value,distance, index,status)
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_find_nearest_single
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_find_nearest_four_single(gribid,is_lsm, &
|
2014-12-29 12:49:37 +00:00
|
|
|
inlat,inlon,outlat,outlon, &
|
|
|
|
value,distance, index,status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: gribid
|
|
|
|
logical, intent(in) :: is_lsm
|
|
|
|
real(kind = kindOfDouble), intent(in) :: inlat
|
|
|
|
real(kind = kindOfDouble), intent(in) :: inlon
|
|
|
|
real(kind = kindOfDouble), dimension(4), intent(out) :: outlat
|
|
|
|
real(kind = kindOfDouble), dimension(4), intent(out) :: outlon
|
|
|
|
real(kind = kindOfDouble), dimension(4), intent(out) :: distance
|
|
|
|
real(kind = kindOfDouble), dimension(4), intent(out) :: value
|
|
|
|
integer(kind = kindOfInt), dimension(4), intent(out) :: index
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
integer(kind=kindOfInt) :: intis_lsm =0
|
|
|
|
|
|
|
|
call grib_find_nearest_four_single(gribid,is_lsm, &
|
|
|
|
inlat,inlon,outlat,outlon, &
|
|
|
|
value,distance, index,status)
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_find_nearest_four_single
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_multi_support_on (status )
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_multi_support_on (status )
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_multi_support_on
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
2015-02-11 16:23:21 +00:00
|
|
|
subroutine codes_grib_multi_support_off ( status )
|
2014-12-29 12:49:37 +00:00
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_multi_support_off ( status )
|
2015-02-11 16:23:21 +00:00
|
|
|
end subroutine codes_grib_multi_support_off
|
2014-12-29 12:49:37 +00:00
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_gribex_mode_on (status )
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_gribex_mode_on (status )
|
|
|
|
end subroutine codes_gribex_mode_on
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_gribex_mode_off (status )
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_gribex_mode_off (status )
|
|
|
|
end subroutine codes_gribex_mode_off
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_skip_computed ( iterid , status)
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_skip_computed ( iterid , status)
|
|
|
|
end subroutine codes_skip_computed
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_skip_coded ( iterid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_skip_coded ( iterid, status )
|
|
|
|
end subroutine codes_skip_coded
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_skip_duplicates ( iterid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_skip_duplicates ( iterid, status )
|
|
|
|
end subroutine codes_skip_duplicates
|
|
|
|
|
|
|
|
!
|
|
|
|
subroutine codes_skip_read_only ( iterid, status )
|
|
|
|
integer(kind=kindOfInt), intent(in) :: iterid
|
|
|
|
integer(kind=kindOfInt),optional, intent(out) :: status
|
|
|
|
integer(kind=kindOfInt) :: iret
|
|
|
|
|
|
|
|
call grib_skip_read_only ( iterid, status )
|
|
|
|
end subroutine codes_skip_read_only
|
2015-01-28 22:54:42 +00:00
|
|
|
|
|
|
|
end module eccodes
|