Functions for building neighbour lists. More...
Classes | |
| class | SkinNeighborList |
| Persistent neighbour list with a LAMMPS skin. More... | |
Enumerations | |
| enum class | BondGraph { BondGraph::Cutoff , BondGraph::KnnMutual , BondGraph::KnnUnion } |
| Bond graph for TUM. More... | |
Functions | |
| void | dumpBoundsToH (const std::vector< double > &box, const std::vector< double > &boxLow, double H[3][3], double origin[3]) |
| LAMMPS dump bound spans to restricted triclinic H (rows a, b, c). | |
| void | dumpCellLengths (const std::vector< double > &box, const std::vector< double > &boxLow, double lengths[3]) |
| Recovered restricted-triclinic lengths lx, ly, lz (H diagonal). | |
| int | dumpAxialDim (const std::vector< double > &box, const std::vector< double > &boxLow) |
| Longest recovered length: 0 = x, 1 = y, 2 = z. | |
| int | dumpAxialDim (const molSys::PointCloud< molSys::Point< double >, double > &yCloud) |
| void | dumpToFrac (const double H[3][3], const double origin[3], double x, double y, double z, double s[3]) |
| Cartesian to fractional coordinates via dump H. | |
| void | dumpFromFrac (const double H[3][3], const double origin[3], const double s[3], double r[3]) |
| Fractional to cartesian coordinates via dump H. | |
| double | dumpVolume (const std::vector< double > &box, const std::vector< double > &boxLow) |
| Triclinic dump-cell volume |det(H)| from dumpBoundsToH. | |
| double | dumpVolume (const molSys::PointCloud< molSys::Point< double >, double > &yCloud) |
| std::vector< std::vector< int > > | neighList (double rcutoff, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI, int typeJ) |
| All these functions use atom IDs and not indices. | |
| std::vector< std::vector< int > > | neighListPair (double rcutoff, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI, int typeJ) |
| std::vector< std::vector< int > > | neighListO (double rcutoff, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI) |
| std::vector< std::vector< int > > | halfNeighList (double rcutoff, const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI=1) |
| std::vector< std::vector< int > > | neighbourListByIndex (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, const std::vector< std::vector< int > > &nList) |
| std::vector< std::vector< int > > | getNewNeighbourListByIndex (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, double cutoff) |
| std::vector< std::vector< int > > | kNearestNeighbourList (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int k, double candidateCutoff, int typeI, bool mutual=true) |
| Bonded graph from the k nearest neighbours of each particle rather than a distance cutoff. | |
| std::pair< std::vector< std::vector< int > >, std::vector< std::vector< int > > > | kNearestNeighbourPair (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int k, double candidateCutoff, int typeI) |
| Mutual and union k-nearest graphs from one candidate search. | |
| std::pair< double, double > | shellSeparation (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int k, int typeI) |
| The shell-separation certificate for the exact reduction of the k-nearest graph to the cutoff graph: returns {max_i d_k(i), min_i d_{k+1}(i)} over particles of the type. | |
| std::vector< std::tuple< int, int, double > > | nearestUnlike (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI, int typeJ) |
| Nearest unlike image of each typeI particle among typeJ particles. | |
| std::vector< std::pair< int, int > > | mutualNearestUnlike (const molSys::PointCloud< molSys::Point< double >, double > &yCloud, int typeI, int typeJ) |
| Subset of nearestUnlike where j's nearest typeI is i (mutual). | |
| int | clearNeighbourList (std::vector< std::vector< int > > &nList) |
| Erases memory for a vector of vectors for the neighbour list. | |
| BondGraph | bondGraphFromName (const std::string &name) |
| const char * | bondGraphName (BondGraph graph) |
Functions for building neighbour lists.
This namespace contains functions that build neighbour lists (vesin cell list, with a brute-force fallback), saving either the atom IDs or atom indices (according to a PointCloud) in a row-ordered vector of vectors. Whether the atom IDs or atom indices (i.e. the indices of the elements in the vector pts inside the PointCloud) are saved, the neighbour lists are constructed such that the first element is the 'central atom', whose neighbours are being saved on that particular line. The central atom is followed by the atom IDs or indices of the nearest neighbours.
In a 'full' neighbour list, if 1 is a neighbour of 2 then 1 is saved in the neighbour list of 2 AND 2 is also saved in the neighbour list of 1.
In a 'half' neighbour list, if 1 is a neighbour of 2, then 2 is saved in the neighbour list of 1 but not vice versa.