Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Polycrystal.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_Polycrystal_H_
9#define model_Polycrystal_H_
10
11#include <filesystem>
12#include <string> // std::string
13#include <iostream> // std::cout
14#include <sstream>
15#include <utility>
16#include <tuple>
17#include <map>
18#include <vector>
19#include <deque>
20#include <tuple>
21#include <chrono>
22#include <random>
23#include <memory>
24#include <Eigen/Core>
25#include <SimplicialMesh.h>
26
27#include <Grain.h>
28#include <GrainBoundary.h>
29#include <LatticeVector.h>
30#include <TextFileParser.h>
31
32namespace model
33{
34 template <int dim>
36 {
37 public:
38
41
44 typedef Eigen::Matrix<double,dim,1> VectorDim;
47 typedef std::map<size_t,std::shared_ptr<Grain<dim>>> GrainContainerType;
48
49 private:
50 GrainContainerType getGrains(const std::string& polyFile) const;
51 std::map<std::pair<size_t,size_t>,const GrainBoundaryType* const> getGrainBoundaries() const;
52 double getAtomicVolume() const;
53
54 public:
56 const std::map<size_t,std::shared_ptr<Grain<dim>>> grains;
57 const std::map<std::pair<size_t,size_t>,const GrainBoundaryType* const> grainBoundaries;
58 const double Omega;
59
60 Polycrystal(const std::string& polyFile,const SimplicialMeshType& mesh_in);
61 const std::shared_ptr<GrainType>& grain(const size_t& k) const;
62 const GrainBoundaryType& grainBoundary(const size_t& i,const size_t& j) const;
68 std::pair<LatticeVector<dim>,int> randomLatticePointInMesh() const;
69 };
70}
71#endif
72
GrainBoundary< dim > GrainBoundaryType
Definition Polycrystal.h:46
ReciprocalLatticeVectorType reciprocalLatticeVectorFromPosition(const VectorDim &p) const
const GrainBoundaryType & grainBoundary(const size_t &i, const size_t &j) const
SimplicialMesh< dim > SimplicialMeshType
Definition Polycrystal.h:39
ReciprocalLatticeVector< dim > ReciprocalLatticeVectorType
Definition Polycrystal.h:43
std::pair< LatticeVector< dim >, int > randomLatticePointInMesh() const
Polyhedron< dim, dim > MeshRegionType
Definition Polycrystal.h:40
const SimplicialMeshType & mesh
Definition Polycrystal.h:55
LatticeVector< dim > LatticeVectorType
Definition Polycrystal.h:42
Eigen::Matrix< double, dim, 1 > VectorDim
Definition Polycrystal.h:44
const std::shared_ptr< GrainType > & grain(const size_t &k) const
LatticeVectorType latticeVectorFromPosition(const VectorDim &p) const
LatticeVectorType latticeVectorFromPosition(const VectorDim &p, const Simplex< dim, dim > *const guess) const
ReciprocalLatticeVectorType reciprocalLatticeVectorFromPosition(const VectorDim &p, const Simplex< dim, dim > *const guess) const
std::map< size_t, std::shared_ptr< Grain< dim > > > GrainContainerType
Definition Polycrystal.h:47
const std::map< size_t, std::shared_ptr< Grain< dim > > > grains
Definition Polycrystal.h:56
VectorDim randomPoint() const
const std::map< std::pair< size_t, size_t >, const GrainBoundaryType *const > grainBoundaries
Definition Polycrystal.h:57
Polycrystal(const std::string &polyFile, const SimplicialMeshType &mesh_in)
PolycrystallineMaterialBase(const std::string &fileName, const double &absoluteTemperature)
int j
vertex p[3]
int k
int i