portability improvements for Solaris/OpenIndiana
This commit is contained in:
@ -62,6 +62,10 @@ public:
|
||||
* This enumeration lists all Operation subclasses. This is provided so that switch statements
|
||||
* can be used when processing or analyzing parsed expressions.
|
||||
*/
|
||||
// required on Solaris/OpenIndiana
|
||||
#if defined(SEC)
|
||||
#undef SEC
|
||||
#endif
|
||||
enum Id {CONSTANT, VARIABLE, CUSTOM, ADD, SUBTRACT, MULTIPLY, DIVIDE, POWER, NEGATE, SQRT, EXP, LOG,
|
||||
SIN, COS, SEC, CSC, TAN, COT, ASIN, ACOS, ATAN, ATAN2, SINH, COSH, TANH, ERF, ERFC, STEP, DELTA, SQUARE, CUBE, RECIPROCAL,
|
||||
ADD_CONSTANT, MULTIPLY_CONSTANT, POWER_CONSTANT, MIN, MAX, ABS, FLOOR, CEIL, SELECT};
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "error.h"
|
||||
#include "fix_bond_history.h"
|
||||
#include "force.h"
|
||||
#include "math_const.h"
|
||||
#include "math_extra.h"
|
||||
#include "memory.h"
|
||||
#include "modify.h"
|
||||
@ -30,7 +31,7 @@
|
||||
#define EPSILON 1e-10
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
using MathConst::MY_SQRT2;
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
static double acos_limit(double c)
|
||||
@ -241,11 +242,11 @@ double BondBPMRotational::elastic_forces(int i1, int i2, int type, double r_mag,
|
||||
// Use representation of X'Y'Z' rotations from Wang, Mora 2009
|
||||
temp = r_mag + rb[2];
|
||||
if (temp < 0.0) temp = 0.0;
|
||||
mq[0] = sqrt(2) * 0.5 * sqrt(temp * r_mag_inv);
|
||||
mq[0] = MY_SQRT2 * 0.5 * sqrt(temp * r_mag_inv);
|
||||
|
||||
temp = sqrt(rb[0] * rb[0] + rb[1] * rb[1]);
|
||||
if (temp != 0.0) {
|
||||
mq[1] = -sqrt(2) * 0.5 / temp;
|
||||
mq[1] = -MY_SQRT2 * 0.5 / temp;
|
||||
temp = r_mag - rb[2];
|
||||
if (temp < 0.0) temp = 0.0;
|
||||
mq[1] *= sqrt(temp * r_mag_inv);
|
||||
|
||||
@ -109,7 +109,7 @@ void FixRhok::init()
|
||||
}
|
||||
MPI_Allreduce( &nThisLocal, &mNThis,
|
||||
1, MPI_INT, MPI_SUM, world );
|
||||
mSqrtNThis = sqrt( mNThis );
|
||||
mSqrtNThis = sqrt( (double)mNThis );
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -360,7 +360,7 @@ void PairKolmogorovCrespiZ::read_file(char *filename)
|
||||
params[nparams].z06 = pow(params[nparams].z0, 6);
|
||||
|
||||
nparams++;
|
||||
if (nparams >= pow(atom->ntypes, 3)) break;
|
||||
if (nparams >= pow((double)atom->ntypes, 3)) break;
|
||||
}
|
||||
}
|
||||
MPI_Bcast(&nparams, 1, MPI_INT, 0, world);
|
||||
|
||||
@ -356,7 +356,7 @@ void PairLebedevaZ::read_file(char *filename)
|
||||
params[nparams].z06 = pow(params[nparams].z0,6);
|
||||
|
||||
nparams++;
|
||||
if (nparams >= pow(atom->ntypes,3)) break;
|
||||
if (nparams >= pow((double)atom->ntypes,3)) break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1030,19 +1030,19 @@ void MSM::set_grid_global()
|
||||
int xlevels,ylevels,zlevels;
|
||||
|
||||
while (!factorable(nx_max,flag,xlevels)) {
|
||||
double k = log(nx_max)/log(2.0);
|
||||
double k = log((double)nx_max)/log(2.0);
|
||||
double r = k - floor(k);
|
||||
if (r > 0.5) nx_max++;
|
||||
else nx_max--;
|
||||
}
|
||||
while (!factorable(ny_max,flag,ylevels)) {
|
||||
double k = log(ny_max)/log(2.0);
|
||||
double k = log((double)ny_max)/log(2.0);
|
||||
double r = k - floor(k);
|
||||
if (r > 0.5) ny_max++;
|
||||
else ny_max--;
|
||||
}
|
||||
while (!factorable(nz_max,flag,zlevels)) {
|
||||
double k = log(nz_max)/log(2.0);
|
||||
double k = log((double)nz_max)/log(2.0);
|
||||
double r = k - floor(k);
|
||||
if (r > 0.5) nz_max++;
|
||||
else nz_max--;
|
||||
|
||||
@ -600,7 +600,7 @@ void PairExTeP::read_file(char *file)
|
||||
error->one(FLERR,"Illegal ExTeP parameter");
|
||||
|
||||
nparams++;
|
||||
if (nparams >= pow(nelements,3)) break;
|
||||
if (nparams >= pow((double)nelements,3)) break;
|
||||
}
|
||||
|
||||
/* F_IJ (3) */
|
||||
|
||||
@ -82,9 +82,9 @@ class PairMEAMSpline : public Pair {
|
||||
}
|
||||
|
||||
/// Initialization of spline function.
|
||||
void init(int _N, double _deriv0, double _derivN)
|
||||
void init(int _n, double _deriv0, double _derivN)
|
||||
{
|
||||
N = _N;
|
||||
N = _n;
|
||||
deriv0 = _deriv0;
|
||||
derivN = _derivN;
|
||||
// if (X) delete[] X;
|
||||
|
||||
@ -1213,7 +1213,7 @@ int imdsock_listen(void * v) {
|
||||
void *imdsock_accept(void * v) {
|
||||
int rc;
|
||||
imdsocket *new_s = nullptr, *s = (imdsocket *) v;
|
||||
#if defined(ARCH_AIX5) || defined(ARCH_AIX5_64) || defined(ARCH_AIX6_64)
|
||||
#if defined(ARCH_AIX5) || defined(ARCH_AIX5_64) || defined(ARCH_AIX6_64) || defined(__sun)
|
||||
unsigned int len;
|
||||
#define _SOCKLEN_TYPE unsigned int
|
||||
#elif defined(SOCKLEN_T)
|
||||
|
||||
@ -30,7 +30,7 @@ MLIAPModelQuadratic::MLIAPModelQuadratic(LAMMPS* lmp, char* coefffilename) :
|
||||
MLIAPModelSimple(lmp, coefffilename)
|
||||
{
|
||||
if (coefffilename) read_coeffs(coefffilename);
|
||||
if (nparams > 0) ndescriptors = sqrt(2*nparams)-1;
|
||||
if (nparams > 0) ndescriptors = sqrt(2.0*nparams)-1;
|
||||
nonlinearflag = 1;
|
||||
}
|
||||
|
||||
|
||||
@ -361,7 +361,7 @@ void MLIAP_SO3::compute_W(int nmax, double *arr)
|
||||
for (beta = 1; beta < alpha + 1; beta++) {
|
||||
temp2 = (2 * beta + 5) * (2 * beta + 6) * (2 * beta + 7);
|
||||
arr[(alpha - 1) * nmax + beta - 1] =
|
||||
sqrt(temp1 * temp2) / (5 + alpha + beta) / (6 + alpha + beta) / (7 + alpha + beta);
|
||||
sqrt((double)temp1 * temp2) / (5 + alpha + beta) / (6 + alpha + beta) / (7 + alpha + beta);
|
||||
arr[(beta - 1) * nmax + alpha - 1] = arr[(alpha - 1) * nmax + beta - 1];
|
||||
}
|
||||
}
|
||||
|
||||
@ -399,7 +399,7 @@ void PairSNAP::coeff(int narg, char **arg)
|
||||
// ncoeffall should be (ncoeff+2)*(ncoeff+1)/2
|
||||
// so, ncoeff = floor(sqrt(2*ncoeffall))-1
|
||||
|
||||
ncoeff = sqrt(2*ncoeffall)-1;
|
||||
ncoeff = sqrt(2.0*ncoeffall)-1;
|
||||
ncoeffq = (ncoeff*(ncoeff+1))/2;
|
||||
int ntmp = 1+ncoeff+ncoeffq;
|
||||
if (ntmp != ncoeffall) {
|
||||
|
||||
@ -16,114 +16,114 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
|
||||
#include <cmath>
|
||||
|
||||
const double ptm_template_hcp_alt1[PTM_NUM_POINTS_HCP][3] = {
|
||||
constexpr double ptm_template_hcp_alt1[PTM_NUM_POINTS_HCP][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 1, 0, 0 },
|
||||
{ -0.5, -sqrt(3)/2, 0 },
|
||||
{ -0.5, -sqrt(3)/6, -sqrt(6)/3 },
|
||||
{ 0, sqrt(3)/3, -sqrt(6)/3 },
|
||||
{ 0.5, -sqrt(3)/6, -sqrt(6)/3 },
|
||||
{ -0.5, -sqrt(3.0)/2, 0 },
|
||||
{ -0.5, -sqrt(3.0)/6, -sqrt(6.0)/3 },
|
||||
{ 0, sqrt(3.0)/3, -sqrt(6.0)/3 },
|
||||
{ 0.5, -sqrt(3.0)/6, -sqrt(6.0)/3 },
|
||||
{ -1, 0, 0 },
|
||||
{ -0.5, sqrt(3)/2, 0 },
|
||||
{ 0.5, sqrt(3)/2, 0 },
|
||||
{ 0.5, -sqrt(3)/2, 0 },
|
||||
{ 0.5, -sqrt(3)/6, sqrt(6)/3 },
|
||||
{ 0, sqrt(3)/3, sqrt(6)/3 },
|
||||
{ -0.5, -sqrt(3)/6, sqrt(6)/3 },
|
||||
{ -0.5, sqrt(3.0)/2, 0 },
|
||||
{ 0.5, sqrt(3.0)/2, 0 },
|
||||
{ 0.5, -sqrt(3.0)/2, 0 },
|
||||
{ 0.5, -sqrt(3.0)/6, sqrt(6.0)/3 },
|
||||
{ 0, sqrt(3.0)/3, sqrt(6.0)/3 },
|
||||
{ -0.5, -sqrt(3.0)/6, sqrt(6.0)/3 },
|
||||
};
|
||||
|
||||
const double ptm_template_dcub_alt1[PTM_NUM_POINTS_DCUB][3] = {
|
||||
constexpr double ptm_template_dcub_alt1[PTM_NUM_POINTS_DCUB][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 4/(sqrt(3)+6*sqrt(2)), -4/(sqrt(3)+6*sqrt(2)), 4/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 4/(sqrt(3)+6*sqrt(2)), 4/(sqrt(3)+6*sqrt(2)), -4/(sqrt(3)+6*sqrt(2)) },
|
||||
{ -4/(sqrt(3)+6*sqrt(2)), -4/(sqrt(3)+6*sqrt(2)), -4/(sqrt(3)+6*sqrt(2)) },
|
||||
{ -4/(sqrt(3)+6*sqrt(2)), 4/(sqrt(3)+6*sqrt(2)), 4/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 8/(sqrt(3)+6*sqrt(2)), 0, 8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 0, -8/(sqrt(3)+6*sqrt(2)), 8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 8/(sqrt(3)+6*sqrt(2)), -8/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 0, 8/(sqrt(3)+6*sqrt(2)), -8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 8/(sqrt(3)+6*sqrt(2)), 0, -8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 8/(sqrt(3)+6*sqrt(2)), 8/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -8/(sqrt(3)+6*sqrt(2)), 0, -8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 0, -8/(sqrt(3)+6*sqrt(2)), -8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ -8/(sqrt(3)+6*sqrt(2)), -8/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -8/(sqrt(3)+6*sqrt(2)), 8/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -8/(sqrt(3)+6*sqrt(2)), 0, 8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 0, 8/(sqrt(3)+6*sqrt(2)), 8/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 4/(sqrt(3.0)+6*sqrt(2.0)), -4/(sqrt(3.0)+6*sqrt(2.0)), 4/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 4/(sqrt(3.0)+6*sqrt(2.0)), 4/(sqrt(3.0)+6*sqrt(2.0)), -4/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ -4/(sqrt(3.0)+6*sqrt(2.0)), -4/(sqrt(3.0)+6*sqrt(2.0)), -4/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ -4/(sqrt(3.0)+6*sqrt(2.0)), 4/(sqrt(3.0)+6*sqrt(2.0)), 4/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 8/(sqrt(3.0)+6*sqrt(2.0)), 0, 8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 0, -8/(sqrt(3.0)+6*sqrt(2.0)), 8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 8/(sqrt(3.0)+6*sqrt(2.0)), -8/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 0, 8/(sqrt(3.0)+6*sqrt(2.0)), -8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 8/(sqrt(3.0)+6*sqrt(2.0)), 0, -8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 8/(sqrt(3.0)+6*sqrt(2.0)), 8/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -8/(sqrt(3.0)+6*sqrt(2.0)), 0, -8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 0, -8/(sqrt(3.0)+6*sqrt(2.0)), -8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ -8/(sqrt(3.0)+6*sqrt(2.0)), -8/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -8/(sqrt(3.0)+6*sqrt(2.0)), 8/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -8/(sqrt(3.0)+6*sqrt(2.0)), 0, 8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 0, 8/(sqrt(3.0)+6*sqrt(2.0)), 8/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
};
|
||||
|
||||
const double ptm_template_dhex_alt1[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double ptm_template_dhex_alt1[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), -4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 0, 0, 4*sqrt(3)/(sqrt(3)+6*sqrt(2)) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ 8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), -4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 0, 0, 4*sqrt(3.0)/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ -8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ 8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
const double ptm_template_dhex_alt2[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double ptm_template_dhex_alt2[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 0, -8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 0, 0, -4*sqrt(3)/(sqrt(3)+6*sqrt(2)) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 0, -8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 0, -8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 0, -8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 0, 0, -4*sqrt(3.0)/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 0, -8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ -8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 0, -8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
const double ptm_template_dhex_alt3[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double ptm_template_dhex_alt3[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), 4*sqrt(3)/(3*sqrt(3)+18*sqrt(2)) },
|
||||
{ 0, 0, -4*sqrt(3)/(sqrt(3)+6*sqrt(2)) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ -8*sqrt(2)/(sqrt(3)+6*sqrt(2)), 0, 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), 16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), 4*sqrt(6)/(sqrt(3)+6*sqrt(2)), 0 },
|
||||
{ -4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 0, 8*sqrt(6)/(3*sqrt(3)+18*sqrt(2)), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2)/(sqrt(3)+6*sqrt(2)), -4*sqrt(6)/(3*(sqrt(3)+6*sqrt(2))), -16*sqrt(3)/(3*(sqrt(3)+6*sqrt(2))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), 4*sqrt(3.0)/(3*sqrt(3.0)+18*sqrt(2.0)) },
|
||||
{ 0, 0, -4*sqrt(3.0)/(sqrt(3.0)+6*sqrt(2.0)) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ -8*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 0, 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), 16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), 4*sqrt(6.0)/(sqrt(3.0)+6*sqrt(2.0)), 0 },
|
||||
{ -4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 0, 8*sqrt(6.0)/(3*sqrt(3.0)+18*sqrt(2.0)), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
{ 4*sqrt(2.0)/(sqrt(3.0)+6*sqrt(2.0)), -4*sqrt(6.0)/(3*(sqrt(3.0)+6*sqrt(2.0))), -16*sqrt(3.0)/(3*(sqrt(3.0)+6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
|
||||
const double ptm_template_graphene_alt1[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
constexpr double ptm_template_graphene_alt1[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 3*sqrt(3)/22-9./11, -3./22+3*sqrt(3)/11, 0 },
|
||||
{ 9./11-3*sqrt(3)/22, -3./22+3*sqrt(3)/11, 0 },
|
||||
{ 0, -6*sqrt(3)/11+3./11, 0 },
|
||||
{ -18./11+3*sqrt(3)/11, 0, 0 },
|
||||
{ 3*sqrt(3)/22-9./11, -9./22+9*sqrt(3)/11, 0 },
|
||||
{ 9./11-3*sqrt(3)/22, -9./22+9*sqrt(3)/11, 0 },
|
||||
{ -3*sqrt(3)/11+18./11, 0, 0 },
|
||||
{ 9./11-3*sqrt(3)/22, -9*sqrt(3)/11+9./22, 0 },
|
||||
{ 3*sqrt(3)/22-9./11, -9*sqrt(3)/11+9./22, 0 },
|
||||
{ 3*sqrt(3.0)/22-9./11, -3./22+3*sqrt(3.0)/11, 0 },
|
||||
{ 9./11-3*sqrt(3.0)/22, -3./22+3*sqrt(3.0)/11, 0 },
|
||||
{ 0, -6*sqrt(3.0)/11+3./11, 0 },
|
||||
{ -18./11+3*sqrt(3.0)/11, 0, 0 },
|
||||
{ 3*sqrt(3.0)/22-9./11, -9./22+9*sqrt(3.0)/11, 0 },
|
||||
{ 9./11-3*sqrt(3.0)/22, -9./22+9*sqrt(3.0)/11, 0 },
|
||||
{ -3*sqrt(3.0)/11+18./11, 0, 0 },
|
||||
{ 9./11-3*sqrt(3.0)/22, -9*sqrt(3.0)/11+9./22, 0 },
|
||||
{ 3*sqrt(3.0)/22-9./11, -9*sqrt(3.0)/11+9./22, 0 },
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -21,7 +21,7 @@ namespace ptm {
|
||||
|
||||
void calculate_deformation_gradient(int num_points, const double (*ideal_points)[3], int8_t* mapping, double (*normalized)[3], const double (*penrose)[3], double* F, double* res);
|
||||
|
||||
const double penrose_sc[PTM_NUM_POINTS_SC][3] = {
|
||||
constexpr double penrose_sc[PTM_NUM_POINTS_SC][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, -0.5 },
|
||||
{ 0, 0, 0.5 },
|
||||
@ -31,234 +31,234 @@ const double penrose_sc[PTM_NUM_POINTS_SC][3] = {
|
||||
{ 0.5, 0, 0 },
|
||||
};
|
||||
|
||||
const double penrose_fcc[PTM_NUM_POINTS_FCC][3] = {
|
||||
constexpr double penrose_fcc[PTM_NUM_POINTS_FCC][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ sqrt(2)/8, sqrt(2)/8, 0 },
|
||||
{ 0, sqrt(2)/8, sqrt(2)/8 },
|
||||
{ sqrt(2)/8, 0, sqrt(2)/8 },
|
||||
{ -sqrt(2)/8, -sqrt(2)/8, 0 },
|
||||
{ 0, -sqrt(2)/8, -sqrt(2)/8 },
|
||||
{ -sqrt(2)/8, 0, -sqrt(2)/8 },
|
||||
{ -sqrt(2)/8, sqrt(2)/8, 0 },
|
||||
{ 0, -sqrt(2)/8, sqrt(2)/8 },
|
||||
{ -sqrt(2)/8, 0, sqrt(2)/8 },
|
||||
{ sqrt(2)/8, -sqrt(2)/8, 0 },
|
||||
{ 0, sqrt(2)/8, -sqrt(2)/8 },
|
||||
{ sqrt(2)/8, 0, -sqrt(2)/8 },
|
||||
{ sqrt(2.0)/8, sqrt(2.0)/8, 0 },
|
||||
{ 0, sqrt(2.0)/8, sqrt(2.0)/8 },
|
||||
{ sqrt(2.0)/8, 0, sqrt(2.0)/8 },
|
||||
{ -sqrt(2.0)/8, -sqrt(2.0)/8, 0 },
|
||||
{ 0, -sqrt(2.0)/8, -sqrt(2.0)/8 },
|
||||
{ -sqrt(2.0)/8, 0, -sqrt(2.0)/8 },
|
||||
{ -sqrt(2.0)/8, sqrt(2.0)/8, 0 },
|
||||
{ 0, -sqrt(2.0)/8, sqrt(2.0)/8 },
|
||||
{ -sqrt(2.0)/8, 0, sqrt(2.0)/8 },
|
||||
{ sqrt(2.0)/8, -sqrt(2.0)/8, 0 },
|
||||
{ 0, sqrt(2.0)/8, -sqrt(2.0)/8 },
|
||||
{ sqrt(2.0)/8, 0, -sqrt(2.0)/8 },
|
||||
};
|
||||
|
||||
const double penrose_hcp[PTM_NUM_POINTS_HCP][3] = {
|
||||
constexpr double penrose_hcp[PTM_NUM_POINTS_HCP][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 1./8, -sqrt(3)/8, 0 },
|
||||
{ 1./8, -sqrt(3.0)/8, 0 },
|
||||
{ -1./4, 0, 0 },
|
||||
{ -1./8, sqrt(3)/24, -sqrt(6)/12 },
|
||||
{ 1./8, sqrt(3)/24, -sqrt(6)/12 },
|
||||
{ 0, -sqrt(3)/12, -sqrt(6)/12 },
|
||||
{ -1./8, sqrt(3)/8, 0 },
|
||||
{ 1./8, sqrt(3)/8, 0 },
|
||||
{ -1./8, sqrt(3.0)/24, -sqrt(6.0)/12 },
|
||||
{ 1./8, sqrt(3.0)/24, -sqrt(6.0)/12 },
|
||||
{ 0, -sqrt(3.0)/12, -sqrt(6.0)/12 },
|
||||
{ -1./8, sqrt(3.0)/8, 0 },
|
||||
{ 1./8, sqrt(3.0)/8, 0 },
|
||||
{ 1./4, 0, 0 },
|
||||
{ -1./8, -sqrt(3)/8, 0 },
|
||||
{ 0, -sqrt(3)/12, sqrt(6)/12 },
|
||||
{ 1./8, sqrt(3)/24, sqrt(6)/12 },
|
||||
{ -1./8, sqrt(3)/24, sqrt(6)/12 },
|
||||
{ -1./8, -sqrt(3.0)/8, 0 },
|
||||
{ 0, -sqrt(3.0)/12, sqrt(6.0)/12 },
|
||||
{ 1./8, sqrt(3.0)/24, sqrt(6.0)/12 },
|
||||
{ -1./8, sqrt(3.0)/24, sqrt(6.0)/12 },
|
||||
};
|
||||
|
||||
const double penrose_hcp_alt1[PTM_NUM_POINTS_HCP][3] = {
|
||||
constexpr double penrose_hcp_alt1[PTM_NUM_POINTS_HCP][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 1./4, 0, 0 },
|
||||
{ -1./8, -sqrt(3)/8, 0 },
|
||||
{ -1./8, -sqrt(3)/24, -sqrt(6)/12 },
|
||||
{ 0, sqrt(3)/12, -sqrt(6)/12 },
|
||||
{ 1./8, -sqrt(3)/24, -sqrt(6)/12 },
|
||||
{ -1./8, -sqrt(3.0)/8, 0 },
|
||||
{ -1./8, -sqrt(3.0)/24, -sqrt(6.0)/12 },
|
||||
{ 0, sqrt(3.0)/12, -sqrt(6.0)/12 },
|
||||
{ 1./8, -sqrt(3.0)/24, -sqrt(6.0)/12 },
|
||||
{ -1./4, 0, 0 },
|
||||
{ -1./8, sqrt(3)/8, 0 },
|
||||
{ 1./8, sqrt(3)/8, 0 },
|
||||
{ 1./8, -sqrt(3)/8, 0 },
|
||||
{ 1./8, -sqrt(3)/24, sqrt(6)/12 },
|
||||
{ 0, sqrt(3)/12, sqrt(6)/12 },
|
||||
{ -1./8, -sqrt(3)/24, sqrt(6)/12 },
|
||||
{ -1./8, sqrt(3.0)/8, 0 },
|
||||
{ 1./8, sqrt(3.0)/8, 0 },
|
||||
{ 1./8, -sqrt(3.0)/8, 0 },
|
||||
{ 1./8, -sqrt(3.0)/24, sqrt(6.0)/12 },
|
||||
{ 0, sqrt(3.0)/12, sqrt(6.0)/12 },
|
||||
{ -1./8, -sqrt(3.0)/24, sqrt(6.0)/12 },
|
||||
};
|
||||
|
||||
const double penrose_ico[PTM_NUM_POINTS_ICO][3] = {
|
||||
constexpr double penrose_ico[PTM_NUM_POINTS_ICO][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0.25 },
|
||||
{ 0, 0, -0.25 },
|
||||
{ -sqrt(-10*sqrt(5) + 50)/40, sqrt(5)/40 + 1./8, -sqrt(5)/20 },
|
||||
{ sqrt(-10*sqrt(5) + 50)/40, -1./8 - sqrt(5)/40, sqrt(5)/20 },
|
||||
{ 0, -sqrt(5)/10, -sqrt(5)/20 },
|
||||
{ 0, sqrt(5)/10, sqrt(5)/20 },
|
||||
{ sqrt(10*sqrt(5) + 50)/40, -1./8 + sqrt(5)/40, -sqrt(5)/20 },
|
||||
{ -sqrt(10*sqrt(5) + 50)/40, -sqrt(5)/40 + 1./8, sqrt(5)/20 },
|
||||
{ -sqrt(10*sqrt(5) + 50)/40, -1./8 + sqrt(5)/40, -sqrt(5)/20 },
|
||||
{ sqrt(10*sqrt(5) + 50)/40, -sqrt(5)/40 + 1./8, sqrt(5)/20 },
|
||||
{ sqrt(-10*sqrt(5) + 50)/40, sqrt(5)/40 + 1./8, -sqrt(5)/20 },
|
||||
{ -sqrt(-10*sqrt(5) + 50)/40, -1./8 - sqrt(5)/40, sqrt(5)/20 },
|
||||
{ -sqrt(-10*sqrt(5.0) + 50)/40, sqrt(5.0)/40 + 1./8, -sqrt(5.0)/20 },
|
||||
{ sqrt(-10*sqrt(5.0) + 50)/40, -1./8 - sqrt(5.0)/40, sqrt(5.0)/20 },
|
||||
{ 0, -sqrt(5.0)/10, -sqrt(5.0)/20 },
|
||||
{ 0, sqrt(5.0)/10, sqrt(5.0)/20 },
|
||||
{ sqrt(10*sqrt(5.0) + 50)/40, -1./8 + sqrt(5.0)/40, -sqrt(5.0)/20 },
|
||||
{ -sqrt(10*sqrt(5.0) + 50)/40, -sqrt(5.0)/40 + 1./8, sqrt(5.0)/20 },
|
||||
{ -sqrt(10*sqrt(5.0) + 50)/40, -1./8 + sqrt(5.0)/40, -sqrt(5.0)/20 },
|
||||
{ sqrt(10*sqrt(5.0) + 50)/40, -sqrt(5.0)/40 + 1./8, sqrt(5.0)/20 },
|
||||
{ sqrt(-10*sqrt(5.0) + 50)/40, sqrt(5.0)/40 + 1./8, -sqrt(5.0)/20 },
|
||||
{ -sqrt(-10*sqrt(5.0) + 50)/40, -1./8 - sqrt(5.0)/40, sqrt(5.0)/20 },
|
||||
};
|
||||
|
||||
const double penrose_bcc[PTM_NUM_POINTS_BCC][3] = {
|
||||
constexpr double penrose_bcc[PTM_NUM_POINTS_BCC][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 3./56 + sqrt(3)/28, 3./56 + sqrt(3)/28, 3./56 + sqrt(3)/28 },
|
||||
{ -sqrt(3)/28 - 3./56, 3./56 + sqrt(3)/28, 3./56 + sqrt(3)/28 },
|
||||
{ 3./56 + sqrt(3)/28, 3./56 + sqrt(3)/28, -sqrt(3)/28 - 3./56 },
|
||||
{ -sqrt(3)/28 - 3./56, -sqrt(3)/28 - 3./56, 3./56 + sqrt(3)/28 },
|
||||
{ 3./56 + sqrt(3)/28, -sqrt(3)/28 - 3./56, 3./56 + sqrt(3)/28 },
|
||||
{ -sqrt(3)/28 - 3./56, 3./56 + sqrt(3)/28, -sqrt(3)/28 - 3./56 },
|
||||
{ -sqrt(3)/28 - 3./56, -sqrt(3)/28 - 3./56, -sqrt(3)/28 - 3./56 },
|
||||
{ 3./56 + sqrt(3)/28, -sqrt(3)/28 - 3./56, -sqrt(3)/28 - 3./56 },
|
||||
{ 3./28 + sqrt(3)/14, 0, 0 },
|
||||
{ -sqrt(3)/14 - 3./28, 0, 0 },
|
||||
{ 0, 3./28 + sqrt(3)/14, 0 },
|
||||
{ 0, -sqrt(3)/14 - 3./28, 0 },
|
||||
{ 0, 0, 3./28 + sqrt(3)/14 },
|
||||
{ 0, 0, -sqrt(3)/14 - 3./28 },
|
||||
{ 3./56 + sqrt(3.0)/28, 3./56 + sqrt(3.0)/28, 3./56 + sqrt(3.0)/28 },
|
||||
{ -sqrt(3.0)/28 - 3./56, 3./56 + sqrt(3.0)/28, 3./56 + sqrt(3.0)/28 },
|
||||
{ 3./56 + sqrt(3.0)/28, 3./56 + sqrt(3.0)/28, -sqrt(3.0)/28 - 3./56 },
|
||||
{ -sqrt(3.0)/28 - 3./56, -sqrt(3.0)/28 - 3./56, 3./56 + sqrt(3.0)/28 },
|
||||
{ 3./56 + sqrt(3.0)/28, -sqrt(3.0)/28 - 3./56, 3./56 + sqrt(3.0)/28 },
|
||||
{ -sqrt(3.0)/28 - 3./56, 3./56 + sqrt(3.0)/28, -sqrt(3.0)/28 - 3./56 },
|
||||
{ -sqrt(3.0)/28 - 3./56, -sqrt(3.0)/28 - 3./56, -sqrt(3.0)/28 - 3./56 },
|
||||
{ 3./56 + sqrt(3.0)/28, -sqrt(3.0)/28 - 3./56, -sqrt(3.0)/28 - 3./56 },
|
||||
{ 3./28 + sqrt(3.0)/14, 0, 0 },
|
||||
{ -sqrt(3.0)/14 - 3./28, 0, 0 },
|
||||
{ 0, 3./28 + sqrt(3.0)/14, 0 },
|
||||
{ 0, -sqrt(3.0)/14 - 3./28, 0 },
|
||||
{ 0, 0, 3./28 + sqrt(3.0)/14 },
|
||||
{ 0, 0, -sqrt(3.0)/14 - 3./28 },
|
||||
};
|
||||
|
||||
const double penrose_dcub[PTM_NUM_POINTS_DCUB][3] = {
|
||||
constexpr double penrose_dcub[PTM_NUM_POINTS_DCUB][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 23./(48*(-sqrt(3) + 6*sqrt(2))), 23./(48*(-sqrt(3) + 6*sqrt(2))), 23./(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(48*(-sqrt(3) + 6*sqrt(2))), -23./(-48*sqrt(3) + 288*sqrt(2)), -23./(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ -23./(-48*sqrt(3) + 288*sqrt(2)), -23./(-48*sqrt(3) + 288*sqrt(2)), 23./(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23./(-48*sqrt(3) + 288*sqrt(2)), 23./(48*(-sqrt(3) + 6*sqrt(2))), -23./(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 23./(24*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3) + 6*sqrt(2))), 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 0, 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, -23./(-24*sqrt(3) + 144*sqrt(2)), -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), -23./(-24*sqrt(3) + 144*sqrt(2)), 0 },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 0, -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), -23./(-24*sqrt(3) + 144*sqrt(2)), 0 },
|
||||
{ 0, -23./(-24*sqrt(3) + 144*sqrt(2)), 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 0, 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 0, -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 23./(24*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3) + 6*sqrt(2))), -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0 },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0 },
|
||||
{ 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
};
|
||||
|
||||
const double penrose_dcub_alt1[PTM_NUM_POINTS_DCUB][3] = {
|
||||
constexpr double penrose_dcub_alt1[PTM_NUM_POINTS_DCUB][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 23./(48*(-sqrt(3) + 6*sqrt(2))), -23./(-48*sqrt(3) + 288*sqrt(2)), 23./(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(48*(-sqrt(3) + 6*sqrt(2))), 23./(48*(-sqrt(3) + 6*sqrt(2))), -23./(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ -23./(-48*sqrt(3) + 288*sqrt(2)), -23./(-48*sqrt(3) + 288*sqrt(2)), -23./(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ -23./(-48*sqrt(3) + 288*sqrt(2)), 23./(48*(-sqrt(3) + 6*sqrt(2))), 23./(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 0, 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, -23./(-24*sqrt(3) + 144*sqrt(2)), 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), -23./(-24*sqrt(3) + 144*sqrt(2)), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3) + 6*sqrt(2))), -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 0, -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ 23./(24*(-sqrt(3) + 6*sqrt(2))), 23./(24*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 0, -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ 0, -23./(-24*sqrt(3) + 144*sqrt(2)), -23./(-24*sqrt(3) + 144*sqrt(2)) },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), -23./(-24*sqrt(3) + 144*sqrt(2)), 0 },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 23./(24*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23./(-24*sqrt(3) + 144*sqrt(2)), 0, 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, 23./(24*(-sqrt(3) + 6*sqrt(2))), 23./(24*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), -23./(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ -23./(-48*sqrt(3.0) + 288*sqrt(2.0)), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0 },
|
||||
{ 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ 0, -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)) },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0 },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23./(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))), 23./(24*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
|
||||
const double penrose_dhex[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double penrose_dhex[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 0, 0, 23*sqrt(3)/(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-24*sqrt(3) + 144*sqrt(2)), 0, 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 23*sqrt(2)/(24*(-sqrt(3) + 6*sqrt(2))), 0, 0 },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 0, 0, 23*sqrt(3.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 23*sqrt(2.0)/(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 0 },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
const double penrose_dhex_alt1[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double penrose_dhex_alt1[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-144*sqrt(3) + 864*sqrt(2)) },
|
||||
{ 0, 0, 23*sqrt(3)/(48*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ -23*sqrt(2)/(-24*sqrt(3) + 144*sqrt(2)), 0, 0 },
|
||||
{ 23*sqrt(2)/(24*(-sqrt(3) + 6*sqrt(2))), 0, 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)) },
|
||||
{ 0, 0, 23*sqrt(3.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ -23*sqrt(2.0)/(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 0 },
|
||||
{ 23*sqrt(2.0)/(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
};
|
||||
|
||||
const double penrose_dhex_alt2[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double penrose_dhex_alt2[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, 0, -23*sqrt(3)/(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-24*sqrt(3) + 144*sqrt(2)), 0, 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(24*(-sqrt(3) + 6*sqrt(2))), 0, 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(144*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 0, -23*sqrt(6)/(-72*sqrt(3) + 432*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, 0, -23*sqrt(3.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 0, -23*sqrt(6.0)/(-72*sqrt(3.0) + 432*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
};
|
||||
|
||||
const double penrose_dhex_alt3[PTM_NUM_POINTS_DHEX][3] = {
|
||||
constexpr double penrose_dhex_alt3[PTM_NUM_POINTS_DHEX][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(144*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 0, 0, -23*sqrt(3)/(-48*sqrt(3) + 288*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(24*(-sqrt(3) + 6*sqrt(2))), 0, 0 },
|
||||
{ -23*sqrt(2)/(-24*sqrt(3) + 144*sqrt(2)), 0, 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-48*sqrt(3) + 288*sqrt(2)), 0 },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(3)/(36*(-sqrt(3) + 6*sqrt(2))) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), 23*sqrt(6)/(48*(-sqrt(3) + 6*sqrt(2))), 0 },
|
||||
{ -23*sqrt(2)/(-48*sqrt(3) + 288*sqrt(2)), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 0, 23*sqrt(6)/(72*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 23*sqrt(2)/(48*(-sqrt(3) + 6*sqrt(2))), -23*sqrt(6)/(-144*sqrt(3) + 864*sqrt(2)), -23*sqrt(3)/(-36*sqrt(3) + 216*sqrt(2)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(144*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 0, 0, -23*sqrt(3.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(24*(-sqrt(3.0) + 6*sqrt(2.0))), 0, 0 },
|
||||
{ -23*sqrt(2.0)/(-24*sqrt(3.0) + 144*sqrt(2.0)), 0, 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 0 },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(3.0)/(36*(-sqrt(3.0) + 6*sqrt(2.0))) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), 23*sqrt(6.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), 0 },
|
||||
{ -23*sqrt(2.0)/(-48*sqrt(3.0) + 288*sqrt(2.0)), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 0, 23*sqrt(6.0)/(72*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
{ 23*sqrt(2.0)/(48*(-sqrt(3.0) + 6*sqrt(2.0))), -23*sqrt(6.0)/(-144*sqrt(3.0) + 864*sqrt(2.0)), -23*sqrt(3.0)/(-36*sqrt(3.0) + 216*sqrt(2.0)) },
|
||||
};
|
||||
|
||||
|
||||
const double penrose_graphene[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
constexpr double penrose_graphene[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 2./63 + 4*sqrt(3)/63, 0 },
|
||||
{ sqrt(3)/63 + 2./21, -2*sqrt(3)/63 - 1./63, 0 },
|
||||
{ -2./21 - sqrt(3)/63, -2*sqrt(3)/63 - 1./63, 0 },
|
||||
{ -2./21 - sqrt(3)/63, 1./21 + 2*sqrt(3)/21, 0 },
|
||||
{ sqrt(3)/63 + 2./21, 1./21 + 2*sqrt(3)/21, 0 },
|
||||
{ 2*sqrt(3)/63 + 4./21, 0, 0 },
|
||||
{ sqrt(3)/63 + 2./21, -2*sqrt(3)/21 - 1./21, 0 },
|
||||
{ -2./21 - sqrt(3)/63, -2*sqrt(3)/21 - 1./21, 0 },
|
||||
{ -4./21 - 2*sqrt(3)/63, 0, 0 },
|
||||
{ 0, 2./63 + 4*sqrt(3.0)/63, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, -2*sqrt(3.0)/63 - 1./63, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, -2*sqrt(3.0)/63 - 1./63, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, 1./21 + 2*sqrt(3.0)/21, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, 1./21 + 2*sqrt(3.0)/21, 0 },
|
||||
{ 2*sqrt(3.0)/63 + 4./21, 0, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, -2*sqrt(3.0)/21 - 1./21, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, -2*sqrt(3.0)/21 - 1./21, 0 },
|
||||
{ -4./21 - 2*sqrt(3.0)/63, 0, 0 },
|
||||
};
|
||||
|
||||
const double penrose_graphene_alt1[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
constexpr double penrose_graphene_alt1[PTM_NUM_POINTS_GRAPHENE][3] = {
|
||||
{ 0, 0, 0 },
|
||||
{ -2./21 - sqrt(3)/63, 1./63 + 2*sqrt(3)/63, 0 },
|
||||
{ sqrt(3)/63 + 2./21, 1./63 + 2*sqrt(3)/63, 0 },
|
||||
{ 0, -4*sqrt(3)/63 - 2./63, 0 },
|
||||
{ -4./21 - 2*sqrt(3)/63, 0, 0 },
|
||||
{ -2./21 - sqrt(3)/63, 1./21 + 2*sqrt(3)/21, 0 },
|
||||
{ sqrt(3)/63 + 2./21, 1./21 + 2*sqrt(3)/21, 0 },
|
||||
{ 2*sqrt(3)/63 + 4./21, 0, 0 },
|
||||
{ sqrt(3)/63 + 2./21, -2*sqrt(3)/21 - 1./21, 0 },
|
||||
{ -2./21 - sqrt(3)/63, -2*sqrt(3)/21 - 1./21, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, 1./63 + 2*sqrt(3.0)/63, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, 1./63 + 2*sqrt(3.0)/63, 0 },
|
||||
{ 0, -4*sqrt(3.0)/63 - 2./63, 0 },
|
||||
{ -4./21 - 2*sqrt(3.0)/63, 0, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, 1./21 + 2*sqrt(3.0)/21, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, 1./21 + 2*sqrt(3.0)/21, 0 },
|
||||
{ 2*sqrt(3.0)/63 + 4./21, 0, 0 },
|
||||
{ sqrt(3.0)/63 + 2./21, -2*sqrt(3.0)/21 - 1./21, 0 },
|
||||
{ -2./21 - sqrt(3.0)/63, -2*sqrt(3.0)/21 - 1./21, 0 },
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -32,20 +32,20 @@ static double calculate_interatomic_distance(int type, double scale) {
|
||||
double c[9] = {0,
|
||||
1,
|
||||
1,
|
||||
(7. - 3.5 * sqrt(3)),
|
||||
(7. - 3.5 * sqrt(3.0)),
|
||||
1,
|
||||
1,
|
||||
sqrt(3) * 4. / (6 * sqrt(2) + sqrt(3)),
|
||||
sqrt(3) * 4. / (6 * sqrt(2) + sqrt(3)),
|
||||
-3. / 11 + 6 * sqrt(3) / 11};
|
||||
sqrt(3.0) * 4. / (6 * sqrt(2.0) + sqrt(3.0)),
|
||||
sqrt(3.0) * 4. / (6 * sqrt(2.0) + sqrt(3.0)),
|
||||
-3. / 11 + 6 * sqrt(3.0) / 11};
|
||||
return c[type] / scale;
|
||||
}
|
||||
|
||||
static double calculate_lattice_constant(int type,
|
||||
double interatomic_distance) {
|
||||
assert(type >= 1 && type <= 8);
|
||||
double c[9] = {0, 2 / sqrt(2), 2 / sqrt(2), 2. / sqrt(3), 2 / sqrt(2),
|
||||
1, 4 / sqrt(3), 4 / sqrt(3), sqrt(3)};
|
||||
double c[9] = {0, 2 / sqrt(2.0), 2 / sqrt(2.0), 2. / sqrt(3.0), 2 / sqrt(2.0),
|
||||
1, 4 / sqrt(3.0), 4 / sqrt(3.0), sqrt(3.0)};
|
||||
return c[type] * interatomic_distance;
|
||||
}
|
||||
|
||||
|
||||
@ -21,12 +21,12 @@ namespace ptm {
|
||||
|
||||
const double generator_cubic[24][4] = {
|
||||
{ 1, 0, 0, 0 },
|
||||
{ sqrt(2)/2, sqrt(2)/2, 0, 0 },
|
||||
{ sqrt(2)/2, 0, sqrt(2)/2, 0 },
|
||||
{ sqrt(2)/2, 0, 0, sqrt(2)/2 },
|
||||
{ sqrt(2)/2, 0, 0, -sqrt(2)/2 },
|
||||
{ sqrt(2)/2, 0, -sqrt(2)/2, 0 },
|
||||
{ sqrt(2)/2, -sqrt(2)/2, -0, -0 },
|
||||
{ sqrt(2.0)/2, sqrt(2.0)/2, 0, 0 },
|
||||
{ sqrt(2.0)/2, 0, sqrt(2.0)/2, 0 },
|
||||
{ sqrt(2.0)/2, 0, 0, sqrt(2.0)/2 },
|
||||
{ sqrt(2.0)/2, 0, 0, -sqrt(2.0)/2 },
|
||||
{ sqrt(2.0)/2, 0, -sqrt(2.0)/2, 0 },
|
||||
{ sqrt(2.0)/2, -sqrt(2.0)/2, -0, -0 },
|
||||
{ 0.5, 0.5, 0.5, 0.5 },
|
||||
{ 0.5, 0.5, 0.5, -0.5 },
|
||||
{ 0.5, 0.5, -0.5, 0.5 },
|
||||
@ -36,13 +36,13 @@ const double generator_cubic[24][4] = {
|
||||
{ 0.5, -0.5, -0.5, 0.5 },
|
||||
{ 0.5, -0.5, -0.5, -0.5 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, sqrt(2)/2, sqrt(2)/2, 0 },
|
||||
{ 0, sqrt(2)/2, 0, sqrt(2)/2 },
|
||||
{ 0, sqrt(2)/2, 0, -sqrt(2)/2 },
|
||||
{ 0, sqrt(2)/2, -sqrt(2)/2, 0 },
|
||||
{ 0, sqrt(2.0)/2, sqrt(2.0)/2, 0 },
|
||||
{ 0, sqrt(2.0)/2, 0, sqrt(2.0)/2 },
|
||||
{ 0, sqrt(2.0)/2, 0, -sqrt(2.0)/2 },
|
||||
{ 0, sqrt(2.0)/2, -sqrt(2.0)/2, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, sqrt(2)/2, sqrt(2)/2 },
|
||||
{ 0, 0, sqrt(2)/2, -sqrt(2)/2 },
|
||||
{ 0, 0, sqrt(2.0)/2, sqrt(2.0)/2 },
|
||||
{ 0, 0, sqrt(2.0)/2, -sqrt(2.0)/2 },
|
||||
{ 0, 0, 0, 1 },
|
||||
};
|
||||
|
||||
@ -63,96 +63,96 @@ const double generator_diamond_cubic[12][4] = {
|
||||
|
||||
const double generator_hcp[6][4] = {
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 0.5, 0, 0, sqrt(3)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3)/2 },
|
||||
{ 0, sqrt(3)/2, 0.5, 0 },
|
||||
{ 0, sqrt(3)/2, -0.5, 0 },
|
||||
{ 0.5, 0, 0, sqrt(3.0)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3.0)/2 },
|
||||
{ 0, sqrt(3.0)/2, 0.5, 0 },
|
||||
{ 0, sqrt(3.0)/2, -0.5, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
};
|
||||
|
||||
|
||||
const double generator_hcp_conventional[12][4] = {
|
||||
{ 1, 0, 0, 0 },
|
||||
{ sqrt(3)/2, 0, 0, 0.5 },
|
||||
{ sqrt(3)/2, 0, 0, -0.5 },
|
||||
{ 0.5, 0, 0, sqrt(3)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3)/2 },
|
||||
{ sqrt(3.0)/2, 0, 0, 0.5 },
|
||||
{ sqrt(3.0)/2, 0, 0, -0.5 },
|
||||
{ 0.5, 0, 0, sqrt(3.0)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3.0)/2 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, sqrt(3)/2, 0.5, 0 },
|
||||
{ 0, sqrt(3)/2, -0.5, 0 },
|
||||
{ 0, 0.5, sqrt(3)/2, 0 },
|
||||
{ 0, 0.5, -sqrt(3)/2, 0 },
|
||||
{ 0, sqrt(3.0)/2, 0.5, 0 },
|
||||
{ 0, sqrt(3.0)/2, -0.5, 0 },
|
||||
{ 0, 0.5, sqrt(3.0)/2, 0 },
|
||||
{ 0, 0.5, -sqrt(3.0)/2, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 0, 1 },
|
||||
};
|
||||
|
||||
const double generator_diamond_hexagonal[3][4] = {
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 0.5, 0, 0, sqrt(3)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3)/2 },
|
||||
{ 0.5, 0, 0, sqrt(3.0)/2 },
|
||||
{ 0.5, 0, 0, -sqrt(3.0)/2 },
|
||||
};
|
||||
|
||||
const double generator_icosahedral[60][4] = {
|
||||
{ 1, 0, 0, 0 },
|
||||
{ (1+sqrt(5))/4, 0.5, sqrt(25-10*sqrt(5))/10, sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, 0.5, -sqrt(25-10*sqrt(5))/10, -sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, 1/(1+sqrt(5)), sqrt(10*sqrt(5)+50)/20, -sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, 1/(1+sqrt(5)), -sqrt(10*sqrt(5)+50)/20, sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, 0, sqrt(50-10*sqrt(5))/10, sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, 0, 0, sqrt(5./8-sqrt(5)/8) },
|
||||
{ (1+sqrt(5))/4, 0, 0, -sqrt(5./8-sqrt(5)/8) },
|
||||
{ (1+sqrt(5))/4, 0, -sqrt(50-10*sqrt(5))/10, -sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, -1/(1+sqrt(5)), sqrt(10*sqrt(5)+50)/20, -sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, -1/(1+sqrt(5)), -sqrt(10*sqrt(5)+50)/20, sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, -0.5, sqrt(25-10*sqrt(5))/10, sqrt(50-10*sqrt(5))/20 },
|
||||
{ (1+sqrt(5))/4, -0.5, -sqrt(25-10*sqrt(5))/10, -sqrt(50-10*sqrt(5))/20 },
|
||||
{ 0.5, (1+sqrt(5))/4, sqrt(50-10*sqrt(5))/20, -sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, (1+sqrt(5))/4, -sqrt(50-10*sqrt(5))/20, sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, 0.5, sqrt((5+2*sqrt(5))/20), sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, 0.5, sqrt(25-10*sqrt(5))/10, -sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 0.5, -sqrt(25-10*sqrt(5))/10, sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 0.5, -sqrt((5+2*sqrt(5))/20), -sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, 1/(1+sqrt(5)), sqrt(10*sqrt(5)+50)/20, sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 1/(1+sqrt(5)), -sqrt(10*sqrt(5)+50)/20, -sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 0, sqrt((5+sqrt(5))/10), -sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, 0, sqrt(50-10*sqrt(5))/10, -sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 0, -sqrt(50-10*sqrt(5))/10, sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, 0, -sqrt((5+sqrt(5))/10), sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, -1/(1+sqrt(5)), sqrt(10*sqrt(5)+50)/20, sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, -1/(1+sqrt(5)), -sqrt(10*sqrt(5)+50)/20, -sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, -0.5, sqrt((5+2*sqrt(5))/20), sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, -0.5, sqrt(25-10*sqrt(5))/10, -sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, -0.5, -sqrt(25-10*sqrt(5))/10, sqrt((5+2*sqrt(5))/20) },
|
||||
{ 0.5, -0.5, -sqrt((5+2*sqrt(5))/20), -sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, -(1+sqrt(5))/4, sqrt(50-10*sqrt(5))/20, -sqrt(25-10*sqrt(5))/10 },
|
||||
{ 0.5, -(1+sqrt(5))/4, -sqrt(50-10*sqrt(5))/20, sqrt(25-10*sqrt(5))/10 },
|
||||
{ 1/(1+sqrt(5)), (1+sqrt(5))/4, sqrt(50-10*sqrt(5))/20, sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), (1+sqrt(5))/4, -sqrt(50-10*sqrt(5))/20, -sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), 0.5, sqrt((5+2*sqrt(5))/20), -sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), 0.5, -sqrt((5+2*sqrt(5))/20), sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), 0, sqrt((5+sqrt(5))/10), sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), 0, 0, sqrt(1-1/(2*sqrt(5)+6)) },
|
||||
{ 1/(1+sqrt(5)), 0, 0, -sqrt(1-1/(2*sqrt(5)+6)) },
|
||||
{ 1/(1+sqrt(5)), 0, -sqrt((5+sqrt(5))/10), -sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), -0.5, sqrt((5+2*sqrt(5))/20), -sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), -0.5, -sqrt((5+2*sqrt(5))/20), sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), -(1+sqrt(5))/4, sqrt(50-10*sqrt(5))/20, sqrt(10*sqrt(5)+50)/20 },
|
||||
{ 1/(1+sqrt(5)), -(1+sqrt(5))/4, -sqrt(50-10*sqrt(5))/20, -sqrt(10*sqrt(5)+50)/20 },
|
||||
{ (1+sqrt(5.0))/4, 0.5, sqrt(25-10*sqrt(5.0))/10, sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, 0.5, -sqrt(25-10*sqrt(5.0))/10, -sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, 1/(1+sqrt(5.0)), sqrt(10*sqrt(5.0)+50)/20, -sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, 1/(1+sqrt(5.0)), -sqrt(10*sqrt(5.0)+50)/20, sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, 0, sqrt(50-10*sqrt(5.0))/10, sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, 0, 0, sqrt(5./8-sqrt(5.0)/8) },
|
||||
{ (1+sqrt(5.0))/4, 0, 0, -sqrt(5./8-sqrt(5.0)/8) },
|
||||
{ (1+sqrt(5.0))/4, 0, -sqrt(50-10*sqrt(5.0))/10, -sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, -1/(1+sqrt(5.0)), sqrt(10*sqrt(5.0)+50)/20, -sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, -1/(1+sqrt(5.0)), -sqrt(10*sqrt(5.0)+50)/20, sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, -0.5, sqrt(25-10*sqrt(5.0))/10, sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ (1+sqrt(5.0))/4, -0.5, -sqrt(25-10*sqrt(5.0))/10, -sqrt(50-10*sqrt(5.0))/20 },
|
||||
{ 0.5, (1+sqrt(5.0))/4, sqrt(50-10*sqrt(5.0))/20, -sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, (1+sqrt(5.0))/4, -sqrt(50-10*sqrt(5.0))/20, sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, 0.5, sqrt((5+2*sqrt(5.0))/20), sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, 0.5, sqrt(25-10*sqrt(5.0))/10, -sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 0.5, -sqrt(25-10*sqrt(5.0))/10, sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 0.5, -sqrt((5+2*sqrt(5.0))/20), -sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, 1/(1+sqrt(5.0)), sqrt(10*sqrt(5.0)+50)/20, sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 1/(1+sqrt(5.0)), -sqrt(10*sqrt(5.0)+50)/20, -sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 0, sqrt((5+sqrt(5.0))/10), -sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, 0, sqrt(50-10*sqrt(5.0))/10, -sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 0, -sqrt(50-10*sqrt(5.0))/10, sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, 0, -sqrt((5+sqrt(5.0))/10), sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, -1/(1+sqrt(5.0)), sqrt(10*sqrt(5.0)+50)/20, sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, -1/(1+sqrt(5.0)), -sqrt(10*sqrt(5.0)+50)/20, -sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, -0.5, sqrt((5+2*sqrt(5.0))/20), sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, -0.5, sqrt(25-10*sqrt(5.0))/10, -sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, -0.5, -sqrt(25-10*sqrt(5.0))/10, sqrt((5+2*sqrt(5.0))/20) },
|
||||
{ 0.5, -0.5, -sqrt((5+2*sqrt(5.0))/20), -sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, -(1+sqrt(5.0))/4, sqrt(50-10*sqrt(5.0))/20, -sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 0.5, -(1+sqrt(5.0))/4, -sqrt(50-10*sqrt(5.0))/20, sqrt(25-10*sqrt(5.0))/10 },
|
||||
{ 1/(1+sqrt(5.0)), (1+sqrt(5.0))/4, sqrt(50-10*sqrt(5.0))/20, sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), (1+sqrt(5.0))/4, -sqrt(50-10*sqrt(5.0))/20, -sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), 0.5, sqrt((5+2*sqrt(5.0))/20), -sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), 0.5, -sqrt((5+2*sqrt(5.0))/20), sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), 0, sqrt((5+sqrt(5.0))/10), sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), 0, 0, sqrt(1-1/(2*sqrt(5.0)+6)) },
|
||||
{ 1/(1+sqrt(5.0)), 0, 0, -sqrt(1-1/(2*sqrt(5.0)+6)) },
|
||||
{ 1/(1+sqrt(5.0)), 0, -sqrt((5+sqrt(5.0))/10), -sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), -0.5, sqrt((5+2*sqrt(5.0))/20), -sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), -0.5, -sqrt((5+2*sqrt(5.0))/20), sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), -(1+sqrt(5.0))/4, sqrt(50-10*sqrt(5.0))/20, sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 1/(1+sqrt(5.0)), -(1+sqrt(5.0))/4, -sqrt(50-10*sqrt(5.0))/20, -sqrt(10*sqrt(5.0)+50)/20 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, (1+sqrt(5))/4, sqrt(5./8-sqrt(5)/8), 0 },
|
||||
{ 0, (1+sqrt(5))/4, sqrt(50-10*sqrt(5))/20, -sqrt(50-10*sqrt(5))/10 },
|
||||
{ 0, (1+sqrt(5))/4, -sqrt(50-10*sqrt(5))/20, sqrt(50-10*sqrt(5))/10 },
|
||||
{ 0, (1+sqrt(5))/4, -sqrt(5./8-sqrt(5)/8), 0 },
|
||||
{ 0, 0.5, sqrt((5+2*sqrt(5))/20), sqrt(50-10*sqrt(5))/10 },
|
||||
{ 0, 0.5, sqrt(25-10*sqrt(5))/10, sqrt((5+sqrt(5))/10) },
|
||||
{ 0, 0.5, -sqrt(25-10*sqrt(5))/10, -sqrt((5+sqrt(5))/10) },
|
||||
{ 0, 0.5, -sqrt((5+2*sqrt(5))/20), -sqrt(50-10*sqrt(5))/10 },
|
||||
{ 0, 1/(1+sqrt(5)), sqrt(1-1/(2*sqrt(5)+6)), 0 },
|
||||
{ 0, 1/(1+sqrt(5)), sqrt(10*sqrt(5)+50)/20, -sqrt((5+sqrt(5))/10) },
|
||||
{ 0, 1/(1+sqrt(5)), -sqrt(10*sqrt(5)+50)/20, sqrt((5+sqrt(5))/10) },
|
||||
{ 0, 1/(1+sqrt(5)), -sqrt(1-1/(2*sqrt(5)+6)), 0 },
|
||||
{ 0, 0, sqrt((5+sqrt(5))/10), -sqrt(50-10*sqrt(5))/10 },
|
||||
{ 0, 0, sqrt(50-10*sqrt(5))/10, sqrt((5+sqrt(5))/10) },
|
||||
{ 0, (1+sqrt(5.0))/4, sqrt(5./8-sqrt(5.0)/8), 0 },
|
||||
{ 0, (1+sqrt(5.0))/4, sqrt(50-10*sqrt(5.0))/20, -sqrt(50-10*sqrt(5.0))/10 },
|
||||
{ 0, (1+sqrt(5.0))/4, -sqrt(50-10*sqrt(5.0))/20, sqrt(50-10*sqrt(5.0))/10 },
|
||||
{ 0, (1+sqrt(5.0))/4, -sqrt(5./8-sqrt(5.0)/8), 0 },
|
||||
{ 0, 0.5, sqrt((5+2*sqrt(5.0))/20), sqrt(50-10*sqrt(5.0))/10 },
|
||||
{ 0, 0.5, sqrt(25-10*sqrt(5.0))/10, sqrt((5+sqrt(5.0))/10) },
|
||||
{ 0, 0.5, -sqrt(25-10*sqrt(5.0))/10, -sqrt((5+sqrt(5.0))/10) },
|
||||
{ 0, 0.5, -sqrt((5+2*sqrt(5.0))/20), -sqrt(50-10*sqrt(5.0))/10 },
|
||||
{ 0, 1/(1+sqrt(5.0)), sqrt(1-1/(2*sqrt(5.0)+6)), 0 },
|
||||
{ 0, 1/(1+sqrt(5.0)), sqrt(10*sqrt(5.0)+50)/20, -sqrt((5+sqrt(5.0))/10) },
|
||||
{ 0, 1/(1+sqrt(5.0)), -sqrt(10*sqrt(5.0)+50)/20, sqrt((5+sqrt(5.0))/10) },
|
||||
{ 0, 1/(1+sqrt(5.0)), -sqrt(1-1/(2*sqrt(5.0)+6)), 0 },
|
||||
{ 0, 0, sqrt((5+sqrt(5.0))/10), -sqrt(50-10*sqrt(5.0))/10 },
|
||||
{ 0, 0, sqrt(50-10*sqrt(5.0))/10, sqrt((5+sqrt(5.0))/10) },
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -119,30 +119,30 @@ const int pre_container_chunk_size = 1024;
|
||||
|
||||
/** If a point is within this distance of a cutting plane, then the code
|
||||
* assumes that point exactly lies on the plane. */
|
||||
const double tolerance = 1e-11;
|
||||
constexpr double tolerance = 1e-11;
|
||||
|
||||
/** If a point is within this distance of a cutting plane, then the code stores
|
||||
* whether this point is inside, outside, or exactly on the cutting plane in
|
||||
* the marginal cases buffer, to prevent the test giving a different result on
|
||||
* a subsequent evaluation due to floating point rounding errors. */
|
||||
const double tolerance2 = 2e-11;
|
||||
constexpr double tolerance2 = 2e-11;
|
||||
|
||||
/** The square of the tolerance, used when deciding whether some squared
|
||||
* quantities are large enough to be used. */
|
||||
const double tolerance_sq = tolerance * tolerance;
|
||||
constexpr double tolerance_sq = tolerance * tolerance;
|
||||
|
||||
/** A large number that is used in the computation. */
|
||||
const double large_number = 1e30;
|
||||
constexpr double large_number = 1e30;
|
||||
|
||||
/** A radius to use as a placeholder when no other information is available. */
|
||||
const double default_radius = 0.5;
|
||||
constexpr double default_radius = 0.5;
|
||||
|
||||
/** The maximum number of shells of periodic images to test over. */
|
||||
const int max_unit_voro_shells = 10;
|
||||
|
||||
/** A guess for the optimal number of particles per block, used to set up the
|
||||
* container grid. */
|
||||
const double optimal_particles = 5.6;
|
||||
constexpr double optimal_particles = 5.6;
|
||||
|
||||
/** If this is set to 1, then the code reports any instances of particles being
|
||||
* put outside of the container geometry. */
|
||||
|
||||
@ -202,10 +202,10 @@ Scalar Superpose3D<Scalar, ConstArrayOfCoords, ConstArray>::Superpose(
|
||||
// Scalar P[4][4];
|
||||
// ...because most matrix solvers expect arrays in pointer-to-pointer format.
|
||||
// (a different format). Below I create a fixed size matrix P in this format.
|
||||
Scalar _P[4 * 4]; // Contiguous 1D array for storing contents of the 2D P array
|
||||
Scalar _PF[4 * 4]; // Contiguous 1D array for storing contents of the 2D P array
|
||||
Scalar *P[4]; // This version of P has has ** (pointer-to-pointer) format.
|
||||
for (int i = 0; i < 4; i++) // We must make sure that
|
||||
P[i] = &(_P[4 * i]); // P[i] points to the appropriate location in memory
|
||||
P[i] = &(_PF[4 * i]); // P[i] points to the appropriate location in memory
|
||||
|
||||
// Now fill the P array
|
||||
for (int i = 0; i < 3; i++)
|
||||
|
||||
@ -215,7 +215,7 @@ void FixPIMD::init()
|
||||
double beta = 1.0 / (Boltzmann * nhc_temp);
|
||||
double _fbond = 1.0 * np / (beta * beta * hbar * hbar);
|
||||
|
||||
omega_np = sqrt(np) / (hbar * beta) * sqrt(force->mvv2e);
|
||||
omega_np = sqrt((double)np) / (hbar * beta) * sqrt(force->mvv2e);
|
||||
fbond = -_fbond * force->mvv2e;
|
||||
|
||||
if (universe->me == 0)
|
||||
|
||||
@ -2687,7 +2687,7 @@ void FixShake::stats()
|
||||
// print stats only for non-zero counts
|
||||
|
||||
if (comm->me == 0) {
|
||||
const int width = log10((MAX(MAX(1,nb),na)))+2;
|
||||
const int width = log10((double)(MAX(MAX(1,nb),na)))+2;
|
||||
auto mesg = fmt::format("{} stats (type/ave/delta/count) on step {}\n",
|
||||
utils::uppercase(style), update->ntimestep);
|
||||
for (int i = 1; i < nb; i++) {
|
||||
|
||||
@ -156,8 +156,8 @@ ComputeOrientOrderAtom::ComputeOrientOrderAtom(LAMMPS *lmp, int narg, char **arg
|
||||
memory->create(qnormfac2, nqlist, "orientorder/atom:qnormfac2");
|
||||
for (int il = 0; il < nqlist; il++) {
|
||||
int l = qlist[il];
|
||||
qnormfac[il] = sqrt(MY_4PI / (2 * l + 1));
|
||||
qnormfac2[il] = sqrt(2 * l + 1);
|
||||
qnormfac[il] = sqrt(MY_4PI / (2.0 * l + 1.0));
|
||||
qnormfac2[il] = sqrt(2.0 * l + 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -267,7 +267,7 @@ template <int INTEGRATOR, bool ABCFLAG> int MinFire::run_iterate(int maxiter)
|
||||
}
|
||||
|
||||
// calculate the factor abc, used for abcfire
|
||||
abc = (1-pow(1-alpha, (ntimestep-last_negative)));
|
||||
abc = (1.0-pow(1.0-alpha, (double)(ntimestep-last_negative)));
|
||||
scale1 = (1.0 - alpha) / abc ;
|
||||
if (fdotfall <= 1e-20) scale2 = 0.0;
|
||||
else scale2 = (alpha * sqrt(vdotvall/fdotfall)) / abc;
|
||||
|
||||
@ -399,7 +399,7 @@ TEST_F(MoleculeFileTest, bonds)
|
||||
EXPECT_DOUBLE_EQ(mol->com[0], 1.0);
|
||||
EXPECT_DOUBLE_EQ(mol->com[1], 0.5);
|
||||
EXPECT_DOUBLE_EQ(mol->com[2], 0.5);
|
||||
EXPECT_DOUBLE_EQ(mol->maxextent, sqrt(2));
|
||||
EXPECT_DOUBLE_EQ(mol->maxextent, sqrt(2.0));
|
||||
EXPECT_EQ(mol->comatom, 1);
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user