7#ifndef gbLAB_Lattice_h_
8#define gbLAB_Lattice_h_
17#include <unordered_map>
90 const bool& useRLLL=
false)
const;
94 const double& magnitudeTol,
95 const double& directionTol= FLT_EPSILON)
const;
98 const double& magnitudeTol,
99 const double& directionTol= FLT_EPSILON)
const;
110 const bool& useRLLL=
false)
const;
131 typename std::enable_if<dm==3,std::vector<MatrixDimD>>::type
138 typename std::enable_if<dm==2,std::vector<MatrixDimD>>::type
140 const int& maxDen=50,
141 const int& N=30)
const;
164 typename std::enable_if<dm==2,std::vector<MatrixDimD>>::type
166 const double& maxStrain,
167 const int& maxDen=50,
168 const int& N=30)
const;
180 typename std::enable_if<dm==3,std::vector<LatticeVector<dim>>>::type
193 typename std::enable_if<dm==2,std::vector<LatticeVector<dim>>>::type
long long int LongIntType
typename LatticeCore< dim >::VectorDimD VectorDimD
RationalReciprocalLatticeDirection< dim > rationalReciprocalLatticeDirection(const VectorDimD &d, const typename BestRationalApproximation::LongIntType &maxDen, const double &magnitudeTol, const double &directionTol=FLT_EPSILON) const
double interPlanarSpacing(const ReciprocalLatticeDirection< dim > &r) const
Computes the interplanar spacing.
const MatrixDimD latticeBasis
const MatrixDimD reciprocalBasis
std::enable_if< dm==3, std::vector< MatrixDimD > >::type generateCoincidentLattices(const ReciprocalLatticeDirection< dim > &rd, const double &maxDen=100, const int &N=100) const
std::vector< ReciprocalLatticeDirection< dim > > directionOrthogonalReciprocalLatticeBasis(const LatticeDirection< dim > &l, const bool &useRLLL=false) const
Given a lattice direction , this function returns a direction-orthogonal reciprocal lattice basis ,...
typename LatticeCore< dim >::IntScalarType IntScalarType
typename LatticeCore< dim >::MatrixDimD MatrixDimD
ReciprocalLatticeVector< dim > reciprocalLatticeVector(const VectorDimD &p) const
Returns a reciprocal lattice vector (in the dual of the current lattice) with Cartesian coordinates p...
std::enable_if< dm==3, std::vector< LatticeVector< dim > > >::type box(const std::vector< LatticeVector< dim > > &boxVectors, const std::string &filename="") const
std::vector< LatticeDirection< dim > > planeParallelLatticeBasis(const ReciprocalLatticeDirection< dim > &l, const bool &useRLLL=false) const
Given a reciprocal lattice direction , this function returns a plane-parallel lattice basis ,...
typename LatticeCore< dim >::MatrixDimI MatrixDimI
static constexpr double roundTol
LatticeVector< dim > latticeVector(const VectorDimD &p) const
Returns a lattice vector (in the current lattice) with Cartesian coordinates p.
RationalLatticeDirection< dim > rationalLatticeDirection(const VectorDimD &d, const typename BestRationalApproximation::LongIntType &maxDen, const double &magnitudeTol, const double &directionTol=FLT_EPSILON) const
typename LatticeCore< dim >::VectorDimI VectorDimI
ReciprocalLatticeDirection< dim > reciprocalLatticeDirection(const VectorDimD &d, const double &tol=FLT_EPSILON) const
Returns the reciprocal lattice direction along a vector.
LatticeDirection< dim > latticeDirection(const VectorDimD &d, const double &tol=FLT_EPSILON) const
Returns the lattice direction along a vector.
A class template that implements a counter of the number of instances of Derived type that are create...
Eigen::Matrix< double, dim, dim > MatrixDimD
Eigen::Matrix< IntScalarType, dim, dim > MatrixDimI
Eigen::Matrix< double, dim, 1 > VectorDimD
long long int IntScalarType
Eigen::Matrix< IntScalarType, dim, 1 > VectorDimI