NiHu  2.0
NiHu::fmm::fmm_operator_collection< Ops > Class Template Reference

Class representing a collection of FMM operators. More...

#include <fmm_operator_collection.hpp>

Classes

struct  op_type
 Metafunction for retreiving operator type for a given tag. More...
 

Public Member Functions

 fmm_operator_collection (Ops &&... ops)
 Constructor. More...
 
template<typename FmmTag >
auto get (FmmTag tag) const
 Retrieve operator from the collection. More...
 
template<class ... OpsRhs>
auto operator| (fmm_operator_collection< OpsRhs... > &&rhs) const
 Concatenate (create union of) two operator collections. More...
 
template<class Operator >
auto operator| (Operator &&rhs) const
 Concatenate (create union of) a collection and an operator. More...
 
template<class F >
auto transform (F f)
 Transform collection. More...
 

Detailed Description

template<class ... Ops>
class NiHu::fmm::fmm_operator_collection< Ops >

Class representing a collection of FMM operators.

Todo:
Check if it would be useful to have a CRTP base for collections
Template Parameters
...OpsContained operator types

The operator collection enables performing the same manipulations, such as integration, indexing and precomputing on a group of FMM operators at the same time.

Definition at line 22 of file fmm_operator_collection.hpp.

Constructor & Destructor Documentation

◆ fmm_operator_collection()

template<class ... Ops>
NiHu::fmm::fmm_operator_collection< Ops >::fmm_operator_collection ( Ops &&...  ops)
inline

Constructor.

Parameters
[in]...Operators contained in the collection

Definition at line 80 of file fmm_operator_collection.hpp.

Member Function Documentation

◆ get()

template<class ... Ops>
template<typename FmmTag >
auto NiHu::fmm::fmm_operator_collection< Ops >::get ( FmmTag  tag) const
inline

Retrieve operator from the collection.

Template Parameters
FmmTagOperator type tag
Parameters
[in]tagTag instance to identify operator type
Returns
Requested operator

Static assertion guarantees that a compilation error occurs if the requested operator is not found in the collection.

Definition at line 96 of file fmm_operator_collection.hpp.

◆ operator|() [1/2]

template<class ... Ops>
template<class ... OpsRhs>
auto NiHu::fmm::fmm_operator_collection< Ops >::operator| ( fmm_operator_collection< OpsRhs... > &&  rhs) const
inline

Concatenate (create union of) two operator collections.

Template Parameters
...OpsRhsOperators of the right hand side collection
Returns
Concatenated collection

Definition at line 113 of file fmm_operator_collection.hpp.

◆ operator|() [2/2]

template<class ... Ops>
template<class Operator >
auto NiHu::fmm::fmm_operator_collection< Ops >::operator| ( Operator &&  rhs) const
inline

Concatenate (create union of) a collection and an operator.

Template Parameters
OperatorOperator added to the collection
Returns
Extended collection

Definition at line 124 of file fmm_operator_collection.hpp.

◆ transform()

template<class ... Ops>
template<class F >
auto NiHu::fmm::fmm_operator_collection< Ops >::transform ( f)
inline

Transform collection.

Template Parameters
FFunctor type of transformation
Parameters
[in]fFunctor instance
Returns
New operator collection with the transformation applied on each operator

Definition at line 151 of file fmm_operator_collection.hpp.


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