eOn 3.2.0
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 <cstdint>
19
20
#include "
Eigen.h
"
21
#include "
EonLogger.h
"
22
23
namespace
eonc
{
24
26
struct
DynamicsConfig
{
27
double
time_step
{0.0};
28
long
steps
{0};
29
std::string
thermostat_kind
{
"none"
};
30
double
andersen_alpha
{1.0};
31
double
andersen_tcol
{0.0};
32
double
nose_mass
{1.0};
33
double
langevin_friction
{0.0};
34
double
kB
{8.6173324e-5};
35
double
timeUnit
{10.1805055};
36
double
temperature
{300.0};
37
bool
write_movies
{
false
};
38
long
write_movies_interval
{1};
39
long
path_beads
{8};
40
std::string
path_springs
{
"trotter"
};
41
double
path_eco_omega_max
{0.0};
42
std::string
path_gle_file
;
43
double
path_pile_tau
{0.0};
44
double
path_pile_scale
{1.0};
45
std::uint64_t
path_seed
{1};
46
47
static
DynamicsConfig
fromParams
(
const
Parameters
&p) {
48
return
{p.
dynamics_options
().
time_step
,
49
p.
dynamics_options
().
steps
,
50
p.
thermostat_options
().
kind
,
51
p.
thermostat_options
().
andersen_alpha
,
52
p.
thermostat_options
().
andersen_tcol
,
53
p.
thermostat_options
().
nose_mass
,
54
p.
thermostat_options
().
langevin_friction
,
55
p.
constants
().
kB
,
56
p.
constants
().
timeUnit
,
57
p.
main_options
().
temperature
,
58
p.
debug_options
().
write_movies
,
59
p.
debug_options
().
write_movies_interval
,
60
p.
thermostat_options
().
path_beads
,
61
p.
thermostat_options
().
path_springs
,
62
p.
thermostat_options
().
path_eco_omega_max
,
63
p.
thermostat_options
().
path_gle_file
,
64
p.
thermostat_options
().
path_pile_tau
,
65
p.
thermostat_options
().
path_pile_scale
,
66
p.
thermostat_options
().
path_seed
};
67
}
68
};
69
70
class
Dynamics
{
71
72
public
:
73
static
const
char
ANDERSEN
[];
74
static
const
char
NOSE_HOOVER
[];
75
static
const
char
LANGEVIN
[];
76
static
const
char
NONE
[];
77
static
const
char
PILE
[];
78
static
const
char
PIGLET
[];
79
80
Dynamics
(
Matter
*
matter
,
const
DynamicsConfig
&
config
);
81
82
[[deprecated(
"Pass DynamicsConfig directly"
)]]
83
Dynamics
(
Matter
*
matter
,
const
Parameters
¶meters)
84
:
Dynamics
(
matter
,
DynamicsConfig
::fromParams(parameters)) {}
85
86
~Dynamics
();
87
88
void
setTemperature
(
double
temperature
);
89
void
oneStep
(
int
stepNumber = -1);
90
void
velocityVerlet
();
91
void
run
();
92
void
andersenCollision
();
93
void
setThermalVelocity
();
94
void
rescaleVelocity
();
95
void
noseHooverVerlet
();
96
void
langevinVerlet
();
97
98
private
:
101
void
nhcChainHalfStep
(
AtomMatrix
&vel,
double
&kinE);
103
void
runPathIntegral
();
104
105
long
nAtoms
{0},
nFreeCoords
{0};
106
107
Matter
*
matter
;
108
DynamicsConfig
m_config
;
109
110
double
dt
{0.0};
111
double
kB
{0.0};
112
double
temperature
{0.0};
113
double
vxi1
{0.0},
vxi2
{0.0},
xi1
{0.0},
xi2
{0.0};
114
eonc::log::Scoped
log
;
115
};
116
117
}
// namespace eonc
Eigen.h
AtomMatrix
Eigen::Matrix< double, Eigen::Dynamic, 3, eOnStorageOrder > AtomMatrix
Definition
Eigen.h:37
EonLogger.h
HelperFunctions.h
Matter.h
Parameters.h
eonc::Dynamics::kB
double kB
Definition
Dynamics.h:111
eonc::Dynamics::NONE
static const char NONE[]
Definition
Dynamics.h:76
eonc::Dynamics::nFreeCoords
long nFreeCoords
Definition
Dynamics.h:105
eonc::Dynamics::setTemperature
void setTemperature(double temperature)
Definition
Dynamics.cpp:53
eonc::Dynamics::LANGEVIN
static const char LANGEVIN[]
Definition
Dynamics.h:75
eonc::Dynamics::setThermalVelocity
void setThermalVelocity()
Definition
Dynamics.cpp:247
eonc::Dynamics::~Dynamics
~Dynamics()
eonc::Dynamics::langevinVerlet
void langevinVerlet()
Langevin dynamics (velocity-Verlet with friction and random forces).
Definition
Dynamics.cpp:332
eonc::Dynamics::noseHooverVerlet
void noseHooverVerlet()
Nose-Hoover chain thermostat (Martyna-Klein-Tuckerman algorithm).
Definition
Dynamics.cpp:307
eonc::Dynamics::temperature
double temperature
Definition
Dynamics.h:112
eonc::Dynamics::oneStep
void oneStep(int stepNumber=-1)
Definition
Dynamics.cpp:57
eonc::Dynamics::run
void run()
Definition
Dynamics.cpp:161
eonc::Dynamics::rescaleVelocity
void rescaleVelocity()
Definition
Dynamics.cpp:264
eonc::Dynamics::andersenCollision
void andersenCollision()
Definition
Dynamics.cpp:224
eonc::Dynamics::dt
double dt
Definition
Dynamics.h:110
eonc::Dynamics::vxi2
double vxi2
Definition
Dynamics.h:113
eonc::Dynamics::ANDERSEN
static const char ANDERSEN[]
Definition
Dynamics.h:73
eonc::Dynamics::NOSE_HOOVER
static const char NOSE_HOOVER[]
Definition
Dynamics.h:74
eonc::Dynamics::nhcChainHalfStep
void nhcChainHalfStep(AtomMatrix &vel, double &kinE)
One Martyna-Klein-Tuckerman chain half-step.
Definition
Dynamics.cpp:275
eonc::Dynamics::matter
Matter * matter
Definition
Dynamics.h:107
eonc::Dynamics::xi1
double xi1
Definition
Dynamics.h:113
eonc::Dynamics::Dynamics
Dynamics(Matter *matter, const DynamicsConfig &config)
Definition
Dynamics.cpp:29
eonc::Dynamics::log
eonc::log::Scoped log
Definition
Dynamics.h:114
eonc::Dynamics::PILE
static const char PILE[]
Definition
Dynamics.h:77
eonc::Dynamics::xi2
double xi2
Definition
Dynamics.h:113
eonc::Dynamics::vxi1
double vxi1
Definition
Dynamics.h:113
eonc::Dynamics::nAtoms
long nAtoms
Definition
Dynamics.h:105
eonc::Dynamics::PIGLET
static const char PIGLET[]
Definition
Dynamics.h:78
eonc::Dynamics::Dynamics
Dynamics(Matter *matter, const Parameters ¶meters)
Definition
Dynamics.h:83
eonc::Dynamics::runPathIntegral
void runPathIntegral()
Ring-polymer trajectory. Beads do not enter velocityVerlet.
Definition
Dynamics.cpp:104
eonc::Dynamics::m_config
DynamicsConfig m_config
Definition
Dynamics.h:108
eonc::Dynamics::velocityVerlet
void velocityVerlet()
Definition
Dynamics.cpp:91
eonc::Matter
Definition
Matter.h:90
eonc::Parameters
Definition
Parameters.h:35
eonc::Parameters::constants
const constants_t & constants() const
Definition
ParametersAccess.cpp:71
eonc::Parameters::dynamics_options
const dynamics_options_t & dynamics_options() const
Definition
ParametersAccess.cpp:184
eonc::Parameters::main_options
const main_options_t & main_options() const
Definition
ParametersAccess.cpp:75
eonc::Parameters::thermostat_options
const thermostat_options_t & thermostat_options() const
Definition
ParametersAccess.cpp:197
eonc::Parameters::debug_options
const debug_options_t & debug_options() const
Definition
ParametersAccess.cpp:242
eonc::config
Definition
ParametersINI.cpp:42
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::DynamicsConfig
Configuration extracted from Parameters for Dynamics.
Definition
Dynamics.h:26
eonc::DynamicsConfig::andersen_alpha
double andersen_alpha
Definition
Dynamics.h:30
eonc::DynamicsConfig::langevin_friction
double langevin_friction
Definition
Dynamics.h:33
eonc::DynamicsConfig::path_pile_tau
double path_pile_tau
Definition
Dynamics.h:43
eonc::DynamicsConfig::fromParams
static DynamicsConfig fromParams(const Parameters &p)
Definition
Dynamics.h:47
eonc::DynamicsConfig::path_springs
std::string path_springs
Definition
Dynamics.h:40
eonc::DynamicsConfig::nose_mass
double nose_mass
Definition
Dynamics.h:32
eonc::DynamicsConfig::steps
long steps
Definition
Dynamics.h:28
eonc::DynamicsConfig::temperature
double temperature
Definition
Dynamics.h:36
eonc::DynamicsConfig::time_step
double time_step
Definition
Dynamics.h:27
eonc::DynamicsConfig::path_seed
std::uint64_t path_seed
Definition
Dynamics.h:45
eonc::DynamicsConfig::andersen_tcol
double andersen_tcol
Definition
Dynamics.h:31
eonc::DynamicsConfig::thermostat_kind
std::string thermostat_kind
Definition
Dynamics.h:29
eonc::DynamicsConfig::path_pile_scale
double path_pile_scale
Definition
Dynamics.h:44
eonc::DynamicsConfig::path_gle_file
std::string path_gle_file
Definition
Dynamics.h:42
eonc::DynamicsConfig::path_beads
long path_beads
Definition
Dynamics.h:39
eonc::DynamicsConfig::kB
double kB
Definition
Dynamics.h:34
eonc::DynamicsConfig::path_eco_omega_max
double path_eco_omega_max
Definition
Dynamics.h:41
eonc::DynamicsConfig::write_movies_interval
long write_movies_interval
Definition
Dynamics.h:38
eonc::DynamicsConfig::write_movies
bool write_movies
Definition
Dynamics.h:37
eonc::DynamicsConfig::timeUnit
double timeUnit
Definition
Dynamics.h:35
eonc::constants_t::timeUnit
double timeUnit
Definition
ParametersOptions.h:26
eonc::constants_t::kB
double kB
Definition
ParametersOptions.h:25
eonc::debug_options_t::write_movies_interval
long write_movies_interval
Definition
ParametersOptions.h:797
eonc::debug_options_t::write_movies
bool write_movies
Definition
ParametersOptions.h:796
eonc::dynamics_options_t::time_step
double time_step
Definition
ParametersOptions.h:628
eonc::dynamics_options_t::steps
long steps
Definition
ParametersOptions.h:631
eonc::log::Scoped
RAII helper for class-scoped logging.
Definition
EonLogger.h:171
eonc::main_options_t::temperature
double temperature
Definition
ParametersOptions.h:33
eonc::thermostat_options_t::path_pile_scale
double path_pile_scale
Definition
ParametersOptions.h:672
eonc::thermostat_options_t::path_pile_tau
double path_pile_tau
Definition
ParametersOptions.h:671
eonc::thermostat_options_t::langevin_friction
double langevin_friction
Definition
ParametersOptions.h:665
eonc::thermostat_options_t::path_springs
std::string path_springs
Definition
ParametersOptions.h:667
eonc::thermostat_options_t::path_gle_file
std::string path_gle_file
Definition
ParametersOptions.h:669
eonc::thermostat_options_t::path_beads
long path_beads
Definition
ParametersOptions.h:666
eonc::thermostat_options_t::andersen_alpha
double andersen_alpha
Definition
ParametersOptions.h:660
eonc::thermostat_options_t::kind
std::string kind
Definition
ParametersOptions.h:659
eonc::thermostat_options_t::andersen_tcol
double andersen_tcol
Definition
ParametersOptions.h:662
eonc::thermostat_options_t::path_seed
std::uint64_t path_seed
Definition
ParametersOptions.h:673
eonc::thermostat_options_t::path_eco_omega_max
double path_eco_omega_max
Definition
ParametersOptions.h:668
eonc::thermostat_options_t::nose_mass
double nose_mass
Definition
ParametersOptions.h:663
include
eon
Dynamics.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf