Line data Source code
1 0 : // 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" 11 : #include "DataStructures/Tensor/IndexType.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 1 : 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> 30 1 : struct CoordinateMap : db::SimpleTag { 31 0 : static constexpr size_t dim = VolumeDim; 32 0 : using target_frame = TargetFrame; 33 0 : using source_frame = SourceFrame; 34 : 35 0 : static std::string name() { 36 : return "CoordinateMap(" + get_output(SourceFrame{}) + "," + 37 : get_output(TargetFrame{}) + ")"; 38 : } 39 0 : using type = std::unique_ptr< 40 : domain::CoordinateMapBase<SourceFrame, TargetFrame, VolumeDim>>; 41 : }; 42 : } // namespace Tags 43 : } // namespace CoordinateMaps 44 : } // namespace domain