eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
LORRotation.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
#include "
Eigen.h
"
14
#include "
EonLogger.h
"
15
#include "
LowestEigenmode.h
"
16
#include "
Matter.h
"
17
#include "
Parameters.h
"
18
19
namespace
eonc
{
20
21
// Leng et al., J. Chem. Phys. 138, 094110 (2013) — Locally Optimal Rotation
22
// (LOR) Algorithm I for softest-mode finding in the dimer rotation step. At
23
// most one new force evaluation per rotation iteration via FD H·v + force
24
// translation of prior H·N / H·F_⊥ / H·P products.
25
class
LORRotation
:
public
LowestEigenmode
{
26
private
:
27
eonc::log::Scoped
log
;
28
VectorXd
eigenvector
;
29
double
eigenvalue
{0.0};
30
std::shared_ptr<Matter>
x0
;
31
std::shared_ptr<Matter>
x1
;
32
33
public
:
34
LORRotation
(std::shared_ptr<Matter> matter,
const
Parameters
&
params
,
35
std::shared_ptr<Potential>
pot
);
36
~LORRotation
() =
default
;
37
38
void
compute
(std::shared_ptr<Matter> matter,
AtomMatrix
initialDirection);
39
double
getEigenvalue
() {
return
eigenvalue
; }
40
AtomMatrix
getEigenvector
() {
41
return
AtomMatrix::Map(
eigenvector
.data(),
eigenvector
.size() / 3, 3);
42
}
43
44
// Last LOR curvature sequence (for unit tests / monotonicity checks)
45
std::vector<double>
curvatureHistory
;
46
bool
convergedOnResidual
{
false
};
47
55
[[nodiscard]]
static
VectorXd
56
translateHUnitOrthoP3
(
const
VectorXd &N,
const
VectorXd &Theta,
57
const
VectorXd &P,
const
VectorXd &HN,
58
const
VectorXd &HTheta,
const
VectorXd &HP);
59
};
60
61
}
// namespace eonc
62
63
using
eonc::LORRotation
;
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
LowestEigenmode.h
Matter.h
Parameters.h
eonc::LORRotation
Definition
LORRotation.h:25
eonc::LORRotation::x0
std::shared_ptr< Matter > x0
Definition
LORRotation.h:30
eonc::LORRotation::getEigenvector
AtomMatrix getEigenvector()
Definition
LORRotation.h:40
eonc::LORRotation::LORRotation
LORRotation(std::shared_ptr< Matter > matter, const Parameters ¶ms, std::shared_ptr< Potential > pot)
Definition
LORRotation.cpp:29
eonc::LORRotation::log
eonc::log::Scoped log
Definition
LORRotation.h:27
eonc::LORRotation::x1
std::shared_ptr< Matter > x1
Definition
LORRotation.h:31
eonc::LORRotation::compute
void compute(std::shared_ptr< Matter > matter, AtomMatrix initialDirection)
Definition
LORRotation.cpp:61
eonc::LORRotation::convergedOnResidual
bool convergedOnResidual
Definition
LORRotation.h:46
eonc::LORRotation::translateHUnitOrthoP3
static VectorXd translateHUnitOrthoP3(const VectorXd &N, const VectorXd &Theta, const VectorXd &P, const VectorXd &HN, const VectorXd &HTheta, const VectorXd &HP)
Force-translation identity for H·P3 when P3 is the unit Gram-Schmidt residual of P against orthonorma...
Definition
LORRotation.cpp:47
eonc::LORRotation::eigenvalue
double eigenvalue
Definition
LORRotation.h:29
eonc::LORRotation::getEigenvalue
double getEigenvalue()
Definition
LORRotation.h:39
eonc::LORRotation::eigenvector
VectorXd eigenvector
Definition
LORRotation.h:28
eonc::LORRotation::curvatureHistory
std::vector< double > curvatureHistory
Definition
LORRotation.h:45
eonc::LORRotation::~LORRotation
~LORRotation()=default
eonc::LowestEigenmode::params
const Parameters & params
Definition
LowestEigenmode.h:28
eonc::LowestEigenmode::pot
std::shared_ptr< Potential > pot
Definition
LowestEigenmode.h:27
eonc::LowestEigenmode::LowestEigenmode
LowestEigenmode(std::shared_ptr< Potential > potPassed, const Parameters ¶meters)
Definition
LowestEigenmode.h:42
eonc::Parameters
Definition
Parameters.h:28
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
include
eon
LORRotation.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf