8#ifndef model_RationalLatticeDirection_cpp_
9#define model_RationalLatticeDirection_cpp_
11#include <LatticeModule.h>
12#include <RationalLatticeDirection.h>
40 return dir.cartesian() *
rat.asDouble();
46 return rat *
dir.dot(other);
64 assert(&
dir.lattice == &other.
dir.lattice &&
"ReciprocalLatticeVectorType belong to different Lattices.");
74 assert(&
dir.lattice == &other.
dir.lattice &&
"ReciprocalLatticeVectorType belong to different Lattices.");
84 assert(&
dir.lattice == &other.
lattice &&
"ReciprocalLatticeVectorType belong to different Lattices.");
92 assert(&
dir.lattice == &other.
lattice &&
"ReciprocalLatticeVectorType belong to different Lattices.");
100 return dir.base().squaredNorm() * std::pow(
rat.asDouble(), 2);
109 template struct RationalLatticeDirection<3>;
const LatticeType & lattice
auto operator+(const std::shared_ptr< T1 > &x, const std::shared_ptr< T2 > &y)
auto operator*(const std::shared_ptr< BilinearForm< T1, T2 > > &f, const IntegrationDomain< FE, D, Q, Rule > &dom)
auto eval(const std::shared_ptr< T > &t)
auto operator-(const std::shared_ptr< T1 > &x, const std::shared_ptr< T2 > &y)
static long int gcd(const long int &a, const long int &b)
Eigen::Matrix< double, dim, 1 > VectorDimD
Eigen::Matrix< long int, dim, 1 > VectorDimI
RationalLatticeDirection< dim > operator-(const RationalLatticeDirection< dim > &other) const
Rational dot(const ReciprocalLatticeVector< dim > &other) const
RationalLatticeDirection< dim > operator+(const RationalLatticeDirection< dim > &other) const
RationalLatticeDirection< dim > operator*(const long int &scalar) const
VectorDimD cartesian() const
double squaredNorm() const
const LatticeDirection< dim > dir
RationalLatticeDirection< dim > operator/(const long int &scalar) const
RationalLatticeDirection(const Rational &_rat, const LatticeDirection< dim > &_dir)