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 <unordered_map> 9 : 10 : #include "Domain/Amr/Flag.hpp" 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 : /// `child_id`, whose parent Element is `parent` which has Info `parent_info` 35 : /// and neighbor Info `parent_neighbor_info` 36 : template <size_t VolumeDim> 37 : std::pair<DirectionMap<VolumeDim, Neighbors<VolumeDim>>, 38 : DirectionalIdMap<VolumeDim, Mesh<VolumeDim>>> 39 1 : neighbors_of_child( 40 : const Element<VolumeDim>& parent, const Info<VolumeDim>& parent_info, 41 : const std::unordered_map<ElementId<VolumeDim>, Info<VolumeDim>>& 42 : parent_neighbor_info, 43 : const ElementId<VolumeDim>& child_id); 44 : } // namespace amr