26{%
for item in NAMESPACE -%}
27 {%
if not loop.last %}
28 namespace {{ item }} {
32 namespace globaldata {
33 class {{PARTICLE_TYPE}};
35{%
for item in NAMESPACE -%}
36 {%
if not loop.last %}
43{%
for item in NAMESPACE -%}
44 namespace {{ item }} {
48 class {{CLASSNAME}}:
public toolbox::particles::ParticleSet< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}} >
51 using Base =
toolbox::particles::ParticleSet< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}} >;
52 using MemoryPool = {{MEMORY_POOL_TYPE}}< {%
for item in NAMESPACE -%}{%
if not loop.last %}{{ item }}::{% endif %}{%- endfor %}globaldata::{{PARTICLE_TYPE}} >;
59 typedef MemoryPool::Container Container;
64 typedef typename Container::value_type value_type;
65 typedef typename Container::iterator iterator;
66 typedef typename Container::const_iterator const_iterator;
68 {{CLASSNAME}}() =
default;
71 enum ObjectConstruction {
75 {{CLASSNAME}}( ObjectConstruction ):
88 {{CLASSNAME}}(
const {{CLASSNAME}}& ) =
default;
119 void clone(
const {{CLASSNAME}}& otherSet );
132 void particlesCanNotBeLiftedLocally();
160 Container::iterator particleCanNotBeLiftedLocally(
const Container::iterator& particle );
162 void particlesCanNotBeDroppedLocallySoRollOverForNextMeshSweep(DoFType* particle);
170 void deleteParticles();
182 Container::iterator begin();
183 Container::iterator end();
184 Container::const_iterator begin()
const;
185 Container::const_iterator end()
const;
204 void addParticle(DoFType* particle);
220 void grabParticles({{CLASSNAME}}& sourceParticleSet);
234 Container::iterator grabParticle(
235 Container::iterator particle,
236 {{CLASSNAME}}& sourceParticleSet
259 Container::iterator deleteParticle( Container::iterator particle );
285 bool isGathered()
const;
303 void mergeWithParticle(
304 DoFType* neighbourParticle,
311 MemoryPool _memoryPool;
314{%
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.
bool empty() const
True if at least one dimension is empty.
Vertex marker to provide information about selected vertex.