eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
Dimer.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 "
LowestEigenmode.h
"
14
#include "
Matter.h
"
15
#include "
Parameters.h
"
16
#include "
Potential.h
"
17
18
namespace
eonc
{
19
22
class
Dimer
:
public
LowestEigenmode
{
23
public
:
24
Dimer
(std::shared_ptr<Matter> matter,
const
Parameters
&
params
,
25
std::shared_ptr<Potential>
pot
);
26
~Dimer
() =
default
;
27
28
void
compute
(std::shared_ptr<Matter> matter,
29
AtomMatrix
initialDirection)
override
;
30
[[nodiscard]]
double
getEigenvalue
()
override
;
31
[[nodiscard]]
AtomMatrix
getEigenvector
()
override
;
32
33
private
:
34
eonc::log::FileScoped
log
{
"dimer"
,
"dimer.log"
};
35
std::shared_ptr<Matter>
matterCenter
;
36
std::shared_ptr<Matter>
matterDimer
;
37
AtomMatrix
direction
;
38
AtomMatrix
rotationalPlane
;
39
double
eigenvalue
{0.0};
40
long
nAtoms
{0};
41
43
void
determineRotationalPlane
(
const
AtomMatrix
&rotationalForce,
44
AtomMatrix
&rotationalForceOld,
45
const
AtomMatrix
&rotationalPlaneOld,
46
double
&lengthRotationalForceOld);
47
49
void
rotate
(
double
rotationAngle);
50
52
double
calcRotationalForceReturnCurvature
(
AtomMatrix
&rotationalForce);
53
};
54
55
}
// namespace eonc
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
LowestEigenmode.h
Matter.h
Parameters.h
Potential.h
eonc::Dimer::~Dimer
~Dimer()=default
eonc::Dimer::direction
AtomMatrix direction
Definition
Dimer.h:37
eonc::Dimer::rotationalPlane
AtomMatrix rotationalPlane
Definition
Dimer.h:38
eonc::Dimer::matterDimer
std::shared_ptr< Matter > matterDimer
Definition
Dimer.h:36
eonc::Dimer::nAtoms
long nAtoms
Definition
Dimer.h:40
eonc::Dimer::getEigenvalue
double getEigenvalue() override
Definition
Dimer.cpp:181
eonc::Dimer::getEigenvector
AtomMatrix getEigenvector() override
Definition
Dimer.cpp:183
eonc::Dimer::matterCenter
std::shared_ptr< Matter > matterCenter
Definition
Dimer.h:35
eonc::Dimer::determineRotationalPlane
void determineRotationalPlane(const AtomMatrix &rotationalForce, AtomMatrix &rotationalForceOld, const AtomMatrix &rotationalPlaneOld, double &lengthRotationalForceOld)
Determine rotational plane via conjugate gradient.
Definition
Dimer.cpp:270
eonc::Dimer::eigenvalue
double eigenvalue
Definition
Dimer.h:39
eonc::Dimer::calcRotationalForceReturnCurvature
double calcRotationalForceReturnCurvature(AtomMatrix &rotationalForce)
Compute rotational force and return curvature along the dimer.
Definition
Dimer.cpp:185
eonc::Dimer::rotate
void rotate(double rotationAngle)
Rotate the dimer by the given angle (radians).
Definition
Dimer.cpp:297
eonc::Dimer::log
eonc::log::FileScoped log
Definition
Dimer.h:34
eonc::Dimer::compute
void compute(std::shared_ptr< Matter > matter, AtomMatrix initialDirection) override
Definition
Dimer.cpp:65
eonc::Dimer::Dimer
Dimer(std::shared_ptr< Matter > matter, const Parameters ¶ms, std::shared_ptr< Potential > pot)
Definition
Dimer.cpp:44
eonc::LowestEigenmode::params
const Parameters & params
Definition
LowestEigenmode.h:26
eonc::LowestEigenmode::pot
std::shared_ptr< Potential > pot
Definition
LowestEigenmode.h:25
eonc::LowestEigenmode::LowestEigenmode
LowestEigenmode(std::shared_ptr< Potential > potPassed, const Parameters ¶meters)
Definition
LowestEigenmode.h:40
eonc::Parameters
Definition
Parameters.h:35
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::log::FileScoped
RAII helper for file-based logging in a class.
Definition
EonLogger.h:207
include
eon
Dimer.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf