Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Lattices_NEW/PeriodicLatticeInterpolant.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_PeriodicLatticeInterpolant_h_
9#define model_PeriodicLatticeInterpolant_h_
10
11#include <vector>
12#include <array>
13#include <cfloat>
14#include <Eigen/Dense>
15#include <Eigen/SVD>
16#include <iostream>
17namespace model
18{
19
20 template <int dim>
22 {
23
24 typedef Eigen::Matrix<double,dim,1> VectorDim;
25 typedef Eigen::Matrix<size_t,dim,1> VectorDimI;
26 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
27
28 const MatrixDim A; // column matrix of lattice vectors
29 const MatrixDim B; // column matrix of reciprocal lattice vectors
30 const Eigen::Matrix<double,Eigen::Dynamic,dim> waveVectors;
31 const std::vector<MatrixDim> symMatrices;
32 const Eigen::Matrix<double,Eigen::Dynamic,2> sinCosCoeffs;
33
34 /**********************************************************************/
35 static std::vector<MatrixDim> getSymMatrices(const int& rotSymm,
36 const std::vector<Eigen::Matrix<double,dim,1>>& mirSymm);
37
38 /**********************************************************************/
39 Eigen::MatrixXd getSinCosCoeffs(const Eigen::Matrix<double,Eigen::Dynamic,dim+1>& f) const;
40
41 /**********************************************************************/
42 std::pair<double,double> sinKXcosKX(const int& r,const VectorDim& x) const;
43
44 /**********************************************************************/
46 const Eigen::Matrix<double,Eigen::Dynamic,dim>& waveVectors_in,
47 const Eigen::Matrix<double,Eigen::Dynamic,dim+1>& f,
48 const int& rotSymm,
49 const std::vector<Eigen::Matrix<double,dim,1>>& N) ;
50 /**********************************************************************/
51 double operator()(const VectorDim& x) const;
52
53 };
54
55} // end namespace
56#endif
function int_R syms a b c u real f
Definition int_R.m:4
x
Definition int_R.m:12
Eigen::MatrixXd getSinCosCoeffs(const Eigen::Matrix< double, Eigen::Dynamic, dim+1 > &f) const
const Eigen::Matrix< double, Eigen::Dynamic, dim > waveVectors
PeriodicLatticeInterpolant(const MatrixDim &A_in, const Eigen::Matrix< double, Eigen::Dynamic, dim > &waveVectors_in, const Eigen::Matrix< double, Eigen::Dynamic, dim+1 > &f, const int &rotSymm, const std::vector< Eigen::Matrix< double, dim, 1 > > &N)
double operator()(const VectorDim &x) const
const Eigen::Matrix< double, Eigen::Dynamic, 2 > sinCosCoeffs
std::pair< double, double > sinKXcosKX(const int &r, const VectorDim &x) const
static std::vector< MatrixDim > getSymMatrices(const int &rotSymm, const std::vector< Eigen::Matrix< double, dim, 1 > > &mirSymm)