NiHu  2.0
NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber > Class Template Reference

the fmm for the 3D Helmholtz equation More...

#include <helmholtz_3d_hf_fmm.hpp>

Classes

class  l2l
 L2L operator of the FMM for the Helmholtz equation in 3D. More...
 
class  l2p
 L2P operator of the FMM for the Helmholtz equation in 3D. More...
 
class  m2l
 M2L operator of the FMM for the Helmholtz equation in 3D. More...
 
class  m2m
 M2M operator of the FMM for the Helmholtz equation in 3D. More...
 
class  m2p
 M2P operator of the FMM for the Helmholtz equation in 3D. More...
 
class  p2l
 P2L operator of the FMM for the Helmholtz equation in 3D. More...
 
class  p2m
 P2M operator of the FMM for the Helmholtz equation in 3D. More...
 

Public Types

using wave_number_t = WaveNumber
 template argument as nested type
 
using cvector_t = Eigen::Matrix< std::complex< double >, Eigen::Dynamic, 1 >
 complex dynamic vector
 
using cluster_t = helmholtz_3d_hf_cluster
 the fmm's cluster type
 
using bounding_box_t = typename cluster_t::bounding_box_t
 the bounding box type
 
using location_t = typename bounding_box_t::location_t
 the physical location type
 
using cluster_tree_t = cluster_tree< cluster_t >
 the cluster tree type
 
using distance_dependent_kernel_t = NiHu::helmholtz_kernel< NiHu::space_3d<>, wave_number_t >
 
template<int Ny>
using p2m_type = p2m< Ny >
 metafunction returning the P2M operator's type for a given order More...
 
template<int Ny>
using p2l_type = p2l< Ny >
 metafunction returning the P2L operator's type for a given order More...
 
template<int Nx>
using m2p_type = m2p< Nx >
 metafunction returning the M2P operator's type for a given order More...
 
template<int Nx>
using l2p_type = l2p< Nx >
 metafunction returning the L2P operator's type for a given order More...
 
template<int Nx, int Ny>
using p2p_type = fmm::p2p< NiHu::normal_derivative_kernel< distance_dependent_kernel_t, Nx, Ny > >
 metafunction returning the P2P operator's type More...
 

Public Member Functions

 helmholtz_3d_hf_fmm (wave_number_t const &k)
 constructor More...
 
void set_accuracy (double accuracy)
 set the method's accuracy parameter More...
 
void init_level_data (cluster_tree_t const &tree)
 initialize the level data of the fmm method More...
 
const helmholtz_3d_hf_level_dataget_level_data (size_t idx) const
 return level data for a specific level More...
 
helmholtz_3d_hf_level_dataget_level_data (size_t idx)
 return level data reference for a specific level More...
 
template<int Ny>
p2m_type< Ny > create_p2m () const
 factory function for the P2M operator More...
 
template<int Ny>
p2l_type< Ny > create_p2l () const
 factory function for the P2L operator More...
 
template<int Nx>
l2p_type< Nx > create_l2p () const
 factory function for the L2P operator More...
 
template<int Nx>
m2p_type< Nx > create_m2p () const
 factory function for the M2P operator More...
 
template<int Nx, int Ny>
p2p_type< Nx, Ny > create_p2p () const
 factory function for the P2P operator More...
 
m2m create_m2m () const
 factory function for the M2M operator More...
 
l2l create_l2l () const
 factory function for the L2L operator More...
 
m2l create_m2l () const
 factory function for the M2L operator More...
 

Static Public Member Functions

static size_t compute_expansion_length (double drel, double C)
 compute expansion length based on relative cluster size More...
 

Detailed Description

template<class WaveNumber>
class NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >

the fmm for the 3D Helmholtz equation

Template Parameters
WaveNumberthe wave number type (double or complex)

Definition at line 101 of file helmholtz_3d_hf_fmm.hpp.

Member Typedef Documentation

◆ l2p_type

template<class WaveNumber >
template<int Nx>
using NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::l2p_type = l2p<Nx>

metafunction returning the L2P operator's type for a given order

Template Parameters
Nxthe order of receiver differentiation

Definition at line 569 of file helmholtz_3d_hf_fmm.hpp.

◆ m2p_type

template<class WaveNumber >
template<int Nx>
using NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::m2p_type = m2p<Nx>

metafunction returning the M2P operator's type for a given order

Template Parameters
Nxthe order of receiver differentiation

Definition at line 564 of file helmholtz_3d_hf_fmm.hpp.

◆ p2l_type

template<class WaveNumber >
template<int Ny>
using NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::p2l_type = p2l<Ny>

metafunction returning the P2L operator's type for a given order

Template Parameters
Nythe order of source differentiation

Definition at line 559 of file helmholtz_3d_hf_fmm.hpp.

◆ p2m_type

template<class WaveNumber >
template<int Ny>
using NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::p2m_type = p2m<Ny>

metafunction returning the P2M operator's type for a given order

Template Parameters
Nythe order of source differentiation

Definition at line 554 of file helmholtz_3d_hf_fmm.hpp.

◆ p2p_type

template<class WaveNumber >
template<int Nx, int Ny>
using NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::p2p_type = fmm::p2p< NiHu::normal_derivative_kernel< distance_dependent_kernel_t, Nx, Ny > >

metafunction returning the P2P operator's type

Template Parameters
Nxthe order of receiver differentiation
Nythe order of source differentiation

Definition at line 579 of file helmholtz_3d_hf_fmm.hpp.

Constructor & Destructor Documentation

◆ helmholtz_3d_hf_fmm()

template<class WaveNumber >
NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::helmholtz_3d_hf_fmm ( wave_number_t const &  k)
inline

constructor

Parameters
[in]kthe wave number

Definition at line 121 of file helmholtz_3d_hf_fmm.hpp.

Member Function Documentation

◆ compute_expansion_length()

template<class WaveNumber >
static size_t NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::compute_expansion_length ( double  drel,
double  C 
)
inlinestatic

compute expansion length based on relative cluster size

Parameters
[in]drelrelative cluster diameter
[in]Caccuracy parameter

Definition at line 130 of file helmholtz_3d_hf_fmm.hpp.

◆ create_l2l()

template<class WaveNumber >
l2l NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_l2l ( ) const
inline

factory function for the L2L operator

Returns
the l2l operator instance

Definition at line 639 of file helmholtz_3d_hf_fmm.hpp.

◆ create_l2p()

template<class WaveNumber >
template<int Nx>
l2p_type<Nx> NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_l2p ( ) const
inline

factory function for the L2P operator

Template Parameters
Nxthe order of receiver differentiation
Returns
the l2p operator instance

Definition at line 603 of file helmholtz_3d_hf_fmm.hpp.

◆ create_m2l()

template<class WaveNumber >
m2l NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_m2l ( ) const
inline

factory function for the M2L operator

Returns
the m2l operator instance

Definition at line 646 of file helmholtz_3d_hf_fmm.hpp.

◆ create_m2m()

template<class WaveNumber >
m2m NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_m2m ( ) const
inline

factory function for the M2M operator

Returns
the m2m operator instance

Definition at line 632 of file helmholtz_3d_hf_fmm.hpp.

◆ create_m2p()

template<class WaveNumber >
template<int Nx>
m2p_type<Nx> NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_m2p ( ) const
inline

factory function for the M2P operator

Template Parameters
Nxthe order of receiver differentiation
Returns
the m2p operator instance

Definition at line 612 of file helmholtz_3d_hf_fmm.hpp.

◆ create_p2l()

template<class WaveNumber >
template<int Ny>
p2l_type<Ny> NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_p2l ( ) const
inline

factory function for the P2L operator

Template Parameters
Nythe order of source differentiation
Returns
the p2l operator instance

Definition at line 594 of file helmholtz_3d_hf_fmm.hpp.

◆ create_p2m()

template<class WaveNumber >
template<int Ny>
p2m_type<Ny> NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_p2m ( ) const
inline

factory function for the P2M operator

Template Parameters
Nythe order of source differentiation
Returns
the p2m operator instance

Definition at line 585 of file helmholtz_3d_hf_fmm.hpp.

◆ create_p2p()

template<class WaveNumber >
template<int Nx, int Ny>
p2p_type<Nx, Ny> NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::create_p2p ( ) const
inline

factory function for the P2P operator

Template Parameters
Nythe order of source differentiation
Nxthe order of receiver differentiation
Returns
the p2p operator instance

Definition at line 622 of file helmholtz_3d_hf_fmm.hpp.

◆ get_level_data() [1/2]

template<class WaveNumber >
helmholtz_3d_hf_level_data& NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::get_level_data ( size_t  idx)
inline

return level data reference for a specific level

Parameters
[in]idxthe level index
Returns
the level data reference

Definition at line 188 of file helmholtz_3d_hf_fmm.hpp.

◆ get_level_data() [2/2]

template<class WaveNumber >
const helmholtz_3d_hf_level_data& NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::get_level_data ( size_t  idx) const
inline

return level data for a specific level

Parameters
[in]idxthe level index
Returns
the level data

Definition at line 180 of file helmholtz_3d_hf_fmm.hpp.

◆ init_level_data()

template<class WaveNumber >
void NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::init_level_data ( cluster_tree_t const &  tree)
inline

initialize the level data of the fmm method

Parameters
[in]treethe cluster tree

Definition at line 147 of file helmholtz_3d_hf_fmm.hpp.

◆ set_accuracy()

template<class WaveNumber >
void NiHu::fmm::helmholtz_3d_hf_fmm< WaveNumber >::set_accuracy ( double  accuracy)
inline

set the method's accuracy parameter

Parameters
[in]Cthe accuracy parameter

the accuracy parameter is usually set to 3.0

Definition at line 140 of file helmholtz_3d_hf_fmm.hpp.


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