Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
DislocationSegment.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_DislocationSegment_h_
9#define model_DislocationSegment_h_
10
11#include <Eigen/Dense>
12#include <Eigen/Sparse>
14#include <TypeTraits.h>
15#include <NetworkLink.h>
16#include <SplineSegment.h>
17//#include <ConfinedDislocationObject.h>
21
22#ifndef NDEBUG
23#define VerboseDislocationSegment(N,x) if(verboseDislocationSegment>=N){std::cout<<x;}
24#else
25#define VerboseDislocationSegment(N,x)
26#endif
27
28namespace model
29{
30 template <int dim>
31 class DislocationSegment : public NetworkLink<DislocationSegment<dim>>
32 /* */,public SplineSegment<dim,0>
34 {
35
36 public:
37
49// typedef ConfinedDislocationObject<dim> ConfinedDislocationObjectType;
54 static constexpr int Ndof = SplineSegmentType::Ndof; // number of Hermite dofs
55 static constexpr int Ncoeff = SplineSegmentType::Ncoeff; // number of Hermite dofs
57 typedef std::set<const GrainType *> GrainContainerType;
59 typedef std::set<const GlidePlaneType *> GlidePlaneContainerType;
61 typedef std::set<const PlanarMeshFaceType *> PlanarMeshFaceContainerType;
63
64
66 typedef Eigen::Matrix<double,mSize,2> ConcentrationMatrixType;
67 typedef Eigen::Matrix<double,mSize,1> ConcentrationVectorType;
68
69// std::map<size_t,
70// /* */ std::pair<VectorNcoeff,VectorDim>,
71// /* */ std::less<size_t>
72// /* */ > h2posMap;
73// Eigen::Matrix<double, Ndof, Eigen::Dynamic> Mseg;
74// MatrixNdof Kqq; //! Segment Stiffness Matrix
75// VectorNdof Fq; //! Segment Nodal Force Vector
79 std::shared_ptr<SlipSystem> _slipSystem;
80
81
82// static const MatrixDim I;
83 static const VectorDim zeroVector;
84 static double quadPerLength;
85// static bool assembleWithTangentProjection;
87
88
90 const std::shared_ptr<NetworkNodeType>&,
91 const std::shared_ptr<NetworkNodeType>&
92 );
93
94 void addLoopLink(LoopLinkType* const pL);
95 void removeLoopLink(LoopLinkType* const pL);
96 void updateSlipSystem();
97 static void initFromFile(const std::string&);
98
100 bool isBoundarySegment() const;
101 bool isGrainBoundarySegment() const;
102 void updateGeometry();
103 const std::shared_ptr<SlipSystem>& slipSystem() const;
104 bool hasZeroBurgers() const;
105// bool isVirtualBoundarySegment() const;
106 bool isGlissile() const;
107 bool isSessile() const;
108// void assembleGlide(const bool&);
109 const VectorDim& burgers() const;
110 const VectorDim& glidePlaneNormal() const;
111 void addToGlobalAssembly(std::deque<Eigen::Triplet<double> >& kqqT,Eigen::VectorXd& FQ) const;
112 // Indices belong to the caller's current, immutable assembly snapshot.
113 void addToGlobalAssembly(std::deque<Eigen::Triplet<double> >& kqqT,Eigen::VectorXd& FQ,
114 const size_t sourceIndex,const size_t sinkIndex) const;
115 void createQuadraturePoints(const bool& isClimbStep);
116 void updateQuadraturePoints(const bool& isClimbStep);
117 int velocityGroup(const double &maxVelocity, const std::set<int> &subcyclingBins) const;
120 bool isOnExternalBoundary() const;
121 bool isOnInternalBoundary() const;
122 bool isOnBoundary() const;
123 VectorDim bndNormal() const;
125 std::vector<std::pair<const GlidePlane<dim> *const, const GlidePlane<dim> *const>> parallelAndCoincidentGlidePlanes(const GlidePlaneContainerType &other) const;
126 VectorDim snapToGlidePlanes(const VectorDim &P) const;
128
131
132
133 };
134}
135#endif
ConcentrationMatrixType concentrationMatrices(const VectorDim &x, const ClusterDynamicsParameters< dim > &icp) const
std::set< const GlidePlaneType * > GlidePlaneContainerType
MeshLocation meshLocation() const
TypeTraits< DislocationSegment< dim > > TraitsType
TraitsType::MatrixDim MatrixDim
std::set< const PlanarMeshFaceType * > PlanarMeshFaceContainerType
Eigen::Matrix< double, mSize, 1 > ConcentrationVectorType
static constexpr int Ndof
TraitsType::VectorDim VectorDim
PlanarMeshFaceContainerType meshFaces() const
Eigen::Matrix< double, mSize, 2 > ConcentrationMatrixType
GlidePlaneContainerType glidePlanes() const
StraightDislocationSegment< dim > straight
static constexpr int mSize
void addToGlobalAssembly(std::deque< Eigen::Triplet< double > > &kqqT, Eigen::VectorXd &FQ) const
DislocationSegment(LoopNetworkType *const net, const std::shared_ptr< NetworkNodeType > &, const std::shared_ptr< NetworkNodeType > &)
void updateQuadraturePoints(const bool &isClimbStep)
VectorDim snapToGlidePlanes(const VectorDim &P) const
const VectorDim & glidePlaneNormal() const
TraitsType::LoopNodeType LoopNodeType
static constexpr int Ncoeff
TraitsType::NetworkNodeType NetworkNodeType
std::set< const GrainType * > GrainContainerType
TraitsType::LoopType LoopType
static void initFromFile(const std::string &)
static const VectorDim zeroVector
std::vector< std::pair< const GlidePlane< dim > *const, const GlidePlane< dim > *const > > parallelAndCoincidentGlidePlanes(const GlidePlaneContainerType &other) const
void createQuadraturePoints(const bool &isClimbStep)
const VectorDim & burgers() const
double BurgersNorm
The Burgers vector.
GlidePlane< dim > GlidePlaneType
TraitsType::FlowType FlowType
void removeLoopLink(LoopLinkType *const pL)
void addLoopLink(LoopLinkType *const pL)
Polyhedron< dim, dim-1 > PlanarMeshFaceType
SplineSegment< dim, 0 > SplineSegmentType
SplineSegmentType::VectorNdof VectorNdof
GrainContainerType grains() const
const std::shared_ptr< SlipSystem > & slipSystem() const
std::shared_ptr< SlipSystem > _slipSystem
int velocityGroup(const double &maxVelocity, const std::set< int > &subcyclingBins) const
SplineSegmentType::MatrixNdof MatrixNdof
TraitsType::LoopNetworkType LoopNetworkType
TraitsType::LoopLinkType LoopLinkType
DislocationQuadraturePoint< dim >::QuadratureDynamicType QuadratureDynamicType
ConcentrationVectorType clusterConcentration(const VectorDim &x, const ClusterDynamicsParameters< dim > &icp) const
SplineSegmentType::VectorNcoeff VectorNcoeff
TraitsType::NetworkLinkType NetworkLinkType
TraitsType::MeshLocation MeshLocation
Eigen::Matrix< double, Ndof, Ndof > MatrixNdof
Eigen::Matrix< double, Ncoeff, 1 > VectorNcoeff
static constexpr int Ndof
Eigen::Matrix< double, Ndof, 1 > VectorNdof
SplineSegment(const VectorDim &sourceP_in, const VectorDim &sinkP_in)
static constexpr int Ncoeff
x
Definition int_R.m:12
QuadratureDynamic< 1, UniformOpen, 1, 2, 3, 4, 5, 6, 7, 8, 16, 32, 64, 128, 256, 512, 1024 > QuadratureDynamicType