OpenMD
3.2
Molecular Dynamics in the Open
Toggle main menu visibility
Loading...
Searching...
No Matches
Register.cpp
1
/*
2
* Copyright (c) 2004-present, The University of Notre Dame. All rights
3
* reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
*
11
* 2. Redistributions in binary form must reproduce the above copyright notice,
12
* this list of conditions and the following disclaimer in the documentation
13
* and/or other materials provided with the distribution.
14
*
15
* 3. Neither the name of the copyright holder nor the names of its
16
* contributors may be used to endorse or promote products derived from
17
* this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
* POSSIBILITY OF SUCH DAMAGE.
30
*
31
* SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your
32
* research, please cite the following paper when you publish your work:
33
*
34
* [1] Drisko et al., J. Open Source Softw. 9, 7004 (2024).
35
*
36
* Good starting points for code and simulation methodology are:
37
*
38
* [2] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).
39
* [3] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).
40
* [4] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).
41
* [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
42
* [6] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).
43
* [7] Lamichhane, Gezelter & Newman, J. Chem. Phys. 141, 134109 (2014).
44
* [8] Bhattarai, Newman & Gezelter, Phys. Rev. B 99, 094106 (2019).
45
* [9] Drisko & Gezelter, J. Chem. Theory Comput. 20, 4986-4997 (2024).
46
*/
47
48
#include "brains/Register.hpp"
49
50
#include "integrators/Integrator.hpp"
51
#include "integrators/IntegratorCreator.hpp"
52
#include "
integrators/IntegratorFactory.hpp
"
53
#include "integrators/LangevinDynamics.hpp"
54
#include "integrators/LangevinPiston.hpp"
55
#include "
integrators/NPA.hpp
"
56
#include "
integrators/NPAT.hpp
"
57
#include "
integrators/NPTf.hpp
"
58
#include "
integrators/NPTi.hpp
"
59
#include "integrators/NPTsz.hpp"
60
#include "
integrators/NPTxyz.hpp
"
61
#include "
integrators/NPrT.hpp
"
62
#include "
integrators/NVE.hpp
"
63
#include "
integrators/NVT.hpp
"
64
#include "
integrators/NgammaT.hpp
"
65
#include "lattice/BCCLattice.hpp"
66
#include "lattice/FCCLattice.hpp"
67
#include "lattice/LatticeCreator.hpp"
68
#include "
lattice/LatticeFactory.hpp
"
69
#include "lattice/SCLattice.hpp"
70
#include "
optimization/BFGS.hpp
"
71
#include "
optimization/ConjugateGradient.hpp
"
72
#include "
optimization/Method.hpp
"
73
#include "optimization/OptimizationCreator.hpp"
74
#include "optimization/OptimizationFactory.hpp"
75
#include "
optimization/SteepestDescent.hpp
"
76
77
using namespace
QuantLib;
78
namespace
OpenMD
{
79
80
void
registerIntegrators
() {
81
IntegratorFactory::getInstance
().
registerIntegrator
(
82
new
IntegratorBuilder<NVE>
(
"NVE"
));
83
IntegratorFactory::getInstance
().
registerIntegrator
(
84
new
IntegratorBuilder<NVT>
(
"NVT"
));
85
IntegratorFactory::getInstance
().
registerIntegrator
(
86
new
IntegratorBuilder<NPTi>
(
"NPTI"
));
87
IntegratorFactory::getInstance
().
registerIntegrator
(
88
new
IntegratorBuilder<NPTf>
(
"NPTF"
));
89
IntegratorFactory::getInstance
().
registerIntegrator
(
90
new
IntegratorBuilder<NPTxyz>
(
"NPTXYZ"
));
91
IntegratorFactory::getInstance
().
registerIntegrator
(
92
new
IntegratorBuilder<NPAT>
(
"NPAT"
));
93
IntegratorFactory::getInstance
().
registerIntegrator
(
94
new
IntegratorBuilder<NPA>
(
"NPA"
));
95
IntegratorFactory::getInstance
().
registerIntegrator
(
96
new
IntegratorBuilder<NPrT>
(
"NPRT"
));
97
IntegratorFactory::getInstance
().
registerIntegrator
(
98
new
IntegratorBuilder<NPrT>
(
"NPGT"
));
99
IntegratorFactory::getInstance
().
registerIntegrator
(
100
new
IntegratorBuilder<NgammaT>
(
"NGT"
));
101
IntegratorFactory::getInstance
().
registerIntegrator
(
102
new
IntegratorBuilder<NgammaT>
(
"NGAMMAT"
));
103
IntegratorFactory::getInstance
().
registerIntegrator
(
104
new
IntegratorBuilder<LangevinDynamics>
(
"LANGEVINDYNAMICS"
));
105
IntegratorFactory::getInstance
().
registerIntegrator
(
106
new
IntegratorBuilder<LangevinDynamics>
(
"LD"
));
107
IntegratorFactory::getInstance
().
registerIntegrator
(
108
new
IntegratorBuilder<LangevinDynamics>
(
"LHULL"
));
109
IntegratorFactory::getInstance
().
registerIntegrator
(
110
new
IntegratorBuilder<LangevinDynamics>
(
"LANGEVINHULL"
));
111
IntegratorFactory::getInstance
().
registerIntegrator
(
112
new
IntegratorBuilder<LangevinDynamics>
(
"SMIPD"
));
113
IntegratorFactory::getInstance
().
registerIntegrator
(
114
new
IntegratorBuilder<LangevinDynamics>
(
"RPYDYNAMICS"
));
115
IntegratorFactory::getInstance
().
registerIntegrator
(
116
new
IntegratorBuilder<LangevinDynamics>
(
"RPY"
));
117
IntegratorFactory::getInstance
().
registerIntegrator
(
118
new
IntegratorBuilder<LangevinDynamics>
(
"LHD"
));
119
IntegratorFactory::getInstance
().
registerIntegrator
(
120
new
IntegratorBuilder<LangevinDynamics>
(
"LANGEVINHYDRODYNAMICS"
));
121
IntegratorFactory::getInstance
().
registerIntegrator
(
122
new
IntegratorBuilder<LangevinPiston>
(
"LANGEVINPISTON"
));
123
}
124
125
void
registerOptimizers
() {
126
OptimizationFactory::getInstance
().
registerOptimization
(
127
new
OptimizationBuilder<QuantLib::SteepestDescent>
(
"SD"
));
128
OptimizationFactory::getInstance
().
registerOptimization
(
129
new
OptimizationBuilder<QuantLib::ConjugateGradient>
(
"CG"
));
130
OptimizationFactory::getInstance
().
registerOptimization
(
131
new
OptimizationBuilder<QuantLib::BFGS>
(
"BFGS"
));
132
}
133
134
void
registerLattice
() {
135
LatticeFactory::getInstance
().
registerLattice
(
136
new
LatticeBuilder<FCCLattice>
(
"FCC"
));
137
LatticeFactory::getInstance
().
registerLattice
(
138
new
LatticeBuilder<SCLattice>
(
"SC"
));
139
LatticeFactory::getInstance
().
registerLattice
(
140
new
LatticeBuilder<BCCLattice>
(
"BCC"
));
141
}
142
143
void
registerAll
() {
144
registerIntegrators
();
145
registerOptimizers
();
146
}
147
148
}
// namespace OpenMD
BFGS.hpp
Broyden-Fletcher-Goldfarb-Shanno optimization method.
ConjugateGradient.hpp
Conjugate gradient optimization method.
IntegratorFactory.hpp
LatticeFactory.hpp
Method.hpp
Abstract optimization method class.
NPA.hpp
NPAT.hpp
NPTf.hpp
NPTi.hpp
NPTxyz.hpp
NPrT.hpp
NVE.hpp
NVT.hpp
NgammaT.hpp
SteepestDescent.hpp
Steepest descent optimization method.
OpenMD::IntegratorBuilder
Definition
IntegratorCreator.hpp:78
OpenMD::IntegratorFactory::getInstance
static IntegratorFactory & getInstance()
Returns an instance of Integrator factory.
Definition
IntegratorFactory.hpp:86
OpenMD::IntegratorFactory::registerIntegrator
bool registerIntegrator(IntegratorCreator *creator)
Registers a creator with a type identifier.
Definition
IntegratorFactory.cpp:59
OpenMD::LatticeBuilder
Definition
LatticeCreator.hpp:79
OpenMD::LatticeFactory::registerLattice
bool registerLattice(LatticeCreator *creator)
Registers a creator with a type identifier.
Definition
LatticeFactory.cpp:57
OpenMD::LatticeFactory::getInstance
static LatticeFactory & getInstance()
Returns an instance of Lattice factory.
Definition
LatticeFactory.hpp:84
OpenMD::OptimizationBuilder
Definition
OptimizationCreator.hpp:73
OpenMD::OptimizationFactory::getInstance
static OptimizationFactory & getInstance()
Returns an instance of Optimization factory.
Definition
OptimizationFactory.hpp:81
OpenMD::OptimizationFactory::registerOptimization
bool registerOptimization(OptimizationCreator *creator)
Registers a creator with a type identifier.
Definition
OptimizationFactory.cpp:59
OpenMD
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.
Definition
ActionCorrFunc.cpp:63
OpenMD::registerIntegrators
void registerIntegrators()
Register all integrators.
Definition
Register.cpp:80
OpenMD::registerOptimizers
void registerOptimizers()
Register all optimizers.
Definition
Register.cpp:125
OpenMD::registerAll
void registerAll()
register force fields, integrators and optimizers
Definition
Register.cpp:143
OpenMD::registerLattice
void registerLattice()
Register all lattice.
Definition
Register.cpp:134
brains
Register.cpp
Generated on
for OpenMD by
1.17.0