ls1-MarDyn
ls1-MarDyn molecular dynamics code
PluginBase.h
1#ifndef PLUGINBASE_H_
2#define PLUGINBASE_H_
3
4#include <any>
5#include <list>
6#include <map>
7#include <string>
8#include <functional>
9
10#include "utils/FunctionWrapper.h"
11
14class Domain;
15class XMLfileUnits;
16
17
48public:
51
52 virtual ~~PluginBase(){}
53
63 virtual void init(ParticleContainer* particleContainer,
64 DomainDecompBase* domainDecomp, Domain* domain) = 0;
65
84 virtual void readXML(XMLfileUnits& xmlconfig) = 0;
85
86
89 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
90 unsigned long simstep
91 ) {};
92
98 virtual void beforeForces(
99 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
100 unsigned long simstep
101 ) {};
102
107 virtual void siteWiseForces(
108 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
109 unsigned long simstep
110 ) {};
111
115 virtual void afterForces(
116 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
117 unsigned long simstep
118 ) {};
119
120
121 // make pure virtual?
130 virtual void endStep(
131 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
132 Domain* domain, unsigned long simstep) = 0;
133
142 virtual void finish(ParticleContainer* particleContainer,
143 DomainDecompBase* domainDecomp, Domain* domain) = 0;
144
147
163 virtual void registerCallbacks(std::map<std::string, FunctionWrapper>& callbackMap) {
164 // Empty by default.
165 }
166
183 virtual void accessAllCallbacks(const std::map<std::string, FunctionWrapper>& callbackMap) {
184 // Empty by default.
185 }
186};
187
188#endif /* PLUGINBASE_H */
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
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
virtual std::string getPluginName()=0
return the name of the plugin
virtual void finish(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain)=0
Method finish will be called at the end of the simulation.
virtual void afterForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep)
Method afterForces will be called after forcefields have been applied no sitewise Forces can be appli...
Definition: PluginBase.h:115
virtual void beforeForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep)
Method beforeForces will be called before forcefields have been applied no alterations w....
Definition: PluginBase.h:98
virtual void readXML(XMLfileUnits &xmlconfig)=0
Method readXML will be called once for each plugin section in the input file.
virtual void accessAllCallbacks(const std::map< std::string, FunctionWrapper > &callbackMap)
Definition: PluginBase.h:183
virtual void endStep(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain, unsigned long simstep)=0
Method endStep will be called at the end of each time step.
PluginBase()
Subclasses should use their constructur to pass parameters (e.g. filenames)
Definition: PluginBase.h:50
virtual void beforeEventNewTimestep(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep)
Method will be called first thing in a new timestep.
Definition: PluginBase.h:88
virtual void siteWiseForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep)
Method siteWiseForces will be called before forcefields have been applied alterations to sitewise for...
Definition: PluginBase.h:107
virtual void init(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain)=0
Method init will be called at the begin of the simulation.
virtual void registerCallbacks(std::map< std::string, FunctionWrapper > &callbackMap)
Definition: PluginBase.h:163
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