ls1-MarDyn
ls1-MarDyn molecular dynamics code
SHLocalParticle.h
1/*
2 * SHLocalParticle.h
3 *
4 * Created on: Nov 27, 2014
5 * Author: tchipevn
6 */
7
8#ifndef SHLOCALPARTICLE_H_
9#define SHLOCALPARTICLE_H_
10
11#include "bhfmm/pseudoParticles/LocalParticle.h"
12#include "bhfmm/expansions/SolidHarmonicsExpansion.h"
13#include "bhfmm/utils/RotationParameter.h"
14#include <map>
15
16namespace bhfmm {
17
19public:
20 SHLocalParticle(int order, bool initializeExpansionToZero = true);
22
28 void addSource(const Vector3<double>& position, double charge);
29
36 void addMultipoleParticle(const MultipoleParticle& multipole, Vector3<double> periodicShift);
37
44 void addMultipoleParticle_Wigner(const MultipoleParticle& multipole, Vector3<double> periodicShift,
45 double* cellWid,
46 std::map<Vector3<int>, RotationParams, Vector3<int>::compare>& M2L_Wigner);
47
52 void actOnLocalParticle(LocalParticle& small) const;
53
64 const WignerMatrix& W_pos, const WignerMatrix& W_neg, const double* CosSinPhi, const int negate, const double& magnitude) const;
65
73 void actOnTarget(const Vector3<double>& position, double charge, double& potential, Vector3<double>& force) const;
74
75 void clear();
76 int getNumEntries() const;
77
78
79 const SolidHarmonicsExpansion& getConstExpansion() const {
80 return _expansionM;
81 }
82
83 SolidHarmonicsExpansion& getExpansion() {
84 return _expansionM;
85 }
86
87 void writeValuesToMPIBuffer(double * buf, int& position) const {
88 _expansionM.writeValuesToMPIBuffer(buf, position);
89 }
90
91 void readValuesFromMPIBuffer(double * buf, int& position) {
92 _expansionM.readValuesFromMPIBuffer(buf,position);
93 }
94 void addValuesFromMPIBuffer(double * buf, int& position) {
95 _expansionM.addValuesFromMPIBuffer(buf,position);
96 }
97
98private:
99 SolidHarmonicsExpansion _expansionM;
100};
101
102} /* namespace bhfmm */
103
104#endif /* SHLOCALPARTICLE_H_ */
Definition: LocalParticle.h:16
Definition: MultipoleParticle.h:19
Definition: RotationParameter.h:15
Definition: SHLocalParticle.h:18
void actOnLocalParticle_Wigner(LocalParticle &small, const WignerMatrix &W_pos, const WignerMatrix &W_neg, const double *CosSinPhi, const int negate, const double &magnitude) const
Definition: SHLocalParticle.cpp:100
void clear()
Definition: SHLocalParticle.cpp:133
void addSource(const Vector3< double > &position, double charge)
Definition: SHLocalParticle.cpp:22
void actOnTarget(const Vector3< double > &position, double charge, double &potential, Vector3< double > &force) const
Definition: SHLocalParticle.cpp:120
void addMultipoleParticle(const MultipoleParticle &multipole, Vector3< double > periodicShift)
Definition: SHLocalParticle.cpp:32
void actOnLocalParticle(LocalParticle &small) const
Definition: SHLocalParticle.cpp:86
void addMultipoleParticle_Wigner(const MultipoleParticle &multipole, Vector3< double > periodicShift, double *cellWid, std::map< Vector3< int >, RotationParams, Vector3< int >::compare > &M2L_Wigner)
Definition: SHLocalParticle.cpp:49
Definition: SolidHarmonicsExpansion.h:75
void writeValuesToMPIBuffer(double *buf, int &position) const
Definition: SolidHarmonicsExpansion.h:321
Definition: Vector3.h:158
Definition: Vector3.h:34
Definition: WignerMatrix.h:22
Definition: L2PCellProcessor.cpp:15