OpenMD 3.0
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
Cuboctahedron.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 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/*! \file Cuboctahedron.hpp
46 \brief Cuboctahedron cluster structure generator
47*/
48
49/* Original copyright & license text:
50
51Copyright (c) 2011, Dmitry
52Copyright (c) 2009, Richard Brown
53Copyright (c) 2011, Evgeny Pr
54All rights reserved.
55
56Redistribution and use in source and binary forms, with or without
57modification, are permitted provided that the following conditions are
58met:
59
60 * Redistributions of source code must retain the above copyright
61 notice, this list of conditions and the following disclaimer.
62 * Redistributions in binary form must reproduce the above copyright
63 notice, this list of conditions and the following disclaimer in
64 the documentation and/or other materials provided with the distribution
65
66THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
67AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
68IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
69ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
70LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
71CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
72SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
73INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
74CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
75ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
76POSSIBILITY OF SUCH DAMAGE.
77
78*/
79
80#ifndef CLUSTERS_CUBOCTAHEDRON_HPP
81#define CLUSTERS_CUBOCTAHEDRON_HPP
82
83#include <vector>
84
85#include "math/Vector3.hpp"
86
87using namespace std;
88namespace OpenMD {
89
90 //! Generates coordinates of atoms inside a Cuboctahedron
91 /*!
92 (Heavily modified from Matlab code from:
93 Dmitry, Richard Brown, and Evgeny Pr)
94
95 */
97 public:
98 //! Default constructor
99 Cuboctahedron(std::string lattice, int cells, int planes);
100 virtual ~Cuboctahedron() = default;
101
102 //! Get the generated points in the cluster.
103 virtual vector<Vector3d> getPoints();
104
105 protected:
106 bool inCluster111(Vector3d r);
107 bool inCluster(Vector3d r);
108
109 std::string lattice_; // FCC or BCC
110 int L_; // size of the cluster (number of unit cells commensurate
111 // with lattice parameter)
112 int M_; // degree of truncation with {111}-planes
113
114 vector<Vector3d> Points;
115 vector<Vector3d> Basis; // Basis vectors of the unit cell
116 };
117
119 public:
120 RegularCuboctahedron(std::string lattice, int cells) :
121 Cuboctahedron(lattice, cells, cells) {}
122 };
124 public:
125 TruncatedCube(std::string lattice, int cells, int planes) :
126 Cuboctahedron(lattice, cells, planes) {}
127 };
128} // namespace OpenMD
129
130#endif
Generates coordinates of atoms inside a Cuboctahedron.
Cuboctahedron(std::string lattice, int cells, int planes)
Default constructor.
virtual vector< Vector3d > getPoints()
Get the generated points in the cluster.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.