eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
ConjugateGradients.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 "
HelperFunctions.h
"
16
#include "
Matter.h
"
17
#include "
Optimizer.h
"
18
#include "
Parameters.h
"
19
20
namespace
eonc
{
21
33
37
38
class
ConjugateGradients
:
public
Optimizer
{
39
public
:
41
46
ConjugateGradients
(std::shared_ptr<ObjectiveFunction> a_objf,
47
const
Parameters
&a_params)
48
:
Optimizer
(a_objf,
OptType
::
CG
, a_params),
49
m_directionOld
{(a_objf->getPositions()).setZero()},
50
m_forceOld
{(a_objf->getPositions()).setZero()},
// use setZero instead
51
m_cg_i
{0} {}
52
53
~ConjugateGradients
() =
default
;
54
56
60
int
step
(
double
a_maxMove)
override
;
62
66
int
run
(
size_t
a_maxIterations,
double
a_maxMove)
override
;
68
Eigen::VectorXd
getStep
();
69
70
private
:
72
Eigen::VectorXd
m_direction
;
74
Eigen::VectorXd
m_directionOld
;
76
Eigen::VectorXd
m_directionNorm
;
78
Eigen::VectorXd
m_force
;
80
Eigen::VectorXd
m_forceOld
;
81
eonc::log::FileScoped
m_log
{
"cg"
,
"_cg.log"
};
82
84
size_t
m_cg_i
;
85
87
90
int
single_step
(
double
a_maxMove);
92
96
int
line_search
(
double
a_maxMove);
97
};
98
99
}
// namespace eonc
100
101
using
eonc::ConjugateGradients
;
Eigen.h
EonLogger.h
HelperFunctions.h
Matter.h
Optimizer.h
The optimizer class is used to serve as an abstract class for all optimizers, as well as to call an o...
Parameters.h
ConjugateGradients::ConjugateGradients
ConjugateGradients(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Conjugate Gradients optimizer constructor.
Definition
ConjugateGradients.h:46
eonc::ConjugateGradients
Decleration of the Conjugate Gradients optimizer.
Definition
ConjugateGradients.h:38
eonc::ConjugateGradients::line_search
int line_search(double a_maxMove)
Steps the conjugate gradient.
Definition
ConjugateGradients.cpp:57
eonc::ConjugateGradients::m_force
Eigen::VectorXd m_force
Current force vector.
Definition
ConjugateGradients.h:78
eonc::ConjugateGradients::m_directionNorm
Eigen::VectorXd m_directionNorm
Normalised version of the current direction vector.
Definition
ConjugateGradients.h:76
eonc::ConjugateGradients::m_directionOld
Eigen::VectorXd m_directionOld
Algorithms previous step direction.
Definition
ConjugateGradients.h:74
eonc::ConjugateGradients::~ConjugateGradients
~ConjugateGradients()=default
Conjugant Gradient deconstructor.
eonc::ConjugateGradients::m_cg_i
size_t m_cg_i
Counts the number of discrete steps until algorithm convergence.
Definition
ConjugateGradients.h:84
eonc::ConjugateGradients::ConjugateGradients
ConjugateGradients(std::shared_ptr< ObjectiveFunction > a_objf, const Parameters &a_params)
Conjugate Gradients optimizer constructor.
Definition
ConjugateGradients.h:46
eonc::ConjugateGradients::single_step
int single_step(double a_maxMove)
Steps the conjugate gradient.
Definition
ConjugateGradients.cpp:114
eonc::ConjugateGradients::run
int run(size_t a_maxIterations, double a_maxMove) override
Runs the conjugate gradient.
Definition
ConjugateGradients.cpp:192
eonc::ConjugateGradients::getStep
Eigen::VectorXd getStep()
Gets the direction of the next step.
Definition
ConjugateGradients.cpp:17
eonc::ConjugateGradients::m_direction
Eigen::VectorXd m_direction
Current step direction of the conjugate gradient.
Definition
ConjugateGradients.h:72
eonc::ConjugateGradients::step
int step(double a_maxMove) override
Calls the next step in the algorithm.
Definition
ConjugateGradients.cpp:45
eonc::ConjugateGradients::m_forceOld
Eigen::VectorXd m_forceOld
Previous force vector.
Definition
ConjugateGradients.h:80
eonc::ConjugateGradients::m_log
eonc::log::FileScoped m_log
Definition
ConjugateGradients.h:81
eonc::Optimizer::Optimizer
Optimizer(std::shared_ptr< ObjectiveFunction > a_objf, const OptimizerConfig &a_config)
Definition
Optimizer.h:71
eonc::Parameters
Definition
Parameters.h:28
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::OptType
OptType
Definition
BaseStructures.h:98
eonc::OptType::CG
@ CG
Definition
BaseStructures.h:103
eonc::log::FileScoped
RAII helper for file-based logging in a class.
Definition
EonLogger.h:208
include
eon
ConjugateGradients.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf