8#ifndef model_DislocationLoopNode_h_
9#define model_DislocationLoopNode_h_
17#define VerboseDislocationLoopNode(N,x) if(verboseDislocationLoopNode>=N){std::cout<<x;}
19#define VerboseDislocationLoopNode(N,x)
27 ,
public SplineNode<DislocationLoopNode<dim>,dim,0,Hermite>
31 std::shared_ptr<PeriodicPlanePatch<dim>> _periodicPlanePatch;
38 typedef typename TraitsType::LoopType
LoopType;
43 typedef typename TraitsType::FlowType
FlowType;
50 const std::pair<const std::shared_ptr<PeriodicPlaneEdge<dim>>,
const std::shared_ptr<PeriodicPlaneEdge<dim>>>
periodicPlaneEdge;
55 const std::shared_ptr<LoopType>&,
56 const std::shared_ptr<NetworkNodeType>&,
63 const std::shared_ptr<LoopType>&,
64 const std::shared_ptr<NetworkNodeType>&,
69 std::shared_ptr<DislocationLoopNode>
clone(
const std::shared_ptr<LoopType>&,
70 const std::shared_ptr<NetworkNodeType>&)
const;
76 std::vector<DislocationLoopNodeType*>
boundaryPrev()
const;
77 std::vector<DislocationLoopNodeType*>
boundaryNext()
const;
91 std::pair<bool,size_t>
isRemovable(
const double& Lmin,
const double& Lmax,
const double& relAreaTh);
static void initFromFile(const std::string &)
TraitsType::LoopType LoopType
DislocationLoopNode(LoopNetworkType *const, const std::shared_ptr< LoopType > &, const std::shared_ptr< NetworkNodeType > &, const VectorDim &, const std::shared_ptr< PeriodicPlanePatch< dim > > &, const std::pair< const std::shared_ptr< PeriodicPlaneEdge< dim > >, const std::shared_ptr< PeriodicPlaneEdge< dim > > > &)
TraitsType::VectorDim VectorDim
std::pair< bool, size_t > isRemovable(const double &Lmin, const double &Lmax, const double &relAreaTh)
const DislocationLoopNodeType * periodicPrev() const
void updateConfinedGeometry()
bool isGeometricallyRemovable(const double &Lmin, const double &Lmax, const double &relAreaTh)
TraitsType::LoopNetworkType LoopNetworkType
std::vector< DislocationLoopNodeType * > boundaryNext() const
std::shared_ptr< PeriodicPlanePatch< dim > > periodicPlanePatch() const
TraitsType::NetworkNodeType NetworkNodeType
bool periodicContourVertex
bool isMovableTo(const VectorDim &) const
bool isPeriodicSubdivision() const
TraitsType::NetworkLinkType NetworkLinkType
TraitsType::FlowType FlowType
TraitsType::LoopLinkType LoopLinkType
std::shared_ptr< DislocationLoopNode > clone(const std::shared_ptr< LoopType > &, const std::shared_ptr< NetworkNodeType > &) const
DislocationLoopNode(LoopNetworkType *const, const std::shared_ptr< LoopType > &, const std::shared_ptr< NetworkNodeType > &, const LoopLinkType *const)
TraitsType::VectorLowerDim VectorLowerDim
std::vector< DislocationLoopNodeType * > boundaryPrev() const
void set_P(const VectorLowerDim &)
TypeTraits< DislocationLoopNodeType > TraitsType
const std::pair< const std::shared_ptr< PeriodicPlaneEdge< dim > >, const std::shared_ptr< PeriodicPlaneEdge< dim > > > periodicPlaneEdge
void set_P(const VectorDim &)
const DislocationLoopNodeType * periodicNext() const
bool isPhysicalBoundaryNode() const
TraitsType::LoopNodeType LoopNodeType
bool isContractableTo(const LoopNodeType *const other) const
SplineNode< DislocationLoopNode< dim >, dim, 0, Hermite > SplineNodeType
static int verboseDislocationLoopNode
DislocationLoopNode< dim > DislocationLoopNodeType
LoopNode(LoopNetworkType *const loopNetwork_in, const std::shared_ptr< LoopType > &loop_in, const std::shared_ptr< NetworkNodeType > &networkNode_in)