mpqc::pbc::ma Namespace Reference

Classes

struct  is_multipole_moments
 
struct  is_multipole_moments< MultipoleMoments< T, Type, LMAX > >
 
class  MA_CFFLatticeSum
 This class computes the contribution to the Coulomb lattice sum from unit cells in Crystal Far Field (CFF) using multipole approximation. More...
 
class  MultipoleMoments
 Spherical multipole moments. More...
 
struct  rebind
 
struct  rebind< MultipoleMoments< Source, Type, LMAX >, Target >
 
struct  rebind< std::array< Source, Size >, Target >
 

Typedefs

template<typename MM , typename Target >
using rebind_t = typename rebind< MM, Target >::type
 

Enumerations

enum  MultipoleMomentsType {
  MultipoleMomentsType::undefined, MultipoleMomentsType::o, MultipoleMomentsType::o_plus, MultipoleMomentsType::o_minus,
  MultipoleMomentsType::o_plusminus
}
 supported types of spherical multipole moments More...
 

Functions

constexpr int number_of_multipoles (int lmax)
 
template<typename T , MultipoleMomentsType Type, int LMAX>
constexpr MultipoleMoments< T, Type, LMAX > operator+ (const MultipoleMoments< T, Type, LMAX > &a, const MultipoleMoments< T, Type, LMAX > &b)
 
template<typename T , MultipoleMomentsType Type, int LMAX>
constexpr MultipoleMoments< T, Type, LMAX > operator- (const MultipoleMoments< T, Type, LMAX > &a, const MultipoleMoments< T, Type, LMAX > &b)
 
template<typename Range >
void print_multipole_moments (std::ostream &os, const Range &moments, const std::string &prefix="")
 

Variables

template<typename T >
constexpr const bool is_multipole_moments_v = is_multipole_moments<T>::value
 

Typedef Documentation

◆ rebind_t

template<typename MM , typename Target >
using mpqc::pbc::ma::rebind_t = typedef typename rebind<MM, Target>::type

Enumeration Type Documentation

◆ MultipoleMomentsType

supported types of spherical multipole moments

Enumerator
undefined 

undefined type: up to the user to ensure proper use

Real spherical multipole moments as defined in DOI 10.1063/1.468354:

\[ O_{l,m}(\vec{r}) \equiv \frac{r^l}{(l+m)!} P^m_l(\cos\theta) \begin{cases} \cos(m\phi)\mathrm{,\ if\ } m \geq 0 \\ \sin(m\phi)\mathrm{,\ if\ } m < 0 \end{cases} \]

o_plus 

Positive-phase real spherical multipole moments as defined in DOI 10.1063/1.468354:

\[ O^+_{l,m} \equiv \begin{cases} O_{l,m} \mathrm{, if} m \geq 0 \\ (-1)^m O_{l,-m} \mathrm{,\ if\ } m < 0 \end{cases} \]

o_minus 

Negative-phase real spherical multipole moments as defined in DOI 10.1063/1.468354:

\[ O^-_{l,m} \equiv \begin{cases} (-1)^{(m+1)} O_{l,-m} \mathrm{,\ if\ } m > 0 \\ 0 \mathrm{,\ if\ } m = 0 \\ O_{l, m} \mathrm{,\ if\ } m < 0 \end{cases} \]

o_plusminus 

Signed-phase real spherical multipole moments as defined in DOI 10.1063/1.468354:

\[ O^\pm_{l,m} \equiv O^{\mathrm{sign}(m)}_{l, |m|} = \begin{cases} O^+_{l,m} \mathrm{,\ if\ } m \geq 0 \\ O^-_{l,-m} \mathrm{,\ if\ } m < 0 \end{cases} \]

Function Documentation

◆ number_of_multipoles()

constexpr int mpqc::pbc::ma::number_of_multipoles ( int  lmax)
inlineconstexpr

◆ operator+()

template<typename T , MultipoleMomentsType Type, int LMAX>
constexpr MultipoleMoments<T, Type, LMAX> mpqc::pbc::ma::operator+ ( const MultipoleMoments< T, Type, LMAX > &  a,
const MultipoleMoments< T, Type, LMAX > &  b 
)
constexpr

◆ operator-()

template<typename T , MultipoleMomentsType Type, int LMAX>
constexpr MultipoleMoments<T, Type, LMAX> mpqc::pbc::ma::operator- ( const MultipoleMoments< T, Type, LMAX > &  a,
const MultipoleMoments< T, Type, LMAX > &  b 
)
constexpr

◆ print_multipole_moments()

template<typename Range >
void mpqc::pbc::ma::print_multipole_moments ( std::ostream &  os,
const Range &  moments,
const std::string &  prefix = "" 
)

Variable Documentation

◆ is_multipole_moments_v

template<typename T >
constexpr const bool mpqc::pbc::ma::is_multipole_moments_v = is_multipole_moments<T>::value
constexpr