Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
GlidePlaneNoiseBase.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_GlidePlaneNoiseBase_H
9#define model_GlidePlaneNoiseBase_H
10
11#include <cmath>
12#include <random>
13#include <Eigen/Dense>
14#include <boost/math/special_functions/bessel.hpp>
15
16#ifdef _MODEL_GLIDE_PLANE_NOISE_GENERATOR_
17#include <fftw3.h>
18#endif
19
20#include <NoiseTraits.h>
21#include <UniformPeriodicGrid.h>
23
24namespace model
25{
26
27
28 template <int N>
31 {
38
39
42
43 // Cai spreading function
45
47
48#ifdef _MODEL_GLIDE_PLANE_NOISE_GENERATOR_
49 std::vector<COMPLEX*> originalKCorrelations() const;
50 std::vector<COMPLEX*> noisyKCorrelations(const std::vector<COMPLEX*>& okCorr,
51 std::default_random_engine& generator,
52 std::normal_distribution<REAL_SCALAR>& distribution) const;
53 std::vector<REAL_SCALAR*> realNoise(const std::vector<COMPLEX*>& nkCorr) const;
54 std::vector<std::vector<double>> averageNoiseCorrelation(const int& reps) const;
55 std::vector<std::vector<double>> sampleAverageNoise(const int& reps) const;
56
57#endif
58
59 const std::string tag;
60 const int seed;
64 const Eigen::Matrix<double,2,2> invTransposeLatticeBasis;
65 const int& NX;
66 const int& NY;
67 const int& NZ;
68 const int NK;
69 const int NR;
70 const double& LX;
71 const double& LY;
72 const double& LZ;
73
74// std::default_random_engine generator;
75// std::normal_distribution<REAL_SCALAR> distribution;
76// const size_t NK;
77 // lattice basis1
78 // lattice basis2
79
80 GlidePlaneNoiseBase(const std::string& tag_in,
81 const int& seed_in,
82 const NoiseTraitsBase::GridSizeType& gridSize_in,
83 const NoiseTraitsBase::GridSpacingType& gridSpacing_SI_in,
84 const Eigen::Matrix<double,2,2>& latticeBasis);
86 void computeRealNoise();
89 int storageIndex(const int& i,const int& j) const;
90 void writeFieldSlice() const;
91 const NoiseContainerType& noiseVector() const;
93 //virtual std::array<COMPLEX,N> kCorrelations(const Eigen::Matrix<double,3,1>& k,const Eigen::Matrix<int,3,1>& kID) const = 0;
94 virtual std::array<COMPLEX,N> kCorrelations(const Eigen::Matrix<double,3,1>& k,const Eigen::Matrix<int,3,1>& kID) const { return {}; };
95 };
96}
97#endif
98
a
Definition int_R.m:14
NoiseTraitsBase::GridSizeType GridSizeType
GlidePlaneNoiseBase(const std::string &tag_in, const int &seed_in, const NoiseTraitsBase::GridSizeType &gridSize_in, const NoiseTraitsBase::GridSpacingType &gridSpacing_SI_in, const Eigen::Matrix< double, 2, 2 > &latticeBasis)
int storageIndex(const int &i, const int &j) const
void computeRealNoiseStatistics(const PolycrystallineMaterialBase &mat) const
NoiseTraitsBase::REAL_SCALAR REAL_SCALAR
NoiseTraitsBase::COMPLEX COMPLEX
std::vector< COMPLEX * > noisyKCorrelations(const std::vector< COMPLEX * > &okCorr, std::default_random_engine &generator, std::normal_distribution< REAL_SCALAR > &distribution) const
GridSizeType rowAndColIndices(const int &storageIndex) const
std::vector< std::vector< double > > sampleAverageNoise(const int &reps) const
NoiseTraits< N >::NoiseContainerType NoiseContainerType
const GridSpacingType gridLength
std::vector< std::vector< double > > averageNoiseCorrelation(const int &reps) const
static REAL_SCALAR Wk_Cai_squared(REAL_SCALAR kx, REAL_SCALAR ky, REAL_SCALAR kz, REAL_SCALAR a)
const NoiseContainerType & noiseVector() const
std::vector< REAL_SCALAR * > realNoise(const std::vector< COMPLEX * > &nkCorr) const
static REAL_SCALAR W_t_Cai(REAL_SCALAR r2, REAL_SCALAR a)
NoiseTraits< N >::NoiseType NoiseType
const Eigen::Matrix< double, 2, 2 > invTransposeLatticeBasis
const GridSpacingType gridSpacing
std::vector< COMPLEX * > originalKCorrelations() const
NoiseTraitsBase::GridSpacingType GridSpacingType
static REAL_SCALAR W_Cai(REAL_SCALAR r2, REAL_SCALAR a)
static REAL_SCALAR Wk_Cai(REAL_SCALAR kx, REAL_SCALAR ky, REAL_SCALAR kz, REAL_SCALAR a)
virtual std::array< COMPLEX, N > kCorrelations(const Eigen::Matrix< double, 3, 1 > &k, const Eigen::Matrix< int, 3, 1 > &kID) const
std::complex< double > COMPLEX
Definition NoiseTraits.h:20
Eigen::Array< double, 3, 1 > GridSpacingType
Definition NoiseTraits.h:22
Eigen::Array< int, 3, 1 > GridSizeType
Definition NoiseTraits.h:21
std::vector< NoiseType > NoiseContainerType
Definition NoiseTraits.h:36
Eigen::Matrix< REAL_SCALAR, 1, N > NoiseType
Definition NoiseTraits.h:35
UniformPeriodicGrid(const ArrayDimI &gridSize_in, const ArrayDimD &gridSpacing_in)
int j
int k
int i