Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
VTKsegments.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_VTKsegments_H_
9#define model_VTKsegments_H_
10
11#include <iostream>
12#include <string>
13#include <chrono>
14#include <random>
15#include <cmath>
16#include <list>
17#include <vector>
18#include <limits>
19
20#ifdef _OPENMP
21#include <omp.h>
22#endif
23
24
25#include <TextFileParser.h>
26#include <GlidePlaneModule.h>
30#include <QuadratureDynamic.h>
31#include <SplineSegmentBase.h>
32#include <TerminalColors.h>
33
34
35
36namespace model
37{
38
39 class VTKsegments : public std::deque<Eigen::Matrix<double, 3, 1>>
40 /* */,
41 public std::map<std::pair<int,int>,StressStraight<3>>
42 /* */,
43 public std::vector<DislocationQuadraturePoint<3, 0>>
44 {
45
46
47
48
49// public std::vector<Eigen::Matrix<double,3,1>>
50// /* */,public std::vector<StressStraight<3>>
51// /* */,public std::vector<DislocationQuadraturePoint<3,0>>
52
53
54 static constexpr int dim = 3; // 3D
55 static constexpr int corder = 0; // linear segments
56 typedef SplineSegmentBase<dim,corder> SplineSegmentBaseType;
57 static constexpr int Ncoeff= SplineSegmentBaseType::Ncoeff; // # of spline coefficients in 1D
58 typedef typename SplineSegmentBaseType::MatrixNcoeffDim MatrixNcoeffDim;
59 typedef typename SplineSegmentBaseType::VectorDim VectorDim;
60 typedef typename SplineSegmentBaseType::MatrixDim MatrixDim;
61 typedef Eigen::Matrix<int,dim,1> VectorDimI;
62
63// typedef Eigen::Matrix<double,3,1> VectorDim;
65
66 void readCAFile(const std::string& vtkFilePrefix);
67 void updateQuadraturePoints(const std::string& vtkFilePrefix, MatrixDim externalStress, std::map<std::pair<int,int>,std::pair<size_t,std::set<int>>> &segIDmap);
68
69// VectorDimI getPbcFlags(const std::string& filename) const;
70
71 MatrixDim cellMatrix;
72 double EwaldLength;
73 VectorDimI pbcFlags;
74 std::vector<VectorDim> periodicShifts;
75
76 public:
77
78 VTKsegments(const std::string& folderName);
79
80// const DefectiveCrystalTraitsIO traitsIO;
83 const double quadPerLength;
84 // const PolycrystallineMaterialBase material;
85 const MatrixDim C2G;
86 MatrixDim externalStress;
87 std::shared_ptr<StochasticForceGenerator> stochasticForceGenerator;
88 double latticeParameter() const;
89 void ExternalController();
90// const VectorDimI pbcFlags;
91
92
93 void writeVTK(const std::string& vtkFilePrefix,std::map<std::pair<int,int>,std::pair<size_t,std::set<int>>> &segIDmap) const;
94 void readVTK(const std::string& vtkFilePrefix);
95
96 //wrong def
97
98 // const std::vector<VectorDim>& nodes() const;
99 // std::vector<VectorDim>& nodes();
100 // const std::vector<StressStraight<3>>& segments() const;
101 // std::vector<StressStraight<3>>& segments();
102 // const std::vector<DislocationQuadraturePoint<3,0>>& quadraturePoints() const;
103 // std::vector<DislocationQuadraturePoint<3,0>>& quadraturePoints();
104
105
106 //legacy def
107
108 const std::deque<VectorDim> &nodes() const;
109 std::deque<VectorDim> &nodes();
110 const std::map<std::pair<int,int>,StressStraight<3>> &segments() const;
111 std::map<std::pair<int,int>,StressStraight<3>>&segments();
112 const std::vector<DislocationQuadraturePoint<3, 0>> &quadraturePoints() const;
113 std::vector<DislocationQuadraturePoint<3, 0>> &quadraturePoints();
114
115
116 };
117
118}
119#endif
const std::vector< DislocationQuadraturePoint< 3, 0 > > & quadraturePoints() const
TextFileParser perser
Definition VTKsegments.h:81
double latticeParameter() const
const PolycrystallineMaterialBase material
Definition VTKsegments.h:82
MatrixDim externalStress
Definition VTKsegments.h:86
const std::deque< VectorDim > & nodes() const
VTKsegments(const std::string &folderName)
const std::map< std::pair< int, int >, StressStraight< 3 > > & segments() const
const MatrixDim C2G
Definition VTKsegments.h:85
std::shared_ptr< StochasticForceGenerator > stochasticForceGenerator
Definition VTKsegments.h:87
void writeVTK(const std::string &vtkFilePrefix, std::map< std::pair< int, int >, std::pair< size_t, std::set< int > > > &segIDmap) const
void readVTK(const std::string &vtkFilePrefix)
const double quadPerLength
Definition VTKsegments.h:83