WaveBlocksND
Public Member Functions | List of all members
waveblocks::wavepackets::shapes::AbstractShape< D > Class Template Referenceabstract

Subclasses provide a description of a basis shape. More...

#include <shape_base.hpp>

Inheritance diagram for waveblocks::wavepackets::shapes::AbstractShape< D >:
waveblocks::wavepackets::shapes::HyperbolicCutShape< D > waveblocks::wavepackets::shapes::HyperCubicShape< D > waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >

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...
 

Detailed Description

template<dim_t D>
class waveblocks::wavepackets::shapes::AbstractShape< D >

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.

Template Parameters
Dbasis shape dimensionality

Constructor & Destructor Documentation

template<dim_t D>
virtual waveblocks::wavepackets::shapes::AbstractShape< D >::~AbstractShape ( )
inlinevirtual

Member Function Documentation

template<dim_t D>
virtual int waveblocks::wavepackets::shapes::AbstractShape< D >::bbox ( dim_t  axis) const
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\} \]

Parameters
axisThe direction \( \alpha \).
Returns
Length of the bbox.

Implemented in waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >, waveblocks::wavepackets::shapes::HyperCubicShape< D >, and waveblocks::wavepackets::shapes::HyperbolicCutShape< D >.

template<dim_t D>
virtual int waveblocks::wavepackets::shapes::AbstractShape< D >::limit ( int const *  base_node,
dim_t  axis 
) const
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.

Parameters
base_nodeThe basis node \( \underline{n} \). It contains D indices.
axisThe direction \( \alpha \).
Returns
Value of the surface function.

Implemented in waveblocks::wavepackets::shapes::LimitedHyperbolicCutShape< D >, waveblocks::wavepackets::shapes::HyperCubicShape< D >, and waveblocks::wavepackets::shapes::HyperbolicCutShape< D >.

template<dim_t D>
virtual void waveblocks::wavepackets::shapes::AbstractShape< D >::print ( std::ostream &  out) const
pure virtual

The documentation for this class was generated from the following file: