eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
BasinHoppingSaddleSearch.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 "
Matter.h
"
16
#include "
MinModeSaddleSearch.h
"
17
#include "
SaddleSearchMethod.h
"
18
#include <vector>
19
20
namespace
eonc
{
21
22
class
BasinHoppingSaddleSearch
:
public
SaddleSearchMethod
{
23
public
:
24
BasinHoppingSaddleSearch
(std::shared_ptr<Matter>
reactant
,
25
std::shared_ptr<Matter> displacement,
26
std::shared_ptr<Potential> potPassed,
27
const
Parameters
¶metersPassed)
28
:
SaddleSearchMethod
(potPassed, parametersPassed),
29
reactant
{std::make_shared<
Matter
>(*
reactant
)},
saddle
{displacement} {
30
eigenvector
.resize(
reactant
->numberOfAtoms(), 3);
31
eigenvector
.setZero();
32
}
33
~BasinHoppingSaddleSearch
() =
default
;
34
35
// Minimum-image (next - prev) / 2. setPositions wraps into the cell, so a
36
// raw central difference is a box-length jump when a bead crosses a face.
37
[[nodiscard]]
static
AtomMatrix
38
initialDimerDirection
(
const
Matter
&image,
const
AtomMatrix
&prev,
39
const
AtomMatrix
&next) {
40
return
image.
pbc
(next - prev) / 2.0;
41
}
42
43
int
run
(
void
);
47
static
double
metropolisProbability
(
double
de,
double
kB,
double
temperature);
48
double
getEigenvalue
();
49
AtomMatrix
getEigenvector
();
50
53
[[nodiscard]]
static
int
54
highestEnergyInteriorImage
(
const
std::vector<std::shared_ptr<Matter>> &path,
55
long
numImages);
56
std::string_view
describeStatus
(
int
code)
const override
{
57
// Code 1 is the Metropolis rejection, not MinMode STATUS_INIT.
58
if
(code == 1) {
59
return
"Basin hop rejected"
;
60
}
61
return
MinModeSaddleSearch::statusMessage
(code);
62
}
63
int
getStatus
()
const override
{
return
status
; }
64
65
double
eigenvalue
{0.0};
66
AtomMatrix
eigenvector
;
67
68
std::shared_ptr<Matter>
reactant
;
69
std::shared_ptr<Matter>
saddle
;
70
std::shared_ptr<Matter>
product
;
71
72
int
status
{0};
73
74
private
:
75
eonc::log::Scoped
log
;
76
};
77
78
}
// namespace eonc
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
Matter.h
MinModeSaddleSearch.h
SaddleSearchMethod.h
eonc::BasinHoppingSaddleSearch::BasinHoppingSaddleSearch
BasinHoppingSaddleSearch(std::shared_ptr< Matter > reactant, std::shared_ptr< Matter > displacement, std::shared_ptr< Potential > potPassed, const Parameters ¶metersPassed)
Definition
BasinHoppingSaddleSearch.h:24
eonc::BasinHoppingSaddleSearch::product
std::shared_ptr< Matter > product
Definition
BasinHoppingSaddleSearch.h:70
eonc::BasinHoppingSaddleSearch::status
int status
Definition
BasinHoppingSaddleSearch.h:72
eonc::BasinHoppingSaddleSearch::getStatus
int getStatus() const override
Definition
BasinHoppingSaddleSearch.h:63
eonc::BasinHoppingSaddleSearch::log
eonc::log::Scoped log
Definition
BasinHoppingSaddleSearch.h:75
eonc::BasinHoppingSaddleSearch::run
int run(void)
Definition
BasinHoppingSaddleSearch.cpp:35
eonc::BasinHoppingSaddleSearch::reactant
std::shared_ptr< Matter > reactant
Definition
BasinHoppingSaddleSearch.h:68
eonc::BasinHoppingSaddleSearch::eigenvector
AtomMatrix eigenvector
Definition
BasinHoppingSaddleSearch.h:66
eonc::BasinHoppingSaddleSearch::eigenvalue
double eigenvalue
Definition
BasinHoppingSaddleSearch.h:65
eonc::BasinHoppingSaddleSearch::metropolisProbability
static double metropolisProbability(double de, double kB, double temperature)
Quenched Metropolis weight for energy change de.
Definition
BasinHoppingSaddleSearch.cpp:99
eonc::BasinHoppingSaddleSearch::getEigenvector
AtomMatrix getEigenvector()
Definition
BasinHoppingSaddleSearch.cpp:112
eonc::BasinHoppingSaddleSearch::~BasinHoppingSaddleSearch
~BasinHoppingSaddleSearch()=default
eonc::BasinHoppingSaddleSearch::getEigenvalue
double getEigenvalue()
Definition
BasinHoppingSaddleSearch.cpp:110
eonc::BasinHoppingSaddleSearch::saddle
std::shared_ptr< Matter > saddle
Definition
BasinHoppingSaddleSearch.h:69
eonc::BasinHoppingSaddleSearch::describeStatus
std::string_view describeStatus(int code) const override
Definition
BasinHoppingSaddleSearch.h:56
eonc::BasinHoppingSaddleSearch::initialDimerDirection
static AtomMatrix initialDimerDirection(const Matter &image, const AtomMatrix &prev, const AtomMatrix &next)
Definition
BasinHoppingSaddleSearch.h:38
eonc::BasinHoppingSaddleSearch::highestEnergyInteriorImage
static int highestEnergyInteriorImage(const std::vector< std::shared_ptr< Matter > > &path, long numImages)
Highest-energy interior bead.
Definition
BasinHoppingSaddleSearch.cpp:20
eonc::Matter
Definition
Matter.h:90
eonc::Matter::pbc
AtomMatrix pbc(const AtomMatrix &diff) const
Definition
Matter.cpp:810
eonc::MinModeSaddleSearch::statusMessage
static constexpr std::string_view statusMessage(int status)
Human-readable message for a status code.
Definition
MinModeSaddleSearch.h:56
eonc::Parameters
Definition
Parameters.h:35
eonc::SaddleSearchMethod::SaddleSearchMethod
SaddleSearchMethod(std::shared_ptr< Potential > potPassed, const Parameters ¶msPassed)
Definition
SaddleSearchMethod.h:27
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
include
eon
BasinHoppingSaddleSearch.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf