oILAB
Loading...
Searching...
No Matches
LatticeCore.h
Go to the documentation of this file.
1/* This file is part of gbLAB.
2 *
3 * gbLAB is distributed without any warranty under the MIT License.
4 */
5
6
7#ifndef gbLAB_LatticeCore_h_
8#define gbLAB_LatticeCore_h_
9
10#include <iostream>
11#include <cfloat> // FLT_EPSILON
12#include <Eigen/Dense>
13#include <IntegerMath.h>
14
15
16namespace gbLAB
17{
18 template <int dim>
20 {
21 static_assert(dim>0,"dim must be > 0.");
22 static constexpr double roundTol=FLT_EPSILON;
23
24 typedef Eigen::Matrix< double,dim,1> VectorDimD;
25 typedef Eigen::Matrix<double,dim,dim> MatrixDimD;
26 typedef long long int IntScalarType;
27 typedef Eigen::Matrix<IntScalarType,dim,1> VectorDimI;
28 typedef Eigen::Matrix<IntScalarType,dim,dim> MatrixDimI;
29
36
44 static VectorDimI integerCoordinates(const VectorDimD& d,const MatrixDimD& invA);
45 };
46}
47#endif
static VectorDimI rationalApproximation(VectorDimD v)
Approximates a direction in terms of integer coordinates.
static VectorDimI integerCoordinates(const VectorDimD &d, const MatrixDimD &invA)
Returns the integer coordinates of a vector with respect to a lattices with structure matrix .
Eigen::Matrix< double, dim, dim > MatrixDimD
Definition LatticeCore.h:25
Eigen::Matrix< IntScalarType, dim, dim > MatrixDimI
Definition LatticeCore.h:28
static constexpr double roundTol
Definition LatticeCore.h:22
Eigen::Matrix< double, dim, 1 > VectorDimD
Definition LatticeCore.h:24
long long int IntScalarType
Definition LatticeCore.h:26
Eigen::Matrix< IntScalarType, dim, 1 > VectorDimI
Definition LatticeCore.h:27