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
|