20 typedef default_lo LO;
21 typedef default_go GO;
22 typedef default_no NO;
24 typedef std::vector<int> vec_int_Type;
25 typedef std::vector<long long> vec_long_Type;
26 typedef std::vector<std::vector<int> > vec2D_int_Type;
29 typedef Teuchos::RCP<Elements_Type> ElementsPtr_Type;
31 typedef Teuchos::RCP<const Map<LO,GO,NO> > MapConstPtr_Type;
35 FiniteElement( vec_LO_Type& localNodeList );
37 FiniteElement( vec_LO_Type& localNodeList, LO elementFlag );
39 bool operator==(
const FiniteElement &other);
41 FiniteElement& operator=(
const FiniteElement& in);
43 void setElement( vec_int_Type& localNodeList );
45 int getFlag()
const {
return flag_;};
47 void setFlag(
int elementFlag );
49 const vec_LO_Type& getVectorNodeList()
const {
return localNodeIDs_; };
51 vec_LO_Type getVectorNodeListNonConst(){
return localNodeIDs_; };
53 int size() {
return localNodeIDs_.size(); };
55 int getNode(
int i )
const;
59 bool subElementsInitialized();
61 void initializeSubElements( std::string feType,
int dim ) ;
63 void addSubElement( FiniteElement& fe );
65 ElementsPtr_Type getSubElements(){
return subElements_; };
67 void setSubElements( ElementsPtr_Type& subElements );
69 void globalToLocalIDs( MapConstPtr_Type map );
72 void addSubElementIfPart( FiniteElement& feSub,
const vec2D_int_Type& permutation, std::string& feType,
int dim );
74 void findEdgeFlagInSubElements(
const vec_LO_Type& edgeIDs, vec_int_Type& flags,
bool isSubElement,
const vec2D_int_Type& permutation,
bool& foundLineSegment );
76 bool findEdgeInElement(
const vec_LO_Type& edgeIDs, vec_int_Type& flags,
const vec2D_int_Type& permutation );
78 void print(MapConstPtr_Type mapRepeated=Teuchos::null);
80 void setFiniteElementRefinementType( std::string reType ){ refinementType_ = reType; };
82 std::string getFiniteElementRefinementType( ){
return refinementType_; };
84 void tagForRefinement(){taggedForRefinement_ =
true; };
86 void untagForRefinement(){taggedForRefinement_ =
false; };
88 bool isTaggedForRefinement(){
return taggedForRefinement_; };
90 bool isInterfaceElement(){
return isInterfaceElement_; };
92 void setInterfaceElement(
bool interface){ isInterfaceElement_ = interface; };
94 void setPredecessorElement(GO
id) {predecessorElement_ = id; };
96 GO getPredecessorElement(){
return predecessorElement_; };
98 void setRefinementEdge(LO
id){refinementEdge_=id;};
100 LO getRefinementEdge(){
return refinementEdge_;};
102 void setMarkedEdges(LO
id){markedEdges_.push_back(
id);};
104 vec_LO_Type getMarkedEdges(){
return markedEdges_;};
106 void markEdge(){markedEdge_ =
true;};
108 bool isMarkedEdge(){
return markedEdge_;};
112 vec_LO_Type localNodeIDs_;
114 ElementsPtr_Type subElements_;
116 bool taggedForRefinement_ =
false;
117 bool markedEdge_ =
false;
118 std::string refinementType_;
119 bool isInterfaceElement_ =
false;
120 GO predecessorElement_ = -1;
121 LO refinementEdge_=-1;
122 vec_LO_Type markedEdges_;