namespace cage¶
Overview¶
Functions for topological network criteria cage types. More…
namespace cage {
// structs
struct Cage;
struct FoundCage;
struct Signature;
// global 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);
std::vector<FoundCage> findBySignature(const std::vector<std::vector<int>>& rings, const Signature& signature);
std::vector<FoundCage> findBySignature(const std::vector<std::vector<int>>& rings, const std::vector<std::vector<int>>& nList, const Signature& signature);
} // namespace cage
Detailed Documentation¶
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.
Changelog¶
Amrita Goswami [amrita16thaug646@gmail.com]; date modified: Nov 13, 2019
Rohit Goswami [rog32@hi.is]; date modified: Mar 20, 2021
Global Functions¶
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.
An empty face list is not closed.
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.
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> 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.