www.mooseframework.org
EFAFragment2D.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 
8 #ifndef EFAFRAGMENT2D_H
9 #define EFAFRAGMENT2D_H
10 
11 #include "EFAFragment.h"
12 
13 #include <limits>
14 
15 class EFAEdge;
16 class EFAFace;
17 class EFAElement2D;
18 
19 class EFAFragment2D : public EFAFragment
20 {
21 public:
23  bool create_boundary_edges,
24  const EFAElement2D * from_host,
25  unsigned int frag_id = std::numeric_limits<unsigned int>::max());
26  EFAFragment2D(EFAElement2D * host, const EFAFace * from_face);
28 
29 private:
31  std::vector<EFAEdge *> _boundary_edges;
32 
33 public:
34  // override pure virtual methods
35  virtual void switchNode(EFANode * new_node, EFANode * old_node);
36  virtual bool containsNode(EFANode * node) const;
37  virtual unsigned int getNumCuts() const;
38  virtual unsigned int getNumCutNodes() const;
39  virtual std::set<EFANode *> getAllNodes() const;
40  virtual bool isConnected(EFAFragment * other_fragment) const;
41  virtual void removeInvalidEmbeddedNodes(std::map<unsigned int, EFANode *> & EmbeddedNodes);
42 
43  // EFAfragment2D specific methods
44  void combineTipEdges();
45  bool isEdgeInterior(unsigned int edge_id) const;
46  std::vector<unsigned int> getInteriorEdgeID() const;
47  bool isSecondaryInteriorEdge(unsigned int edge_id) const;
48  unsigned int numEdges() const;
49  EFAEdge * getEdge(unsigned int edge_id) const;
50  void addEdge(EFAEdge * new_edge);
51  std::set<EFANode *> getEdgeNodes(unsigned int edge_id) const;
52  EFAElement2D * getHostElement() const;
53  std::vector<EFAFragment2D *> split();
54 };
55 
56 #endif
std::vector< unsigned int > getInteriorEdgeID() const
unsigned int numEdges() const
virtual bool isConnected(EFAFragment *other_fragment) const
virtual void removeInvalidEmbeddedNodes(std::map< unsigned int, EFANode * > &EmbeddedNodes)
void combineTipEdges()
std::set< EFANode * > getEdgeNodes(unsigned int edge_id) const
void addEdge(EFAEdge *new_edge)
std::vector< EFAFragment2D * > split()
bool isSecondaryInteriorEdge(unsigned int edge_id) const
virtual unsigned int getNumCutNodes() const
Definition: EFAFragment2D.C:98
virtual std::set< EFANode * > getAllNodes() const
EFAElement2D * getHostElement() const
std::vector< EFAEdge * > _boundary_edges
Definition: EFAFragment2D.h:31
virtual unsigned int getNumCuts() const
Definition: EFAFragment2D.C:86
bool isEdgeInterior(unsigned int edge_id) const
virtual void switchNode(EFANode *new_node, EFANode *old_node)
Definition: EFAFragment2D.C:64
EFAFragment2D(EFAElement2D *host, bool create_boundary_edges, const EFAElement2D *from_host, unsigned int frag_id=std::numeric_limits< unsigned int >::max())
Definition: EFAFragment2D.C:19
EFAElement2D * _host_elem
Definition: EFAFragment2D.h:30
EFAEdge * getEdge(unsigned int edge_id) const
virtual bool containsNode(EFANode *node) const
Definition: EFAFragment2D.C:71