ls1-MarDyn
ls1-MarDyn molecular dynamics code
DriftCtrl.h
1#ifndef DRIFTCTRL_H_
2#define DRIFTCTRL_H_
3
4#include "plugins/PluginBase.h"
5#include "utils/CommVar.h"
6
7#include <string>
8#include <map>
9#include <list>
10#include <cstdint>
11#include <array>
12#include <vector>
13
14#define FORMAT_SCI_MAX_DIGITS std::setw(24) << std::scientific << std::setprecision(std::numeric_limits<double>::digits10)
15
16struct BinVectors {
17 CommVar<std::vector<uint64_t> > numParticles;
18 std::array<CommVar<std::vector<double> >,3> momentum;
19 std::array<std::vector<double>,3> mom_corr;
20};
21
24class Domain;
26class CavityEnsemble;
27class DriftCtrl : public PluginBase
28{
29public:
30 // constructor and destructor
31 DriftCtrl();
32 ~~DriftCtrl();
33
59 void readXML(XMLfileUnits& xmlconfig) override;
60
61 void init(ParticleContainer *particleContainer,
62 DomainDecompBase *domainDecomp, Domain *domain) override;
63
64 void beforeForces(ParticleContainer* particleContainer, DomainDecompBase* domainDecomp, unsigned long simstep) override;
65 void afterForces(ParticleContainer* particleContainer, DomainDecompBase* domainDecomp, unsigned long simstep) override {}
66 void endStep(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain, unsigned long simstep) override {}
67 void finish(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override {}
68 std::string getPluginName() override {return std::string("DriftCtrl");}
69 static PluginBase* createInstance() {return new DriftCtrl();}
70
71private:
72 struct Control{
73 struct Freq{
74 uint32_t sample, control, write;
75 } freq;
76 } _control;
77 struct Range{
78 double yl, yr, width;
79 struct Subdivision {
80 uint32_t numBins;
81 struct BinWidth {
82 double init, actual;
83 } binWidth;
84 } subdivision;
85 } _range;
86
87 struct Target {
88 std::array<double,3> drift;
89 uint32_t cid;
90 } _target;
91
92 std::vector<BinVectors> _sampling;
93};
94
95#endif /*DRIFTCTRL_H_*/
Definition: CavityEnsemble.h:20
Definition: ChemicalPotential.h:16
Definition: CommVar.h:17
handle boundary region and multiple processes
Definition: DomainDecompBase.h:51
This class is used to read in the phasespace and to handle macroscopic values.
Definition: Domain.h:47
Definition: DriftCtrl.h:28
void beforeForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method beforeForces will be called before forcefields have been applied no alterations w....
Definition: DriftCtrl.cpp:136
void finish(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method finish will be called at the end of the simulation.
Definition: DriftCtrl.h:67
void endStep(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain, unsigned long simstep) override
Method endStep will be called at the end of each time step.
Definition: DriftCtrl.h:66
void init(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method init will be called at the begin of the simulation.
Definition: DriftCtrl.cpp:24
void afterForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method afterForces will be called after forcefields have been applied no sitewise Forces can be appli...
Definition: DriftCtrl.h:65
void readXML(XMLfileUnits &xmlconfig) override
Read in XML configuration for DriftCtrl and all its included objects.
Definition: DriftCtrl.cpp:96
std::string getPluginName() override
return the name of the plugin
Definition: DriftCtrl.h:68
This Interface is used to get access to particles and pairs of particles.
Definition: ParticleContainer.h:69
The PluginBase class provides the interface for any kind of output/plugin classes - called "(output) ...
Definition: PluginBase.h:47
XML file with unit attributes abstraction.
Definition: xmlfileUnits.h:25
::xsd::cxx::tree::string< char, simple_type > string
C++ type corresponding to the string XML Schema built-in type.
Definition: vtk-punstructured.h:270
Definition: DriftCtrl.h:16
Definition: DriftCtrl.h:73
Definition: DriftCtrl.h:81
Definition: DriftCtrl.h:79