All the MRTCAL internal data structures and engines have been written in the order (i.e. from contiguous to less contiguous):
type imbfits_data_t
integer(kind=4) :: ntime = 0 ! Number of 'time' rows read
integer(kind=4) :: npix = 0 !
integer(kind=4) :: nchan = 0 ! Number of channels
real(kind=4), pointer :: val(:,:,:) => null() ! [nchan,npix,ntimes] The DATA block
real(kind=4), pointer :: wei(:) => null() ! [nchan] The WEIGHT array (same for all channels and pixels)
end type imbfits_data_t
in the internal data structure mapping (a piece of) the DATA column.
For a given time dump and a given pixel, the dimension channels However, HERA IMBFITS data does not follow this ordering. It is actually ordered as
For future multibeam receivers, we will work with the IMBFITS developers to evaluate (in particular in terms of efficiency) and if possible ensure that the data is ordered as we expect. Note that this order could for example allow for parallelized processing of the pixels.