OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
SamplingBase.hpp
Go to the documentation of this file.
1#ifndef IPPL_SAMPLING_BASE_H
2#define IPPL_SAMPLING_BASE_H
3
4#include "Distribution.h"
5#include <memory>
6
10
12protected:
13 std::shared_ptr<ParticleContainer_t> pc_m;
14 std::shared_ptr<FieldContainer_t> fc_m;
15 std::shared_ptr<Distribution_t> opalDist_m;
16 std::string samplingMethod_m;
17public:
18
19 SamplingBase(std::shared_ptr<ParticleContainer_t> &pc,
20 std::shared_ptr<FieldContainer_t> &fc,
21 std::shared_ptr<Distribution_t> &dist
22 )
23 : pc_m(pc), fc_m(fc), opalDist_m(dist) {
24 }
25
26 SamplingBase(std::shared_ptr<ParticleContainer_t> &pc,
27 std::shared_ptr<FieldContainer_t> &fc
28 )
29 : pc_m(pc), fc_m(fc) {
30 }
31
32 SamplingBase(std::shared_ptr<ParticleContainer_t> &pc)
33 : pc_m(pc) {
34 }
35
36 virtual ~SamplingBase() {}
37
38 virtual void generateParticles(size_t& /*numberOfParticles*/, Vector_t<double, 3> /*nr*/) {}
39
40 virtual void emitParticles(double /*t*/, double /*dt*/) {}
41
42 // testNumEmitParticles is purely made for testing and should be removed
43 virtual void testNumEmitParticles(size_t /*nsteps*/, double /*dt*/) {}
44
45 // testEmitParticles is purely made for testing and should be removed
46 virtual void testEmitParticles(size_t /*nsteps*/, double /*dt*/) {}
47
48 virtual void initDomainDecomp(double /*BoxIncr*/) {}
49
50 virtual void setWithDomainDecomp(bool /*withDomainDecomp*/) {}
51};
52#endif
53
virtual void emitParticles(double, double)
virtual void testEmitParticles(size_t, double)
virtual void testNumEmitParticles(size_t, double)
SamplingBase(std::shared_ptr< ParticleContainer_t > &pc)
SamplingBase(std::shared_ptr< ParticleContainer_t > &pc, std::shared_ptr< FieldContainer_t > &fc, std::shared_ptr< Distribution_t > &dist)
virtual ~SamplingBase()
std::shared_ptr< FieldContainer_t > fc_m
virtual void setWithDomainDecomp(bool)
std::shared_ptr< Distribution_t > opalDist_m
std::string samplingMethod_m
virtual void generateParticles(size_t &, Vector_t< double, 3 >)
virtual void initDomainDecomp(double)
SamplingBase(std::shared_ptr< ParticleContainer_t > &pc, std::shared_ptr< FieldContainer_t > &fc)
std::shared_ptr< ParticleContainer_t > pc_m