Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HexElement.cpp
Go to the documentation of this file.
1 
2 
3 #include "HexElement.hpp"
4 #include "QuadFace.hpp"
5 #include "Mesh.hpp"
6 
8 Element( e_hex ){
9 
10  d_nodes = new Node*[getNumNodes()];
11  d_faces = new Face*[getNumFaces()];
12 
13 }
14 
15 
17 Element( e_hex ){
18 
19  d_nodes = new Node*[getNumNodes()];
20  d_faces = new Face*[getNumFaces()];
21  setFromNodes( thenodes );
22 
23 }
24 
26 
27  int numn = getNumNodes();
28  int i;
29  for( i = 0; i < numn; i++ ){
30  d_nodes[i]->removeElement( this );
31  }
32  int numf = getNumFaces();
33  for( i = 0; i < numf; i++ ){
34  d_faces[i]->removeElement( this );
35  }
36 }
37 
39 { return 8; }
40 
42 { return 6; }
43 
44 void HexElement::setFaceFromNodes(int num, Node** nodes){
45 
46  // find if face exist (if not creates it)
47  Face* face = nodes[0]->sharedFace( nodes[1], d_nodes[2], d_nodes[3] );
48  if( !face ){
49  face = new QuadFace( nodes );
50  s_mesh->addFace( face );
51  }
52  setFace( num, face );
53 }
54 
55 
57 
58  // !!! check ordering
59 
60  Node *nodes[4];
61  nodes[0] = d_nodes[7];
62  nodes[1] = d_nodes[6];
63  nodes[2] = d_nodes[5];
64  nodes[3] = d_nodes[4];
65  setFaceFromNodes( 0, nodes );
66 
67  nodes[0] = d_nodes[0];
68  nodes[1] = d_nodes[1];
69  nodes[2] = d_nodes[2];
70  nodes[3] = d_nodes[3];
71  setFaceFromNodes( 1, nodes );
72 
73  nodes[0] = d_nodes[3];
74  nodes[1] = d_nodes[7];
75  nodes[2] = d_nodes[4];
76  nodes[3] = d_nodes[0];
77  setFaceFromNodes( 2, nodes );
78 
79  nodes[0] = d_nodes[1];
80  nodes[1] = d_nodes[5];
81  nodes[2] = d_nodes[6];
82  nodes[3] = d_nodes[2];
83  setFaceFromNodes( 3, nodes );
84 
85  nodes[0] = d_nodes[0];
86  nodes[1] = d_nodes[4];
87  nodes[2] = d_nodes[5];
88  nodes[3] = d_nodes[1];
89  setFaceFromNodes( 4, nodes );
90 
91  nodes[0] = d_nodes[2];
92  nodes[1] = d_nodes[6];
93  nodes[2] = d_nodes[7];
94  nodes[3] = d_nodes[3];
95  setFaceFromNodes( 5, nodes );
96 }
Face ** d_faces
Definition: Element.hpp:87
void addFace(Face *face)
Definition: Mesh.cpp:96
virtual void setFaceFromNodes(int num, Node **nodes)
Definition: HexElement.cpp:44
This class encapsulate a node over a window manifold.
Definition: Manifold_2.h:370
Face * sharedFace(Node *n2, Node *n3, Node *n4=0)
Definition: Node.cpp:118
Definition: face.h:90
Node ** d_nodes
Definition: Element.hpp:86
virtual void setFromNodes(Node **thenodes)
Definition: Element.cpp:59
blockLoc i
Definition: read.cpp:79
void removeElement(Element *theElement)
Definition: Face.cpp:81
virtual void setFromMyNodes()
Definition: HexElement.cpp:56
virtual int getNumFaces() const
Definition: HexElement.cpp:41
static Mesh * s_mesh
Definition: Element.hpp:91
virtual int getNumNodes() const
Definition: HexElement.cpp:38
void setFace(int num, Face *face)
Definition: Element.hpp:127
The Face class is an abstract base class that supplies implemented general methods, as well as a vew virtual interface methods to child classes.
Definition: Face.hpp:19
void removeElement(Element *elem)
Definition: Node.cpp:102