10#include <{{STD_CONTAINER}}>
25{%
for item in NAMESPACE -%}
26 {%
if not loop.last %}
27 namespace {{ item }} {
31 namespace globaldata {
32 class {{PARTICLE_TYPE}};
34{%
for item in NAMESPACE -%}
35 {%
if not loop.last %}
42{%
for item in NAMESPACE -%}
43 namespace {{ item }} {
47 class {{CLASSNAME}}:
public toolbox::particles::ParticleSet< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}} >
50 using Base =
toolbox::particles::ParticleSet< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}} >;
51 using Container = std::{{STD_CONTAINER}}< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}}* >;
56 typedef Container::value_type value_type;
57 typedef Container::iterator iterator;
58 typedef Container::const_iterator const_iterator;
60 {{CLASSNAME}}() =
default;
63 enum ObjectConstruction {
67 {{CLASSNAME}}( ObjectConstruction ):
80 {{CLASSNAME}}(
const {{CLASSNAME}}& ) =
default;
111 void clone(
const {{CLASSNAME}}& otherSet );
124 void particlesCanNotBeLiftedLocally();
126 void particlesCanNotBeDroppedLocallySoRollOverForNextMeshSweep(DoFType* particle);
149 Container::iterator particleCanNotBeLiftedLocally(
const Container::iterator& particle );
157 void deleteParticles();
169 Container::iterator begin();
170 Container::iterator end();
171 Container::const_iterator begin()
const;
172 Container::const_iterator end()
const;
187 void addParticle(DoFType* particle);
203 void grabParticles({{CLASSNAME}}& sourceParticleSet);
211 Container::iterator grabParticle(
212 const Container::iterator& particle,
213 {{CLASSNAME}}& sourceParticleSet
228 Container::iterator deleteParticle(
const Container::iterator& particle );
246 void mergeWithParticle(
247 DoFType* neighbourParticle,
254 Container _container;
257{%
for item in NAMESPACE -%}
std::string toString(exahype2::RefinementCommand value)
SendReceiveContext
There are three different scenarios when we merge data:
Abstract base class for all flavours of particle sets.
bool isValid(Invariant policy, bool workOnParticle, bool particleIsLocal, int numberOfUpdates, int numberOfMaskOuts)
Is current state that's to be updated valid.
void clear(GridStatistics &statistics, bool isGlobalMasterTree)
The term clear() is not 100% correct, as the number of stationary traversals is not reset to a dummy ...
std::vector< GridControlEvent > merge(std::vector< GridControlEvent > events, const double Tolerance=0.1)
Merge set of refinement/coarsening commands.
Vertex marker to provide information about selected vertex.