28 particle_particle_interaction_kernel,
29 touch_vertex_first_time_compute_particle_update_kernel,
30 touch_vertex_last_time_compute_particle_update_kernel,
31 prepare_traversal_kernel,
32 unprepare_traversal_kernel,
35 alter_particle_position_or_interaction_radius,
36 wait_for_all_tasks_to_finish_after_traversal,
43 @param wait_for_all_tasks_to_finish_after_traversal: Boolean
44 If this one is set, we insert a wait into the unprepare traversal
45 event. Each rank then waits for all tasks to be completed before
46 it continues. We have a strong synchronisation point.
48 @param alter_particle_position_or_interaction_radius: Boolean
49 Set if the underlying AlgorithmStep's effect might change a
50 particle's position or interaction radius.
51 @see exaparty.api.particle.AlgorithmStep.AlgorithmStep.may_trigger_rerun()
54 if wait_for_all_tasks_to_finish_after_traversal:
55 unprepare_traversal_kernel = (
56 unprepare_traversal_kernel
58 tarch::multicore::waitForAllTasks();
63 UpdateParticle_MultiLevelInteraction_StackOfLists_ContiguousParticles, self
66 particle_particle_interaction_kernel=construct_touch_cell_first_time_call(
68 particle_particle_interaction_kernel,
69 use_multilevel_dependencies=
True
71 touch_vertex_first_time_compute_particle_update_kernel=construct_touch_vertex_first_time_call(
73 touch_vertex_first_time_compute_particle_update_kernel,
74 use_multilevel_dependencies=
True
76 touch_vertex_last_time_compute_particle_update_kernel=construct_touch_vertex_last_time_call(
78 touch_vertex_last_time_compute_particle_update_kernel,
79 use_multilevel_dependencies=
True,
80 alter_particle_position_or_interaction_radius=alter_particle_position_or_interaction_radius
82 prepare_traversal_kernel=prepare_traversal_kernel,
83 unprepare_traversal_kernel=unprepare_traversal_kernel,
84 additional_includes=additional_includes
86#include "tarch/multicore/Task.h"
87#include "exaparty/exaparty.h"
88#include "exaparty/TaskNumber.h"
90 active_particle_set=active_particle_set,