6#ifndef gbLAB_LatticeVector_h_
7#define gbLAB_LatticeVector_h_
18 :
public Eigen::Matrix<typename LatticeCore<dim>::IntScalarType, dim, 1> {
19 typedef Eigen::Matrix<typename LatticeCore<dim>::IntScalarType, dim, 1>
52 template <
int dm = dim>
53 typename std::enable_if<dm == 2, ReciprocalLatticeDirection<dm>>::type
56 "LatticeVectors belong to different Lattices.");
60 template <
int dm = dim>
61 typename std::enable_if<dm == 3, ReciprocalLatticeDirection<dm>>::type
64 "LatticeVectors belong to different Lattices.");
70 template <
int dm = dim>
71 typename std::enable_if<dm == 2, ReciprocalLatticeDirection<dm>>::type
76 template <
int dm = dim>
77 typename std::enable_if<dm == 3, ReciprocalLatticeDirection<dm>>::type
83 template <
int dm = dim>
84 typename std::enable_if<dm == 2, void>::type
static modulo(
88 template <
int dm = dim>
89 typename std::enable_if<dm == 2, void>::type
static modulo(
93 template <
int dm = dim>
94 typename std::enable_if<dm == 3, void>::type
static modulo(
98 template <
int dm = dim>
99 typename std::enable_if<dm == 3, void>::type
static modulo(
101 const VectorDimD &shift = VectorDimD ::Zero());
const Lattice< dim > & lattice
LatticeVector(LatticeVector< dim > &&other)=default
std::enable_if< dm==3, ReciprocalLatticeDirection< dm > >::type cross() const
Eigen::Matrix< typename LatticeCore< dim >::IntScalarType, dim, 1 > BaseType
IntScalarType dot(const ReciprocalLatticeVector< dim > &other) const
LatticeCore< dim >::VectorDimI VectorDimI
LatticeCore< dim >::MatrixDimI MatrixDimI
std::enable_if< dm==2, ReciprocalLatticeDirection< dm > >::type cross(const LatticeVector< dm > &other) const
LatticeVector< dim > & operator-=(const LatticeVector< dim > &other)
static std::enable_if< dm==2, void >::type modulo(LatticeVector< dim > &input, const std::vector< LatticeVector< dim > > &basis, const VectorDimD &shift=VectorDimD::Zero())
std::enable_if< dm==2, ReciprocalLatticeDirection< dm > >::type cross() const
LatticeVector(const LatticeVector< dim > &other)=default
LatticeCore< dim >::IntScalarType IntScalarType
std::enable_if< dm==3, ReciprocalLatticeDirection< dm > >::type cross(const LatticeVector< dm > &other) const
LatticeCore< dim >::MatrixDimD MatrixDimD
static std::enable_if< dm==3, void >::type modulo(VectorDimD &input, const std::vector< LatticeVector< dim > > &basis, const VectorDimD &shift=VectorDimD ::Zero())
LatticeCore< dim >::VectorDimD VectorDimD
LatticeVector< dim > & operator+=(const LatticeVector< dim > &other)
LatticeVector< dim > operator-(const LatticeVector< dim > &other) const
LatticeVector< dim > operator*(const IntScalarType &scalar) const
LatticeVector< dim > operator+(const LatticeVector< dim > &other) const
static std::enable_if< dm==3, void >::type modulo(LatticeVector< dim > &input, const std::vector< LatticeVector< dim > > &basis, const VectorDimD &shift=VectorDimD::Zero())
LatticeVector< dim > & operator=(const LatticeVector< dim > &other)
VectorDimD cartesian() const
LatticeVector< dim > operator*(const typename LatticeVector< dim >::IntScalarType &scalar, const LatticeVector< dim > &L)
Eigen::Matrix< IntScalarType, dim, 1 > VectorDimI
long long int IntScalarType
Eigen::Matrix< IntScalarType, dim, dim > MatrixDimI
Eigen::Matrix< double, dim, 1 > VectorDimD
Eigen::Matrix< double, dim, dim > MatrixDimD