Loading...
Searching...
No Matches
cage_affiliation.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// SPDX-License-Identifier: MIT
7//-----------------------------------------------------------------------------------
8
9#ifndef SEAMS_CAGE_AFFILIATION_H_
10#define SEAMS_CAGE_AFFILIATION_H_
11
12#include <memory>
13#include <vector>
14
54
55namespace ring {
56
61 std::vector<bool> hc;
62 std::vector<bool> ddc;
63};
64
69 const std::vector<std::vector<int>> &rings,
70 const std::vector<std::vector<int>> &nList);
71
82public:
86 AffiliationUpdater &operator=(AffiliationUpdater &&) noexcept;
88 AffiliationUpdater &operator=(const AffiliationUpdater &) = delete;
89
93 const CageAffiliation &update(const std::vector<std::vector<int>> &rings,
94 const std::vector<std::vector<int>> &nList);
95
98 [[nodiscard]] int lastReclassified() const;
99
100private:
101 struct Impl;
102 std::unique_ptr<Impl> impl_;
103};
104
109 std::vector<bool> hc;
110 std::vector<bool> ddc;
111};
112
127 const std::vector<std::vector<int>> &strictRings,
128 const std::vector<std::vector<int>> &strictNList,
129 const std::vector<std::vector<int>> &permissiveRings,
130 const std::vector<std::vector<int>> &permissiveNList);
131
132} // namespace ring
133
134#endif // SEAMS_CAGE_AFFILIATION_H_
const CageAffiliation & update(const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList)
int lastReclassified() const
AffiliationUpdater(AffiliationUpdater &&) noexcept
Topological network criteria functions.
CageAffiliation cageAffiliation(const std::vector< std::vector< int > > &rings, const std::vector< std::vector< int > > &nList)
SeededAtomLabels seededCageAffiliation(const std::vector< std::vector< int > > &strictRings, const std::vector< std::vector< int > > &strictNList, const std::vector< std::vector< int > > &permissiveRings, const std::vector< std::vector< int > > &permissiveNList)
Seeded affiliation over two graphs on the same atoms: the strict graph (typically the mutual k-neares...
Per-ring affiliation flags, indexed like the input ring vector.
std::vector< bool > ddc
Basal or prismatic of a passing basal pair.
std::vector< bool > hc
Per-atom cage flags from seeded (hysteresis) affiliation.
std::vector< bool > ddc
Atom belongs to an accepted HC-affiliated ring.