Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
Grain.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_Grain_H_
9#define model_Grain_H_
10
11#include <cfloat> // FLT_EPSILON
12#include <Eigen/Core>
13#include <SimplicialMesh.h>
14#include <Polyhedron.h>
15#include <LatticeModule.h>
16#include <GlidePlaneBase.h>
18#include <SlipSystem.h>
19#include <SingleCrystalBase.h>
20
21//#include <BestRationalApproximation.h>
22
23namespace model
24{
25 template <int dim>
26 class GrainBoundary;
27
28 template <int dim>
29 class Grain : public SingleCrystalBase<dim>,
30 /* base */ public std::map<std::pair<size_t,size_t>,const std::shared_ptr<GrainBoundary<dim>>>
31 {
32
33 typedef Lattice<dim> LatticeType;
34 typedef Polyhedron<dim,dim> MeshRegionType;
35
36 typedef Eigen::Matrix<long int,dim,1> VectorDimI;
37 typedef Eigen::Matrix< double,dim,1> VectorDimD;
38 typedef Eigen::Matrix<double,dim,dim> MatrixDimD;
39 typedef LatticeVector<dim> LatticeVectorType;
40 typedef LatticeDirection<dim> LatticeDirectionType;
41 typedef ReciprocalLatticeDirection<dim> ReciprocalLatticeDirectionType;
42 typedef std::map<std::pair<size_t,size_t>,const std::shared_ptr<GrainBoundary<dim>>> GrainBoundaryContainerType;
43
44 public:
45
46 static constexpr double roundTol=FLT_EPSILON;
47
48 const MeshRegionType& region;
49 const size_t& grainID;
50
51 Grain(const MeshRegionType& region_in,
52 const PolycrystallineMaterialBase& material,
53 const std::string& polyFile
54 );
55
56 const GrainBoundaryContainerType& grainBoundaries() const;
57 GrainBoundaryContainerType& grainBoundaries();
58 std::deque<const GlidePlaneBase*> conjugatePlaneNormal(const LatticeVectorType& B,
59 const ReciprocalLatticeDirectionType& N) const;
60 };
61
62}
63#endif
static constexpr double roundTol
Definition Grain.h:46
const MeshRegionType & region
Definition Grain.h:48
const GrainBoundaryContainerType & grainBoundaries() const
Definition Grain.cpp:40
const size_t & grainID
Definition Grain.h:49
std::deque< const GlidePlaneBase * > conjugatePlaneNormal(const LatticeVectorType &B, const ReciprocalLatticeDirectionType &N) const
Definition Grain.cpp:52
Grain(const MeshRegionType &region_in, const PolycrystallineMaterialBase &material, const std::string &polyFile)
Definition Grain.cpp:20
initial point of the source segment B
SingleCrystalBase(const PolycrystallineMaterialBase &material, const MatrixDim &Q)