eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
ARTnSaddleSearch.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
13
#pragma once
14
15
#include "
EonLogger.h
"
16
#include "
Matter.h
"
17
#include "
MinModeSaddleSearch.h
"
18
#include "
Parameters.h
"
19
#include "
SaddleSearchMethod.h
"
20
#include <limits>
21
22
// Include the ARTn resource for thread-local access
23
#ifdef WITH_ARTN
24
#include "
libs/ARTn/ARTnResource.h
"
25
#endif
26
27
namespace
eonc
{
28
29
/*
30
* ARTn integration with thread-local dynamic loading
31
*/
32
#ifdef WITH_ARTN
33
34
// Constants
35
constexpr
double
ARTN_MODE_TOLERANCE = 1e-10;
36
constexpr
double
ARTN_SMALL_DISPLACEMENT = 1e-6;
37
38
// WARNING: All ARTn operations are serialized through a global mutex
39
// due to the non-thread-safe Fortran backend. This can be a performance
40
// bottleneck in multi-threaded contexts. Consider process-level parallelism
41
// if true concurrent ARTn operations are required.
42
43
#endif
// WITH_ARTN
44
47
class
ARTnSaddleSearch
:
public
SaddleSearchMethod
{
48
public
:
49
static
constexpr
int
STATUS_GOOD
= 0;
50
static
constexpr
int
STATUS_BAD_MAX_ITERATIONS
=
51
MinModeSaddleSearch::STATUS_BAD_MAX_ITERATIONS
;
52
static
constexpr
int
STATUS_BAD_ARTN_ERROR
= 22;
53
54
ARTnSaddleSearch
(std::shared_ptr<Matter> matterPassed,
55
std::shared_ptr<Potential> potPassed,
AtomMatrix
modeInitial,
56
const
Parameters
¶msPassed);
57
~ARTnSaddleSearch
()
override
;
58
59
int
run
()
override
;
60
double
getEigenvalue
()
override
;
61
AtomMatrix
getEigenvector
()
override
;
62
std::string_view
describeStatus
(
int
status
)
const override
;
63
int
getStatus
()
const override
{
return
status
; }
64
int
getIterationCount
()
const override
{
return
iteration
; }
65
int
getForceCalls
()
const override
{
return
forcecalls
; }
66
67
private
:
68
std::shared_ptr<Matter>
matter
;
69
double
eigenvalue
{std::numeric_limits<double>::quiet_NaN()};
70
AtomMatrix
eigenvector
,
mode
;
71
int
status
{0};
72
int
iteration
{0};
73
int
forcecalls
{0};
74
eonc::log::Scoped
log
;
75
};
76
77
}
// namespace eonc
78
79
using
eonc::ARTnSaddleSearch
;
ARTnResource.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
Matter.h
MinModeSaddleSearch.h
Parameters.h
SaddleSearchMethod.h
ARTnSaddleSearch::ARTnSaddleSearch
ARTnSaddleSearch(std::shared_ptr< Matter > matterPassed, std::shared_ptr< Potential > potPassed, AtomMatrix modeInitial, const Parameters ¶msPassed)
Definition
ARTnSaddleSearch.cpp:21
eonc::ARTnSaddleSearch
Saddle search method using the Activation-Relaxation Technique nouveau.
Definition
ARTnSaddleSearch.h:47
eonc::ARTnSaddleSearch::~ARTnSaddleSearch
~ARTnSaddleSearch() override
Definition
ARTnSaddleSearch.cpp:35
eonc::ARTnSaddleSearch::eigenvector
AtomMatrix eigenvector
Definition
ARTnSaddleSearch.h:70
eonc::ARTnSaddleSearch::getEigenvalue
double getEigenvalue() override
Definition
ARTnSaddleSearch.cpp:427
eonc::ARTnSaddleSearch::eigenvalue
double eigenvalue
Definition
ARTnSaddleSearch.h:69
eonc::ARTnSaddleSearch::ARTnSaddleSearch
ARTnSaddleSearch(std::shared_ptr< Matter > matterPassed, std::shared_ptr< Potential > potPassed, AtomMatrix modeInitial, const Parameters ¶msPassed)
Definition
ARTnSaddleSearch.cpp:21
eonc::ARTnSaddleSearch::forcecalls
int forcecalls
Definition
ARTnSaddleSearch.h:73
eonc::ARTnSaddleSearch::run
int run() override
Definition
ARTnSaddleSearch.cpp:41
eonc::ARTnSaddleSearch::status
int status
Definition
ARTnSaddleSearch.h:71
eonc::ARTnSaddleSearch::log
eonc::log::Scoped log
Definition
ARTnSaddleSearch.h:74
eonc::ARTnSaddleSearch::describeStatus
std::string_view describeStatus(int status) const override
Definition
ARTnSaddleSearch.cpp:441
eonc::ARTnSaddleSearch::iteration
int iteration
Definition
ARTnSaddleSearch.h:72
eonc::ARTnSaddleSearch::mode
AtomMatrix mode
Definition
ARTnSaddleSearch.h:70
eonc::ARTnSaddleSearch::getEigenvector
AtomMatrix getEigenvector() override
Definition
ARTnSaddleSearch.cpp:434
eonc::ARTnSaddleSearch::getForceCalls
int getForceCalls() const override
Definition
ARTnSaddleSearch.h:65
eonc::ARTnSaddleSearch::STATUS_GOOD
static constexpr int STATUS_GOOD
Definition
ARTnSaddleSearch.h:49
eonc::ARTnSaddleSearch::STATUS_BAD_ARTN_ERROR
static constexpr int STATUS_BAD_ARTN_ERROR
Definition
ARTnSaddleSearch.h:52
eonc::ARTnSaddleSearch::getStatus
int getStatus() const override
Definition
ARTnSaddleSearch.h:63
eonc::ARTnSaddleSearch::matter
std::shared_ptr< Matter > matter
Definition
ARTnSaddleSearch.h:68
eonc::ARTnSaddleSearch::STATUS_BAD_MAX_ITERATIONS
static constexpr int STATUS_BAD_MAX_ITERATIONS
Definition
ARTnSaddleSearch.h:50
eonc::ARTnSaddleSearch::getIterationCount
int getIterationCount() const override
Definition
ARTnSaddleSearch.h:64
eonc::MinModeSaddleSearch::STATUS_BAD_MAX_ITERATIONS
@ STATUS_BAD_MAX_ITERATIONS
Definition
MinModeSaddleSearch.h:36
eonc::Parameters
Definition
Parameters.h:28
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:19
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
include
eon
ARTnSaddleSearch.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf