eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
Dynamics.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 "
HelperFunctions.h
"
15
#include "
Matter.h
"
16
#include "
Parameters.h
"
17
18
#include "
Eigen.h
"
19
#include "
EonLogger.h
"
20
21
namespace
eonc
{
22
24
struct
DynamicsConfig
{
25
double
time_step
{0.0};
26
long
steps
{0};
27
std::string
thermostat_kind
{
"none"
};
28
double
andersen_alpha
{1.0};
29
double
andersen_tcol
{0.0};
30
double
nose_mass
{1.0};
31
double
langevin_friction
{0.0};
32
double
kB
{8.6173324e-5};
33
double
timeUnit
{10.1805055};
34
double
temperature
{300.0};
35
bool
write_movies
{
false
};
36
long
write_movies_interval
{1};
37
38
static
DynamicsConfig
fromParams
(
const
Parameters
&p) {
39
return
{p.
dynamics_options
.
time_step
,
40
p.
dynamics_options
.
steps
,
41
p.
thermostat_options
.
kind
,
42
p.
thermostat_options
.
andersen_alpha
,
43
p.
thermostat_options
.
andersen_tcol
,
44
p.
thermostat_options
.
nose_mass
,
45
p.
thermostat_options
.
langevin_friction
,
46
p.
constants
.
kB
,
47
p.
constants
.
timeUnit
,
48
p.
main_options
.
temperature
,
49
p.
debug_options
.
write_movies
,
50
p.
debug_options
.
write_movies_interval
};
51
}
52
};
53
54
class
Dynamics
{
55
56
public
:
57
static
const
char
ANDERSEN
[];
58
static
const
char
NOSE_HOOVER
[];
59
static
const
char
LANGEVIN
[];
60
static
const
char
NONE
[];
61
62
Dynamics
(
Matter
*
matter
,
const
DynamicsConfig
&
config
);
63
64
[[deprecated(
"Pass DynamicsConfig directly"
)]]
65
Dynamics
(
Matter
*
matter
,
const
Parameters
¶meters)
66
:
Dynamics
(
matter
,
DynamicsConfig
::fromParams(parameters)) {}
67
68
~Dynamics
();
69
70
void
setTemperature
(
double
temperature
);
71
void
oneStep
(
int
stepNumber = -1);
72
void
velocityVerlet
();
73
void
run
();
74
void
andersenCollision
();
75
void
setThermalVelocity
();
76
void
rescaleVelocity
();
77
void
noseHooverVerlet
();
78
void
langevinVerlet
();
79
80
private
:
81
long
nAtoms
{0},
nFreeCoords
{0};
82
83
Matter
*
matter
;
84
DynamicsConfig
m_config
;
85
86
double
dt
{0.0};
87
double
kB
{0.0};
88
double
temperature
{0.0};
89
double
vxi1
{0.0},
vxi2
{0.0},
xi1
{0.0},
xi2
{0.0};
90
eonc::log::Scoped
log
;
91
};
92
93
}
// namespace eonc
94
95
using
eonc::Dynamics
;
96
using
eonc::DynamicsConfig
;
Eigen.h
EonLogger.h
HelperFunctions.h
Matter.h
Parameters.h
Dynamics::Dynamics
Dynamics(Matter *matter, const DynamicsConfig &config)
Definition
Dynamics.cpp:24
eonc::Dynamics
Definition
Dynamics.h:54
eonc::Dynamics::kB
double kB
Definition
Dynamics.h:87
eonc::Dynamics::nFreeCoords
long nFreeCoords
Definition
Dynamics.h:81
eonc::Dynamics::velocityVerlet
void velocityVerlet()
Definition
Dynamics.cpp:69
eonc::Dynamics::NOSE_HOOVER
static const char NOSE_HOOVER[]
Definition
Dynamics.h:58
eonc::Dynamics::langevinVerlet
void langevinVerlet()
Langevin dynamics (velocity-Verlet with friction and random forces).
Definition
Dynamics.cpp:247
eonc::Dynamics::temperature
double temperature
Definition
Dynamics.h:88
eonc::Dynamics::run
void run()
Definition
Dynamics.cpp:82
eonc::Dynamics::dt
double dt
Definition
Dynamics.h:86
eonc::Dynamics::vxi2
double vxi2
Definition
Dynamics.h:89
eonc::Dynamics::matter
Matter * matter
Definition
Dynamics.h:83
eonc::Dynamics::xi1
double xi1
Definition
Dynamics.h:89
eonc::Dynamics::rescaleVelocity
void rescaleVelocity()
Definition
Dynamics.cpp:175
eonc::Dynamics::oneStep
void oneStep(int stepNumber=-1)
Definition
Dynamics.cpp:41
eonc::Dynamics::Dynamics
Dynamics(Matter *matter, const DynamicsConfig &config)
Definition
Dynamics.cpp:24
eonc::Dynamics::log
eonc::log::Scoped log
Definition
Dynamics.h:90
eonc::Dynamics::setTemperature
void setTemperature(double temperature)
Definition
Dynamics.cpp:37
eonc::Dynamics::xi2
double xi2
Definition
Dynamics.h:89
eonc::Dynamics::vxi1
double vxi1
Definition
Dynamics.h:89
eonc::Dynamics::nAtoms
long nAtoms
Definition
Dynamics.h:81
eonc::Dynamics::NONE
static const char NONE[]
Definition
Dynamics.h:60
eonc::Dynamics::~Dynamics
~Dynamics()
eonc::Dynamics::Dynamics
Dynamics(Matter *matter, const Parameters ¶meters)
Definition
Dynamics.h:65
eonc::Dynamics::andersenCollision
void andersenCollision()
Definition
Dynamics.cpp:139
eonc::Dynamics::LANGEVIN
static const char LANGEVIN[]
Definition
Dynamics.h:59
eonc::Dynamics::m_config
DynamicsConfig m_config
Definition
Dynamics.h:84
eonc::Dynamics::noseHooverVerlet
void noseHooverVerlet()
Nose-Hoover chain thermostat (Martyna-Klein-Tuckerman algorithm).
Definition
Dynamics.cpp:184
eonc::Dynamics::setThermalVelocity
void setThermalVelocity()
Definition
Dynamics.cpp:160
eonc::Dynamics::ANDERSEN
static const char ANDERSEN[]
Definition
Dynamics.h:57
eonc::Matter
Definition
Matter.h:92
eonc::Parameters
Definition
Parameters.h:28
eonc::Parameters::constants
struct eonc::Parameters::constants_t constants
eonc::Parameters::thermostat_options
struct eonc::Parameters::thermostat_options_t thermostat_options
eonc::Parameters::debug_options
struct eonc::Parameters::debug_options_t debug_options
eonc::Parameters::dynamics_options
struct eonc::Parameters::dynamics_options_t dynamics_options
eonc::Parameters::main_options
struct eonc::Parameters::main_options_t main_options
eonc::config
Definition
ParametersINI.cpp:40
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:19
eonc::DynamicsConfig
Configuration extracted from Parameters for Dynamics.
Definition
Dynamics.h:24
eonc::DynamicsConfig::andersen_alpha
double andersen_alpha
Definition
Dynamics.h:28
eonc::DynamicsConfig::langevin_friction
double langevin_friction
Definition
Dynamics.h:31
eonc::DynamicsConfig::fromParams
static DynamicsConfig fromParams(const Parameters &p)
Definition
Dynamics.h:38
eonc::DynamicsConfig::nose_mass
double nose_mass
Definition
Dynamics.h:30
eonc::DynamicsConfig::steps
long steps
Definition
Dynamics.h:26
eonc::DynamicsConfig::temperature
double temperature
Definition
Dynamics.h:34
eonc::DynamicsConfig::time_step
double time_step
Definition
Dynamics.h:25
eonc::DynamicsConfig::andersen_tcol
double andersen_tcol
Definition
Dynamics.h:29
eonc::DynamicsConfig::thermostat_kind
std::string thermostat_kind
Definition
Dynamics.h:27
eonc::DynamicsConfig::kB
double kB
Definition
Dynamics.h:32
eonc::DynamicsConfig::write_movies_interval
long write_movies_interval
Definition
Dynamics.h:36
eonc::DynamicsConfig::write_movies
bool write_movies
Definition
Dynamics.h:35
eonc::DynamicsConfig::timeUnit
double timeUnit
Definition
Dynamics.h:33
eonc::Parameters::constants_t::timeUnit
double timeUnit
Definition
Parameters.h:42
eonc::Parameters::constants_t::kB
double kB
Definition
Parameters.h:41
eonc::Parameters::debug_options_t::write_movies_interval
long write_movies_interval
Definition
Parameters.h:703
eonc::Parameters::debug_options_t::write_movies
bool write_movies
Definition
Parameters.h:702
eonc::Parameters::dynamics_options_t::steps
long steps
Definition
Parameters.h:545
eonc::Parameters::dynamics_options_t::time_step
double time_step
Definition
Parameters.h:542
eonc::Parameters::main_options_t::temperature
double temperature
Definition
Parameters.h:49
eonc::Parameters::thermostat_options_t::andersen_tcol
double andersen_tcol
Definition
Parameters.h:576
eonc::Parameters::thermostat_options_t::kind
std::string kind
Definition
Parameters.h:573
eonc::Parameters::thermostat_options_t::andersen_alpha
double andersen_alpha
Definition
Parameters.h:574
eonc::Parameters::thermostat_options_t::langevin_friction
double langevin_friction
Definition
Parameters.h:579
eonc::Parameters::thermostat_options_t::nose_mass
double nose_mass
Definition
Parameters.h:577
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
include
eon
Dynamics.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf