7#include "utils/Random.h"
8#include "utils/ObserverBase.h"
9#include "utils/Region.h"
19#include "utils/CommVar.h"
21enum MirrorDirection : uint16_t {
26enum MirrorType : uint16_t {
29 MT_FORCE_CONSTANT = 2,
97 unsigned long simstep)
override {}
106 uint64_t getReflectedParticlesCountLocal(
const uint16_t& componentid){
return _particleManipCount.reflected.local.at(componentid);}
107 uint64_t getDeletedParticlesCountLocal(
const uint16_t& componentid) {
return _particleManipCount.deleted.local.at(componentid);}
108 uint32_t getPluginID() {
return _pluginID;}
109 void setPluginID(
const uint32_t&
id) {_pluginID =
id;}
110 double getPosition() {
return _position.coord;}
115 std::string getShortName()
override {
return "Mirr";}
122 uint32_t _targetComp;
123 struct MirrorPosition {
132 double _forceConstant;
133 MirrorDirection _direction;
136 std::unique_ptr<Random> _rnd;
138 struct MelandParams {
139 double velo_target {0.4};
140 float fixed_probability_factor {-1};
143 struct RampingParams {
144 unsigned long startStep {1000};
145 unsigned long stopStep {2000};
149 struct ParticleManipCount {
152 } _particleManipCount;
154 struct DiffuseMirror {
157 std::map<uint64_t,double> pos_map;
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
void init(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method init will be called at the begin of the simulation.
Definition: Mirror.cpp:49
void beforeForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method beforeForces will be called before forcefields have been applied no alterations w....
Definition: Mirror.cpp:189
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: Mirror.h:94
void readXML(XMLfileUnits &xmlconfig) override
Read in XML configuration for Mirror and all its included objects.
Definition: Mirror.cpp:53
std::string getPluginName() override
return the name of the plugin
Definition: Mirror.h:102
void afterForces(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, unsigned long simstep) override
Method afterForces will be called after forcefields have been applied.
Definition: Mirror.cpp:372
void finish(ParticleContainer *particleContainer, DomainDecompBase *domainDecomp, Domain *domain) override
Method finish will be called at the end of the simulation.
Definition: Mirror.h:99
Definition: ObserverBase.h:13
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
Definition: ObserverBase.h:20
XML file with unit attributes abstraction.
Definition: xmlfileUnits.h:25
::xsd::cxx::tree::id< char, ncname > id
C++ type corresponding to the ID XML Schema built-in type.
Definition: vtk-punstructured.h:322
::xsd::cxx::tree::string< char, simple_type > string
C++ type corresponding to the string XML Schema built-in type.
Definition: vtk-punstructured.h:270