eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
IRACompare.h
Go to the documentation of this file.
1
/*
2
** This file is part of eOn.
3
**
4
** SPDX-License-Identifier: BSD-3-Clause
5
**
6
** Copyright (c) 2010--present, eOn Development Team
7
** All rights reserved.
8
**
9
** Repo:
10
** https://github.com/TheochemUI/eOn
11
*/
12
#pragma once
13
14
#include "
Eigen.h
"
15
#include "
Matter.h
"
16
#include <string>
17
#include <vector>
18
19
namespace
eonc
{
20
21
class
IIRAResource
;
22
25
class
IRACompare
{
26
public
:
27
struct
MatchResult
{
28
std::vector<int>
permutation
;
// Atom permutation mapping 1->2
29
Eigen::Matrix3d
rotation
;
// Optimal rotation matrix
30
Eigen::Vector3d
translation
;
// Optimal translation vector
31
double
hausdorffDistance
;
// Hausdorff distance after alignment
32
int
error
{0};
// 0 = success
33
};
34
35
struct
SymmetryResult
{
36
std::string
pointGroup
;
37
int
nOperations
{0};
38
std::vector<Eigen::Matrix3d>
operations
;
39
std::vector<std::string>
operationLabels
;
40
std::vector<double>
angles
;
41
std::vector<Eigen::Vector3d>
axes
;
42
int
error
{0};
43
};
44
47
static
MatchResult
match
(
const
Matter
&m1,
const
Matter
&m2,
48
double
distThreshold);
49
53
static
MatchResult
matchArrays
(
int
nat1,
const
int
*typ1,
const
double
*pos1,
54
int
nat2,
const
int
*typ2,
const
double
*pos2,
55
double
distThreshold);
57
static
MatchResult
matchArrays
(
int
nat1,
const
int
*typ1,
const
double
*pos1,
58
int
nat2,
const
int
*typ2,
const
double
*pos2,
59
double
distThreshold,
IIRAResource
&res);
60
63
static
MatchResult
matchPBC
(
const
Matter
&m1,
const
Matter
&m2,
64
double
distThreshold);
65
static
MatchResult
matchPBC
(
const
Matter
&m1,
const
Matter
&m2,
66
double
distThreshold,
IIRAResource
&res);
67
69
static
SymmetryResult
findSymmetry
(
const
Matter
&m,
double
threshold,
70
bool
prescreenIh =
true
);
71
static
SymmetryResult
findSymmetry
(
const
Matter
&m,
double
threshold,
72
bool
prescreenIh,
IIRAResource
&res);
73
76
static
MatchResult
alignReactantToProduct
(
Matter
&reactant,
77
const
Matter
&product,
78
double
distThreshold);
79
};
80
81
}
// namespace eonc
Eigen.h
Matter.h
eonc::IIRAResource
Definition
IRAResource.h:37
eonc::IRACompare
C++ wrapper for the IRA (Iterative Rotations and Assignments) library.
Definition
IRACompare.h:25
eonc::IRACompare::matchPBC
static MatchResult matchPBC(const Matter &m1, const Matter &m2, double distThreshold)
Atom assignment under periodic boundary conditions (CShDA only, no rotation/SVD).
Definition
IRACompare.cpp:141
eonc::IRACompare::findSymmetry
static SymmetryResult findSymmetry(const Matter &m, double threshold, bool prescreenIh=true)
Find all symmetry operations of a structure (SOFI algorithm).
Definition
IRACompare.cpp:219
eonc::IRACompare::alignReactantToProduct
static MatchResult alignReactantToProduct(Matter &reactant, const Matter &product, double distThreshold)
Rigid-align + permute reactant onto product.
Definition
IRACompare.cpp:339
eonc::IRACompare::match
static MatchResult match(const Matter &m1, const Matter &m2, double distThreshold)
Match two structures using CShDA + SVD (optimal rotation + assignment).
Definition
IRACompare.cpp:26
eonc::IRACompare::matchArrays
static MatchResult matchArrays(int nat1, const int *typ1, const double *pos1, int nat2, const int *typ2, const double *pos2, double distThreshold)
Same as match(), from packed (n,3) row-major coordinates and Z arrays.
Definition
IRACompare.cpp:47
eonc::Matter
Definition
Matter.h:90
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::IRACompare::MatchResult
Definition
IRACompare.h:27
eonc::IRACompare::MatchResult::translation
Eigen::Vector3d translation
Definition
IRACompare.h:30
eonc::IRACompare::MatchResult::rotation
Eigen::Matrix3d rotation
Definition
IRACompare.h:29
eonc::IRACompare::MatchResult::hausdorffDistance
double hausdorffDistance
Definition
IRACompare.h:31
eonc::IRACompare::MatchResult::error
int error
Definition
IRACompare.h:32
eonc::IRACompare::MatchResult::permutation
std::vector< int > permutation
Definition
IRACompare.h:28
eonc::IRACompare::SymmetryResult
Definition
IRACompare.h:35
eonc::IRACompare::SymmetryResult::pointGroup
std::string pointGroup
Definition
IRACompare.h:36
eonc::IRACompare::SymmetryResult::operationLabels
std::vector< std::string > operationLabels
Definition
IRACompare.h:39
eonc::IRACompare::SymmetryResult::angles
std::vector< double > angles
Definition
IRACompare.h:40
eonc::IRACompare::SymmetryResult::nOperations
int nOperations
Definition
IRACompare.h:37
eonc::IRACompare::SymmetryResult::operations
std::vector< Eigen::Matrix3d > operations
Definition
IRACompare.h:38
eonc::IRACompare::SymmetryResult::axes
std::vector< Eigen::Vector3d > axes
Definition
IRACompare.h:41
eonc::IRACompare::SymmetryResult::error
int error
Definition
IRACompare.h:42
include
eon
IRACompare.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf