Loading...
Searching...
No Matches
topo_one_dim.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 SEAMS_TOPO_ONE_DIM_H_
16#define SEAMS_TOPO_ONE_DIM_H_
17
18#include <cmath>
19#include <algorithm>
20#include <array>
21#include <fstream>
22#include <iostream>
23#include <iterator>
24#include <memory>
25#include <sstream>
26#include <string>
27#include <vector>
28
29#include <mol_sys.hpp>
30#include <order_parameter.hpp>
31#include <ring.hpp>
32#include <seams_input.hpp>
33#include <seams_output.hpp>
34#include <shapeMatch.hpp>
35
40
45
46namespace ring {
47
50std::vector<int> findPrisms(
51 const std::vector<std::vector<int>> &rings, std::vector<strucType> &ringType,
52 int &nPerfectPrisms, int &nImperfectPrisms,
53 const std::vector<std::vector<int>> &nList,
55 std::vector<double> &rmsdPerAtom, bool doShapeMatching = false);
56
59bool basalPrismConditions(const std::vector<std::vector<int>> &nList,
60 std::vector<int> &basal1, std::vector<int> &basal2);
61
64bool relaxedPrismConditions(const std::vector<std::vector<int>> &nList,
65 std::vector<int> &basal1, std::vector<int> &basal2);
66
70 std::vector<int> &basal1, std::vector<int> &basal2,
72
74std::vector<std::vector<int>> keepAxialRingsOnly(
75 const std::vector<std::vector<int>> &rings,
77
80[[nodiscard]] int prismAnalysis(std::string path, const std::vector<std::vector<int>> &rings,
81 const std::vector<std::vector<int>> &nList,
83 int maxDepth, int &atomID, int firstFrame, int currentFrame,
84 bool doShapeMatching = false);
85
88[[nodiscard]] int assignPrismType(const std::vector<std::vector<int>> &rings,
89 const std::vector<int> &listPrism, int ringSize,
90 const std::vector<ring::strucType> &ringType,
91 std::vector<int> &atomTypes,
92 std::vector<ring::strucType> &atomState);
93
95[[nodiscard]] int deformedPrismTypes(const std::vector<ring::strucType> &atomState,
96 std::vector<int> &atomTypes, int maxDepth);
97
99[[nodiscard]] int rmAxialTranslations(
100 molSys::PointCloud<molSys::Point<double>, double> &yCloud, int &atomID,
101 int firstFrame, int currentFrame);
102
103} // namespace ring
104
105#endif // __TOPOCONFINED_H_
int prismAnalysis(std::string path, const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList, molSys::PointCloud< molSys::Point< double >, double > &yCloud, int maxDepth, int &atomID, int firstFrame, int currentFrame, bool doShapeMatching=false)
bool discardExtraTetragonBlocks(std::vector< int > &basal1, std::vector< int > &basal2, molSys::PointCloud< molSys::Point< double >, double > &yCloud)
int deformedPrismTypes(const std::vector< ring::strucType > &atomState, std::vector< int > &atomTypes, int maxDepth)
Get the atom type values for deformed prisms.
bool relaxedPrismConditions(const std::vector< std::vector< int > > &nList, std::vector< int > &basal1, std::vector< int > &basal2)
int rmAxialTranslations(molSys::PointCloud< molSys::Point< double >, double > &yCloud, int &atomID, int firstFrame, int currentFrame)
Shift the entire ice nanotube and remove axial translations.
int assignPrismType(const std::vector< std::vector< int > > &rings, const std::vector< int > &listPrism, int ringSize, const std::vector< ring::strucType > &ringType, std::vector< int > &atomTypes, std::vector< ring::strucType > &atomState)
std::vector< std::vector< int > > keepAxialRingsOnly(const std::vector< std::vector< int > > &rings, molSys::PointCloud< molSys::Point< double >, double > &yCloud)
Saves only axial rings out of all possible rings.
bool basalPrismConditions(const std::vector< std::vector< int > > &nList, std::vector< int > &basal1, std::vector< int > &basal2)
std::vector< int > findPrisms(const std::vector< std::vector< int > > &rings, std::vector< strucType > &ringType, int &nPerfectPrisms, int &nImperfectPrisms, const std::vector< std::vector< int > > &nList, molSys::PointCloud< molSys::Point< double >, double > &yCloud, std::vector< double > &rmsdPerAtom, bool doShapeMatching=false)
The main molecular system handler.
Topological network criteria functions.
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:173
This contains per-particle information.
Definition mol_sys.hpp:152