SPH
Classes | Namespaces | Enumerations | Functions
Moments.h File Reference
#include "objects/geometry/Multipole.h"

Go to the source code of this file.

Classes

struct  ComputeTrace< 1 >
 
struct  ComputeTrace< 2 >
 
struct  MomentOperators::Term2
 
struct  MomentOperators::Term30
 
struct  MomentOperators::Term31
 
struct  MomentOperators::Term32
 

Namespaces

 Detail
 
 MomentOperators
 

Enumerations

enum class  MultipoleOrder { MONOPOLE = 0 , QUADRUPOLE = 2 , OCTUPOLE = 3 , HEXADECAPOLE = 4 }
 

Functions

template<Size N>
NAMESPACE_SPH_BEGIN INLINE void computeGreenGamma (ArrayView< Float > gamma, const Vector dr)
 
template<Size M, Size N>
Multipole< N - 2 *M > computeTrace (const Multipole< N > &m)
 Computes M-fold trace of given multipole moment. More...
 
template<Size N, Size M>
INLINE Float reducedFactor ()
 
template<Size N>
TracelessMultipole< NcomputeReducedMultipole (const Multipole< N > &m)
 
template<>
TracelessMultipole< 4 > computeReducedMultipole (const Multipole< 4 > &m)
 
template<>
TracelessMultipole< 3 > computeReducedMultipole (const Multipole< 3 > &m)
 
template<>
TracelessMultipole< 2 > computeReducedMultipole (const Multipole< 2 > &m)
 
template<>
TracelessMultipole< 1 > computeReducedMultipole (const Multipole< 1 > &m)
 
template<>
TracelessMultipole< 0 > computeReducedMultipole (const Multipole< 0 > &m)
 
template<Size M, Size N>
std::enable_if_t<(M< N), TracelessMultipole< M > > computeMultipolePotential (const TracelessMultipole< N > &q, const Vector &r)
 
template<Size M, Size N>
std::enable_if_t< M==N, TracelessMultipole< M > > computeMultipolePotential (const TracelessMultipole< N > &q, const Vector &UNUSED(r))
 
template<Size M, Size N>
std::enable_if_t<(M > N), TracelessMultipole< M > > computeMultipolePotential (const TracelessMultipole< N > &UNUSED(q), const Vector &UNUSED(r))
 
template<Size N>
INLINE Multipole< NDetail::computeMultipoleImpl (const Vector &dr, const Float m)
 
template<>
INLINE Multipole< 0 > Detail::computeMultipoleImpl (const Vector &UNUSED(dr), const Float m)
 
template<Size N, typename TSequence >
Multipole< NcomputeMultipole (ArrayView< const Vector > r, ArrayView< const Float > m, const Vector &r0, const TSequence &sequence)
 
INLINE TracelessMultipole< 1 > parallelAxisTheorem (const TracelessMultipole< 1 > &Qi, const Float Q, const Vector &d)
 
INLINE TracelessMultipole< 2 > parallelAxisTheorem (const TracelessMultipole< 2 > &Qij, const Float Q, const Vector &d)
 
INLINE TracelessMultipole< 3 > parallelAxisTheorem (const TracelessMultipole< 3 > &Qijk, const TracelessMultipole< 2 > &Qij, const Float Q, const Vector &d)
 
INLINE TracelessMultipole< 4 > parallelAxisTheorem (const TracelessMultipole< 4 > &Qijkl, const TracelessMultipole< 3 > &Qijk, const TracelessMultipole< 2 > &Qij, const Float Q, const Vector &d)
 
template<Size M, Size N>
INLINE Vector computeMultipoleAcceleration (const MultipoleExpansion< N > &ms, ArrayView< const Float > gamma, const Vector &dr)
 
template<Size N>
Vector evaluateGravity (const Vector &dr, const MultipoleExpansion< N > &ms, const MultipoleOrder maxOrder)
 

Enumeration Type Documentation

◆ MultipoleOrder

enum MultipoleOrder
strong
Enumerator
MONOPOLE 
QUADRUPOLE 
OCTUPOLE 
HEXADECAPOLE 

Definition at line 309 of file Moments.h.

Function Documentation

◆ computeGreenGamma()

template<Size N>
NAMESPACE_SPH_BEGIN INLINE void computeGreenGamma ( ArrayView< Float gamma,
const Vector  dr 
)

Definition at line 8 of file Moments.h.

◆ computeMultipole()

template<Size N, typename TSequence >
Multipole<N> computeMultipole ( ArrayView< const Vector r,
ArrayView< const Float m,
const Vector r0,
const TSequence &  sequence 
)

Definition at line 152 of file Moments.h.

◆ computeMultipoleAcceleration()

template<Size M, Size N>
INLINE Vector computeMultipoleAcceleration ( const MultipoleExpansion< N > &  ms,
ArrayView< const Float gamma,
const Vector dr 
)

Definition at line 297 of file Moments.h.

◆ computeMultipolePotential() [1/3]

template<Size M, Size N>
std::enable_if_t<(M < N), TracelessMultipole<M> > computeMultipolePotential ( const TracelessMultipole< N > &  q,
const Vector r 
)

Definition at line 117 of file Moments.h.

◆ computeMultipolePotential() [2/3]

template<Size M, Size N>
std::enable_if_t<M == N, TracelessMultipole<M> > computeMultipolePotential ( const TracelessMultipole< N > &  q,
const Vector UNUSED
)

Definition at line 126 of file Moments.h.

◆ computeMultipolePotential() [3/3]

template<Size M, Size N>
std::enable_if_t<(M > N), TracelessMultipole<M> > computeMultipolePotential ( const TracelessMultipole< N > &  UNUSEDq,
const Vector UNUSED
)

Definition at line 132 of file Moments.h.

◆ computeReducedMultipole() [1/6]

template<>
TracelessMultipole<0> computeReducedMultipole ( const Multipole< 0 > &  m)
inline

Definition at line 112 of file Moments.h.

◆ computeReducedMultipole() [2/6]

template<>
TracelessMultipole<1> computeReducedMultipole ( const Multipole< 1 > &  m)
inline

Definition at line 102 of file Moments.h.

◆ computeReducedMultipole() [3/6]

template<>
TracelessMultipole<2> computeReducedMultipole ( const Multipole< 2 > &  m)
inline

Definition at line 90 of file Moments.h.

◆ computeReducedMultipole() [4/6]

template<>
TracelessMultipole<3> computeReducedMultipole ( const Multipole< 3 > &  m)
inline

Definition at line 78 of file Moments.h.

◆ computeReducedMultipole() [5/6]

template<>
TracelessMultipole<4> computeReducedMultipole ( const Multipole< 4 > &  m)
inline

Definition at line 60 of file Moments.h.

◆ computeReducedMultipole() [6/6]

template<Size N>
TracelessMultipole<N> computeReducedMultipole ( const Multipole< N > &  m)

◆ computeTrace()

template<Size M, Size N>
Multipole<N - 2 * M> computeTrace ( const Multipole< N > &  m)

Computes M-fold trace of given multipole moment.

Definition at line 40 of file Moments.h.

◆ evaluateGravity()

template<Size N>
Vector evaluateGravity ( const Vector dr,
const MultipoleExpansion< N > &  ms,
const MultipoleOrder  maxOrder 
)

Definition at line 317 of file Moments.h.

◆ parallelAxisTheorem() [1/4]

INLINE TracelessMultipole<1> parallelAxisTheorem ( const TracelessMultipole< 1 > &  Qi,
const Float  Q,
const Vector d 
)

Definition at line 164 of file Moments.h.

◆ parallelAxisTheorem() [2/4]

INLINE TracelessMultipole<2> parallelAxisTheorem ( const TracelessMultipole< 2 > &  Qij,
const Float  Q,
const Vector d 
)

Definition at line 171 of file Moments.h.

◆ parallelAxisTheorem() [3/4]

INLINE TracelessMultipole<3> parallelAxisTheorem ( const TracelessMultipole< 3 > &  Qijk,
const TracelessMultipole< 2 > &  Qij,
const Float  Q,
const Vector d 
)

Definition at line 267 of file Moments.h.

◆ parallelAxisTheorem() [4/4]

INLINE TracelessMultipole<4> parallelAxisTheorem ( const TracelessMultipole< 4 > &  Qijkl,
const TracelessMultipole< 3 > &  Qijk,
const TracelessMultipole< 2 > &  Qij,
const Float  Q,
const Vector d 
)

Definition at line 279 of file Moments.h.

◆ reducedFactor()

template<Size N, Size M>
INLINE Float reducedFactor ( )

Definition at line 46 of file Moments.h.