Topological network criteria functions. More...
Enumerations | |
enum class | strucType { unclassified , DDC , HCbasal , HCprismatic , bothBasal , bothPrismatic , Prism , deformedPrism , mixedPrismRing } |
Functions | |
std::vector< std::vector< int > > | getSingleRingSize (std::vector< std::vector< int >> rings, int ringSize) |
Returns a vector of vectors of rings of a single size. More... | |
bool | hasCommonElements (std::vector< int > ring1, std::vector< int > ring2) |
bool | compareRings (std::vector< int > ring1, std::vector< int > ring2) |
bool | findTripletInRing (std::vector< int > ring, std::vector< int > triplet) |
Searches a particular ring for a triplet. More... | |
bool | commonElementsInThreeRings (std::vector< int > ring1, std::vector< int > ring2, std::vector< int > ring3) |
Common elements in 3 rings. More... | |
std::vector< int > | findsCommonElements (std::vector< int > ring1, std::vector< int > ring2) |
Returns the common elements of two rings. More... | |
int | clearRingList (std::vector< std::vector< int >> &rings) |
Erases memory for a vector of vectors for a list of rings. More... | |
int | assignPolygonType (std::vector< std::vector< int >> rings, std::vector< int > *atomTypes, std::vector< int > nRings) |
void | getEdgeMoleculesInRings (std::vector< std::vector< int >> rings, molSys::PointCloud< molSys::Point< double >, double > *oCloud, molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::array< double, 3 > coordLow, std::array< double, 3 > coordHigh, bool identicalCloud=false) |
void | printSliceGetEdgeMoleculesInRings (std::string path, std::vector< std::vector< int >> rings, molSys::PointCloud< molSys::Point< double >, double > *oCloud, molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::array< double, 3 > coordLow, std::array< double, 3 > coordHigh, bool identicalCloud=false) |
int | bulkPolygonRingAnalysis (std::string path, std::vector< std::vector< int >> rings, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, int maxDepth, int firstFrame) |
int | topoBulkAnalysis (std::string path, std::vector< std::vector< int >> rings, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, int firstFrame, bool onlyTetrahedral=true) |
std::vector< int > | findDDC (std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, std::vector< int > listHC, std::vector< cage::Cage > *cageList) |
std::vector< int > | findMixedRings (std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, std::vector< int > *listDDC, std::vector< int > *listHC) |
std::vector< int > | findHC (std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, std::vector< std::vector< int >> nList, std::vector< cage::Cage > *cageList) |
bool | conditionOneDDC (std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings, int iring) |
bool | conditionTwoDDC (std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings, int iring) |
bool | conditionThreeDDC (std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings) |
bool | basalConditions (std::vector< std::vector< int >> nList, std::vector< int > *basal1, std::vector< int > *basal2) |
Tests whether two rings are basal rings (true) or not (false) More... | |
bool | basalNeighbours (std::vector< std::vector< int >> nList, std::vector< int > *triplet, int atomOne, int atomTwo) |
bool | notNeighboursOfRing (std::vector< std::vector< int >> nList, std::vector< int > *triplet, std::vector< int > *ring) |
int | findPrismatic (std::vector< std::vector< int >> rings, std::vector< int > *listHC, std::vector< strucType > *ringType, int iring, int jring, std::vector< int > *prismaticRings) |
Finds the prismatic rings from basal rings iring and jring. More... | |
int | getAtomTypesTopoBulk (std::vector< std::vector< int >> rings, std::vector< ring::strucType > ringType, std::vector< cage::iceType > *atomTypes) |
int | getStrucNumbers (std::vector< ring::strucType > ringType, std::vector< cage::Cage > cageList, int *numHC, int *numDDC, int *mixedRings, int *prismaticRings, int *basalRings) |
Determines the number of HCs, DDCs, Mixed rings, prismatic and basal rings. More... | |
std::vector< int > | findPrisms (std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, int *nPerfectPrisms, int *nImperfectPrisms, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< double > *rmsdPerAtom, bool doShapeMatching=false) |
bool | basalPrismConditions (std::vector< std::vector< int >> nList, std::vector< int > *basal1, std::vector< int > *basal2) |
bool | relaxedPrismConditions (std::vector< std::vector< int >> nList, std::vector< int > *basal1, std::vector< int > *basal2) |
bool | discardExtraTetragonBlocks (std::vector< int > *basal1, std::vector< int > *basal2, molSys::PointCloud< molSys::Point< double >, double > *yCloud) |
std::vector< std::vector< int > > | keepAxialRingsOnly (std::vector< std::vector< int >> rings, molSys::PointCloud< molSys::Point< double >, double > *yCloud) |
Saves only axial rings out of all possible rings. More... | |
int | prismAnalysis (std::string path, std::vector< std::vector< int >> rings, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, int maxDepth, int *atomID, int firstFrame, int currentFrame, bool doShapeMatching=false) |
int | assignPrismType (std::vector< std::vector< int >> rings, std::vector< int > listPrism, int ringSize, std::vector< ring::strucType > ringType, std::vector< int > *atomTypes, std::vector< ring::strucType > *atomState) |
int | deformedPrismTypes (std::vector< ring::strucType > atomState, std::vector< int > *atomTypes, int maxDepth) |
Get the atom type values for deformed prisms. More... | |
int | rmAxialTranslations (molSys::PointCloud< molSys::Point< double >, double > *yCloud, int *atomID, int firstFrame, int currentFrame) |
Shift the entire ice nanotube and remove axial translations. More... | |
int | polygonRingAnalysis (std::string path, std::vector< std::vector< int >> rings, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, int maxDepth, double sheetArea, int firstFrame) |
Topological network criteria functions.
This namespace contains functions for the topological network criteria for bulk and confined systems both.
Although the namespace is shared by bulk and confined topological network criteria, the functions are split into files specific to each set of criteria.
All the topological network criteria are based on the identification of primitive rings (using the Franzblau algorithm for primitive rings), following which specific rules for combinations of primitive rings are used to identify quasi-one-dimensional, quasi-two-dimensional and bulk ices.