eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
ImprovedDimer.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
#include <vector>
19
20
namespace
eonc
{
21
22
// dimer method to find the lowest curvature mode
23
class
ImprovedDimer
:
public
LowestEigenmode
{
24
25
private
:
26
eonc::log::Scoped
log
;
27
// For use when called as part of the NEB-MMF
28
VectorXd
fixedReferenceMode
;
29
bool
hasFixedReference
=
false
;
30
31
public
:
32
// Optimization for the dimer
33
// static const string OPT_SD;
34
// static const string OPT_CG;
35
// static const string OPT_LBFGS;
36
static
const
char
OPT_SD
[];
37
static
const
char
OPT_CG
[];
38
static
const
char
OPT_LBFGS
[];
39
40
ImprovedDimer
(std::shared_ptr<Matter> matter,
const
Parameters
&
params
,
41
std::shared_ptr<Potential>
pot
);
42
~ImprovedDimer
() =
default
;
43
44
void
compute
(std::shared_ptr<Matter> matter,
AtomMatrix
initialDirection);
45
double
getEigenvalue
();
46
AtomMatrix
getEigenvector
();
47
48
std::shared_ptr<Matter>
x0
;
// Center image
49
std::shared_ptr<Matter>
x1
;
// Forward image
50
VectorXd
tau
;
// Dimer direction
51
VectorXd
theta
;
// Dimer rotation direction
52
VectorXd
F_R
;
// Dimer rotational force
53
double
C_tau
{0.0};
// Curvature along tau
54
// For use when called as part of the NEB-MMF
55
void
setReferenceMode
(
const
VectorXd &ref);
56
void
clearReferenceMode
();
57
bool
rotationDidConverge
{
false
};
58
bool
foundNegativeCurvature
{
false
};
59
// parameters used for conjugate gradients
60
VectorXd
F_R_Old
;
61
VectorXd
thetaOld
;
62
double
a
{0.0},
b
{0.0},
gamma
{0.0};
63
bool
init_cg
{
false
};
64
65
// variables for LBFGS
66
std::vector<VectorXd>
s
,
y
;
67
std::vector<double>
rho
;
68
bool
init_lbfgs
{
false
};
69
VectorXd
rPrev
;
70
71
std::vector<VectorXd>
gradients
;
72
std::vector<VectorXd>
positions
;
73
};
74
75
}
// namespace eonc
76
77
using
eonc::ImprovedDimer
;
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
LowestEigenmode.h
Matter.h
Parameters.h
eonc::ImprovedDimer
Definition
ImprovedDimer.h:23
eonc::ImprovedDimer::foundNegativeCurvature
bool foundNegativeCurvature
Definition
ImprovedDimer.h:58
eonc::ImprovedDimer::F_R
VectorXd F_R
Definition
ImprovedDimer.h:52
eonc::ImprovedDimer::getEigenvalue
double getEigenvalue()
Definition
ImprovedDimer.cpp:436
eonc::ImprovedDimer::x1
std::shared_ptr< Matter > x1
Definition
ImprovedDimer.h:49
eonc::ImprovedDimer::setReferenceMode
void setReferenceMode(const VectorXd &ref)
Definition
ImprovedDimer.cpp:53
eonc::ImprovedDimer::s
std::vector< VectorXd > s
Definition
ImprovedDimer.h:66
eonc::ImprovedDimer::fixedReferenceMode
VectorXd fixedReferenceMode
Definition
ImprovedDimer.h:28
eonc::ImprovedDimer::C_tau
double C_tau
Definition
ImprovedDimer.h:53
eonc::ImprovedDimer::OPT_CG
static const char OPT_CG[]
Definition
ImprovedDimer.h:37
eonc::ImprovedDimer::a
double a
Definition
ImprovedDimer.h:62
eonc::ImprovedDimer::positions
std::vector< VectorXd > positions
Definition
ImprovedDimer.h:72
eonc::ImprovedDimer::OPT_LBFGS
static const char OPT_LBFGS[]
Definition
ImprovedDimer.h:38
eonc::ImprovedDimer::init_lbfgs
bool init_lbfgs
Definition
ImprovedDimer.h:68
eonc::ImprovedDimer::OPT_SD
static const char OPT_SD[]
Definition
ImprovedDimer.h:36
eonc::ImprovedDimer::tau
VectorXd tau
Definition
ImprovedDimer.h:50
eonc::ImprovedDimer::rotationDidConverge
bool rotationDidConverge
Definition
ImprovedDimer.h:57
eonc::ImprovedDimer::clearReferenceMode
void clearReferenceMode()
Definition
ImprovedDimer.cpp:61
eonc::ImprovedDimer::F_R_Old
VectorXd F_R_Old
Definition
ImprovedDimer.h:60
eonc::ImprovedDimer::gradients
std::vector< VectorXd > gradients
Definition
ImprovedDimer.h:71
eonc::ImprovedDimer::~ImprovedDimer
~ImprovedDimer()=default
eonc::ImprovedDimer::theta
VectorXd theta
Definition
ImprovedDimer.h:51
eonc::ImprovedDimer::hasFixedReference
bool hasFixedReference
Definition
ImprovedDimer.h:29
eonc::ImprovedDimer::gamma
double gamma
Definition
ImprovedDimer.h:62
eonc::ImprovedDimer::x0
std::shared_ptr< Matter > x0
Definition
ImprovedDimer.h:48
eonc::ImprovedDimer::rPrev
VectorXd rPrev
Definition
ImprovedDimer.h:69
eonc::ImprovedDimer::y
std::vector< VectorXd > y
Definition
ImprovedDimer.h:66
eonc::ImprovedDimer::ImprovedDimer
ImprovedDimer(std::shared_ptr< Matter > matter, const Parameters ¶ms, std::shared_ptr< Potential > pot)
Definition
ImprovedDimer.cpp:32
eonc::ImprovedDimer::log
eonc::log::Scoped log
Definition
ImprovedDimer.h:26
eonc::ImprovedDimer::thetaOld
VectorXd thetaOld
Definition
ImprovedDimer.h:61
eonc::ImprovedDimer::rho
std::vector< double > rho
Definition
ImprovedDimer.h:67
eonc::ImprovedDimer::b
double b
Definition
ImprovedDimer.h:62
eonc::ImprovedDimer::init_cg
bool init_cg
Definition
ImprovedDimer.h:63
eonc::ImprovedDimer::getEigenvector
AtomMatrix getEigenvector()
Definition
ImprovedDimer.cpp:438
eonc::ImprovedDimer::compute
void compute(std::shared_ptr< Matter > matter, AtomMatrix initialDirection)
Definition
ImprovedDimer.cpp:63
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
ImprovedDimer.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf