Class AAHD_NodeIndex
Defined in File aahd_structs.h
Class Documentation
-
class AAHD_NodeIndex
64-bit integer encoding the index and the bank information of a face node.
Note
The index must follow strict mutual-exclusion rules:
Always check boundary status BEFORE local status. Boundary instances are assigned as local, but their locations are actually set to an undefined value.
Boundary and delayed status are mutually exclusive. Both cannot be true at the same time.
Boundary and non-local status are mutually exclusive. Both cannot be true at the same time.
Non-local outgoing and delayed status are mutually exclusive. The sweep scheduler does not distinguish between delayed and non-delayed non-local outgoing faces. For non-local outgoing faces, delayed status is always set to false.
Index bits
/ / / Index bit mask (
1at the last 60 bits)Public Functions
-
AAHD_NodeIndex() = default
Default constructor.
-
inline constexpr AAHD_NodeIndex(const std::uint64_t &value)
Direct assign core value.
-
inline AAHD_NodeIndex(std::uint64_t index, bool is_outgoing, bool is_local, bool is_delayed)
Contruct a non-boundary node index.
- Parameters:
index – Index into the corresponding bank. Cannot exceed 2^60 - 1.
is_outgoing – Flag indicating if the node corresponds to an outgoing face.
is_local – Flag indicating if the index is in a local bank.
is_delayed – Flag indicating if the index is in a delayed bank.
loc_index – Index into delayed/non-delayed location dependencies/successors vector for non-local nodes. Cannot exceed 2^21 - 1.
-
inline AAHD_NodeIndex(std::uint64_t index, bool is_outgoing)
Contruct a boundary node index.
- Parameters:
index – Index into the corresponding bank. Cannot exceed 2^40 - 1.
is_outgoing – Flag indicating if the node corresponds to an outgoing face.
-
inline bool IsUndefined() const noexcept
Check if the current index is in undefined form.
-
inline bool IsOutGoing() const noexcept
Check if the current index is incoming or outgoing.
-
inline bool IsDelayed() const noexcept
Check if the current index is corresponding to a delayed bank.
-
inline bool IsBoundary() const noexcept
Check if the current index is corresponding to boundary.
-
inline bool IsLocal() const noexcept
Check if the current index is corresponding to a local bank.
-
inline std::uint64_t GetIndex() const noexcept
Get the index into the bank.
-
inline std::uint64_t GetCoreValue() const noexcept
Get the core value.