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 : 9 : #include "DataStructures/Tensor/IndexType.hpp" 10 : #include "Domain/CoordinateMaps/CoordinateMap.hpp" 11 : #include "Domain/Structure/ElementId.hpp" 12 : 13 : namespace domain { 14 : /*! 15 : * \brief Constructs the affine map from ElementLogical to BlockLogical 16 : * coordinates 17 : * 18 : * An element is the result of repeatedly splitting a block in half along any of 19 : * its logical axes. This map transforms from ElementLogical coordinates 20 : * [-1, 1]^dim to the subset of BlockLogical coordinates [-1, 1]^dim that cover 21 : * the element. For instance, the two elements at refinement level 1 in 1D 22 : * cover [-1, 0] and [0, 1] in BlockLogical coordinates, respectively. 23 : */ 24 : template <size_t Dim> 25 : std::unique_ptr< 26 : CoordinateMapBase<Frame::ElementLogical, Frame::BlockLogical, Dim>> 27 1 : element_to_block_logical_map(const ElementId<Dim>& element_id); 28 : } // namespace domain