eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
BasinHoppingJob.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 "
EonLogger.h
"
14
#include "
Job.h
"
15
#include "
Matter.h
"
16
#include "
Parameters.h
"
17
18
namespace
eonc
{
19
20
class
BasinHoppingDisplaceAccess;
21
22
class
BasinHoppingJob
:
public
Job
{
23
public
:
24
BasinHoppingJob
(std::unique_ptr<Parameters> parameters,
Runtime
&rt)
25
:
Job
(std::move(parameters), rt),
26
current
{std::make_shared<
Matter
>(
pot
,
params
)},
27
trial
{std::make_shared<
Matter
>(
pot
,
params
)},
fcalls
{0} {}
28
~BasinHoppingJob
(
void
) =
default
;
29
30
std::vector<std::string>
run
(
void
)
override
;
34
static
double
metropolisProbability
(
double
de,
double
kB,
double
temperature);
35
36
private
:
37
friend
class
BasinHoppingDisplaceAccess
;
38
VectorXd
calculateDistanceFromCenter
(
Matter
*matter);
39
AtomMatrix
displaceRandom
(
double
maxDisplacement);
40
void
randomSwap
(
Matter
*matter);
41
std::shared_ptr<Matter>
current
;
42
std::shared_ptr<Matter>
trial
;
// initial configuration
43
std::vector<long>
getElements
(
Matter
*matter);
44
friend
struct
BasinHoppingElementsTest
;
45
std::vector<std::string>
returnFiles
;
46
int
jump_count
{0};
// count of jump moves
47
int
disp_count
{0};
// count of displacement moves
48
int
swap_count
{0};
// count of swap moves
49
int
fcalls
{0};
50
51
std::vector<std::shared_ptr<Matter>>
uniqueStructures
;
52
std::vector<double>
uniqueEnergies
;
53
eonc::log::Scoped
log
;
54
};
55
56
}
// namespace eonc
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
Job.h
The job class is used to serve as an abstract class for all jobs, as well as to call a job at runtime...
Matter.h
Parameters.h
eonc::BasinHoppingJob::BasinHoppingElementsTest
friend struct BasinHoppingElementsTest
Definition
BasinHoppingJob.h:44
eonc::BasinHoppingJob::returnFiles
std::vector< std::string > returnFiles
Definition
BasinHoppingJob.h:45
eonc::BasinHoppingJob::uniqueStructures
std::vector< std::shared_ptr< Matter > > uniqueStructures
Definition
BasinHoppingJob.h:51
eonc::BasinHoppingJob::jump_count
int jump_count
Definition
BasinHoppingJob.h:46
eonc::BasinHoppingJob::calculateDistanceFromCenter
VectorXd calculateDistanceFromCenter(Matter *matter)
Definition
BasinHoppingJob.cpp:475
eonc::BasinHoppingJob::current
std::shared_ptr< Matter > current
Definition
BasinHoppingJob.h:41
eonc::BasinHoppingJob::getElements
std::vector< long > getElements(Matter *matter)
Definition
BasinHoppingJob.cpp:451
eonc::BasinHoppingJob::randomSwap
void randomSwap(Matter *matter)
Definition
BasinHoppingJob.cpp:401
eonc::BasinHoppingJob::BasinHoppingDisplaceAccess
friend class BasinHoppingDisplaceAccess
Definition
BasinHoppingJob.h:37
eonc::BasinHoppingJob::displaceRandom
AtomMatrix displaceRandom(double maxDisplacement)
Definition
BasinHoppingJob.cpp:333
eonc::BasinHoppingJob::uniqueEnergies
std::vector< double > uniqueEnergies
Definition
BasinHoppingJob.h:52
eonc::BasinHoppingJob::disp_count
int disp_count
Definition
BasinHoppingJob.h:47
eonc::BasinHoppingJob::log
eonc::log::Scoped log
Definition
BasinHoppingJob.h:53
eonc::BasinHoppingJob::metropolisProbability
static double metropolisProbability(double de, double kB, double temperature)
Metropolis weight for energy change de.
Definition
BasinHoppingJob.cpp:322
eonc::BasinHoppingJob::trial
std::shared_ptr< Matter > trial
Definition
BasinHoppingJob.h:42
eonc::BasinHoppingJob::BasinHoppingJob
BasinHoppingJob(std::unique_ptr< Parameters > parameters, Runtime &rt)
Definition
BasinHoppingJob.h:24
eonc::BasinHoppingJob::fcalls
int fcalls
Definition
BasinHoppingJob.h:49
eonc::BasinHoppingJob::~BasinHoppingJob
~BasinHoppingJob(void)=default
eonc::BasinHoppingJob::swap_count
int swap_count
Definition
BasinHoppingJob.h:48
eonc::BasinHoppingJob::run
std::vector< std::string > run(void) override
Virtual run; used solely for dynamic dispatch.
Definition
BasinHoppingJob.cpp:32
eonc::Job::Job
Job(std::unique_ptr< Parameters > parameters, Runtime &rt)
Borrow: caller keeps Runtime alive (CLI stack / Python Session).
Definition
Job.h:76
eonc::Job::pot
std::shared_ptr< Potential > pot
Definition
Job.h:63
eonc::Job::params
Parameters params
Definition
Job.h:58
eonc::Matter
Definition
Matter.h:90
eonc::Runtime
Move-only composition root for process resources (dlopen loaders and the potential registry).
Definition
Runtime.h:27
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
include
eon
BasinHoppingJob.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf