Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <array>
7 : #include <cstddef>
8 : #include <tuple>
9 : #include <unordered_map>
10 : #include <vector>
11 :
12 : /// \cond
13 : namespace amr {
14 : template <size_t VolumeDim>
15 : struct Info;
16 : } // namespace amr
17 : template <size_t VolumeDim, typename T>
18 : class DirectionalIdMap;
19 : template <size_t VolumeDim, typename T>
20 : class DirectionMap;
21 : template <size_t VolumeDim>
22 : class Element;
23 : template <size_t VolumeDim>
24 : class ElementId;
25 : template <size_t VolumeDim>
26 : class Mesh;
27 : template <size_t VolumeDim, typename IdType>
28 : class Neighbors;
29 : /// \endcond
30 :
31 : namespace amr {
32 : /// \ingroup AmrGroup
33 : /// \brief returns the neighbors and their Mesh%es of the Element with ElementId
34 : /// `parent_id`, that is created from its `children_elements_and_neighbor_info`
35 : template <size_t VolumeDim>
36 : std::pair<DirectionMap<VolumeDim, Neighbors<VolumeDim, ElementId<VolumeDim>>>,
37 : DirectionalIdMap<VolumeDim, Mesh<VolumeDim>>>
38 1 : neighbors_of_parent(
39 : const ElementId<VolumeDim>& parent_id,
40 : const std::vector<std::tuple<
41 : const Element<VolumeDim>&,
42 : const std::unordered_map<ElementId<VolumeDim>, Info<VolumeDim>>&>>&
43 : children_elements_and_neighbor_info);
44 : } // namespace amr
|