Class AAHD_AngleSet

Inheritance Relationships

Base Type

Class Documentation

class AAHD_AngleSet : public opensn::AngleSet

AAHD angle set.

Public Functions

AAHD_AngleSet(size_t id, size_t num_groups, const SPDS &spds, std::shared_ptr<FLUDS> &fluds, std::vector<size_t> &angle_indices, std::map<uint64_t, std::shared_ptr<SweepBoundary>> &boundaries, int maximum_message_size, const MPICommunicatorSet &in_comm_set)
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.