Go to the documentation of this file.
47 std::vector<EFANode *> & master_nodes,
48 std::vector<double> & master_weights)
const;
57 virtual void initCrackTip(std::set<EFAElement *> & CrackTipElements);
66 virtual void updateFragments(
const std::set<EFAElement *> & CrackTipElements,
67 std::map<unsigned int, EFANode *> & EmbeddedNodes);
69 unsigned int n_old_frag_cuts)
const;
72 virtual void createChild(
const std::set<EFAElement *> & CrackTipElements,
73 std::map<unsigned int, EFAElement *> & Elements,
74 std::map<unsigned int, EFAElement *> & newChildElements,
75 std::vector<EFAElement *> & ChildElements,
76 std::vector<EFAElement *> & ParentElements,
77 std::map<unsigned int, EFANode *> & TempNodes);
81 std::map<unsigned int, EFANode *> & TempNodes,
82 std::map<
EFANode *, std::set<EFAElement *>> & InverseConnectivityMap,
83 bool merge_phantom_edges);
88 std::set<EFANode *>
getEdgeNodes(
unsigned int edge_id)
const;
100 bool getFragmentEdgeID(
unsigned int elem_edge_id,
unsigned int & frag_edge_id)
const;
117 std::map<unsigned int, EFANode *> & EmbeddedNodes,
118 bool add_to_neighbor);
120 EFANode * embedded_permanent_node,
121 std::map<unsigned int, EFANode *> & PermanentNodes,
122 std::map<unsigned int, EFANode *> & EmbeddedPermanentNodes);
125 std::map<unsigned int, EFANode *> & EmbeddedNodes);
126 std::vector<EFAFragment2D *>
branchingSplit(std::map<unsigned int, EFANode *> & EmbeddedNodes);
135 std::vector<double> & para_coor)
const;
virtual void restoreFragment(const EFAElement *const from_elem)
virtual void switchNode(EFANode *new_node, EFANode *old_node, bool descend_to_parent)
bool fragmentHasTipEdges() const
virtual void setupNeighbors(std::map< EFANode *, std::set< EFAElement * >> &InverseConnectivityMap)
virtual bool shouldDuplicateCrackTipSplitElement(const std::set< EFAElement * > &CrackTipElements)
bool addFragmentEdgeCut(unsigned int frag_edge_id, double position, std::map< unsigned int, EFANode * > &EmbeddedNodes)
EFAEdge * getEdge(unsigned int edge_id) const
void setLocalCoordinates()
virtual bool isFinalCut() const
virtual void clearNeighbors()
virtual void removePhantomEmbeddedNode()
std::vector< EFAPoint > _local_node_coor
std::vector< EFAEdge * > _edges
virtual void createChild(const std::set< EFAElement * > &CrackTipElements, std::map< unsigned int, EFAElement * > &Elements, std::map< unsigned int, EFAElement * > &newChildElements, std::vector< EFAElement * > &ChildElements, std::vector< EFAElement * > &ParentElements, std::map< unsigned int, EFANode * > &TempNodes)
virtual void getMasterInfo(EFANode *node, std::vector< EFANode * > &master_nodes, std::vector< double > &master_weights) const
virtual bool shouldDuplicateForCrackTip(const std::set< EFAElement * > &CrackTipElements)
bool overlaysElement(const EFAElement2D *other_elem) const
EFAElement2D * getEdgeNeighbor(unsigned int edge_id, unsigned int neighbor_id) const
unsigned int numEdgeNeighbors(unsigned int edge_id) const
virtual void neighborSanityCheck() const
std::set< EFANode * > getPhantomNodeOnEdge(unsigned int edge_id) const
virtual bool isPartial() const
virtual unsigned int getNumCuts() const
virtual void updateFragments(const std::set< EFAElement * > &CrackTipElements, std::map< unsigned int, EFANode * > &EmbeddedNodes)
EFAEdge * getFragmentEdge(unsigned int frag_id, unsigned int edge_id) const
void deleteInteriorNodes()
std::vector< EFAFragment2D * > branchingSplit(std::map< unsigned int, EFANode * > &EmbeddedNodes)
std::set< EFANode * > getEdgeNodes(unsigned int edge_id) const
virtual void initCrackTip(std::set< EFAElement * > &CrackTipElements)
virtual void getNonPhysicalNodes(std::set< EFANode * > &non_physical_nodes) const
std::vector< EFAFragment2D * > _fragments
std::vector< EFANode * > getCommonNodes(const EFAElement2D *other_elem) const
void addEdgeCut(unsigned int edge_id, double position, EFANode *embedded_node, std::map< unsigned int, EFANode * > &EmbeddedNodes, bool add_to_neighbor)
bool isEdgePhantom(unsigned int edge_id) const
void mapParametricCoordFrom1Dto2D(unsigned int edge_id, double xi_1d, std::vector< double > ¶_coor) const
virtual void fragmentSanityCheck(unsigned int n_old_frag_edges, unsigned int n_old_frag_cuts) const
bool getEdgeNodeParametricCoordinate(EFANode *node, std::vector< double > ¶_coor) const
unsigned int getCrackTipSplitElementID() const
virtual void switchEmbeddedNode(EFANode *new_node, EFANode *old_node)
EFAFragment2D * getFragment(unsigned int frag_id) const
std::vector< std::vector< EFAElement2D * > > _edge_neighbors
EFAFaceNode * getInteriorNode(unsigned int interior_node_id) const
EFAElement2D(unsigned int eid, unsigned int n_nodes)
bool fragmentEdgeAlreadyCut(unsigned int ElemEdgeID) const
virtual bool isCrackTipElement() const
std::vector< EFAFaceNode * > _interior_nodes
virtual bool shouldDuplicateForPhantomCorner()
virtual unsigned int getNeighborIndex(const EFAElement *neighbor_elem) const
void setEdge(unsigned int edge_id, EFAEdge *edge)
virtual void updateFragmentNode()
virtual unsigned int numFragments() const
bool edgeContainsTip(unsigned int edge_id) const
virtual void connectNeighbors(std::map< unsigned int, EFANode * > &PermanentNodes, std::map< unsigned int, EFANode * > &TempNodes, std::map< EFANode *, std::set< EFAElement * >> &InverseConnectivityMap, bool merge_phantom_edges)
virtual void printElement(std::ostream &ostream)
EFANode * getTipEmbeddedNode() const
unsigned int numEdges() const
void addNodeCut(unsigned int node_id, EFANode *embedded_permanent_node, std::map< unsigned int, EFANode * > &PermanentNodes, std::map< unsigned int, EFANode * > &EmbeddedPermanentNodes)
virtual bool willCrackTipExtend(std::vector< unsigned int > &split_neighbors) const
bool getFragmentEdgeID(unsigned int elem_edge_id, unsigned int &frag_edge_id) const
virtual unsigned int numInteriorNodes() const
unsigned int getTipEdgeID() const