Tags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <array>
7 #include <boost/functional/hash.hpp> // IWYU pragma: keep
8 #include <cstddef>
9 #include <string>
10 #include <unordered_map>
11 #include <utility>
12 
14 #include "Domain/Direction.hpp" // IWYU pragma: keep
15 #include "Domain/ElementId.hpp" // IWYU pragma: keep
16 #include "NumericalAlgorithms/DiscontinuousGalerkin/SimpleBoundaryData.hpp"
17 #include "NumericalAlgorithms/Spectral/Projection.hpp"
18 #include "Options/Options.hpp"
19 
20 namespace Tags {
21 /// \ingroup DataBoxTags
22 /// \ingroup DiscontinuousGalerkinGroup
23 /// \brief Simple boundary communication data
24 template <typename TemporalId, typename LocalData, typename RemoteData>
26  static std::string name() noexcept { return "SimpleBoundaryData"; }
28 };
29 
30 /// \ingroup DataBoxTagsGroup
31 /// \ingroup DiscontinuousGalerkinGroup
32 /// Data on mortars, indexed by (Direction, ElementId) pairs
33 template <typename Tag, size_t VolumeDim>
35  static std::string name() noexcept { return "Mortars"; }
36  using tag = Tag;
38  using type = std::unordered_map<Key, db::item_type<Tag>, boost::hash<Key>>;
39 };
40 
41 /// \ingroup DataBoxTagsGroup
42 /// \ingroup DiscontinuousGalerkinGroup
43 /// Size of a mortar, relative to the element face. That is, the part
44 /// of the face that it covers.
45 template <size_t Dim>
47  static std::string name() noexcept { return "MortarSize"; }
49 };
50 } // namespace Tags
51 
52 namespace OptionTags {
53 /*!
54  * \ingroup OptionTagsGroup
55  * \brief The global cache tag that retrieves the parameters for the numerical
56  * flux from the input file
57  */
58 template <typename NumericalFluxType>
60  static constexpr OptionString help = "The options for the numerical flux";
61  using type = NumericalFluxType;
62 };
63 } // namespace OptionTags
Defines class template Direction.
Storage of boundary data on two sides of a mortar.
Definition: SimpleBoundaryData.hpp:23
An ElementId uniquely labels an Element. It is constructed from the BlockId of the Block to which the...
Definition: ElementId.hpp:36
Defines classes and functions for making classes creatable from input files.
Tags for the DataBox inherit from this type.
Definition: DataBoxTag.hpp:65
Defines class ElementId.
const char *const OptionString
The string used in option structs.
Definition: Options.hpp:26
Data on mortars, indexed by (Direction, ElementId) pairs.
Definition: Tags.hpp:34
Simple boundary communication data.
Definition: Tags.hpp:25
Definition: Strahlkorper.hpp:167
Definition: DataBoxTag.hpp:29
Size of a mortar, relative to the element face. That is, the part of the face that it covers...
Definition: Tags.hpp:46
The global cache tag that retrieves the parameters for the numerical flux from the input file...
Definition: Tags.hpp:59
Marks an item as being a prefix to another tag.
Definition: DataBoxTag.hpp:112
Defines classes SimpleTag, PrefixTag, ComputeTag and several functions for retrieving tag info...