Skip to content
Snippets Groups Projects
Commit 0b5e9cb9 authored by Simon Heybrock's avatar Simon Heybrock
Browse files

Re #21608. Getter for global vector of spectrum numbers in IndexInfo.

parent bd9f5df9
No related merge requests found
...@@ -96,6 +96,7 @@ public: ...@@ -96,6 +96,7 @@ public:
size_t globalSize() const; size_t globalSize() const;
SpectrumNumber spectrumNumber(const size_t index) const; SpectrumNumber spectrumNumber(const size_t index) const;
const std::vector<SpectrumNumber> &spectrumNumbers() const;
void setSpectrumNumbers(std::vector<SpectrumNumber> &&spectrumNumbers); void setSpectrumNumbers(std::vector<SpectrumNumber> &&spectrumNumbers);
void setSpectrumNumbers(const SpectrumNumber min, const SpectrumNumber max); void setSpectrumNumbers(const SpectrumNumber min, const SpectrumNumber max);
......
...@@ -60,6 +60,7 @@ public: ...@@ -60,6 +60,7 @@ public:
size_t localSize() const; size_t localSize() const;
SpectrumNumber spectrumNumber(const size_t index) const; SpectrumNumber spectrumNumber(const size_t index) const;
const std::vector<SpectrumNumber> &globalSpectrumNumbers() const;
SpectrumIndexSet makeIndexSet() const; SpectrumIndexSet makeIndexSet() const;
SpectrumIndexSet makeIndexSet(SpectrumNumber min, SpectrumNumber max) const; SpectrumIndexSet makeIndexSet(SpectrumNumber min, SpectrumNumber max) const;
......
...@@ -109,11 +109,18 @@ size_t IndexInfo::globalSize() const { ...@@ -109,11 +109,18 @@ size_t IndexInfo::globalSize() const {
return m_spectrumNumberTranslator->globalSize(); return m_spectrumNumberTranslator->globalSize();
} }
/// Returns the spectrum number for given index. /// Returns the spectrum number for given *local* index, i.e., spectrum numbers
/// for spectra in this partition.
SpectrumNumber IndexInfo::spectrumNumber(const size_t index) const { SpectrumNumber IndexInfo::spectrumNumber(const size_t index) const {
return m_spectrumNumberTranslator->spectrumNumber(index); return m_spectrumNumberTranslator->spectrumNumber(index);
} }
/// Returns a reference to the *global* vector of spectrum numbers, i.e., the
/// spectrum numbers of spectra across all partitions.
const std::vector<SpectrumNumber> &IndexInfo::spectrumNumbers() const {
return m_spectrumNumberTranslator->globalSpectrumNumbers();
}
/// Set a spectrum number for each index. /// Set a spectrum number for each index.
void IndexInfo::setSpectrumNumbers( void IndexInfo::setSpectrumNumbers(
std::vector<SpectrumNumber> &&spectrumNumbers) { std::vector<SpectrumNumber> &&spectrumNumbers) {
......
...@@ -83,6 +83,11 @@ SpectrumNumberTranslator::SpectrumNumberTranslator( ...@@ -83,6 +83,11 @@ SpectrumNumberTranslator::SpectrumNumberTranslator(
} }
} }
const std::vector<SpectrumNumber> &
SpectrumNumberTranslator::globalSpectrumNumbers() const {
return m_globalSpectrumNumbers;
}
SpectrumNumberTranslator::SpectrumNumberTranslator( SpectrumNumberTranslator::SpectrumNumberTranslator(
const std::vector<GlobalSpectrumIndex> &globalIndices, const std::vector<GlobalSpectrumIndex> &globalIndices,
const SpectrumNumberTranslator &parent) const SpectrumNumberTranslator &parent)
......
...@@ -31,12 +31,14 @@ void run_StorageMode_Cloned(const Parallel::Communicator &comm) { ...@@ -31,12 +31,14 @@ void run_StorageMode_Cloned(const Parallel::Communicator &comm) {
void run_StorageMode_Distributed(const Parallel::Communicator &comm) { void run_StorageMode_Distributed(const Parallel::Communicator &comm) {
IndexInfo i(47, Parallel::StorageMode::Distributed, comm); IndexInfo i(47, Parallel::StorageMode::Distributed, comm);
TS_ASSERT_EQUALS(i.globalSize(), 47); TS_ASSERT_EQUALS(i.globalSize(), 47);
TS_ASSERT_EQUALS(i.spectrumNumbers().size(), 47);
size_t expectedSize = 0; size_t expectedSize = 0;
for (size_t globalIndex = 0; globalIndex < i.globalSize(); ++globalIndex) { for (size_t globalIndex = 0; globalIndex < i.globalSize(); ++globalIndex) {
SpectrumNumber specNum = static_cast<int>(globalIndex) + 1;
TS_ASSERT_EQUALS(i.spectrumNumbers()[globalIndex], specNum);
// Current default is RoundRobinPartitioner // Current default is RoundRobinPartitioner
if (static_cast<int>(globalIndex) % comm.size() == comm.rank()) { if (static_cast<int>(globalIndex) % comm.size() == comm.rank()) {
TS_ASSERT_EQUALS(i.spectrumNumber(expectedSize), TS_ASSERT_EQUALS(i.spectrumNumber(expectedSize), specNum);
static_cast<int>(globalIndex) + 1);
++expectedSize; ++expectedSize;
} }
} }
...@@ -163,6 +165,9 @@ public: ...@@ -163,6 +165,9 @@ public:
TS_ASSERT_EQUALS(info.spectrumNumber(0), 3); TS_ASSERT_EQUALS(info.spectrumNumber(0), 3);
TS_ASSERT_EQUALS(info.spectrumNumber(1), 2); TS_ASSERT_EQUALS(info.spectrumNumber(1), 2);
TS_ASSERT_EQUALS(info.spectrumNumber(2), 1); TS_ASSERT_EQUALS(info.spectrumNumber(2), 1);
TS_ASSERT_EQUALS(info.spectrumNumbers()[0], 3);
TS_ASSERT_EQUALS(info.spectrumNumbers()[1], 2);
TS_ASSERT_EQUALS(info.spectrumNumbers()[2], 1);
} }
void test_construct_from_parent_reorder() { void test_construct_from_parent_reorder() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment