IPPL (Independent Parallel Particle Layer)
IPPL
Loading...
Searching...
No Matches
ParticleInteractionBase.h
Go to the documentation of this file.
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:
26
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:
66
71 virtual void setDefaultParameters() {}
72
73 private:
74 };
75} // namespace ippl
76
77#endif // IPPL_PARTICLEINTERACTIONBASE_H
Definition Archive.h:20
ParticleInteractionBase(const ParticleContainer &pc)
void mergeParameters(const ParameterList &params)
ParticleInteractionBase(const ParticleContainer &pc, const ParameterList &params)
void updateParameters(const ParameterList &params)
virtual ~ParticleInteractionBase()=default
void updateParameter(const std::string &key, const T &value)