eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
XtsciBand.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
#include <cstdint>
18
#include <vector>
19
20
struct
RgsaddleBand;
21
22
namespace
eonc
{
23
24
class
NudgedElasticBand
;
25
28
class
XtsciBand
{
29
public
:
30
XtsciBand
(
NudgedElasticBand
&
neb
,
const
Parameters
¶ms);
31
~XtsciBand
();
32
33
XtsciBand
(
const
XtsciBand
&) =
delete
;
34
XtsciBand
&
operator=
(
const
XtsciBand
&) =
delete
;
35
37
void
syncFromPath
();
39
void
reset
();
41
void
step
(
double
maxMove);
42
43
private
:
44
friend
int
xtsciBandSurface
(
void
*user,
void
*request);
45
friend
int
xtsciSolidBandSurface
(
void
*user,
void
*request);
46
// Solid-state step (rgsaddle ABI minor 17): positions and cells move.
47
void
stepSolid
();
48
// True when the session's band is the host path, bit for bit.
49
bool
sessionMatchesPath
()
const
;
50
// work(0) .. work(n - 1), on the image pool with [Main] parallel.
51
template
<
typename
Work>
void
forImages
(int64_t n, Work &&work);
52
53
NudgedElasticBand
*
m_neb
;
54
RgsaddleBand *
m_band
{
nullptr
};
55
std::vector<double>
m_springKs
;
56
std::vector<double>
m_cell
;
57
std::vector<AtomMatrix>
m_fixed
;
58
double
m_maxMove
{0.2};
59
// The band carries one cell per image (NEB solid_state).
60
bool
m_solid
{
false
};
61
// [Main] parallel: the surface evaluates its images on the image pool.
62
bool
m_threads
{
false
};
63
};
64
65
}
// namespace eonc
Eigen.h
Parameters.h
eonc::NudgedElasticBand
Definition
NudgedElasticBand.h:38
eonc::Parameters
Definition
Parameters.h:35
eonc::XtsciBand::sessionMatchesPath
bool sessionMatchesPath() const
Definition
XtsciBand.cpp:574
eonc::XtsciBand::operator=
XtsciBand & operator=(const XtsciBand &)=delete
eonc::XtsciBand::m_neb
NudgedElasticBand * m_neb
Definition
XtsciBand.h:53
eonc::XtsciBand::stepSolid
void stepSolid()
Definition
XtsciBand.cpp:533
eonc::XtsciBand::xtsciSolidBandSurface
friend int xtsciSolidBandSurface(void *user, void *request)
Definition
XtsciBand.cpp:234
eonc::XtsciBand::m_threads
bool m_threads
Definition
XtsciBand.h:62
eonc::XtsciBand::xtsciBandSurface
friend int xtsciBandSurface(void *user, void *request)
Definition
XtsciBand.cpp:135
eonc::XtsciBand::reset
void reset()
Drop stepper history after a host reparameterization.
Definition
XtsciBand.cpp:426
eonc::XtsciBand::m_band
RgsaddleBand * m_band
Definition
XtsciBand.h:54
eonc::XtsciBand::forImages
void forImages(int64_t n, Work &&work)
Definition
XtsciBand.cpp:403
eonc::XtsciBand::~XtsciBand
~XtsciBand()
Definition
XtsciBand.cpp:401
eonc::XtsciBand::m_cell
std::vector< double > m_cell
Definition
XtsciBand.h:56
eonc::XtsciBand::m_solid
bool m_solid
Definition
XtsciBand.h:60
eonc::XtsciBand::XtsciBand
XtsciBand(NudgedElasticBand &neb, const Parameters ¶ms)
Definition
XtsciBand.cpp:303
eonc::XtsciBand::m_fixed
std::vector< AtomMatrix > m_fixed
Definition
XtsciBand.h:57
eonc::XtsciBand::m_maxMove
double m_maxMove
Definition
XtsciBand.h:58
eonc::XtsciBand::XtsciBand
XtsciBand(const XtsciBand &)=delete
eonc::XtsciBand::step
void step(double maxMove)
Assemble the band force and take one stepper step.
Definition
XtsciBand.cpp:436
eonc::XtsciBand::syncFromPath
void syncFromPath()
Copy the current path into the session.
Definition
XtsciBand.cpp:414
eonc::XtsciBand::m_springKs
std::vector< double > m_springKs
Definition
XtsciBand.h:55
eonc::neb
Definition
NEBForceProjection.cpp:18
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
include
eon
XtsciBand.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf