Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
BarycentricTraits.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 *
3 *
4 * MoDELib is distributed without any warranty under the
5 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
6 */
7
8#ifndef model_BarycentricTraits_H_
9#define model_BarycentricTraits_H_
10
11#include <set>
12#include <Eigen/Dense>
13
14namespace model {
15
16
17 /**************************************************************************/
18 /**************************************************************************/
22 template<short int dim>
24 {
25 static_assert(dim>0,"dim must be > 0");
26
27 typedef Eigen::Matrix<double,dim,dim> MatrixDimD;
28 typedef Eigen::Matrix<double,dim+1,dim+1> MatrixHigherDimD;
29 typedef Eigen::Matrix<double,dim+1,dim> MatrixHigherDimDimD;
30 typedef Eigen::Matrix<double,dim,dim+1> MatrixDimHigherDimD;
31 typedef Eigen::Matrix<double,dim ,1> VectorDimD;
32 typedef Eigen::Matrix<double,dim+1,1> VectorHigherDimD;
33
34 private:
35
36 static MatrixHigherDimD get_L2X();
37 static MatrixHigherDimD get_X2L();
38 static MatrixDimHigherDimD get_NdA();
39
40 public:
41
42 inline static const MatrixHigherDimD L2X=get_L2X();
43 inline static const MatrixHigherDimD X2L=get_X2L();
44 inline static const MatrixHigherDimDimD dLdX=X2L. template block<dim+1,dim>(0,0);
45 inline static const MatrixDimHigherDimD NdA=get_NdA();
46
47
48 static VectorHigherDimD x2l(const VectorDimD& X);
49 static VectorHigherDimD x2l(const double& X);
50 static VectorDimD l2x(const VectorHigherDimD& L);
51 static Eigen::Matrix<double,dim+1,1> face2domainBary(const Eigen::Matrix<double,dim,1>& b1,const int& boundaryFace);
52
53
54 };
55
56// // Declare static data member
57// template<short int dim>
58// const typename BarycentricTraits<dim>::MatrixHigherDimD BarycentricTraits<dim>::L2X=BarycentricTraits<dim>::get_L2X();
59//
60// template<short int dim>
61// const typename BarycentricTraits<dim>::MatrixHigherDimD BarycentricTraits<dim>::X2L=BarycentricTraits<dim>::get_X2L();
62//
63// template<short int dim>
64// const typename BarycentricTraits<dim>::MatrixHigherDimDimD BarycentricTraits<dim>::dLdX=BarycentricTraits<dim>::X2L. template block<dim+1,dim>(0,0);
65//
66// template<short int dim>
67// const typename BarycentricTraits<dim>::MatrixDimHigherDimD BarycentricTraits<dim>::NdA=BarycentricTraits<dim>::get_NdA();
68
69
70}
71#endif
Eigen::Matrix< double, dim,1 > VectorDimD
Eigen::Matrix< double, dim, dim+1 > MatrixDimHigherDimD
static VectorHigherDimD x2l(const VectorDimD &X)
static const MatrixDimHigherDimD NdA
Eigen::Matrix< double, dim, dim > MatrixDimD
static const MatrixHigherDimDimD dLdX
static VectorDimD l2x(const VectorHigherDimD &L)
Eigen::Matrix< double, dim+1, dim+1 > MatrixHigherDimD
static Eigen::Matrix< double, dim+1, 1 > face2domainBary(const Eigen::Matrix< double, dim, 1 > &b1, const int &boundaryFace)
static const MatrixHigherDimD X2L
Eigen::Matrix< double, dim+1, 1 > VectorHigherDimD
static const MatrixHigherDimD L2X
Eigen::Matrix< double, dim+1, dim > MatrixHigherDimDimD