50#include "utils/Constants.hpp"
57 N_(columnAtoms), M_(shells), K_(twinAtoms) {
64 const RealType phi = 2.0 * Constants::PI / 5.0;
65 const RealType r3o2 = 0.5 * sqrt(3.0);
68 Vector3d(r3o2 * cos(0.0 * phi), r3o2 * sin(0.0 * phi), 0.0));
70 Vector3d(r3o2 * cos(1.0 * phi), r3o2 * sin(1.0 * phi), 0.0));
72 Vector3d(r3o2 * cos(2.0 * phi), r3o2 * sin(2.0 * phi), 0.0));
74 Vector3d(r3o2 * cos(3.0 * phi), r3o2 * sin(3.0 * phi), 0.0));
76 Vector3d(r3o2 * cos(4.0 * phi), r3o2 * sin(4.0 * phi), 0.0));
82 for (
int i = 0; i < N_; i++) {
83 Points.push_back(
Vector3d(0.0, 0.0, RealType(i) - 0.5 * (N_ - 1)));
86 for (
int i = 1; i < M_ + 1; i++) {
89 vector<Vector3d> ring;
99 for (
int j = 0; j < N_ - i; j++) {
101 Vector3d(0, 0, -0.5 * RealType((N_ - i) - 1) + RealType(j));
103 for (vector<Vector3d>::iterator k = ring.begin(); k != ring.end();
105 Points.push_back((*k) + shift);
118 vector<Vector3d> ring;
121 for (
int i = 0; i < 5; i++) {
127 for (
int j = 0; j < n; j++) {
128 ring.push_back(RealType(n) * b1 + RealType(j) * (b2 - b1));
132 for (
int j = k; j <= n - k; j++) {
134 ring.push_back(RealType(n) * b1 + RealType(j) * (b2 - b1));
141 CurlingStoneDecahedron::CurlingStoneDecahedron(
int columnAtoms,
int shells,
143 int truncatedPlanes) :
145 T_(truncatedPlanes) {}
149 vector<Vector3d> snipped;
152 maxZ = raw.begin()->z();
153 minZ = raw.begin()->z();
155 for (vector<Vector3d>::iterator i = raw.begin(); i != raw.end(); ++i) {
156 maxZ = max(maxZ, (*i).z());
157 minZ = min(minZ, (*i).z());
160 for (vector<Vector3d>::iterator i = raw.begin(); i != raw.end(); ++i) {
161 if (((*i).z() < maxZ - 0.995 * (T_ / 2.0)) &&
162 ((*i).z() > minZ + 0.995 * (T_ / 2.0))) {
163 snipped.push_back((*i));
Decahedron cluster structure generator.
vector< Vector3d > getPoints()
Get the generated points in the cluster.
Creates the regular decahedron, Ino decahedron, or truncated (Marks) decahedron structures (depending...
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.