A Core has space for 4 complete subintegrations (including baseband data from all of the telescopes, space for visibilities, metadata including the time tag, scan number etc). It also has one or more processing threads which correlate the baseband data and produce the visibilities. If there are N threads, each thread will process 1/N of the data for each subintegration.
The Core process sits in a loop, with the main thread receiving instructions from the FxManager on the timerange it should correlate, then receiving the baseband data from the Datastreams, then releasing the subintegration slot to the processing threads to be processed. This continues until it receives a terminate message from the FxManager. The processing threads just keep looping through the available subintegrations, processing their segment and moving on to the next as fast as they can.
The plot below shows all of the elements of Core:
Finally, its probably useful to zoom in on the big long “coreresult” buffer and show the ordering of its contents, which is where the spectrally averaged auto and cross correlations, weights, calculated “uv shift” decorrelations, and pcals are accumulated. The processing threads copy from their local buffer (threadresultbuffer) into this coreresultbuffer. This coreresultbuffer is accumulated verbatim by the Visibility object.