|
| std::string | toString (Invariant policy) |
| |
| template<typename ParticleContainer > |
| static void | markAlgorithmStep (const ParticleContainer &particles, const peano4::datamanagement::VertexMarker &marker, PCAlgorithmStepEnum< ParticleContainer > algorithmStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, Invariant policy, ::swift2::kernels::UpdateParticleAssignedToVertexPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| | Mark a localParticle having entered a sweep stage in a main algorithm step.
|
| |
| template<typename ParticleContainer > |
| static void | markAlgorithmStep (const ParticleContainer &localParticles, const ParticleContainer &activeParticles, const peano4::datamanagement::CellMarker &marker, PCAlgorithmStepEnum< ParticleContainer > algorithmStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, Invariant policy, ::swift2::kernels::UpdateParticlePairWithinCellPredicate< typename std::remove_pointer< typename ParticleContainer::value_type >::type > workOnParticle, int spacetreeId) |
| | A particle is marked if there is at least one active interaction in this cell.
|
| |
| template<typename ParticleContainer > |
| static void | markInitStep (const ParticleContainer &localParticles, const peano4::datamanagement::VertexMarker &marker, PCInitStepEnum< ParticleContainer > initStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, Invariant policy, ::swift2::kernels::UpdateParticleAssignedToVertexPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| | Mark a localParticle having entered a sweep stage in a initialisation algorithm step.
|
| |
| template<typename ParticleContainer > |
| static void | markInitStep (const ParticleContainer &localParticles, const ParticleContainer &activeParticles, const peano4::datamanagement::CellMarker &marker, PCInitStepEnum< ParticleContainer > initStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, Invariant policy, ::swift2::kernels::UpdateParticlePairWithinCellPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| | A particle is marked if there is at least one active interaction in this cell.
|
| |
| template<typename ParticleContainer > |
| static void | checkAlgorithmStep (Invariant policy, const ParticleContainer &localParticles, const ParticleContainer &activeParticles, const peano4::datamanagement::CellMarker &marker, PCAlgorithmStepEnum< ParticleContainer > algorithmStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, ::swift2::kernels::UpdateParticlePairWithinCellPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| | Dependency Check: Verify that particles have completed all the algorithm steps and stages of the main algorithm steps before the current one.
|
| |
| template<typename ParticleContainer > |
| static void | checkAlgorithmStep (Invariant policy, const ParticleContainer &localParticles, const peano4::datamanagement::VertexMarker &marker, PCAlgorithmStepEnum< ParticleContainer > algorithmStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, ::swift2::kernels::UpdateParticleAssignedToVertexPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| |
| template<typename ParticleContainer > |
| static void | checkParticlesAssignedToVertexInTouchLastTimeAlgorithmStep (Invariant policy, const ParticleContainer &assignedParticles, PCAlgorithmStepEnum< ParticleContainer > algorithmStepMarkerEnum, int spacetreeId) |
| | Dependency Check: At the final stage of a sweep, i.e.
|
| |
| template<typename ParticleContainer > |
| static void | checkInitStep (Invariant policy, const ParticleContainer &localParticles, const peano4::datamanagement::VertexMarker &marker, PCInitStepEnum< ParticleContainer > initStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, ::swift2::kernels::UpdateParticleAssignedToVertexPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| | Dependency Check: Verify that particles have completed all the algorithm steps and stages of the initialisation algorithm steps before the current one.
|
| |
| template<typename ParticleContainer > |
| static void | checkInitStep (Invariant policy, const ParticleContainer &localParticles, const ParticleContainer &activeParticles, const peano4::datamanagement::CellMarker &marker, PCInitStepEnum< ParticleContainer > initStepMarkerEnum, PCSweepStageEnum< ParticleContainer > sweepStageMarkerEnum, ::swift2::kernels::UpdateParticlePairWithinCellPredicate< PCParticle< ParticleContainer > > workOnParticle, int spacetreeId) |
| |
| template<typename ParticleContainer > |
| static void | checkParticlesAssignedToVertexInTouchLastTimeInitStep (Invariant policy, const ParticleContainer &activeParticles, PCInitStepEnum< ParticleContainer > initStepMarkerEnum, int spacetreeId) |
| | Dependency Check: At the final stage of a sweep (TouchVertexLastTime), check that all ActiveParticles have completed all their dependencies, i.e.
|
| |
| template<typename ParticleContainer > |
| static void | clearDependencyChecksAlgorithmStep (const ParticleContainer &localParticles) |
| | Clear the dependency check counters of the main algorithm step dependency checks.
|
| |
| template<typename ParticleContainer > |
| static void | clearDependencyChecksInitStep (const ParticleContainer &localParticles) |
| | Clear the dependency check counters of the initialisation step dependency checks.
|
| |
template<typename ParticleContainer >
| static void swift2::dependencychecks::checkParticlesAssignedToVertexInTouchLastTimeAlgorithmStep |
( |
Invariant | policy, |
|
|
const ParticleContainer & | assignedParticles, |
|
|
PCAlgorithmStepEnum< ParticleContainer > | algorithmStepMarkerEnum, |
|
|
int | spacetreeId ) |
|
static |
Dependency Check: At the final stage of a sweep, i.e.
touchVertexLastTime(), check that all particles hosted by this vertex have completed all their dependencies, i.e. have been localParticles at least once.
Within the vertex events touchVertexFirstTime() and touchVertexLastTime(), we have no active and local particles anymore. There are solely the ones around the vertex on this mesh level. They are called assignedParticles.
Throughout the traversal, there are no global active and local particles: Both sets are views onto the global particle set and they adopt per cell. These views are not even exclusive, i.e. local particles are always a subset of active ones. We know that cells update only local particles. Within a subsequent touchVertexLastTime(), every particles has have to be updated, i.e. every particle has been local at least once. Therefore, we write that all particles have to have been local at least once.
- Parameters
-
| assignedParticles | set of particles hosted by a vertex to perform checks on |
| algorithmStepMarkerEnum | Enum representing current main algorithm step |
template<typename ParticleContainer >
Mark a localParticle having entered a sweep stage in a main algorithm step.
This routine is used both by touchVertexFirstTime and touchVertexLastTime to keep track of state transitions. We run over the particles and check for each one if the routine would update it. If so, they increment the counter getAlgorithmStepSweepStateProgression(). Any positive value here counts how often particles are updated. If a particle is not to be updated, we decrement the counter. Obviously, a particle should either be ignored all the time, or it should be updated. There's one exception to this rule: If a routine updates a particle's position, we might update the particle at one point, alter its position, then re-assign it to a new particle and there mask it out.
- Parameters
-
| assignedParticles | the particles around a vertex that will be subject to the validation |
| marker | a peano4::datamanagement::VertexMarker or peano4::datamanagement::CellMarker |
| algorithmStepMarkerEnum | Enum representing algorithm step particle is currently in |
| sweepStageMarkerEnum | Enum representing traversal sweep stage particle is currently in |
| stepMovedParticle | whether the particle has been moved in this (or in the previous) algorithm step. This may corrupt the set of localParticles. See @page_toolbox_particles_mesh_traversal. |
| workOnParticle | A function used to determine whether the particle is being worked on in the specific sweep stage of the algorithm step. As arguments, it takes the particle itself and the marker. This should be the same function used in the actual stage of the algorithm step as your code, and should be one of the functions defined in src/swift2/kernels/ParticleState.h |