www.mooseframework.org
EFAEdge.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include <vector>
13 
14 class EFANode;
15 
16 class EFAEdge
17 {
18 public:
19  EFAEdge(EFANode * node1, EFANode * node2);
20  EFAEdge(const EFAEdge & other_edge);
21 
22  ~EFAEdge();
23 
24 private:
27  EFANode * _edge_interior_node; // The interior edge node for quad8 and quad9 elements
28  std::vector<EFANode *> _embedded_nodes;
29  std::vector<double> _intersection_x;
30 
31 public:
32  bool equivalent(const EFAEdge & other) const;
33  bool isPartialOverlap(const EFAEdge & other) const;
34  bool containsEdge(const EFAEdge & other) const;
35  bool getNodeMasters(EFANode * node,
36  std::vector<EFANode *> & master_nodes,
37  std::vector<double> & master_weights) const;
38  // bool operator < (const EFAEdge & other) const;
39 
40  void addIntersection(double position, EFANode * embedded_node_tmp, EFANode * from_node);
41  void resetIntersection(double position, EFANode * embedded_node_tmp, EFANode * from_node);
42  void copyIntersection(const EFAEdge & other, unsigned int from_node_id);
43  EFANode * getNode(unsigned int index) const;
45  void setInteriorNode(EFANode * node) { _edge_interior_node = node; };
46  void reverseNodes();
47 
48  bool hasIntersection() const;
49  bool hasIntersectionAtPosition(double position, EFANode * from_node) const;
50  double getIntersection(unsigned int emb_id, EFANode * from_node) const;
51  double distanceFromNode1(EFANode * node) const;
52  bool isEmbeddedNode(const EFANode * node) const;
53  unsigned int getEmbeddedNodeIndex(EFANode * node) const;
54  unsigned int getEmbeddedNodeIndex(double position, EFANode * from_node) const;
55 
56  EFANode * getEmbeddedNode(unsigned int index) const;
57  unsigned int numEmbeddedNodes() const;
58  void consistencyCheck();
59  void switchNode(EFANode * new_node, EFANode * old_node);
60  bool containsNode(const EFANode * node) const;
61  void removeEmbeddedNodes();
62  void removeEmbeddedNode(EFANode * node);
63 };
64 
EFAEdge::hasIntersectionAtPosition
bool hasIntersectionAtPosition(double position, EFANode *from_node) const
Definition: EFAEdge.C:211
EFAEdge::_edge_node2
EFANode * _edge_node2
Definition: EFAEdge.h:26
EFAEdge::isEmbeddedNode
bool isEmbeddedNode(const EFANode *node) const
Definition: EFAEdge.C:266
EFAEdge::EFAEdge
EFAEdge(EFANode *node1, EFANode *node2)
Definition: EFAEdge.C:16
EFAEdge::~EFAEdge
~EFAEdge()
Definition: EFAEdge.C:33
EFAEdge::equivalent
bool equivalent(const EFAEdge &other) const
Definition: EFAEdge.C:38
EFAEdge::_intersection_x
std::vector< double > _intersection_x
Definition: EFAEdge.h:29
EFAEdge::getInteriorNode
EFANode * getInteriorNode() const
Definition: EFAEdge.h:44
EFAEdge::copyIntersection
void copyIntersection(const EFAEdge &other, unsigned int from_node_id)
Definition: EFAEdge.C:160
EFAEdge::numEmbeddedNodes
unsigned int numEmbeddedNodes() const
Definition: EFAEdge.C:339
EFAEdge::addIntersection
void addIntersection(double position, EFANode *embedded_node_tmp, EFANode *from_node)
Definition: EFAEdge.C:130
EFAEdge::containsNode
bool containsNode(const EFANode *node) const
Definition: EFAEdge.C:377
EFAEdge::getIntersection
double getIntersection(unsigned int emb_id, EFANode *from_node) const
Definition: EFAEdge.C:237
EFAEdge::switchNode
void switchNode(EFANode *new_node, EFANode *old_node)
Definition: EFAEdge.C:363
EFAEdge::removeEmbeddedNodes
void removeEmbeddedNodes()
Definition: EFAEdge.C:383
EFAEdge::getNode
EFANode * getNode(unsigned int index) const
Definition: EFAEdge.C:179
EFAEdge::resetIntersection
void resetIntersection(double position, EFANode *embedded_node_tmp, EFANode *from_node)
Definition: EFAEdge.C:142
EFAEdge::_edge_node1
EFANode * _edge_node1
Definition: EFAEdge.h:25
EFAEdge::reverseNodes
void reverseNodes()
Definition: EFAEdge.C:190
EFAEdge::getEmbeddedNode
EFANode * getEmbeddedNode(unsigned int index) const
Definition: EFAEdge.C:330
EFAEdge::_edge_interior_node
EFANode * _edge_interior_node
Definition: EFAEdge.h:27
EFAEdge::consistencyCheck
void consistencyCheck()
Definition: EFAEdge.C:345
EFAEdge::distanceFromNode1
double distanceFromNode1(EFANode *node) const
Definition: EFAEdge.C:248
EFAEdge::setInteriorNode
void setInteriorNode(EFANode *node)
Definition: EFAEdge.h:45
EFAEdge
Definition: EFAEdge.h:16
EFANode
Definition: EFANode.h:14
EFAEdge::hasIntersection
bool hasIntersection() const
Definition: EFAEdge.C:198
EFAEdge::removeEmbeddedNode
void removeEmbeddedNode(EFANode *node)
Definition: EFAEdge.C:390
EFAEdge::isPartialOverlap
bool isPartialOverlap(const EFAEdge &other) const
Definition: EFAEdge.C:57
EFAEdge::_embedded_nodes
std::vector< EFANode * > _embedded_nodes
Definition: EFAEdge.h:28
EFAEdge::containsEdge
bool containsEdge(const EFAEdge &other) const
Definition: EFAEdge.C:63
EFAEdge::getEmbeddedNodeIndex
unsigned int getEmbeddedNodeIndex(EFANode *node) const
Definition: EFAEdge.C:281
EFAEdge::getNodeMasters
bool getNodeMasters(EFANode *node, std::vector< EFANode * > &master_nodes, std::vector< double > &master_weights) const
Definition: EFAEdge.C:69