6#ifndef gbLAB_LatticeVector_h_
7#define gbLAB_LatticeVector_h_
18 class LatticeVector:
public Eigen::Matrix<typename LatticeCore<dim>::IntScalarType,dim,1>
20 typedef Eigen::Matrix<typename LatticeCore<dim>::IntScalarType,dim,1>
BaseType;
54 typename std::enable_if<dm==2,ReciprocalLatticeDirection<dm>>::type
57 assert(&
lattice == &other.
lattice &&
"LatticeVectors belong to different Lattices.");
61 typename std::enable_if<dm==3,ReciprocalLatticeDirection<dm>>::type
64 assert(&
lattice == &other.
lattice &&
"LatticeVectors belong to different Lattices.");
69 typename std::enable_if<dm==2,ReciprocalLatticeDirection<dm>>::type
75 typename std::enable_if<dm==3,ReciprocalLatticeDirection<dm>>::type
82 typename std::enable_if<dm==2,void>::type
86 typename std::enable_if<dm==2,void>::type
90 typename std::enable_if<dm==3,void>::type
94 typename std::enable_if<dm==3,void>::type
VectorDimD cartesian() const
static std::enable_if< dm==3, void >::type modulo(VectorDimD &input, const std::vector< LatticeVector< dim > > &basis, const VectorDimD &shift=VectorDimD ::Zero())
LatticeCore< dim >::MatrixDimD MatrixDimD
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==3, ReciprocalLatticeDirection< dm > >::type cross() const
LatticeCore< dim >::MatrixDimI MatrixDimI
const Lattice< dim > & lattice
LatticeVector< dim > & operator-=(const LatticeVector< dim > &other)
LatticeCore< dim >::VectorDimD VectorDimD
LatticeVector< dim > operator+(const LatticeVector< dim > &other) const
LatticeVector< dim > operator*(const IntScalarType &scalar) const
LatticeVector< dim > & operator+=(const LatticeVector< dim > &other)
static std::enable_if< dm==3, 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< dm > &other) const
IntScalarType dot(const ReciprocalLatticeVector< dim > &other) const
LatticeCore< dim >::VectorDimI VectorDimI
LatticeVector(const LatticeVector< dim > &other)=default
std::enable_if< dm==2, ReciprocalLatticeDirection< dm > >::type cross() const
LatticeCore< dim >::IntScalarType IntScalarType
LatticeVector(LatticeVector< dim > &&other)=default
std::enable_if< dm==3, ReciprocalLatticeDirection< dm > >::type cross(const LatticeVector< dm > &other) const
LatticeVector< dim > & operator=(const LatticeVector< dim > &other)
LatticeVector< dim > operator-(const LatticeVector< dim > &other) const
Eigen::Matrix< typename LatticeCore< dim >::IntScalarType, dim, 1 > BaseType
LatticeVector< dim > operator*(const typename LatticeVector< dim >::IntScalarType &scalar, const LatticeVector< dim > &L)
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