6#include <range/v3/algorithm/is_sorted.hpp>
7#include <range/v3/algorithm/set_algorithm.hpp>
8#include <range/v3/algorithm/sort.hpp>
12std::shared_ptr<std::vector<std::size_t>
const>
14 std::vector<std::size_t>
const*
const sorted_element_subset)
const
16 if (!sorted_element_subset)
21 assert(ranges::is_sorted(*sorted_element_subset));
27 auto do_not_delete = [](
auto*) {};
28 return {sorted_element_subset, do_not_delete};
35 auto aeis = std::make_shared<std::vector<std::size_t>>();
37 sorted_element_subset->size()));
40 *sorted_element_subset, std::back_inserter(*aeis));
51 std::vector<std::size_t>
const& sorted_active_element_ids_whole_mesh)
53 assert(ranges::is_sorted(sorted_active_element_ids_whole_mesh));
56 std::make_shared<std::vector<std::size_t>
const>(
57 sorted_active_element_ids_whole_mesh);
73 std::vector<std::size_t> aeis;
77 std::make_shared<std::vector<std::size_t>
const>(std::move(aeis));
81 std::vector<std::size_t>
const& sorted_active_element_ids_whole_mesh)
83 assert(ranges::is_sorted(sorted_active_element_ids_whole_mesh));
85 std::vector<std::size_t> aeis;
88 sorted_active_element_ids_whole_mesh,
89 std::back_inserter(aeis));
92 std::make_shared<std::vector<std::size_t>
const>(std::move(aeis));
void setElementSelectionActive(std::vector< std::size_t > const &sorted_active_element_ids_whole_mesh)
Assembly should proceed on the passed element IDs only.
void setAllElementsActive()
Assembly should proceed on all mesh elements.
std::shared_ptr< std::vector< std::size_t > const > sorted_active_element_ids_
CommonAssemblyData(std::vector< std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > > &&residuum_vectors)
bool areAllElementsActive() const
std::shared_ptr< std::vector< std::size_t > const > activeElementIDsSorted(std::vector< std::size_t > const *const sorted_element_subset) const
std::vector< std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > > residuum_vectors
Residuum vectors for each process ID.
SubmeshAssemblyData(MeshLib::Mesh const &submesh, std::vector< std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > > &&residuum_vectors)
void setAllElementsActive()
Assembly should proceed on all elements of this submesh.
MeshLib::PropertyVector< std::size_t > const & bulk_element_ids
void setElementSelectionActive(std::vector< std::size_t > const &sorted_active_element_ids_whole_mesh)
MeshLib::PropertyVector< std::size_t > const & bulk_node_ids