Domain Creators

## Classes

class  domain::creators::AlignedLattice< VolumeDim, TargetFrame >
Create a Domain consisting of multiple aligned Blocks arrayed in a lattice. More...

class  domain::creators::Brick< TargetFrame >
Create a 3D Domain consisting of a single Block. More...

class  domain::creators::Cylinder< TargetFrame >
Create a 3D Domain in the shape of a cylinder where the cross-section is a square surrounded by four two-dimensional wedges (see Wedge2D). More...

class  domain::creators::Disk< TargetFrame >
Create a 2D Domain in the shape of a disk from a square surrounded by four wedges. More...

class  domain::creators::Interval< TargetFrame >
Create a 1D Domain consisting of a single Block. More...

class  domain::creators::Rectangle< TargetFrame >
Create a 2D Domain consisting of a single Block. More...

class  domain::creators::RotatedBricks< TargetFrame >
Create a 3D Domain consisting of eight rotated Blocks. More...

class  domain::creators::RotatedIntervals< TargetFrame >
Create a 1D Domain consisting of two rotated Blocks. The left block has its logical $\xi$-axis aligned with the grid x-axis. The right block has its logical $\xi$-axis opposite to the grid x-axis. This is useful for testing code that deals with unaligned blocks. More...

class  domain::creators::RotatedRectangles< TargetFrame >
Create a 2D Domain consisting of four rotated Blocks. More...

class  domain::creators::Shell< TargetFrame >
Creates a 3D Domain in the shape of a hollow spherical shell consisting of six wedges. More...

class  domain::creators::Sphere< TargetFrame >
Create a 3D Domain in the shape of a sphere consisting of six wedges and a central cube. For an image showing how the wedges are aligned in this Domain, see the documentation for Shell. More...

## Functions

template<size_t VolumeDim, typename T >
std::array< tt::remove_cvref_wrap_t< T >, VolumeDim > discrete_rotation (const OrientationMap< VolumeDim > &rotation, std::array< T, VolumeDim > source_coords) noexcept
OrientationMaps define an active rotation of the logical axes that bring the axes of a host block into alignment with the logical axes of the neighbor block. discrete_rotation applies this active rotation on the coordinates as opposed to the axes. For a two-dimensional example, consider a host block and a neighbor block, where the OrientationMap between them is $\{-\eta,+\xi\}$. A quarter- turn counterclockwise of the host block's logical axes would bring them into alignment with those of the neighbor. That is, after this active rotation, the blocks would be Aligned. Now consider a point A with coordinates (+1.0,-0.5). An active quarter-turn rotation counter-clockwise about the origin, keeping the axes fixed, brings point A into the coordinates (+0.5,+1.0). This is how discrete_rotation interprets the OrientationMap passed to it.

## Detailed Description

A collection of domain creators for specifying the initial computational domain geometry.