8#ifndef model_DislocationLoop_h_
9#define model_DislocationLoop_h_
18#define VerboseDislocationLoop(N,x) if(verboseDislocationLoop>=N){std::cout<<x;}
20#define VerboseDislocationLoop(N,x)
33 typedef typename TraitsType::LoopType
LoopType;
38 typedef typename TraitsType::FlowType
FlowType;
58 double _slippedAreaRate;
61 std::unique_ptr<ReciprocalLatticeDirectionType> _rightHandedNormal;
62 std::shared_ptr<SlipSystem> _slipSystem;
68 const std::shared_ptr<GlidePlaneType>& glidePlane_in);
70 std::shared_ptr<LoopType>
clone()
const;
79 std::tuple<double,double,double,double>
loopLength()
const;
92 std::vector<MeshedDislocationLoop>
meshed(
const double& meshSize,
const double& localMeshSize)
const;
96 template <
typename T>
static int sgn(
const T& val);
const DislocationLoopPatches< _dim > & patches() const
VectorDim currentAreaVector() const
TraitsType::ReciprocalLatticeDirectionType ReciprocalLatticeDirectionType
TraitsType::LoopLinkType LoopLinkType
TraitsType::MatrixDim MatrixDim
const VectorDim & rightHandedUnitNormal() const
DislocationLoopPatches< _dim > _patches
TraitsType::LoopNodeType LoopNodeType
std::shared_ptr< LoopType > clone() const
const double & slippedArea() const
TraitsType::NetworkLinkType NetworkLinkType
std::tuple< double, double, double, double > loopLength() const
const VectorDim & rightHandedUnitNormalOld() const
bool flippedInsideOut(const int &N, const double &areaThreshold) const
void crossSlipBranches(std::deque< CrossSlipBranch< _dim > > &csNodes, const double dt=-1.0) const
DislocationLoop(LoopNetworkType *const, const VectorDim &, const std::shared_ptr< GlidePlaneType > &glidePlane_in)
double currentAreaRate() const
TraitsType::NetworkNodeType NetworkNodeType
static double planarSolidAngle(const VectorDim &x, const VectorDim &planePoint, const VectorDim &rhN, const std::vector< std::pair< VectorDim, VectorDim > > &polygonSegments)
TraitsType::FlowType FlowType
const ReciprocalLatticeDirectionType & rightHandedNormal() const
const std::shared_ptr< SlipSystem > & slipSystem() const
TraitsType::LoopType LoopType
TraitsType::GrainType GrainType
TraitsType::VectorDim VectorDim
bool isVirtualBoundaryLoop() const
TraitsType::GlidePlaneType GlidePlaneType
TraitsType::LoopNetworkType LoopNetworkType
MatrixDim averagePlasticDistortion() const
const double & slippedAreaRate() const
TypeTraits< DislocationLoop< _dim > > TraitsType
const std::shared_ptr< PeriodicGlidePlaneType > periodicGlidePlane
const std::shared_ptr< GlidePlaneType > glidePlane
std::vector< MeshedDislocationLoop > meshed(const double &meshSize, const double &localMeshSize) const
static int sgn(const T &val)
std::shared_ptr< SlipSystem > searchSlipSystem() const
MatrixDim averagePlasticDistortionRate() const
double solidAngle(const VectorDim &x) const
TraitsType::PeriodicGlidePlaneType PeriodicGlidePlaneType
VectorDim burgers() const
static int verboseDislocationLoop
static void initFromFile(const std::string &)
Loop(LoopNetworkType *const loopNetwork_in, const FlowType &f)