ls1-MarDyn
ls1-MarDyn molecular dynamics code
SHMultipoleParticle.h
1/*
2 * SHMultipoleParticle.h
3 *
4 * Created on: Nov 27, 2014
5 * Author: tchipevn
6 */
7
8#ifndef SHMULTIPOLEPARTICLE_H_
9#define SHMULTIPOLEPARTICLE_H_
10
11#include "bhfmm/pseudoParticles/MultipoleParticle.h"
12#include "bhfmm/expansions/SolidHarmonicsExpansion.h"
13#include "bhfmm/utils/WignerMatrix.h"
14
15namespace bhfmm {
16
18public:
19 SHMultipoleParticle(int order, bool initializeExpansionToZero = true);
21
27 void addSource(const Vector3<double>& position, double charge);
28
33 void addMultipoleParticle(const MultipoleParticle& small);
34
45 const WignerMatrix& W_pos, const WignerMatrix& W_neg, const double* CosSinPhi, const int negate, const double& magnitude);
46
51 void actOnLocalParticle(LocalParticle& local) const;
52
60 void actOnTarget(const Vector3<double>& position, double charge, double& pot, Vector3<double>& force) const;
61
62 void clear();
63 int getNumEntries() const;
64
65 const SolidHarmonicsExpansion& getConstExpansion() const {
66 return _expansionL;
67 }
68
69 SolidHarmonicsExpansion& getExpansion() {
70 return _expansionL;
71 }
72
73 void writeValuesToMPIBuffer(double * buf, int& position) const {
74 _expansionL.writeValuesToMPIBuffer(buf, position);
75 }
76
77 void readValuesFromMPIBuffer(double * buf, int& position) {
78 _expansionL.readValuesFromMPIBuffer(buf,position);
79 }
80
81 void addValuesFromMPIBuffer(double * buf, int& position) {
82 _expansionL.addValuesFromMPIBuffer(buf,position);
83 }
84
85private:
86 SolidHarmonicsExpansion _expansionL;
87};
88
89} /* namespace bhfmm */
90
91#endif /* SHMULTIPOLEPARTICLE_H_ */
Definition: LocalParticle.h:16
Definition: MultipoleParticle.h:19
Definition: SHMultipoleParticle.h:17
void actOnTarget(const Vector3< double > &position, double charge, double &pot, Vector3< double > &force) const
Definition: SHMultipoleParticle.cpp:82
void clear()
Definition: SHMultipoleParticle.cpp:97
void addMultipoleParticle_Wigner(const MultipoleParticle &small, const WignerMatrix &W_pos, const WignerMatrix &W_neg, const double *CosSinPhi, const int negate, const double &magnitude)
Definition: SHMultipoleParticle.cpp:48
void addSource(const Vector3< double > &position, double charge)
Definition: SHMultipoleParticle.cpp:22
void addMultipoleParticle(const MultipoleParticle &small)
Definition: SHMultipoleParticle.cpp:32
void actOnLocalParticle(LocalParticle &local) const
Definition: SHMultipoleParticle.cpp:68
Definition: SolidHarmonicsExpansion.h:75
void writeValuesToMPIBuffer(double *buf, int &position) const
Definition: SolidHarmonicsExpansion.h:321
Definition: Vector3.h:34
Definition: WignerMatrix.h:22
Definition: L2PCellProcessor.cpp:15