OpenMD 3.2
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
Decahedron.hpp
Go to the documentation of this file.
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/*! \file Decahedron.hpp
49 \brief Decahedron cluster structure generator
50*/
51
52/* Original copyright & license text:
53
54Copyright (c) 2011, Dmitry
55Copyright (c) 2009, Richard Brown
56Copyright (c) 2011, Evgeny Pr
57All rights reserved.
58
59Redistribution and use in source and binary forms, with or without
60modification, are permitted provided that the following conditions are
61met:
62
63 * Redistributions of source code must retain the above copyright
64 notice, this list of conditions and the following disclaimer.
65 * Redistributions in binary form must reproduce the above copyright
66 notice, this list of conditions and the following disclaimer in
67 the documentation and/or other materials provided with the distribution
68
69THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
70AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
71IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
72ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
73LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
74CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
75SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
76INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
77CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
78ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
79POSSIBILITY OF SUCH DAMAGE.
80
81*/
82
83#ifndef CLUSTERS_DECAHEDRON_HPP
84#define CLUSTERS_DECAHEDRON_HPP
85
86#include <vector>
87
88#include "math/Vector3.hpp"
89
90using namespace std;
91namespace OpenMD {
92
93 //! Creates the regular decahedron, Ino decahedron, or truncated
94 //! (Marks) decahedron structures (depending on the parameters).
95 /*!
96 (Heavily modified from Matlab code from:
97 Dmitry, Richard Brown, and Evgeny Pr)
98
99 */
101 public:
102 //! Default constructor
103 Decahedron(int columnAtoms, int shells, int twinAtoms);
104 virtual ~Decahedron() = default;
105
106 //! Get the generated points in the cluster.
107 virtual vector<Vector3d> getPoints();
108
109 protected:
110 //! Generate the rings of the Decahedron.
111 vector<Vector3d> truncatedRing(int n, int k);
112
113 int N_; // number of atoms in the central atomic column
114 int M_; // number of {002} shells
115 int K_; // number of atomic columns along twin boundary
116
117 vector<Vector3d> Points;
118 vector<Vector3d> Basis; // Basis vectors of the Decahedron
119 };
120
121 class RegularDecahedron : public Decahedron {
122 public:
123 RegularDecahedron(int shells) : Decahedron(shells - 1, shells, shells) {}
124 };
125
126 class InoDecahedron : public Decahedron {
127 public:
128 InoDecahedron(int columnAtoms, int shells) :
129 Decahedron(columnAtoms, shells, columnAtoms) {}
130 };
131
132 class CurlingStoneDecahedron : public Decahedron {
133 public:
134 CurlingStoneDecahedron(int columnAtoms, int shells, int twinAtoms,
135 int truncatedPlanes);
136 vector<Vector3d> getPoints();
137
138 private:
139 int T_; // number of truncated planes snipped from top and bottom
140 };
141} // namespace OpenMD
142
143#endif
vector< Vector3d > getPoints()
Get the generated points in the cluster.
virtual vector< Vector3d > getPoints()
Get the generated points in the cluster.
vector< Vector3d > truncatedRing(int n, int k)
Generate the rings of the Decahedron.
Decahedron(int columnAtoms, int shells, int twinAtoms)
Default constructor.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.