STORMM Source Documentation
Loading...
Searching...
No Matches
stormm::energy::ForwardExclusionMask Class Reference

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>

Public Member Functions

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< uint2getSecondaryMasks (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
 
ForwardExclusionMaskoperator= (const ForwardExclusionMask &other)=default
 
ForwardExclusionMaskoperator= (ForwardExclusionMask &&other)=default
 

Detailed Description

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.

Member Function Documentation

◆ data()

const ForwardExclusionMaskReader stormm::energy::ForwardExclusionMask::data ( HybridTargetLevel tier = HybridTargetLevel::HOST) const

Get the collection of this object's pointers and critical constants.

Parameters
tierLevel 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
indexTopological 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
startThe index of the first secondary mask to read
lengthThe 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_iThe first atom
atom_jThe 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: