OGS
AssemblyData.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include "MeshLib/Mesh.h"
8
10{
15{
17 std::vector<std::vector<
18 std::reference_wrapper<MeshLib::PropertyVector<double>>>>&&
21 {
22 }
23
42 std::shared_ptr<std::vector<std::size_t> const> activeElementIDsSorted(
43 std::vector<std::size_t> const* const sorted_element_subset) const;
44
46 std::vector<
47 std::vector<std::reference_wrapper<MeshLib::PropertyVector<double>>>>
49
50 virtual ~CommonAssemblyData() = default;
51
52protected:
54 {
55 return sorted_active_element_ids_ == nullptr;
56 }
57
58 // shared_ptr allows to return either this data or data computed on the fly
59 // from a member function (cf. activeElementIDsSorted()).
60 std::shared_ptr<std::vector<std::size_t> const> sorted_active_element_ids_;
61};
62
65{
67
70
73 std::vector<std::size_t> const& sorted_active_element_ids_whole_mesh);
74};
75
79{
84 explicit SubmeshAssemblyData(
85 MeshLib::Mesh const& submesh,
86 std::vector<std::vector<
87 std::reference_wrapper<MeshLib::PropertyVector<double>>>>&&
89
92
96 std::vector<std::size_t> const& sorted_active_element_ids_whole_mesh);
97
99
100private:
102};
103} // namespace ProcessLib::Assembly
Data necessary for global equation system assembly on the bulk mesh.
CommonAssemblyData(std::vector< std::vector< std::reference_wrapper< MeshLib::PropertyVector< double > > > > &&residuum_vectors)
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)
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