Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
UniformPeriodicGrid.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution 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_UniformPeriodicGrid_h_
9#define model_UniformPeriodicGrid_h_
10
11#include <Eigen/Dense>
12#include <CTM.h>
13
14
15namespace model
16{
17
18 template <int dim>
20 {
21
22 typedef Eigen::Array<int ,dim,1> ArrayDimI;
23 typedef Eigen::Array<double,dim,1> ArrayDimD;
24
27
28 UniformPeriodicGrid(const ArrayDimI& gridSize_in,const ArrayDimD& gridSpacing_in);
29 static std::array<ArrayDimI,CTM::pow(2,dim)> cornerIdx(const std::pair<ArrayDimI,ArrayDimI>& idx);
30 std::array<ArrayDimI,CTM::pow(2,dim)> posToCornerIdx(const ArrayDimD& localPos) const;
31 std::array<ArrayDimI,CTM::pow(2,dim)> posToPeriodicCornerIdx(const ArrayDimD& localPos) const;
32 ArrayDimD idxToPos(const ArrayDimI& idx) const;
33 std::array<double,CTM::pow(2,dim)> posToWeights(const ArrayDimD& localPos) const;
34 std::pair<std::array<ArrayDimI,CTM::pow(2,dim)>,std::array<double,CTM::pow(2,dim)>> posToPeriodicCornerIdxAndWeights(const ArrayDimD& localPos) const;
35 std::pair<ArrayDimI,ArrayDimI> posToIdx(const ArrayDimD& localPos) const;
36 std::pair<ArrayDimI,ArrayDimI> posToPeriodicIdx(const ArrayDimD& localPos) const;
37 ArrayDimI idxToPeriodicIdx(const ArrayDimI& gi) const;
38 std::pair<ArrayDimI,ArrayDimI> idxToPeriodicIdx(const std::pair<ArrayDimI,ArrayDimI>& idx) const;
39 };
40}
41#endif
static constexpr int pow(int x, int n)
A compile-time implementation of the power function.
Definition CTM.h:40
ArrayDimI idxToPeriodicIdx(const ArrayDimI &gi) const
static std::array< ArrayDimI, CTM::pow(2, dim)> cornerIdx(const std::pair< ArrayDimI, ArrayDimI > &idx)
Eigen::Array< double, dim, 1 > ArrayDimD
Eigen::Array< int,dim, 1 > ArrayDimI
std::pair< ArrayDimI, ArrayDimI > posToIdx(const ArrayDimD &localPos) const
ArrayDimD idxToPos(const ArrayDimI &idx) const
UniformPeriodicGrid(const ArrayDimI &gridSize_in, const ArrayDimD &gridSpacing_in)
std::pair< ArrayDimI, ArrayDimI > posToPeriodicIdx(const ArrayDimD &localPos) const
std::pair< std::array< ArrayDimI, CTM::pow(2, dim)>, std::array< double, CTM::pow(2, dim)> > posToPeriodicCornerIdxAndWeights(const ArrayDimD &localPos) const
std::array< double, CTM::pow(2, dim)> posToWeights(const ArrayDimD &localPos) const
std::array< ArrayDimI, CTM::pow(2, dim)> posToPeriodicCornerIdx(const ArrayDimD &localPos) const
std::array< ArrayDimI, CTM::pow(2, dim)> posToCornerIdx(const ArrayDimD &localPos) const