Tags.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 #include <memory>
8 #include <string>
9 
10 #include "DataStructures/DataBox/Tag.hpp"
12 #include "Utilities/GetOutput.hpp"
13 
14 /// \cond
15 namespace domain {
16 template <typename SourceFrame, typename TargetFrame, size_t Dim>
17 class CoordinateMapBase;
18 } // namespace domain
19 /// \endcond
20 
21 namespace domain {
22 namespace CoordinateMaps {
23 /// \ingroup ComputationalDomainGroup
24 /// \brief %Tags for the coordinate maps.
25 namespace Tags {
26 /// \ingroup DataBoxTagsGroup
27 /// \ingroup ComputationalDomainGroup
28 /// The coordinate map from source to target coordinates
29 template <size_t VolumeDim, typename SourceFrame, typename TargetFrame>
31 static constexpr size_t dim = VolumeDim;
32  using target_frame = TargetFrame;
34 
35  static std::string name() noexcept {
36  return "CoordinateMap(" + get_output(SourceFrame{}) + "," +
37  get_output(TargetFrame{}) + ")";
38  }
39  using type = std::unique_ptr<
41 };
42 } // namespace Tags
43 } // namespace CoordinateMaps
44 } // namespace domain
std::string
domain::CoordinateMapBase
Abstract base class for CoordinateMap.
Definition: CoordinateMap.hpp:46
IndexType.hpp
db::SimpleTag
Tags for the DataBox inherit from this type.
Definition: Tag.hpp:23
get_output
std::string get_output(const T &t) noexcept
Get the streamed output of t as a std::string
Definition: GetOutput.hpp:14
cstddef
memory
domain::CoordinateMaps::Tags::CoordinateMap
Definition: Tags.hpp:30
Frame::Logical
Definition: IndexType.hpp:42
std::unique_ptr
string