eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
NEBOcinebController.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 "
Parameters.h
"
16
17
namespace
eonc
{
18
class
NudgedElasticBand
;
// forward declaration
19
}
20
21
namespace
eonc::neb
{
22
26
class
OCINEBController
{
27
public
:
28
struct
Config
{
29
bool
use_mmf
;
30
double
trigger_force
;
31
double
trigger_factor
;
32
long
max_steps
;
33
long
ci_stability_count
;
34
double
angle_tol
;
35
double
force_tolerance
;
36
};
37
38
static
Config
fromParams
(
const
Parameters
¶ms);
39
explicit
OCINEBController
(
const
Config
&cfg);
40
41
void
initBaseline
(
double
baseline_force);
42
43
bool
shouldTrigger
(
double
convForce,
bool
ci_active,
long
climbingImage,
44
long
numImages,
int
ciStabilityCounter)
const
;
45
46
struct
MMFResult
{
47
double
newForce
;
48
bool
convergedAfterMMF
;
49
bool
shouldResetOptimizer
;
50
};
51
52
MMFResult
run
(
eonc::NudgedElasticBand
&
neb
,
double
convForce);
53
54
void
resetStability
() {
ciStabilityCounter_
= 0; }
55
void
updateStability
(
long
climbingImage);
56
int
stabilityCount
()
const
{
return
ciStabilityCounter_
; }
57
double
threshold
()
const
{
return
current_threshold_
; }
58
59
private
:
60
Config
cfg_
;
61
double
current_threshold_
{-1.0};
62
double
baseline_force_
{-1.0};
63
long
previousClimbingImage_
{-1};
64
int
ciStabilityCounter_
{0};
65
int
mmf_iterations_used_
{0};
66
67
// Warm-start: cache converged eigenvector for next dimer call
68
bool
has_cached_mode_
{
false
};
69
AtomMatrix
cached_mode_
;
70
71
int
runDimer
(
eonc::NudgedElasticBand
&
neb
,
double
&alignment);
72
void
updateThresholdSuccess
(
double
convForce,
double
newForce);
73
void
updateThresholdBackoff
(
double
alignment);
74
};
75
76
}
// namespace eonc::neb
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
Parameters.h
eonc::NudgedElasticBand
Definition
NudgedElasticBand.h:38
eonc::Parameters
Definition
Parameters.h:28
eonc::neb::OCINEBController::baseline_force_
double baseline_force_
Definition
NEBOcinebController.h:62
eonc::neb::OCINEBController::shouldTrigger
bool shouldTrigger(double convForce, bool ci_active, long climbingImage, long numImages, int ciStabilityCounter) const
Definition
NEBOcinebController.cpp:45
eonc::neb::OCINEBController::fromParams
static Config fromParams(const Parameters ¶ms)
Definition
NEBOcinebController.cpp:23
eonc::neb::OCINEBController::OCINEBController
OCINEBController(const Config &cfg)
Definition
NEBOcinebController.cpp:37
eonc::neb::OCINEBController::resetStability
void resetStability()
Definition
NEBOcinebController.h:54
eonc::neb::OCINEBController::has_cached_mode_
bool has_cached_mode_
Definition
NEBOcinebController.h:68
eonc::neb::OCINEBController::updateThresholdSuccess
void updateThresholdSuccess(double convForce, double newForce)
Definition
NEBOcinebController.cpp:217
eonc::neb::OCINEBController::updateStability
void updateStability(long climbingImage)
Definition
NEBOcinebController.cpp:59
eonc::neb::OCINEBController::mmf_iterations_used_
int mmf_iterations_used_
Definition
NEBOcinebController.h:65
eonc::neb::OCINEBController::previousClimbingImage_
long previousClimbingImage_
Definition
NEBOcinebController.h:63
eonc::neb::OCINEBController::cached_mode_
AtomMatrix cached_mode_
Definition
NEBOcinebController.h:69
eonc::neb::OCINEBController::run
MMFResult run(eonc::NudgedElasticBand &neb, double convForce)
Definition
NEBOcinebController.cpp:69
eonc::neb::OCINEBController::ciStabilityCounter_
int ciStabilityCounter_
Definition
NEBOcinebController.h:64
eonc::neb::OCINEBController::threshold
double threshold() const
Definition
NEBOcinebController.h:57
eonc::neb::OCINEBController::runDimer
int runDimer(eonc::NudgedElasticBand &neb, double &alignment)
Definition
NEBOcinebController.cpp:141
eonc::neb::OCINEBController::initBaseline
void initBaseline(double baseline_force)
Definition
NEBOcinebController.cpp:40
eonc::neb::OCINEBController::current_threshold_
double current_threshold_
Definition
NEBOcinebController.h:61
eonc::neb::OCINEBController::stabilityCount
int stabilityCount() const
Definition
NEBOcinebController.h:56
eonc::neb::OCINEBController::updateThresholdBackoff
void updateThresholdBackoff(double alignment)
Definition
NEBOcinebController.cpp:224
eonc::neb::OCINEBController::cfg_
Config cfg_
Definition
NEBOcinebController.h:60
eonc::neb
Definition
NEBForceProjection.cpp:18
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::neb::OCINEBController::Config
Definition
NEBOcinebController.h:28
eonc::neb::OCINEBController::Config::angle_tol
double angle_tol
Definition
NEBOcinebController.h:34
eonc::neb::OCINEBController::Config::force_tolerance
double force_tolerance
Definition
NEBOcinebController.h:35
eonc::neb::OCINEBController::Config::max_steps
long max_steps
Definition
NEBOcinebController.h:32
eonc::neb::OCINEBController::Config::trigger_force
double trigger_force
Definition
NEBOcinebController.h:30
eonc::neb::OCINEBController::Config::ci_stability_count
long ci_stability_count
Definition
NEBOcinebController.h:33
eonc::neb::OCINEBController::Config::use_mmf
bool use_mmf
Definition
NEBOcinebController.h:29
eonc::neb::OCINEBController::Config::trigger_factor
double trigger_factor
Definition
NEBOcinebController.h:31
eonc::neb::OCINEBController::MMFResult
Definition
NEBOcinebController.h:46
eonc::neb::OCINEBController::MMFResult::shouldResetOptimizer
bool shouldResetOptimizer
Definition
NEBOcinebController.h:49
eonc::neb::OCINEBController::MMFResult::newForce
double newForce
Definition
NEBOcinebController.h:47
eonc::neb::OCINEBController::MMFResult::convergedAfterMMF
bool convergedAfterMMF
Definition
NEBOcinebController.h:48
include
eon
NEBOcinebController.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf