Template Class FmmScaleInvariant

Inheritance Relationships

Base Type

Class Documentation

template<typename T>
class exafmm_t::FmmScaleInvariant : public exafmm_t::FmmBase<T>

Public Functions

inline FmmScaleInvariant()
inline FmmScaleInvariant(int p_, int ncrit_, std::string filename_ = std::string())
inline void initialize_matrix()

Setup the sizes of precomputation matrices.

inline void precompute_M2M()

Precompute M2M and L2L.

inline void precompute_check2equiv()

Precompute UC2UE and DC2DE matrices.

inline void precompute_M2L()

Precompute M2L.

inline void save_matrix()

Save precomputation matrices.

inline void load_matrix()

Check and load precomputation matrices.

inline void precompute()

Precompute.

inline virtual void P2M(NodePtrs<T> &leafs)

P2M operator.

inline virtual void L2P(NodePtrs<T> &leafs)

L2P operator.

inline virtual void M2M(Node<T> *node)

M2M operator.

inline virtual void L2L(Node<T> *node)

L2L operator.

inline void M2L_setup(NodePtrs<T> nonleafs)
inline void hadamard_product(std::vector<size_t> &interaction_count_offset, std::vector<size_t> &interaction_offset_f, AlignedVec &fft_in, AlignedVec &fft_out)
inline void fft_up_equiv(std::vector<size_t> &fft_offset, RealVec &all_up_equiv, AlignedVec &fft_in)
inline void ifft_dn_check(std::vector<size_t> &ifft_offset, RealVec &ifft_scal, AlignedVec &fft_out, RealVec &all_dn_equiv)
inline virtual void M2L(Nodes<T> &nodes)

M2L operator.

template<>
void precompute_check2equiv()

Below are member function specializations

template<>
void precompute_check2equiv()
template<>
void precompute_M2L()

member function specialization for real type

template<>
void fft_up_equiv(std::vector<size_t> &fft_offset, RealVec &all_up_equiv, AlignedVec &fft_in)
template<>
void ifft_dn_check(std::vector<size_t> &ifft_offset, RealVec &ifft_scal, AlignedVec &fft_out, RealVec &all_dn_equiv)

Public Members

std::vector<T> matrix_UC2E_U

First component of the pseudo-inverse of upward check to upward equivalent kernel matrix.

For the variables from base class that do not template parameter T, we need to use this-> to tell compilers to lookup nondependent names in the base class. Eg. p, nsurf, r0, kernel_matrix etc. https://isocpp.org/wiki/faq/templates#nondependent-name-lookup-members/

std::vector<T> matrix_UC2E_V

Second component of the pseudo-inverse of upward check to upward equivalent kernel matrix.

std::vector<T> matrix_DC2E_U

First component of the pseudo-inverse of downward check to downward equivalent kernel matrix.

std::vector<T> matrix_DC2E_V

Second component of the pseudo-inverse of downward check to downward equivalent kernel matrix.

std::vector<std::vector<T>> matrix_M2M

The pseudo-inverse of M2M kernel matrix.

std::vector<std::vector<T>> matrix_L2L

The pseudo-inverse of L2L kernel matrix.

std::vector<AlignedVec> matrix_M2L

The pseudo-inverse of M2L kernel matrix.

M2LData m2ldata