Multipole.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef MULTIPOLE_H_
6 #define MULTIPOLE_H_
7 
8 #include "Math/NumericalVector.h"
9 #include "Math/Vector.h"
10 #include <complex>
11 #include <vector>
12 
13 class Multipole
14 {
15 public:
16  Multipole(int p, NumericalVector<>* squaredFactorials, Vec3D location);
17 
18  virtual ~Multipole();
19 
20  //Multipole manipulations
21  virtual void computeMultipoleExpansion();
22 
24 
26 
27  //add a multipole to this existing multipole
28  void addMultipoleCoefficients(NumericalVector<std::complex<Mdouble>> multipoleExpansionCoefficients);
29 
31  {
33  }
34 
35  void setExpansionCoefficients(NumericalVector<std::complex<Mdouble>> multipoleExpansionCoefficients)
36  {
37  multipoleExpansionCoefficients_ = multipoleExpansionCoefficients;
38  }
39 
41  {
42  return squaredFactorials_;
43  }
44 
45  int getP()
46  {
47  return p_;
48  }
49 
50 protected:
51  int p_; // order of truncation
52  NumericalVector<>* squaredFactorials_; // required for multipole manipulations
53  Vec3D location_; // location of the multipole
55 };
56 
57 #endif /* MULTIPOLE_H_ */
float * p
Definition: Tutorial_Map_using.cpp:9
Definition: Multipole.h:14
virtual void computeMultipoleExpansion()
Definition: Multipole.cc:23
NumericalVector< std::complex< Mdouble > > convertMultipoleToLocal(Vec3D location)
Definition: Multipole.cc:87
Multipole(int p, NumericalVector<> *squaredFactorials, Vec3D location)
Definition: Multipole.cc:13
NumericalVector * getSquaredFactorials()
Definition: Multipole.h:40
NumericalVector< std::complex< Mdouble > > multipoleExpansionCoefficients_
Definition: Multipole.h:54
Vec3D location_
Definition: Multipole.h:53
NumericalVector< std::complex< Mdouble > > TranslateMultipoleExpansionTo(Vec3D location)
Definition: Multipole.cc:29
NumericalVector * squaredFactorials_
Definition: Multipole.h:52
NumericalVector< std::complex< Mdouble > > getExpansionCoefficients()
Definition: Multipole.h:30
int p_
Definition: Multipole.h:51
void setExpansionCoefficients(NumericalVector< std::complex< Mdouble >> multipoleExpansionCoefficients)
Definition: Multipole.h:35
int getP()
Definition: Multipole.h:45
virtual ~Multipole()
void addMultipoleCoefficients(NumericalVector< std::complex< Mdouble >> multipoleExpansionCoefficients)
Definition: Multipole.cc:133
Definition: NumericalVector.h:44
Definition: Kernel/Math/Vector.h:30