19 std::shared_ptr<chi_mesh::sweep_management::FLUDS>& fluds,
20 const std::vector<size_t>& angle_indices,
21 std::map<uint64_t, SweepBndryPtr>& sim_boundaries,
24 :
chi_mesh::sweep_management::AngleSet(id,
31 cbc_spds_(dynamic_cast<const
CBC_SPDS&>(spds_)),
32 async_comm_(id, *fluds, comm_set)
45 const std::vector<size_t>& timing_tags,
60 for (
const uint64_t task_number : tasks_who_received_data)
68 return Status::NOT_FINISHED;
70 bool all_tasks_completed =
true;
71 bool a_task_executed =
true;
72 while (a_task_executed)
74 a_task_executed =
false;
77 if (not cell_task.completed_) all_tasks_completed =
false;
78 if (cell_task.num_dependencies_ == 0 and not cell_task.completed_)
81 sweep_chunk.
SetCell(cell_task.cell_ptr_, *
this);
82 sweep_chunk.
Sweep(*
this);
84 for (uint64_t local_task_num : cell_task.successors_)
88 cell_task.completed_ =
true;
89 a_task_executed =
true;
115 if (all_tasks_completed and all_messages_sent)
121 return Status::FINISHED;
124 return Status::NOT_FINISHED;
133 fluds_->ClearLocalAndReceivePsi();
140 unsigned int angle_num,
141 uint64_t cell_local_id,
142 unsigned int face_num,
146 bool surface_source_active)
150 cell_local_id, face_num, fi, angle_num, g, gs_ss_begin);
152 if (not surface_source_active)
return ref_boundaries_[bndry_map]->ZeroFlux(g);
155 cell_local_id, face_num, fi, angle_num, g, gs_ss_begin);
161 unsigned int angle_num,
162 uint64_t cell_local_id,
163 unsigned int face_num,
168 cell_local_id, face_num, fi, angle_num, gs_ss_begin);
@ EVENT_BEGIN
Signals the begin of an event.
@ EVENT_END
Signals the end of an event.
void LogEvent(size_t ev_tag, EventType ev_type, const std::shared_ptr< EventInfo > &ev_info)
std::map< uint64_t, SweepBndryPtr > & ref_boundaries_
std::shared_ptr< FLUDS > fluds_
const size_t ref_group_subset_
const std::vector< size_t > angles_
virtual void SetCell(chi_mesh::Cell const *cell_ptr, chi_mesh::sweep_management::AngleSet &angle_set)
virtual void SetAngleSet(AngleSet &angle_set)
virtual void Sweep(AngleSet &angle_set)
std::vector< uint64_t > ReceiveData()
CBC_AngleSet(size_t id, size_t num_groups, const chi_mesh::sweep_management::SPDS &spds, std::shared_ptr< chi_mesh::sweep_management::FLUDS > &fluds, const std::vector< size_t > &angle_indices, std::map< uint64_t, SweepBndryPtr > &sim_boundaries, size_t in_ref_subset, const chi::ChiMPICommunicatorSet &comm_set)
double * ReflectingPsiOutBoundBndry(uint64_t bndry_map, unsigned int angle_num, uint64_t cell_local_id, unsigned int face_num, unsigned int fi, size_t gs_ss_begin) override
void ResetSweepBuffers() override
CBC_ASynchronousCommunicator async_comm_
chi_mesh::sweep_management::AsynchronousCommunicator * GetCommunicator() override
const double * PsiBndry(uint64_t bndry_map, unsigned int angle_num, uint64_t cell_local_id, unsigned int face_num, unsigned int fi, int g, size_t gs_ss_begin, bool surface_source_active) override
const CBC_SPDS & cbc_spds_
std::vector< chi_mesh::sweep_management::Task > current_task_list_
chi_mesh::sweep_management::AngleSetStatus AngleSetAdvance(chi_mesh::sweep_management::SweepChunk &sweep_chunk, const std::vector< size_t > &timing_tags, chi_mesh::sweep_management::ExecutionPermission permission) override
const std::vector< chi_mesh::sweep_management::Task > & TaskList() const