topo_bulk.hpp
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------------
2 // d-SEAMS - Deferred Structural Elucidation Analysis for Molecular Simulations
3 //
4 // Copyright (c) 2018--present d-SEAMS core team
5 //
6 // This program is free software: you can redistribute it and/or modify
7 // it under the terms of the MIT License as published by
8 // the Open Source Initiative.
9 //
10 // A copy of the MIT License is included in the LICENSE file of this repository.
11 // You should have received a copy of the MIT License along with this program.
12 // If not, see <https://opensource.org/licenses/MIT>.
13 //-----------------------------------------------------------------------------------
14 
15 #ifndef __TOPO_BULK_H_
16 #define __TOPO_BULK_H_
17 
18 #include <algorithm>
19 #include <array>
20 #include <fstream>
21 #include <iostream>
22 #include <iterator>
23 #include <math.h>
24 #include <memory>
25 #include <sstream>
26 #include <string>
27 #include <sys/stat.h>
28 #include <vector>
29 
30 #include <cage.hpp>
31 #include <mol_sys.hpp>
32 #include <order_parameter.hpp>
33 #include <ring.hpp>
34 #include <seams_input.hpp>
35 #include <seams_output.hpp>
36 #include <shapeMatch.hpp>
37 
48 namespace ring {
49 
55  molSys::PointCloud<molSys::Point<double>, double> *yCloud, int maxDepth,
56  int firstFrame);
57 
58 // DDC HC Ring functions
59 
66  int firstFrame, bool onlyTetrahedral = true);
67 
71  std::vector<strucType> *ringType,
72  std::vector<int> listHC,
73  std::vector<cage::Cage> *cageList);
74 
79  std::vector<strucType> *ringType,
80  std::vector<int> *listDDC,
81  std::vector<int> *listHC);
82 
86  std::vector<strucType> *ringType,
88  std::vector<cage::Cage> *cageList);
89 
93  std::vector<int> *peripheralRings, int iring);
94 
98  std::vector<int> *peripheralRings, int iring);
99 
103  std::vector<int> *peripheralRings);
104 
107  std::vector<int> *basal1, std::vector<int> *basal2);
108 
112  std::vector<int> *triplet, int atomOne, int atomTwo);
113 
118 
121  std::vector<strucType> *ringType, int iring, int jring,
122  std::vector<int> *prismaticRings);
123 
128  std::vector<cage::iceType> *atomTypes);
129 
132  std::vector<cage::Cage> cageList, int *numHC, int *numDDC,
133  int *mixedRings, int *prismaticRings, int *basalRings);
134 
135 } // namespace ring
136 
142 namespace prism3 {
143 
148  molSys::PointCloud<molSys::Point<double>, double> *yCloud,
149  std::vector<double> *rmsdPerAtom, double heightCutoff = 8);
150 
154  std::vector<int> *basal1, std::vector<int> *basal2);
155 
159  std::vector<int> *basal1, std::vector<int> *basal2);
160 
163  molSys::PointCloud<molSys::Point<double>, double> *yCloud,
164  std::vector<int> basal1, std::vector<int> basal2, double heightCutoff = 8);
165 } // namespace prism3
166 
167 #endif // __TOPO_BULK_H_
File for cage types for topological network criteria.
bool notNeighboursOfRing(std::vector< std::vector< int >> nList, std::vector< int > *triplet, std::vector< int > *ring)
Definition: topo_bulk.cpp:981
bool conditionOneDDC(std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings, int iring)
Definition: topo_bulk.cpp:416
bool basalNeighbours(std::vector< std::vector< int >> nList, std::vector< int > *triplet, int atomOne, int atomTwo)
Definition: topo_bulk.cpp:908
bool relaxedPrismConditions(std::vector< std::vector< int >> nList, std::vector< int > *basal1, std::vector< int > *basal2)
Definition: topo_bulk.cpp:1516
std::vector< int > findDDC(std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, std::vector< int > listHC, std::vector< cage::Cage > *cageList)
Definition: topo_bulk.cpp:285
bool conditionTwoDDC(std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings, int iring)
Definition: topo_bulk.cpp:488
int getAtomTypesTopoBulk(std::vector< std::vector< int >> rings, std::vector< ring::strucType > ringType, std::vector< cage::iceType > *atomTypes)
Definition: topo_bulk.cpp:1164
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.
Definition: topo_bulk.cpp:1247
bool basalRingsSeparation(molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< int > basal1, std::vector< int > basal2, double heightCutoff=8)
Check to see that candidate basal prisms are not really far from each other.
Definition: topo_bulk.cpp:1557
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)
Definition: topo_bulk.cpp:786
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)
Definition: topo_bulk.cpp:44
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.
Definition: topo_bulk.cpp:1021
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)
Definition: topo_bulk.cpp:134
bool conditionThreeDDC(std::vector< std::vector< int >> rings, std::vector< int > *peripheralRings)
Definition: topo_bulk.cpp:569
int findBulkPrisms(std::vector< std::vector< int >> rings, std::vector< ring::strucType > *ringType, std::vector< std::vector< int >> nList, molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< double > *rmsdPerAtom, double heightCutoff=8)
Find out which rings are prisms.
Definition: topo_bulk.cpp:1328
std::vector< int > findMixedRings(std::vector< std::vector< int >> rings, std::vector< strucType > *ringType, std::vector< int > *listDDC, std::vector< int > *listHC)
Definition: topo_bulk.cpp:1117
bool basalPrismConditions(std::vector< std::vector< int >> nList, std::vector< int > *basal1, std::vector< int > *basal2)
Definition: topo_bulk.cpp:1429
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)
Definition: topo_bulk.cpp:651
The main molecular system handler.
Topological network criteria functions.
Definition: ring.hpp:64
File containing common functions used by bulk and confined topological network critera.
File for functions that read in files).
This contains a collection of points; contains information for a particular frame.
Definition: mol_sys.hpp:170
This contains per-particle information.
Definition: mol_sys.hpp:149