Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <boost/functional/hash.hpp> 7 : #include <cstddef> 8 : #include <optional> 9 : #include <utility> 10 : 11 : #include "DataStructures/DataBox/Tag.hpp" 12 : #include "Domain/Structure/DirectionalIdMap.hpp" 13 : 14 : /// \cond 15 : template <size_t Dim> 16 : class Direction; 17 : template <size_t Dim> 18 : class ElementId; 19 : namespace intrp { 20 : template <size_t Dim> 21 : class Irregular; 22 : } // namespace intrp 23 : /// \endcond 24 : 25 : namespace evolution::dg::subcell::Tags { 26 : /*! 27 : * \brief An `intrp::Irregular` from our FD grid to our neighbors' FD grid. 28 : * 29 : * Values are only set if the neighboring elements' logical coordinate axes 30 : * are not aligned with ours. I.e., on block boundaries. 31 : */ 32 : template <size_t Dim> 33 1 : struct InterpolatorsFromFdToNeighborFd : db::SimpleTag { 34 0 : using type = DirectionalIdMap<Dim, std::optional<intrp::Irregular<Dim>>>; 35 : }; 36 : 37 : /*! 38 : * \brief An `intrp::Irregular` from our DG grid to our neighbors' FD grid. 39 : * 40 : * Values are only set if the neighboring elements' logical coordinate axes 41 : * are not aligned with ours. I.e., on block boundaries. 42 : */ 43 : template <size_t Dim> 44 1 : struct InterpolatorsFromDgToNeighborFd : db::SimpleTag { 45 0 : using type = DirectionalIdMap<Dim, std::optional<intrp::Irregular<Dim>>>; 46 : }; 47 : 48 : /*! 49 : * \brief An `intrp::Irregular` from our neighbors' DG grid to our FD grid. 50 : * 51 : * Values are only set if the neighboring elements' logical coordinate axes 52 : * are not aligned with ours. I.e., on block boundaries. 53 : */ 54 : template <size_t Dim> 55 1 : struct InterpolatorsFromNeighborDgToFd : db::SimpleTag { 56 0 : using type = DirectionalIdMap<Dim, std::optional<intrp::Irregular<Dim>>>; 57 : }; 58 : } // namespace evolution::dg::subcell::Tags