Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
DislocationLoopPatches.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_DislocationLoopPatches_H_
9#define model_DislocationLoopPatches_H_
10
11#include <map>
12#include <vector>
13#include <memory>
14
15
16#include <Eigen/Dense>
17#include <PeriodicGlidePlane.h>
20#include <SutherlandHodgman.h>
21
22namespace model
23{
24
25 template <int dim>
27//: public std::map<std::shared_ptr<PeriodicPlanePatch<dim>>,std::vector<Eigen::Matrix<double,dim-1,1>>>
28// /* */,public std::map<std::shared_ptr<PeriodicPlanePatch<dim>>,std::vector<Eigen::Matrix<double,dim,1>>>
29 {
30 typedef Eigen::Matrix<double,dim-1,1> VectorLowerDim;
31 typedef Eigen::Matrix<double,dim,1> VectorDim;
33 typedef std::map<std::shared_ptr<PeriodicPlanePatch<dim>>,std::vector<VectorLowerDim>> LocalPatchPositionType;
34 typedef std::map<std::shared_ptr<PeriodicPlanePatch<dim>>,std::vector<VectorDim>> GlobalPatchPositionType;
35
36
37
38 public:
39
40 const std::shared_ptr<PeriodicGlidePlaneType> periodicGlidePlane;
41
42 private:
43
44 LocalPatchPositionType _localPatches;
45 GlobalPatchPositionType _globalPatches;
46 public:
47
48 DislocationLoopPatches(const std::shared_ptr<PeriodicGlidePlaneType>& periodicGlidePlane_in);
49 void update(const std::vector<VectorDim>& linkShifts, const std::vector<VectorDim>& nodePos);
54 const VectorDim orientedArea() const;
55 double solidAngle(const VectorDim& x) const;
56 int windingNumber(const VectorDim& pt) const;
57 int windingNumber(const Eigen::Matrix<double,dim-1,1>& localPt,const std::shared_ptr<GlidePlane<dim>>& ptPlane) const;
58 template <typename T> static int sgn(const T& val);
59
60 };
61
62}
63#endif
64
x
Definition int_R.m:12
void update(const std::vector< VectorDim > &linkShifts, const std::vector< VectorDim > &nodePos)
PeriodicGlidePlane< dim > PeriodicGlidePlaneType
std::map< std::shared_ptr< PeriodicPlanePatch< dim > >, std::vector< VectorDim > > GlobalPatchPositionType
const GlobalPatchPositionType & globalPatches() const
Eigen::Matrix< double, dim, 1 > VectorDim
const LocalPatchPositionType & localPatches() const
Eigen::Matrix< double, dim-1, 1 > VectorLowerDim
double solidAngle(const VectorDim &x) const
std::map< std::shared_ptr< PeriodicPlanePatch< dim > >, std::vector< VectorLowerDim > > LocalPatchPositionType
DislocationLoopPatches(const std::shared_ptr< PeriodicGlidePlaneType > &periodicGlidePlane_in)
const std::shared_ptr< PeriodicGlidePlaneType > periodicGlidePlane
int windingNumber(const VectorDim &pt) const