ViennaLS
Loading...
Searching...
No Matches
lsMaterialMap.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <set>
4#include <vector>
5
6namespace viennals {
7
14 std::vector<int> materialMap;
15 std::set<int> materials;
16
17public:
18 MaterialMap() = default;
19 MaterialMap(const MaterialMap &) = default;
20 MaterialMap &operator=(const MaterialMap &) = default;
22
23 void insertNextMaterial(const int passedMaterialId) {
24 materialMap.push_back(passedMaterialId);
25 materials.insert(passedMaterialId);
26 }
27
28 void setMaterialId(const std::size_t index, const int materialId) {
29 if (index >= materialMap.size()) {
30 materialMap.resize(index + 1, -1); // Initialize new elements with -1
31 }
32 materialMap[index] = materialId;
33 materials.insert(materialId);
34 }
35
36 std::size_t getNumberOfLayers() const { return materialMap.size(); }
37
38 std::size_t getNumberOfMaterials() const { return materials.size(); }
39
40 int getMaterialId(const std::size_t index) const {
41 if (index >= materialMap.size())
42 return -1;
43 return materialMap[index];
44 }
45
46 // Additional utility methods
47 bool isValidIndex(const std::size_t index) const {
48 return index < materialMap.size();
49 }
50
51 void clear() {
52 materialMap.clear();
53 materials.clear();
54 }
55
56 void reserve(const std::size_t size) { materialMap.reserve(size); }
57
58 bool hasMaterial(const int materialId) const {
59 return materials.count(materialId) > 0;
60 }
61
62 const std::set<int> &getMaterials() const { return materials; }
63
64 const std::vector<int> &getMaterialMap() const { return materialMap; }
65};
66
67} // namespace viennals
std::size_t getNumberOfMaterials() const
Definition lsMaterialMap.hpp:38
std::size_t getNumberOfLayers() const
Definition lsMaterialMap.hpp:36
MaterialMap & operator=(MaterialMap &&)=default
int getMaterialId(const std::size_t index) const
Definition lsMaterialMap.hpp:40
void clear()
Definition lsMaterialMap.hpp:51
void insertNextMaterial(const int passedMaterialId)
Definition lsMaterialMap.hpp:23
MaterialMap(const MaterialMap &)=default
const std::vector< int > & getMaterialMap() const
Definition lsMaterialMap.hpp:64
bool hasMaterial(const int materialId) const
Definition lsMaterialMap.hpp:58
MaterialMap & operator=(const MaterialMap &)=default
void setMaterialId(const std::size_t index, const int materialId)
Definition lsMaterialMap.hpp:28
const std::set< int > & getMaterials() const
Definition lsMaterialMap.hpp:62
bool isValidIndex(const std::size_t index) const
Definition lsMaterialMap.hpp:47
void reserve(const std::size_t size)
Definition lsMaterialMap.hpp:56
Definition lsAdvect.hpp:36