Loading...
Searching...
No Matches
cage Namespace Reference

Functions for topological network criteria cage types. More...

Classes

struct  Cage
 This contains a cage, with the constituent rings. 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< FoundCagefindBySignature (const std::vector< std::vector< int > > &rings, const Signature &signature)
 Face-sharing rings whose size census equals signature and whose edges close.
std::vector< FoundCagefindBySignature (const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, const Signature &signature)
 As above.
std::vector< FoundCagefindIncompleteBySignature (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.

Detailed Description

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

Function Documentation

◆ canonicalCertificate()

std::string cage::canonicalCertificate ( const std::vector< std::vector< int > > & rings)

◆ canonicalCertificateColoured()

std::string cage::canonicalCertificateColoured ( int n,
const std::vector< std::pair< int, int > > & edges,
const std::vector< int > & colours,
int root )

◆ canonicalCertificateRooted()

std::string cage::canonicalCertificateRooted ( int n,
const std::vector< std::pair< int, int > > & edges,
int root )

◆ findBySignature() [1/2]

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).

◆ findBySignature() [2/2]

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.

◆ findIncompleteBySignature()

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.

◆ isClosedPolyhedron()

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.

◆ isHexagonalPrism()

bool cage::isHexagonalPrism ( const std::vector< std::vector< int > > & rings)

◆ nautyAvailable()

bool cage::nautyAvailable ( )

◆ sameCertificate()

bool cage::sameCertificate ( const std::vector< std::vector< int > > & a,
const std::vector< std::vector< int > > & b )