Functions for topological network criteria cage types. More...
Classes | |
| struct | Cage |
| This contains a cage, with the constituent rings. More... | |
| struct | CageShape |
| IRA/SOFI result for one cage. More... | |
| struct | FormerRow |
| One network-former atom: coordination, same-species bonds, and the primitive rings that pass through it. More... | |
| struct | FoundCage |
| One cage matching a signature, closed or incomplete. More... | |
| struct | Signature |
| Ring-size census of a polyhedral cage: size -> number of faces. More... | |
Enumerations | |
| enum class | cageType { cageType::HexC , cageType::DoubleDiaC } |
| enum class | iceType { iceType::dummy , iceType::hc , iceType::ddc , iceType::mixed , iceType::pnc , iceType::mixed2 } |
Functions | |
| bool | nautyAvailable () |
| std::string | canonicalCertificate (const std::vector< std::vector< int > > &rings) |
| bool | isHexagonalPrism (const std::vector< std::vector< int > > &rings) |
| bool | sameCertificate (const std::vector< std::vector< int > > &a, const std::vector< std::vector< int > > &b) |
| std::string | canonicalCertificateRooted (int n, const std::vector< std::pair< int, int > > &edges, int root) |
| std::string | canonicalCertificateColoured (int n, const std::vector< std::pair< int, int > > &edges, const std::vector< int > &colours, int root) |
| bool | isClosedPolyhedron (const std::vector< std::vector< int > > &rings, const std::vector< int > &faces) |
| True when every edge of the listed faces is used by exactly two of those faces. | |
| std::vector< FoundCage > | findBySignature (const std::vector< std::vector< int > > &rings, const Signature &signature) |
| Face-sharing rings whose size census equals signature and whose edges close. | |
| bool | speciesCycleMatches (const std::vector< int > &cycle, const std::vector< int > &pattern) |
| True when cycle is pattern rotated or reversed. | |
| std::vector< FoundCage > | findBySignature (const std::vector< std::vector< int > > &rings, const Signature &signature, const std::vector< int > &species, const std::vector< std::vector< int > > &patterns) |
| As findBySignature. | |
| std::vector< FoundCage > | findBySignature (const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, const Signature &signature) |
| As above. | |
| std::vector< FoundCage > | findIncompleteBySignature (const std::vector< std::vector< int > > &rings, const Signature &signature, int minFaces) |
| Connected face sets that stay inside the signature budget, have at least minFaces faces, and are not closed. | |
| std::vector< std::array< double, 3 > > | coordsOfVertices (const std::vector< std::array< double, 3 > > &all, const std::vector< int > &vertices) |
| Coordinates of vertices only. | |
| CageShape | shapeOfVertices (const std::vector< std::array< double, 3 > > &cageXyz) |
| Point group of this vertex set. | |
| CageShape | overlayVertices (const std::vector< std::array< double, 3 > > &ref, const std::vector< std::array< double, 3 > > &cageXyz) |
| Overlay cageXyz on ref. | |
| std::vector< FormerRow > | formerRows (const std::vector< std::vector< int > > &nList, const std::vector< std::vector< int > > &rings, const std::vector< int > &species, int formerSpecies) |
| formerSpecies < 0 keeps every atom. | |
| bool | sameNetwork (const std::vector< FormerRow > &early, const std::vector< FormerRow > &late) |
| True when the two tables have the same per-atom species, coordination, homopolar count, and ring-size multiset. | |
Functions for topological network criteria cage types.
This namespace contains structs and enums for cage types
Type definitions for atoms, rings and cages. HexC and DoubleDiaC are the TUM ice cages. A Signature names any polyhedron by its ring-size census (sodalite is {4:6, 6:8}); the enumerator in cage_enum.hpp grows face-sharing ring sets that match that census.
| std::string cage::canonicalCertificate | ( | const std::vector< std::vector< int > > & | rings | ) |
| std::string cage::canonicalCertificateColoured | ( | int | n, |
| const std::vector< std::pair< int, int > > & | edges, | ||
| const std::vector< int > & | colours, | ||
| int | root ) |
| std::string cage::canonicalCertificateRooted | ( | int | n, |
| const std::vector< std::pair< int, int > > & | edges, | ||
| int | root ) |
| std::vector< std::array< double, 3 > > cage::coordsOfVertices | ( | const std::vector< std::array< double, 3 > > & | all, |
| const std::vector< int > & | vertices ) |
Coordinates of vertices only.
An index past all is skipped.
| std::vector< FoundCage > cage::findBySignature | ( | const std::vector< std::vector< int > > & | rings, |
| const Signature & | signature ) |
Face-sharing rings whose size census equals signature and whose edges close.
The input may hold rings of every size; only sizes that appear in the signature take part. Named hc and ddc without a neighbour list use the geometric census (4:6,6:2 and 6:7).
| std::vector< FoundCage > cage::findBySignature | ( | const std::vector< std::vector< int > > & | rings, |
| const Signature & | signature, | ||
| const std::vector< int > & | species, | ||
| const std::vector< std::vector< int > > & | patterns ) |
As findBySignature.
A ring is a face only when its species sequence matches one pattern of the same length, up to rotation and reversal. An empty pattern list keeps every ring whose size is in the census. species is one class per atom index. A vertex past the end of species keeps its ring out.
| std::vector< FoundCage > cage::findBySignature | ( | const std::vector< std::vector< int > > & | rings, |
| const std::vector< std::vector< int > > & | nList, | ||
| const Signature & | signature ) |
As above.
Named hc and ddc call findHC / findDDC on the six-membered rings so the vertex sets match those finders.
| std::vector< FoundCage > cage::findIncompleteBySignature | ( | const std::vector< std::vector< int > > & | rings, |
| const Signature & | signature, | ||
| int | minFaces ) |
Connected face sets that stay inside the signature budget, have at least minFaces faces, and are not closed.
Cups and incomplete cages during hydrate nucleation. Closed polyhedra are omitted. minFaces <= 0 uses max(1, signature.faceCount() / 2). A cup whose every face already belongs to a closed cage is omitted.
| std::vector< FormerRow > cage::formerRows | ( | const std::vector< std::vector< int > > & | nList, |
| const std::vector< std::vector< int > > & | rings, | ||
| const std::vector< int > & | species, | ||
| int | formerSpecies ) |
formerSpecies < 0 keeps every atom.
| bool cage::isClosedPolyhedron | ( | const std::vector< std::vector< int > > & | rings, |
| const std::vector< int > & | faces ) |
True when every edge of the listed faces is used by exactly two of those faces.
An empty face list is not closed.
| bool cage::isHexagonalPrism | ( | const std::vector< std::vector< int > > & | rings | ) |
| bool cage::nautyAvailable | ( | ) |
| CageShape cage::overlayVertices | ( | const std::vector< std::array< double, 3 > > & | ref, |
| const std::vector< std::array< double, 3 > > & | cageXyz ) |
Overlay cageXyz on ref.
Row counts must agree. Does not see any atom outside the two sets.
| bool cage::sameCertificate | ( | const std::vector< std::vector< int > > & | a, |
| const std::vector< std::vector< int > > & | b ) |
| bool cage::sameNetwork | ( | const std::vector< FormerRow > & | early, |
| const std::vector< FormerRow > & | late ) |
True when the two tables have the same per-atom species, coordination, homopolar count, and ring-size multiset.
| CageShape cage::shapeOfVertices | ( | const std::vector< std::array< double, 3 > > & | cageXyz | ) |
Point group of this vertex set.
Does not see any other atom.
| bool cage::speciesCycleMatches | ( | const std::vector< int > & | cycle, |
| const std::vector< int > & | pattern ) |
True when cycle is pattern rotated or reversed.