Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Lattices_NEW/LatticeVector.h
Go to the documentation of this file.
1/* This file is part of model.
2 *
3 * MoDELib is distributed without any warranty under the MIT License.
4 */
5
6#ifndef model_LatticeVector_h_
7#define model_LatticeVector_h_
8
9#include <LatticeModule.h>
10
11namespace model
12{
13 template <int dim>
14 class LatticeVectorBase : public Eigen::Matrix<typename LatticeCore<dim>::IntScalarType,dim,1>
15 {
16 typedef Eigen::Matrix<typename LatticeCore<dim>::IntScalarType,dim,1> BaseType;
17 BaseType& base();
18 const BaseType& base() const;
19
20 public:
21
22// static constexpr double roundTol=FLT_EPSILON;
28
30
32 LatticeVectorBase(const VectorDimD& d, const Lattice<dim>& lat) ;
33 template<typename OtherDerived>
34 LatticeVectorBase(const Eigen::MatrixBase<OtherDerived>& other, const Lattice<dim>& lat) :
35 /* init base */ BaseType(other),
36 /* init */ lattice(lat)
37 {
40 }
50 {
51 return LatticeVectorBase<dim>(static_cast<VectorDimI>(*this) * scalar, lattice);
52 }
54 VectorDimD cartesian() const;
55
56 };
57
58 template<int dim>
59 LatticeVectorBase<dim> operator*(const typename LatticeVectorBase<dim>::IntScalarType& scalar, const LatticeVectorBase<dim>& L);
60
61
62template <int dim>
64{
65
66public:
67
72
73
75
76
78 const Lattice<dim>& lat) ;
79
80
81 template<typename OtherDerived>
82 LatticeVector(const Eigen::MatrixBase<OtherDerived>& other,
83 const Lattice<dim>& lat) :
84 /* init base */ LatticeVectorBase<dim>(other,lat)
85 {
88 }
89
90};
91
92
93template <>
94class LatticeVector<3> : public LatticeVectorBase<3>
95{
96
97public:
98
103
104
105 LatticeVector(const Lattice<3>& lat) ;
106
107
108 LatticeVector(const VectorDimD& d,
109 const Lattice<3>& lat) ;
110
111
112 template<typename OtherDerived>
113 LatticeVector(const Eigen::MatrixBase<OtherDerived>& other,
114 const Lattice<3>& lat) :
115 /* init base */ LatticeVectorBase<3>(other,lat)
116 {
119 }
120
122
123
124};
125
126
127} // end namespace
128#endif
LatticeCore< 3 >::VectorDimD VectorDimD
LatticeCore< 3 >::MatrixDimD MatrixDimD
LatticeCore< 3 >::MatrixDimI MatrixDimI
LatticeVector(const Eigen::MatrixBase< OtherDerived > &other, const Lattice< 3 > &lat)
LatticeCore< 3 >::VectorDimI VectorDimI
LatticeVectorBase(const Lattice< dim > &lat)
LatticeVectorBase< dim > operator+(const LatticeVectorBase< dim > &other) const
LatticeVectorBase< dim > operator*(const IntScalarType &scalar) const
LatticeVectorBase< dim > & operator-=(const LatticeVectorBase< dim > &other)
LatticeCore< dim >::MatrixDimI MatrixDimI
LatticeCore< dim >::VectorDimI VectorDimI
LatticeVectorBase< dim > & operator=(const LatticeVectorBase< dim > &other)
LatticeVectorBase(const Eigen::MatrixBase< OtherDerived > &other, const Lattice< dim > &lat)
LatticeCore< dim >::VectorDimD VectorDimD
LatticeVectorBase(LatticeVectorBase< dim > &&other)=default
LatticeVectorBase< dim > & operator+=(const LatticeVectorBase< dim > &other)
LatticeVectorBase< dim > operator-(const LatticeVectorBase< dim > &other) const
IntScalarType dot(const ReciprocalLatticeVectorBase< dim > &other) const
LatticeCore< dim >::IntScalarType IntScalarType
LatticeVectorBase(const LatticeVectorBase< dim > &other)=default
LatticeCore< dim >::MatrixDimD MatrixDimD
LatticeVector(const Eigen::MatrixBase< OtherDerived > &other, const Lattice< dim > &lat)
LatticeVector(const VectorDimD &d, const Lattice< dim > &lat)
LatticeVector(const Lattice< dim > &lat)
LatticeVector(const LatticeType &lat)
ReciprocalLatticeDirectionType cross(const LatticeVectorType &other) const
auto operator*(const std::shared_ptr< BilinearForm< T1, T2 > > &f, const IntegrationDomain< FE, D, Q, Rule > &dom)
Eigen::Matrix< IntScalarType, dim, dim > MatrixDimI
Definition LatticeCore.h:28
long long int IntScalarType
Definition LatticeCore.h:26
Eigen::Matrix< double, dim, 1 > VectorDimD
Definition LatticeCore.h:24
Eigen::Matrix< double, dim, dim > MatrixDimD
Definition LatticeCore.h:25
Eigen::Matrix< IntScalarType, dim, 1 > VectorDimI
Definition LatticeCore.h:27