This exclusion mask relies on the reality that, in most topologies, the bulk of one atom's exclusions will be found within the next 32 atoms listed in the topology. If an atom excludes other atoms beyond this range, a separate index records the position at which this happens and provides either an index into a list of additional atoms or, if possible, the index of one other reference index in the topology followed by a second mask of 32 atoms which indicate exclusions relative to the reference index. To keep the list as compact as possible, the exclusion mask only considers "forward" exclusions, meaning excluded atoms with higher index than the one for which the mask is made. There is no double-counting: if atom 1 excludes atom 5, then atom 5 does not note an exclusion of atom 1.
More...
#include <forward_exclusionmask.h>
|
int | getAtomCount () const |
| Get the number of atoms in the system.
|
|
int | getPrimaryMaskCount () const |
| Get the number of unique primary masks that the system requires to store all of its non-bonded exclusions.
|
|
int | getExtendedMaskCount () const |
| Get the number of primary masks that involve a half-mask extension rather than a reference to a full list of additional secondary masks.
|
|
int | getSecondaryMaskCount () const |
| Get the number of secondary masks that the system requires to store all of its non-bonded exclusions.
|
|
int | getTotalExclusionsCount () const |
| Get the total number of exclusions by counting all the checked bits and accounting for excluded reference atoms.
|
|
uint2 | getPrimaryMask (int index) const |
| Get an atom's primary mask.
|
|
std::vector< uint2 > | getSecondaryMasks (int start, int length) const |
| Get all secondary masks associated with an atom. Each presents the exclusions for a cluster of atoms following some reference atom.
|
|
const ForwardExclusionMaskReader | data (HybridTargetLevel tier=HybridTargetLevel::HOST) const |
| Get the collection of this object's pointers and critical constants.
|
|
bool | testExclusion (int atom_i, int atom_j) const |
| Test whether a pair of atoms is an exclusion or not.
|
|
|
| ForwardExclusionMask (const AtomGraph *ag_in=nullptr) |
| The constructor requires a topology and creates a blank object if given nullptr.
|
|
| ForwardExclusionMask (const AtomGraph &ag_in) |
|
|
| ForwardExclusionMask (const ForwardExclusionMask &original)=default |
| The default copy and move constructors as well as the copy and move assignment operator will suffice for this object, which has no POINTER-kind Hybrid objects among its members.
|
|
| ForwardExclusionMask (ForwardExclusionMask &&original)=default |
|
ForwardExclusionMask & | operator= (const ForwardExclusionMask &other)=default |
|
ForwardExclusionMask & | operator= (ForwardExclusionMask &&other)=default |
|
This exclusion mask relies on the reality that, in most topologies, the bulk of one atom's exclusions will be found within the next 32 atoms listed in the topology. If an atom excludes other atoms beyond this range, a separate index records the position at which this happens and provides either an index into a list of additional atoms or, if possible, the index of one other reference index in the topology followed by a second mask of 32 atoms which indicate exclusions relative to the reference index. To keep the list as compact as possible, the exclusion mask only considers "forward" exclusions, meaning excluded atoms with higher index than the one for which the mask is made. There is no double-counting: if atom 1 excludes atom 5, then atom 5 does not note an exclusion of atom 1.
◆ data()
const ForwardExclusionMaskReader stormm::energy::ForwardExclusionMask::data |
( |
HybridTargetLevel | tier = HybridTargetLevel::HOST | ) |
const |
Get the collection of this object's pointers and critical constants.
- Parameters
-
tier | Level at which to get the data pointers (host CPU or GPU device) |
◆ getPrimaryMask()
uint2 stormm::energy::ForwardExclusionMask::getPrimaryMask |
( |
int | index | ) |
const |
Get an atom's primary mask.
- Parameters
-
index | Topological index of the atom of interest |
◆ getSecondaryMasks()
std::vector< uint2 > stormm::energy::ForwardExclusionMask::getSecondaryMasks |
( |
int | start, |
|
|
int | length ) const |
Get all secondary masks associated with an atom. Each presents the exclusions for a cluster of atoms following some reference atom.
- Parameters
-
start | The index of the first secondary mask to read |
length | The number of secondary masks to read |
◆ testExclusion()
bool stormm::energy::ForwardExclusionMask::testExclusion |
( |
int | atom_i, |
|
|
int | atom_j ) const |
Test whether a pair of atoms is an exclusion or not.
- Parameters
-
atom_i | The first atom |
atom_j | The second atom (if atom_j < atom_i, the function will make a recursive call with atom_i and atom_j reversed) |
The documentation for this class was generated from the following files: