NiHu  2.0
helmholtz_3d_hf_level_data.h
Go to the documentation of this file.
1 
7 #ifndef FMM_HELMHOLTZ_3D_HF_LEVEL_DATA_H_INCLUDED
8 #define FMM_HELMHOLTZ_3D_HF_LEVEL_DATA_H_INCLUDED
9 
10 #include "unit_sphere.h"
12 
13 #include <Eigen/Dense>
14 
15 #include <vector>
16 
17 namespace NiHu
18 {
19 namespace fmm
20 {
21 
24 {
25 public:
27  typedef Eigen::Matrix<std::complex<double>, Eigen::Dynamic, 1> cvector_t;
28 
33  : m_interp_ups(1)
34  , m_interp_dns(1)
35  {
36  }
37 
41  void set_expansion_length(size_t L);
42 
46  size_t get_expansion_length() const;
47 
51  unit_sphere const &get_unit_sphere() const;
52 
56  void set_num_threads(size_t n);
57 
62  cvector_t const &interp_up(cvector_t const &x) const;
63 
68  cvector_t const &interp_down(cvector_t const &x) const;
69 
73  void set_interp_up(interpolator const &interp);
74 
78  void set_interp_dn(interpolator const &interp);
79 
80 private:
81  size_t m_expansion_length; // L
82  unit_sphere m_unit_sphere; // the unit phere on this level
83  std::vector<interpolator> m_interp_ups; // upward interpolators fall all threads
84  std::vector<interpolator> m_interp_dns; // downward interpolators for all threads
85 };
86 
87 } // end of namespace fmm
88 } // end of namespace NiHu
89 
90 #endif /* FMM_HELMHOLTZ_3D_HF_LEVEL_DATA_H_INCLUDED */
NiHu::fmm::helmholtz_3d_hf_level_data::set_expansion_length
void set_expansion_length(size_t L)
set the expansion length
Definition: helmholtz_3d_hf_level_data.cpp:14
NiHu::fmm::helmholtz_3d_hf_level_data::interp_down
const cvector_t & interp_down(cvector_t const &x) const
interpolate a function on the unit sphere down to this level
Definition: helmholtz_3d_hf_level_data.cpp:45
NiHu::fmm::helmholtz_3d_hf_level_data::set_num_threads
void set_num_threads(size_t n)
set the number of threads
Definition: helmholtz_3d_hf_level_data.cpp:31
NiHu::fmm::unit_sphere
class performing interpolation and integration over the unit sphere
Definition: unit_sphere.h:18
NiHu::fmm::helmholtz_3d_hf_level_data::helmholtz_3d_hf_level_data
helmholtz_3d_hf_level_data()
constructor Sets vectors to size 1, as they need to be expanded based on first element
Definition: helmholtz_3d_hf_level_data.h:32
NiHu::fmm::helmholtz_3d_hf_level_data::interp_up
const cvector_t & interp_up(cvector_t const &x) const
interpolate a function on the unit sphere up to this level
Definition: helmholtz_3d_hf_level_data.cpp:38
NiHu::fmm::helmholtz_3d_hf_level_data::set_interp_dn
void set_interp_dn(interpolator const &interp)
set the down-interpolator object (for all threads)
Definition: helmholtz_3d_hf_level_data.cpp:57
unit_sphere_interpolator.h
Interface of class NiHu::fmm::interpolator.
NiHu::fmm::helmholtz_3d_hf_level_data::cvector_t
Eigen::Matrix< std::complex< double >, Eigen::Dynamic, 1 > cvector_t
complex dynamic Eigen vector
Definition: helmholtz_3d_hf_level_data.h:27
NiHu::fmm::helmholtz_3d_hf_level_data::get_unit_sphere
const unit_sphere & get_unit_sphere() const
return the stored unit sphere
Definition: helmholtz_3d_hf_level_data.cpp:21
unit_sphere.h
Interface of class NiHu::fmm::unit_sphere.
NiHu::fmm::interpolator
class interpolating over the unit sphere
Definition: unit_sphere_interpolator.h:25
NiHu::fmm::helmholtz_3d_hf_level_data::get_expansion_length
size_t get_expansion_length() const
return the expansion length
Definition: helmholtz_3d_hf_level_data.cpp:26
NiHu::fmm::helmholtz_3d_hf_level_data::set_interp_up
void set_interp_up(interpolator const &interp)
set the up-interpolator object (for all threads)
Definition: helmholtz_3d_hf_level_data.cpp:51
NiHu::fmm::helmholtz_3d_hf_level_data
level data of the helmholtz 3d hf fmm
Definition: helmholtz_3d_hf_level_data.h:23