ls1-MarDyn
ls1-MarDyn molecular dynamics code
SolidHarmonicsStorage.h
1/*
2 * SolidHarmonicsStorage.h
3 *
4 * Created on: Nov 20, 2014
5 * Author: tchipevn, rajats
6 */
7
8#ifndef SOLIDHARMONICSSTORAGE_H_
9#define SOLIDHARMONICSSTORAGE_H_
10
11#include "utils/mardyn_assert.h"
12
13namespace bhfmm {
14class SolidHarmonicsStorage;
15
21void swap(SolidHarmonicsStorage & s1, SolidHarmonicsStorage & s2);
22
28public:
34 SolidHarmonicsStorage(int numRows = 0, bool initializeToZero = true);
35
41
46
53
60
67
73 SolidHarmonicsStorage& operator*=(double scalar);
74
78 int getNumRows() const;
79
83 int getTotalNumValues() const;
84
88 void setToZero();
89
96 int index(int l, int m) const {
97 mardyn_assert(l >= 0);
98 mardyn_assert(m >= 0);
99 mardyn_assert(l <= _numRows);
100 mardyn_assert(m <= l);
101 return l * (l + 1) / 2 + m;
102 }
103
110 double& getValue(int l, int m) {
111 return _values[index(l, m)];
112 }
113
119 double& getValueSequential(int i) {
120 return _values[i];
121 }
122
129 double getValueConst(int l, int m) const {
130 return _values[index(l, m)];
131 }
132
138 double getValueConstSequential(int i) const {
139 return _values[i];
140 }
141
142private:
146 int _numRows;
147
151 int _totalNumValues;
152
156 double* _values;
157};
158
165SolidHarmonicsStorage operator+(SolidHarmonicsStorage lhs, const SolidHarmonicsStorage & rhs);
166
173SolidHarmonicsStorage operator*(double scalar, SolidHarmonicsStorage s);
174
175} /* namespace bhfmm */
176
177#endif /* SOLIDHARMONICSSTORAGE_H_ */
Definition: SolidHarmonicsStorage.h:27
SolidHarmonicsStorage & operator=(SolidHarmonicsStorage s)
Definition: SolidHarmonicsStorage.cpp:46
int index(int l, int m) const
Definition: SolidHarmonicsStorage.h:96
SolidHarmonicsStorage(int numRows=0, bool initializeToZero=true)
Definition: SolidHarmonicsStorage.cpp:14
SolidHarmonicsStorage & operator+=(const SolidHarmonicsStorage &s)
Definition: SolidHarmonicsStorage.cpp:52
int getTotalNumValues() const
Definition: SolidHarmonicsStorage.cpp:82
~SolidHarmonicsStorage()
Definition: SolidHarmonicsStorage.cpp:33
friend void swap(SolidHarmonicsStorage &s1, SolidHarmonicsStorage &s2)
Definition: SolidHarmonicsStorage.cpp:40
double & getValue(int l, int m)
Definition: SolidHarmonicsStorage.h:110
double getValueConst(int l, int m) const
Definition: SolidHarmonicsStorage.h:129
double getValueConstSequential(int i) const
Definition: SolidHarmonicsStorage.h:138
void setToZero()
Definition: SolidHarmonicsStorage.cpp:86
SolidHarmonicsStorage & operator*=(double scalar)
Definition: SolidHarmonicsStorage.cpp:65
int getNumRows() const
Definition: SolidHarmonicsStorage.cpp:78
double & getValueSequential(int i)
Definition: SolidHarmonicsStorage.h:119
Definition: L2PCellProcessor.cpp:15
SolidHarmonicsExpansion operator*(double scalar, SolidHarmonicsExpansion RHS)
Definition: SolidHarmonicsExpansion.cpp:67
SolidHarmonicsExpansion operator+(SolidHarmonicsExpansion LHS, const SolidHarmonicsExpansion &RHS)
Definition: SolidHarmonicsExpansion.cpp:56
void swap(SolidHarmonicsExpansion &s1, SolidHarmonicsExpansion &s2)
Definition: SolidHarmonicsExpansion.cpp:35