diff --git a/lib/lepton/include/lepton/Operation.h b/lib/lepton/include/lepton/Operation.h index 165a56b332..d473b630a5 100644 --- a/lib/lepton/include/lepton/Operation.h +++ b/lib/lepton/include/lepton/Operation.h @@ -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}; diff --git a/src/BPM/bond_bpm_rotational.cpp b/src/BPM/bond_bpm_rotational.cpp index 3085488ef9..ac29c0e376 100644 --- a/src/BPM/bond_bpm_rotational.cpp +++ b/src/BPM/bond_bpm_rotational.cpp @@ -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); diff --git a/src/EXTRA-FIX/fix_rhok.cpp b/src/EXTRA-FIX/fix_rhok.cpp index 72a0775359..2f3e6c6bb3 100644 --- a/src/EXTRA-FIX/fix_rhok.cpp +++ b/src/EXTRA-FIX/fix_rhok.cpp @@ -109,7 +109,7 @@ void FixRhok::init() } MPI_Allreduce( &nThisLocal, &mNThis, 1, MPI_INT, MPI_SUM, world ); - mSqrtNThis = sqrt( mNThis ); + mSqrtNThis = sqrt( (double)mNThis ); } /* ---------------------------------------------------------------------- */ diff --git a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp index 1c4600b68e..d8f0d798e4 100644 --- a/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp +++ b/src/INTERLAYER/pair_kolmogorov_crespi_z.cpp @@ -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); diff --git a/src/INTERLAYER/pair_lebedeva_z.cpp b/src/INTERLAYER/pair_lebedeva_z.cpp index 8e97e553fd..b38900ad14 100644 --- a/src/INTERLAYER/pair_lebedeva_z.cpp +++ b/src/INTERLAYER/pair_lebedeva_z.cpp @@ -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; } } diff --git a/src/KSPACE/msm.cpp b/src/KSPACE/msm.cpp index d9c328fbfc..041a5d5242 100644 --- a/src/KSPACE/msm.cpp +++ b/src/KSPACE/msm.cpp @@ -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--; diff --git a/src/MANYBODY/pair_extep.cpp b/src/MANYBODY/pair_extep.cpp index 6a3b302fc1..755b4d0132 100644 --- a/src/MANYBODY/pair_extep.cpp +++ b/src/MANYBODY/pair_extep.cpp @@ -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) */ diff --git a/src/MANYBODY/pair_meam_spline.h b/src/MANYBODY/pair_meam_spline.h index 3fec521109..ee09b045cf 100644 --- a/src/MANYBODY/pair_meam_spline.h +++ b/src/MANYBODY/pair_meam_spline.h @@ -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; diff --git a/src/MISC/fix_imd.cpp b/src/MISC/fix_imd.cpp index d979766a5d..00a64d1614 100644 --- a/src/MISC/fix_imd.cpp +++ b/src/MISC/fix_imd.cpp @@ -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) diff --git a/src/ML-IAP/mliap_model_quadratic.cpp b/src/ML-IAP/mliap_model_quadratic.cpp index e6ad3955cb..79eb81f093 100644 --- a/src/ML-IAP/mliap_model_quadratic.cpp +++ b/src/ML-IAP/mliap_model_quadratic.cpp @@ -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; } diff --git a/src/ML-IAP/mliap_so3.cpp b/src/ML-IAP/mliap_so3.cpp index 916b8cfcf5..72ca466ab3 100644 --- a/src/ML-IAP/mliap_so3.cpp +++ b/src/ML-IAP/mliap_so3.cpp @@ -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]; } } diff --git a/src/ML-SNAP/pair_snap.cpp b/src/ML-SNAP/pair_snap.cpp index 7e0d75cde4..c9264d2bba 100644 --- a/src/ML-SNAP/pair_snap.cpp +++ b/src/ML-SNAP/pair_snap.cpp @@ -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) { diff --git a/src/PTM/ptm_alt_templates.h b/src/PTM/ptm_alt_templates.h index 7eb8ba25af..dfaf279ac3 100644 --- a/src/PTM/ptm_alt_templates.h +++ b/src/PTM/ptm_alt_templates.h @@ -16,114 +16,114 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #include -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 diff --git a/src/PTM/ptm_deformation_gradient.h b/src/PTM/ptm_deformation_gradient.h index 07a7fdd23b..5305d54d19 100644 --- a/src/PTM/ptm_deformation_gradient.h +++ b/src/PTM/ptm_deformation_gradient.h @@ -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 }, }; } diff --git a/src/PTM/ptm_index.cpp b/src/PTM/ptm_index.cpp index 453d79dfde..6da8370870 100644 --- a/src/PTM/ptm_index.cpp +++ b/src/PTM/ptm_index.cpp @@ -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; } diff --git a/src/PTM/ptm_quat.cpp b/src/PTM/ptm_quat.cpp index c62ec0b9ed..0141768389 100644 --- a/src/PTM/ptm_quat.cpp +++ b/src/PTM/ptm_quat.cpp @@ -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) }, }; diff --git a/src/PTM/ptm_voronoi_config.h b/src/PTM/ptm_voronoi_config.h index 44a0d89d14..a57697c4f0 100644 --- a/src/PTM/ptm_voronoi_config.h +++ b/src/PTM/ptm_voronoi_config.h @@ -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. */ diff --git a/src/REACTION/superpose3d.h b/src/REACTION/superpose3d.h index 32e48db9da..be960d5c07 100644 --- a/src/REACTION/superpose3d.h +++ b/src/REACTION/superpose3d.h @@ -202,10 +202,10 @@ Scalar Superpose3D::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++) diff --git a/src/REPLICA/fix_pimd.cpp b/src/REPLICA/fix_pimd.cpp index 40e203d3c2..5daff2d643 100644 --- a/src/REPLICA/fix_pimd.cpp +++ b/src/REPLICA/fix_pimd.cpp @@ -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) diff --git a/src/RIGID/fix_shake.cpp b/src/RIGID/fix_shake.cpp index 1678a36e02..e4a48e62d9 100644 --- a/src/RIGID/fix_shake.cpp +++ b/src/RIGID/fix_shake.cpp @@ -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++) { diff --git a/src/compute_orientorder_atom.cpp b/src/compute_orientorder_atom.cpp index 7821d0683e..c4b3bb8fb5 100644 --- a/src/compute_orientorder_atom.cpp +++ b/src/compute_orientorder_atom.cpp @@ -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); } } diff --git a/src/min_fire.cpp b/src/min_fire.cpp index df8e952b69..1f24ea5a15 100644 --- a/src/min_fire.cpp +++ b/src/min_fire.cpp @@ -267,7 +267,7 @@ template 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; diff --git a/unittest/formats/test_molecule_file.cpp b/unittest/formats/test_molecule_file.cpp index 6940908109..2f4336ab8a 100644 --- a/unittest/formats/test_molecule_file.cpp +++ b/unittest/formats/test_molecule_file.cpp @@ -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(); }