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
21namespace eonc {
22
53
54class Dynamics {
55
56public:
57 static const char ANDERSEN[];
58 static const char NOSE_HOOVER[];
59 static const char LANGEVIN[];
60 static const char NONE[];
61
63
64 [[deprecated("Pass DynamicsConfig directly")]]
65 Dynamics(Matter *matter, const Parameters &parameters)
66 : Dynamics(matter, DynamicsConfig::fromParams(parameters)) {}
67
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
80private:
81 long nAtoms{0}, nFreeCoords{0};
82
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};
91};
92
93} // namespace eonc
94
95using eonc::Dynamics;
Dynamics(Matter *matter, const DynamicsConfig &config)
Definition Dynamics.cpp:24
long nFreeCoords
Definition Dynamics.h:81
void velocityVerlet()
Definition Dynamics.cpp:69
static const char NOSE_HOOVER[]
Definition Dynamics.h:58
void langevinVerlet()
Langevin dynamics (velocity-Verlet with friction and random forces).
Definition Dynamics.cpp:247
double temperature
Definition Dynamics.h:88
double vxi2
Definition Dynamics.h:89
Matter * matter
Definition Dynamics.h:83
void rescaleVelocity()
Definition Dynamics.cpp:175
void oneStep(int stepNumber=-1)
Definition Dynamics.cpp:41
Dynamics(Matter *matter, const DynamicsConfig &config)
Definition Dynamics.cpp:24
eonc::log::Scoped log
Definition Dynamics.h:90
void setTemperature(double temperature)
Definition Dynamics.cpp:37
double vxi1
Definition Dynamics.h:89
static const char NONE[]
Definition Dynamics.h:60
Dynamics(Matter *matter, const Parameters &parameters)
Definition Dynamics.h:65
void andersenCollision()
Definition Dynamics.cpp:139
static const char LANGEVIN[]
Definition Dynamics.h:59
DynamicsConfig m_config
Definition Dynamics.h:84
void noseHooverVerlet()
Nose-Hoover chain thermostat (Martyna-Klein-Tuckerman algorithm).
Definition Dynamics.cpp:184
void setThermalVelocity()
Definition Dynamics.cpp:160
static const char ANDERSEN[]
Definition Dynamics.h:57
struct eonc::Parameters::constants_t constants
struct eonc::Parameters::thermostat_options_t thermostat_options
struct eonc::Parameters::debug_options_t debug_options
struct eonc::Parameters::dynamics_options_t dynamics_options
struct eonc::Parameters::main_options_t main_options
RAII resource manager for the ARTn C library with global synchronization.
Configuration extracted from Parameters for Dynamics.
Definition Dynamics.h:24
double langevin_friction
Definition Dynamics.h:31
static DynamicsConfig fromParams(const Parameters &p)
Definition Dynamics.h:38
std::string thermostat_kind
Definition Dynamics.h:27
RAII helper for class-scoped logging.
Definition EonLogger.h:171