OpenMD
3.1
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
CoordinationNumber.hpp
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 appropriate papers when you publish your
33
* work. Good starting points are:
34
*
35
* [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).
36
* [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).
37
* [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).
38
* [4] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
39
* [5] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).
40
* [6] Lamichhane, Gezelter & Newman, J. Chem. Phys. 141, 134109 (2014).
41
* [7] Lamichhane, Newman & Gezelter, J. Chem. Phys. 141, 134110 (2014).
42
* [8] Bhattarai, Newman & Gezelter, Phys. Rev. B 99, 094106 (2019).
43
*/
44
45
#ifndef APPLICATIONS_STATICPROPS_COORDINATIONNUMBER_HPP
46
#define APPLICATIONS_STATICPROPS_COORDINATIONNUMBER_HPP
47
48
#include <string>
49
#include <vector>
50
51
#include "applications/staticProps/StaticAnalyser.hpp"
52
#include "selection/SelectionEvaluator.hpp"
53
#include "selection/SelectionManager.hpp"
54
55
using namespace
std;
56
namespace
OpenMD
{
57
58
/**
59
* @class CoordinationNumber
60
* @brief CoordinationNumber
61
*
62
* Computes a distribution of coordination numbers defined as the number of
63
* atoms in \a sele2 that are within \a rCut of the atom in \a sele1
64
*
65
* Note that extra parameters must be declared:
66
*
67
* \param rCut cutoff radius for finding lists of nearest neighbors
68
* \param sele1 selection of StuntDoubles used for the distribution
69
* \param sele2 selection of StuntDoubles used for nearest neighbor
70
* computation
71
*/
72
class
CoordinationNumber
:
public
StaticAnalyser
{
73
public
:
74
CoordinationNumber
(
SimInfo
* info,
const
std::string& filename,
75
const
std::string& sele1,
const
std::string& sele2,
76
RealType rCut,
int
bins);
77
78
virtual
~CoordinationNumber
() =
default
;
79
virtual
void
process();
80
virtual
void
writeOutput();
81
82
protected
:
83
virtual
RealType computeCoordination(
int
a, vector<vector<int>> neighbors);
84
RealType rCut_;
85
int
bins_;
86
87
std::string sele1_;
88
SelectionManager
seleMan1_;
89
SelectionEvaluator
evaluator1_;
90
91
std::string sele2_;
92
SelectionManager
seleMan2_;
93
SelectionEvaluator
evaluator2_;
94
95
int
selectionCount1_;
96
int
selectionCount2_;
97
int
nnMax_;
98
RealType delta_;
99
int
count_;
100
std::vector<RealType> histogram_;
101
};
102
103
/**
104
* @class SCN
105
* @brief Secondary Coordinate Number
106
*
107
* Computes a distribution of secondary coordination numbers where
108
* each atom is assigned the mean coordination number of the
109
* neighboring atoms.
110
*/
111
class
SCN
:
public
CoordinationNumber
{
112
public
:
113
SCN
(
SimInfo
* info,
const
std::string& filename,
const
std::string& sele1,
114
const
std::string& sele2, RealType rCut,
int
bins);
115
116
virtual
RealType computeCoordination(
int
a, vector<vector<int>> neighbors);
117
};
118
119
/**
120
* @class GCN
121
* @brief Generalized Coordinate Number
122
*
123
* Computes a distribution of generalized coordinate numbers as
124
* described in:
125
*
126
* "Finding optimal surface sites on heterogeneous catalysts by
127
* counting nearest neighbors," by F. Calle-Vallejo et al.,
128
* Science 350(6257) pp. 185-189 (2015).
129
* http://dx.doi.org/10.1126/science.aab3501
130
*/
131
class
GCN
:
public
CoordinationNumber
{
132
public
:
133
GCN
(
SimInfo
* info,
const
std::string& filename,
const
std::string& sele1,
134
const
std::string& sele2, RealType rCut,
int
bins);
135
136
virtual
RealType computeCoordination(
int
a, vector<vector<int>> neighbors);
137
};
138
}
// namespace OpenMD
139
140
#endif
OpenMD::CoordinationNumber
CoordinationNumber.
Definition
CoordinationNumber.hpp:72
OpenMD::GCN
Generalized Coordinate Number.
Definition
CoordinationNumber.hpp:131
OpenMD::SCN
Secondary Coordinate Number.
Definition
CoordinationNumber.hpp:111
OpenMD::SelectionEvaluator
"selection/SelectionEvaluator"
Definition
SelectionEvaluator.hpp:73
OpenMD::SelectionManager
Definition
SelectionManager.hpp:59
OpenMD::SimInfo
One of the heavy-weight classes of OpenMD, SimInfo maintains objects and variables relating to the cu...
Definition
SimInfo.hpp:93
OpenMD::StaticAnalyser
Definition
StaticAnalyser.hpp:59
OpenMD
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.
Definition
ActionCorrFunc.cpp:60
applications
staticProps
CoordinationNumber.hpp
Generated on Wed Jun 26 2024 13:56:39 for OpenMD by
1.11.0