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> 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>>, 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