IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ParticleInteractionBase.h
1//
2// Class ParticleInteractionBase
3// Base class for all particle-particle interactions.
4//
5// Inheriting classes need to implement solve(), which evaluates all pairwise interactions between
6// particles. These (short-range) interaction happen on the particle container and its attributes
7// and not on a field.
8//
9
10#ifndef IPPL_PARTICLEINTERACTIONBASE_H
11#define IPPL_PARTICLEINTERACTIONBASE_H
12
13#include <string>
14
16
17namespace ippl {
18 template <typename ParticleContainer>
20 public:
21 ParticleInteractionBase(const ParticleContainer& pc, const ParameterList& params)
22 : pc_m(pc) {
24 params_m.merge(params);
25 }
26
27 explicit ParticleInteractionBase(const ParticleContainer& pc)
28 : pc_m(pc) {
30 }
31
32 public:
39 template <typename T>
40 void updateParameter(const std::string& key, const T& value) {
41 params_m.update<T>(key, value);
42 }
43
50 void updateParameters(const ParameterList& params) { params_m.update(params); }
51
57 void mergeParameters(const ParameterList& params) { params_m.merge(params); }
58
59 virtual void solve() = 0;
60
61 virtual ~ParticleInteractionBase() = default;
62
63 protected:
64 const ParticleContainer& pc_m;
65 ParameterList params_m;
66
71 virtual void setDefaultParameters() {}
72
73 private:
74 };
75} // namespace ippl
76
77#endif // IPPL_PARTICLEINTERACTIONBASE_H
Definition ParameterList.h:29
void merge(const ParameterList &p) noexcept
Definition ParameterList.h:86
void update(const ParameterList &p) noexcept
Definition ParameterList.h:97
Definition ParticleInteractionBase.h:19
void mergeParameters(const ParameterList &params)
Definition ParticleInteractionBase.h:57
virtual void setDefaultParameters()
Definition ParticleInteractionBase.h:71
void updateParameters(const ParameterList &params)
Definition ParticleInteractionBase.h:50
void updateParameter(const std::string &key, const T &value)
Definition ParticleInteractionBase.h:40
Definition Archive.h:20