WaveBlocksND
|
Subclasses provide a description of a basis shape. More...
#include <shape_base.hpp>
Public Member Functions | |
virtual | ~AbstractShape () |
virtual int | bbox (dim_t axis) const =0 |
Retrieves the length of the minimum bounding box in one direction. More... | |
virtual int | limit (int const *base_node, dim_t axis) const =0 |
Evaluates one surface function on a base node. More... | |
virtual void | print (std::ostream &out) const =0 |
Prints a pretty description of the shape. More... | |
Subclasses provide a description of a basis shape.
A \( D \)-dimensional basis shape \( \mathfrak{K} \) is a set of unordered \( D \) dimensional integer tuples (aka node).
Subclasses provide an description of a basis shape \( \mathfrak{K} \subset \mathbb{N}_0^D\). It describes, which nodes \( \underline{k} \in \mathbb{N}_0^D \) are part of the shape. Instances are passed to the ShapeEnumerator, which converts the information to an ShapeEnum.
Keep in mind, that basis shapes must fulfill the fundamental property
\[ \underline{k} \in \mathfrak{K} \Rightarrow \forall \underline{k}-\underline{e}^d \in \mathfrak{K} \;\forall d \in \{d \;|\;k_d \geq 1\} \]
where \( \underline{e}^d \) is the unit vector in direction \( d \). That means, if an arbitrary node is part of the basis shape, then all nodes in the backward cone are part of the shape too.
D | basis shape dimensionality |
|
inlinevirtual |
|
pure virtual |
Retrieves the length of the minimum bounding box in one direction.
The minimum bounding box is given by
\[ L_{\alpha}=\max_{k_{\alpha}}\left\{\underline{k} \in \mathfrak{K}\right\} \]
axis | The direction \( \alpha \). |
Implemented in waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >, waveblocks::wavepackets::shapes::HyperCubicShape< D >, and waveblocks::wavepackets::shapes::HyperbolicCutShape< D >.
|
pure virtual |
Evaluates one surface function on a base node.
The surface function to direction \( \alpha \) is given by
\[ s_{\alpha}(\underline{n})=\max_{k_{\alpha}} \left\{\underline{k} \in \mathfrak{K} \;|\; k_d = n_d \; \forall d \neq \alpha \right\} \]
Notice that the \( \alpha \)-th entry of \( \underline{n} \) does not influence return value. It can be of any value since it is simply ignored.
base_node | The basis node \( \underline{n} \). It contains D indices. |
axis | The direction \( \alpha \). |
Implemented in waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >, waveblocks::wavepackets::shapes::HyperCubicShape< D >, and waveblocks::wavepackets::shapes::HyperbolicCutShape< D >.
|
pure virtual |
Prints a pretty description of the shape.
out | The output stream. |
Implemented in waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >, waveblocks::wavepackets::shapes::HyperCubicShape< D >, and waveblocks::wavepackets::shapes::HyperbolicCutShape< D >.