diff --git a/RTCP/Cobalt/InputProc/src/Transpose/MPIReceiveStations.cc b/RTCP/Cobalt/InputProc/src/Transpose/MPIReceiveStations.cc index dcef6c8d48d1fbe520910516f66a798c40a8d90c..a1c0c88735cb733396736fa9301b92403c6f3964 100644 --- a/RTCP/Cobalt/InputProc/src/Transpose/MPIReceiveStations.cc +++ b/RTCP/Cobalt/InputProc/src/Transpose/MPIReceiveStations.cc @@ -37,9 +37,18 @@ using namespace LOFAR::Cobalt::MPIProtocol; namespace LOFAR { namespace Cobalt { + namespace { + ssize_t first(const std::vector<size_t> &v) { + return v.empty() ? -1 : v.at(0); + } + ssize_t last(const std::vector<size_t> &v) { + return v.empty() ? -1 : v.at(v.size()-1); + } + }; + MPIReceiveStations::MPIReceiveStations( size_t nrStations, const std::vector<size_t> &beamlets, size_t blockSize ) : - logPrefix(str(boost::format("[beamlets %u..%u (%u)] [MPIReceiveStations] ") % beamlets[0] % beamlets[beamlets.size()-1] % beamlets.size())), + logPrefix(str(boost::format("[beamlets %d..%d (%u)] [MPIReceiveStations] ") % first(beamlets) % last(beamlets) % beamlets.size())), nrStations(nrStations), beamlets(beamlets), blockSize(blockSize), @@ -74,6 +83,9 @@ namespace LOFAR { template<typename T> void MPIReceiveStations::receiveBlock( MultiDimArray<T, 3> &data, MultiDimArray<struct MPIProtocol::MetaData, 2> &metaData ) { + if (beamlets.empty()) + return; + ASSERT(data.num_elements() == nrStations * beamlets.size() * blockSize); ASSERT(metaData.num_elements() == nrStations * beamlets.size());