oILAB
Loading...
Searching...
No Matches
ReciprocalLatticeVector.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#ifndef gbLAB_ReciprocalLatticeVectorBase_h_
7#define gbLAB_ReciprocalLatticeVectorBase_h_
8
9#include "LatticeModule.h"
10
11namespace oILAB {
12template <int dim>
14 : public Eigen::Matrix<typename LatticeCore<dim>::IntScalarType, dim, 1> {
15 typedef Eigen::Matrix<typename LatticeCore<dim>::IntScalarType, dim, 1>
17 BaseType &base();
18 const BaseType &base() const;
19
20public:
26
28
34
39 operator+(const ReciprocalLatticeVector<dim> &other) const;
43 operator-(const ReciprocalLatticeVector<dim> &other) const;
47 IntScalarType dot(const LatticeVector<dim> &other) const;
48 IntScalarType dot(const LatticeDirection<dim> &other) const;
49 VectorDimD cartesian() const;
53
54 template <int dm = dim>
55 typename std::enable_if<dm == 2, LatticeDirection<dim>>::type
56 cross(const ReciprocalLatticeVector<dim> &other) const;
57
58 template <int dm = dim>
59 typename std::enable_if<dm == 2, LatticeDirection<dim>>::type cross() const;
60
61 template <int dm = dim>
62 typename std::enable_if<dm == 3, LatticeDirection<dim>>::type
64
65 template <int dm = dim>
66 typename std::enable_if<dm == 3, LatticeDirection<dim>>::type cross() const;
67 };
68
69 template<int dim>
71 template<int dim>
73
74 } // namespace oILAB
75#endif
Lattice class.
Definition Lattice.h:31
LatticeVector class.
LatticeCore< dim >::VectorDimI VectorDimI
ReciprocalLatticeVector(ReciprocalLatticeVector< dim > &&other)=default
IntScalarType closestPlaneIndexOfPoint(const VectorDimD &P) const
LatticeCore< dim >::VectorDimD VectorDimD
ReciprocalLatticeVector< dim > & operator+=(const ReciprocalLatticeVector< dim > &other)
ReciprocalLatticeVector< dim > operator*(const IntScalarType &scalar) const
LatticeCore< dim >::MatrixDimI MatrixDimI
ReciprocalLatticeVector< dim > operator-(const ReciprocalLatticeVector< dim > &other) const
ReciprocalLatticeVector< dim > operator+(const ReciprocalLatticeVector< dim > &other) const
std::enable_if< dm==2, LatticeDirection< dim > >::type cross() const
IntScalarType dot(const LatticeVector< dim > &other) const
std::enable_if< dm==3, LatticeDirection< dim > >::type cross() const
ReciprocalLatticeVector< dim > & operator-=(const ReciprocalLatticeVector< dim > &other)
IntScalarType planeIndexOfPoint(const VectorDimD &P) const
std::enable_if< dm==3, LatticeDirection< dim > >::type cross(const ReciprocalLatticeVector< dim > &other) const
ReciprocalLatticeVector< dim > & operator=(const ReciprocalLatticeVector< dim > &other)
Eigen::Matrix< typename LatticeCore< dim >::IntScalarType, dim, 1 > BaseType
LatticeCore< dim >::MatrixDimD MatrixDimD
ReciprocalLatticeVector(const ReciprocalLatticeVector< dim > &other)=default
LatticeCore< dim >::IntScalarType IntScalarType
LatticeVector< dim > operator*(const typename LatticeVector< dim >::IntScalarType &scalar, const LatticeVector< dim > &L)
Eigen::Matrix< IntScalarType, dim, 1 > VectorDimI
Definition LatticeCore.h:23
long long int IntScalarType
Definition LatticeCore.h:22
Eigen::Matrix< IntScalarType, dim, dim > MatrixDimI
Definition LatticeCore.h:24
Eigen::Matrix< double, dim, 1 > VectorDimD
Definition LatticeCore.h:20
Eigen::Matrix< double, dim, dim > MatrixDimD
Definition LatticeCore.h:21
LatticeDirection class.