Class AAHD_AngleSet
Defined in File aahd_angle_set.h
Inheritance Relationships
Base Type
public opensn::AngleSet(Class AngleSet)
Class Documentation
-
class AAHD_AngleSet : public opensn::AngleSet
AAHD angle set.
Public Functions
-
inline crb::Stream &GetStream()
-
inline std::uint32_t *GetDeviceAngleIndices()
-
virtual void UpdateSweepDependencies(std::set<AngleSet*> &following_angle_sets) override
Update the starting latch and following angle sets.
-
void SetStartingLatch()
Set the latch value to wait on before starting the sweep.
-
virtual void InitializeDelayedUpstreamData() override
Initializes delayed upstream data.
This method gets called when a sweep scheduler is constructed.
-
inline virtual int GetMaxBufferMessages() const override
Returns the maximum buffer size from the sweepbuffer.
-
inline virtual void SetMaxBufferMessages(int count) override
Sets the maximum buffer size for the sweepbuffer.
-
virtual AngleSetStatus AngleSetAdvance(SweepChunk &sweep_chunk, AngleSetStatus permission) override
This function advances the work stages of an angleset.
-
inline virtual AngleSetStatus FlushSendBuffers() override
-
inline virtual void ResetSweepBuffers() override
Resets the sweep buffer.
-
inline virtual bool ReceiveDelayedData() override
Instructs the sweep buffer to receive delayed data.
-
inline virtual const double *PsiBoundary(uint64_t boundary_id, unsigned int angle_num, uint64_t cell_local_id, unsigned int face_num, unsigned int fi, unsigned int g, bool surface_source_active) override
Returns a pointer to a boundary flux data.
-
inline virtual double *PsiReflected(uint64_t boundary_id, unsigned int angle_num, uint64_t cell_local_id, unsigned int face_num, unsigned int fi) override
Returns a pointer to outbound reflected flux data.
Protected Attributes
-
crb::Stream stream_
Associated CUDA stream.
-
AAHD_ASynchronousCommunicator async_comm_
Asynchronous communicator.
-
crb::DeviceMemory<std::uint32_t> device_angle_indices_
Angle indices on GPU.
-
std::size_t num_dependencies_ = 0
Number of anglesets the current angle set depends on.
-
std::unique_ptr<std::latch> starting_latch_
Starting latch.
Sweep operations wait on this latch to be fully released before starting. The OS puts the thread to sleep while waiting, avoiding taking up CPU resources for spinning wait.
-
std::vector<AAHD_AngleSet*> following_angle_sets_
List of AAHD_AngleSets waiting after this angle set.
After this angle set completes its sweep chunk, it decrements the latches of the angle sets waiting after it to allow them to proceed.
-
inline crb::Stream &GetStream()