Class SweepBoundary

Inheritance Relationships

Derived Types

Class Documentation

class SweepBoundary

Base class for sweep related boundaries.

Subclassed by opensn::ArbitraryBoundary, opensn::IsotropicBoundary, opensn::ReflectingBoundary, opensn::VacuumBoundary

Public Functions

inline explicit SweepBoundary(BoundaryBank &bank, LBSBoundaryType bndry_type)
virtual ~SweepBoundary() = default
inline LBSBoundaryType GetType() const
inline bool IsReflecting() const
inline bool IsAngleDependent() const
inline double GetEvaluationTime() const
inline void SetEvaluationTime(double time)
inline virtual bool HasDelayedAngularFlux() const
inline virtual void GetFollowingAngleSets(int groupset_id, std::set<AngleSet*> &following_angle_sets, const AngleAggregation &angle_agg, const AngleSet &angleset)

Get the list of anglesets that depend on a given angleset.

This function can only be applied to reflecting boundary and AAHD anglesets.

inline virtual void SetOpposingReflected(std::uint64_t boundary_id, const std::map<std::uint64_t, std::shared_ptr<SweepBoundary>> &boundaries)
inline virtual void ZeroOpposingDelayedAngularFluxOld(int groupset_id)
inline virtual size_t CountDelayedAngularDOFsNew(int groupset_id) const
inline virtual size_t CountDelayedAngularDOFsOld(int groupset_id) const
inline virtual void AppendNewDelayedAngularDOFsToVector(int groupset_id, std::vector<double> &output) const
inline virtual void AppendOldDelayedAngularDOFsToVector(int groupset_id, std::vector<double> &output) const
inline virtual void AppendNewDelayedAngularDOFsToArray(int groupset_id, int64_t &index, double *buffer) const
inline virtual void AppendOldDelayedAngularDOFsToArray(int groupset_id, int64_t &index, double *buffer) const
inline virtual void SetNewDelayedAngularDOFsFromArray(int groupset_id, int64_t &index, const double *buffer)
inline virtual void SetOldDelayedAngularDOFsFromArray(int groupset_id, int64_t &index, const double *buffer)
inline virtual void SetNewDelayedAngularDOFsFromVector(int groupset_id, const std::vector<double> &values, size_t &index)
inline virtual void SetOldDelayedAngularDOFsFromVector(int groupset_id, const std::vector<double> &values, size_t &index)
inline virtual void CopyDelayedAngularFluxOldToNew(int groupset_id)
inline virtual void CopyDelayedAngularFluxNewToOld(int groupset_id)
inline virtual const Vector3 *GetNormalForReflection() const
inline virtual void GetReflectedMap(int groupset_id, std::vector<std::vector<std::uint32_t>> &reflected_maps)
virtual double *PsiIncoming(std::uint32_t cell_local_id, unsigned int face_num, unsigned int fi, unsigned int angle_num, int groupset_id, unsigned int group_idx)

Return a pointer to the location of the incoming flux.

virtual double *PsiOutgoing(uint64_t cell_local_id, unsigned int face_num, unsigned int fi, unsigned int angle_num, int groupset_id)

Return a pointer to the location of the outgoing flux.

inline virtual void Setup(const std::shared_ptr<MeshContinuum> &grid, const AngularQuadrature &quadrature)
inline virtual void InitializeReflectingMap(const std::vector<LBSGroupset> &groupsets)
inline virtual void InitializeAngleDependent(const std::vector<LBSGroupset> &groupsets)

Perform additional setup required by angle-dependent boundaries.

Angle-dependent boundaries require an extra initialization step after flux data structures are initialized. This phase cannot be executed in the constructor, which happens before the initialization of flux data structures.

inline double *GetBoundaryFlux(int groupset_id, std::uint64_t extra_offset = 0)

Get pointer to the boundary flux section in the contigous bank for a given groupset.

inline const double *GetBoundaryFlux(int groupset_id, std::uint64_t extra_offset = 0) const

Get pointer to the boundary flux section in the contigous bank for a given groupset.

inline virtual std::uint64_t GetOffsetToAngleset(const FaceNode &face_node, AngleSet &anglset, bool is_outgoing)

Get offset to the data region of a given angleset.

inline double *ZeroFlux(int groupset_id, unsigned int group_num)
inline virtual void UpdateBoundaryFlux(const std::vector<LBSGroupset> &groupsets)

Protected Attributes

BoundaryBank &bank_

Reference to the boundary bank (contiguous memory allocated for all boundaries).

std::vector<std::uint64_t> offset_

Offset used to access boundary flux data for each groupset.

Boundary fluxes for a given boundary start at offset * groupset.GetNumGroups().

LBSBoundaryType type_

Boundary type.

double evaluation_time_ = 0.0

Time value passed to boundary functions.