ls1-MarDyn
ls1-MarDyn molecular dynamics code
MirrorSystem.h
1//Calculation of the Fluid Wall interaction by a function
2
3#ifndef MIRROR_SYSTEM_H_
4#define MIRROR_SYSTEM_H_
5
6#include "PluginBase.h"
7
8#include <string>
9#include <map>
10#include <list>
11#include <cstdint>
12
13enum MirrorSystemType : uint16_t {
14 MST_UNKNOWN = 0,
15 MST_SHIFT = 1,
16 MST_ENLARGE = 2,
17 MST_MIRROR = 3
18};
19
22class Domain;
23
25{
26public:
27 // constructor and destructor
30
42 void readXML(XMLfileUnits& xmlconfig) override;
43
44 void init(ParticleContainer *particleContainer,
45 DomainDecompBase *domainDecomp, Domain *domain) override;
46
49 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
50 unsigned long simstep
51 ) override;
52
53 void beforeForces(
54 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
55 unsigned long simstep
56 ) override;
57
62 void afterForces(
63 ParticleContainer* particleContainer, DomainDecompBase* domainDecomp,
64 unsigned long simstep
65 ) override;
66
67 void endStep(
68 ParticleContainer *particleContainer,
69 DomainDecompBase *domainDecomp, Domain *domain,
70 unsigned long simstep) override {}
71
72 void finish(ParticleContainer *particleContainer,
73 DomainDecompBase *domainDecomp, Domain *domain) override {}
74
75 std::string getPluginName() override {return std::string("MirrorSystem");}
76 static PluginBase* createInstance() {return new MirrorSystem();}
77
78private:
79 bool _bDone;
80 MirrorSystemType _type;
81 double _yPos;
82 std::array<double,3> _box_old;
83 std::array<double,3> _box_new;
84};
85
86#endif /*MIRROR_SYSTEM_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
Definition: MirrorSystem.h:25
std::string getPluginName() override
return the name of the plugin
Definition: MirrorSystem.h:75
void beforeEventNewTimestep(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method will be called first thing in a new timestep.
Definition: MirrorSystem.cpp:29
void readXML(XMLfileUnits &xmlconfig) override
Read in XML configuration for MirrorSystem and all its included objects.
Definition: MirrorSystem.cpp:250
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: MirrorSystem.h:67
void finish(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method finish will be called at the end of the simulation.
Definition: MirrorSystem.h:72
void afterForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method afterForces will be called after forcefields have been applied.
Definition: MirrorSystem.cpp:278
void beforeForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method beforeForces will be called before forcefields have been applied no alterations w....
Definition: MirrorSystem.cpp:272
void init(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method init will be called at the begin of the simulation.
Definition: MirrorSystem.cpp:25
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