Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Lattices/Lattice.h
Go to the documentation of this file.
1/* This file is part of PIL, the Particle Interaction Library.
2 *
3 *
4 * MODEL is distributed without any warranty under the
5 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
6 */
7
8#ifndef model_Lattice_h_
9#define model_Lattice_h_
10
11#include <iomanip> // FLT_EPSILON
12#include <cfloat> // FLT_EPSILON
13#include <Eigen/Dense>
14#include <StaticID.h>
15#include <LatticeVector.h>
17#include <LatticeDirection.h>
20
22
23namespace model
24{
25
26 template <int dim>
27 class Lattice : public StaticID<Lattice<dim>>
28 {
29
30 public:
31 static constexpr double roundTol=FLT_EPSILON;
32 typedef Eigen::Matrix< double,dim,1> VectorDimD;
33 typedef Eigen::Matrix<long int,dim,1> VectorDimI;
34 typedef Eigen::Matrix<double,dim,dim> MatrixDimD;
40
41 static MatrixDimD getLatticeBasis(const MatrixDimD& A,const MatrixDimD& Q);
42
46
47 Lattice(const MatrixDimD& A,const MatrixDimD& Q) ;
48 static Eigen::Matrix<long int,dim,1> rationalApproximation(VectorDimD nd);
53 const typename BestRationalApproximation::LongIntType& maxDen=1000) const;
56 };
57}
58#endif
static constexpr double roundTol
Eigen::Matrix< double, dim, dim > MatrixDimD
LatticeVectorType snapToLattice(const VectorDimD &d) const
ReciprocalLatticeDirectionType reciprocalLatticeDirection(const VectorDimD &d) const
const MatrixDimD latticeBasis
const MatrixDimD C2G
LatticeVector< dim > LatticeVectorType
Lattice(const MatrixDimD &A, const MatrixDimD &Q)
LatticeVectorType latticeVector(const VectorDimD &p) const
LatticeDirection< dim > LatticeDirectionType
RationalLatticeDirectionType rationalLatticeDirection(const VectorDimD &d, const typename BestRationalApproximation::LongIntType &maxDen=1000) const
LatticeDirectionType latticeDirection(const VectorDimD &d) const
Eigen::Matrix< double, dim, 1 > VectorDimD
Eigen::Matrix< long int, dim, 1 > VectorDimI
ReciprocalLatticeVector< dim > ReciprocalLatticeVectorType
RationalLatticeDirection< dim > RationalLatticeDirectionType
static Eigen::Matrix< long int, dim, 1 > rationalApproximation(VectorDimD nd)
ReciprocalLatticeDirection< dim > ReciprocalLatticeDirectionType
static MatrixDimD getLatticeBasis(const MatrixDimD &A, const MatrixDimD &Q)
const MatrixDimD reciprocalBasis
ReciprocalLatticeVectorType reciprocalLatticeVector(const VectorDimD &p) const
function infiniteDisplacement syms Ax Ay Az Bx By Bz qx qy qz u L x y z real A
Q
vertex p[3]