SpECTRE
v2024.09.16
|
A composition of coordinate maps at runtime. More...
A composition of coordinate maps at runtime.
Composes a sequence of domain::CoordinateMapBase
that step through the Frames
. The result is another domain::CoordinateMapBase
. This is different to domain::CoordinateMap
, which does the composition at compile time. The use cases are different:
domain::CoordinateMap
to compose maps at compile time to go from one (named) frame to another using any number of coordinate transformation. The coordinate transformations are concatenated to effectively form a single map, and intermediate frames have no meaning. This has the performance benefit that looking up pointers and calling into virtual member functions of intermediate maps is avoided, and it has the semantic benefit that intermediate frames without meaning are not named or even accessible. Example: A static BlockLogical -> Grid map that deforms the logical cube to a wedge, applies a radial redistribution of grid points, and translates + rotates the wedge.domain::CoordinateMaps::Composition
(this class) to compose maps at runtime to step through a sequence of (named) frames. Example: A time-dependent ElementLogical -> BlockLogical -> Grid -> Inertial map that applies an affine transformation between the ElementLogical and BlockLogical frames (see domain::element_to_block_logical_map), then deforms the logical cube to a wedge using the map described above (Grid frame), and then rotates the grid with a time-dependent rotation map (Inertial frame).Frames | The list of frames in the composition, as a tmpl::list<>. The first entry in the list is the source frame, and the last entry is the target frame of the composition. Maps in the composition step through the Frames . For example, if Frames = tmpl::list<Frame::ElementLogical, Frame::BlockLogical, Frame::Inertial> , then the composition has two maps: ElementLogical -> BlockLogical and BlockLogical -> Inertial. |