Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
GlidePlaneFactory.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_GlidePlaneFactory_H_
9#define model_GlidePlaneFactory_H_
10
11#include <algorithm>
12#include <map>
13#include <tuple>
14#include <memory> // std::shared_ptr (c++11)
15
16#include <Eigen/Dense>
17#include <Eigen/Cholesky>
18
19#include <SimplicialMesh.h>
21#include <LatticeModule.h>
22#include <ReciprocalLatticeDirection.h>
24#include <MeshPlane.h>
25#include <CRTP.h>
26#include <TypeTraits.h>
27#include <Polycrystal.h>
28#include <WeakPtrFactories.h>
29#include <GlidePlaneKey.h>
30
31namespace model
32{
33 template <int dim>
34 struct GlidePlane; // class predeclaration
35
36 template<int dim>
37 struct GlidePlaneFactory : public KeyConstructableWeakPtrFactory<GlidePlaneFactory<dim>,GlidePlane<dim>>
38 /* */,private std::map<std::pair<size_t,size_t>,PlanePlaneIntersection<dim>>
39 {
40
44 typedef Eigen::Matrix<double,dim,1> VectorDimD;
47 typedef std::shared_ptr<GlidePlaneType> GlidePlaneSharedPtrType;
49 typedef std::map<std::pair<size_t,size_t>,PlanePlaneIntersectionType> MeshPlaneIntersectionContainerType;
50
51 public:
52
54
55 GlidePlaneFactory(const Polycrystal<dim>& poly_in);
56
60 const MeshPlaneType* const p2);
62 const GlidePlaneMapType& glidePlanes() const;
63
64 };
65}
66#endif
KeyConstructableWeakPtrFactory< GlidePlaneFactory< dim >, GlidePlaneType > GlidePlaneMapType
MeshPlane< dim > MeshPlaneType
PlanePlaneIntersection< dim > PlanePlaneIntersectionType
Eigen::Matrix< double, dim, 1 > VectorDimD
GlidePlane< dim > GlidePlaneType
GlidePlaneType::GlidePlaneKeyType GlidePlaneKeyType
GlidePlaneFactory(const Polycrystal< dim > &poly_in)
GlidePlaneMapType & glidePlanes()
const PlanePlaneIntersectionType & glidePlaneIntersection(const MeshPlaneType *const p1, const MeshPlaneType *const p2)
MeshPlaneIntersectionContainerType & glidePlaneIntersections()
const Polycrystal< dim > & poly
GlidePlaneFactory< dim > GlidePlaneFactoryType
std::shared_ptr< GlidePlaneType > GlidePlaneSharedPtrType
std::map< std::pair< size_t, size_t >, PlanePlaneIntersectionType > MeshPlaneIntersectionContainerType
KeyType GlidePlaneKeyType
Definition GlidePlane.h:50
vertex p2
vertex p1