Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
QuadFace.cpp
Go to the documentation of this file.
1 /* Generated by Together */
2 
3 #include "QuadFace.hpp"
4 #include "QCoElement.hpp"
5 
6 QuadFace::QuadFace(Node * * theNodes) :
7  Face( e_quad )
8 {
9  d_nodes = new Node*[4];
10  int i;
11  for( i = 0; i < 4; i++ ){
12  d_nodes[i] = theNodes[i];
13  d_nodes[i]->addFace( this );
14  }
15 }
16 
18 {
19  d_nodes = new Node*[4];
20  int i;
21  for( i = 0; i < 4; i++ ){
22  d_nodes[i] = 0;
23  }
24 }
25 
26 
28 
29  int i;
30  for( i = 0; i < 4; i++ ){
31  d_nodes[i]->removeFace( this );
32  }
33 }
34 
36 { return 4;}
37 
38 
40  Node* new_node ){
41 
42  int ind;
43  int i;
44  for( i = 0; i < 4; i++ ){
45  if( d_nodes[i] == node ){
46  ind = i;
47  break;
48  }
49  }
50  Element* coelem;
51 
52  Node* new_nodes[8];
53  if( d_E1 == side_elem ){ // normal to side
54  new_nodes[0] = d_nodes[0];
55  new_nodes[1] = d_nodes[1];
56  new_nodes[2] = d_nodes[2];
57  new_nodes[3] = d_nodes[3];
58  new_nodes[4] = (ind == 0 ? new_node : d_nodes[0] );
59  new_nodes[5] = (ind == 1 ? new_node : d_nodes[1] );
60  new_nodes[6] = (ind == 2 ? new_node : d_nodes[2] );
61  new_nodes[7] = (ind == 3 ? new_node : d_nodes[3] );
62  d_E1 = d_E2;
63  d_E2 = 0;
64  coelem = new QCoElement( new_nodes );
65  // now for this face set E1 to the coelem
66  d_E2 = d_E1;
67  d_E1 = coelem;
68  Face* oface = coelem->getFaces()[1];
69  ((QuadFace*)oface)->d_E2 = side_elem;
70  }
71  else { // normal to the other side
72  d_E2 = 0;
73  new_nodes[0] = (ind == 0 ? new_node : d_nodes[0] );
74  new_nodes[1] = (ind == 1 ? new_node : d_nodes[1] );
75  new_nodes[2] = (ind == 2 ? new_node : d_nodes[2] );
76  new_nodes[3] = (ind == 3 ? new_node : d_nodes[3] );
77  new_nodes[4] = d_nodes[0];
78  new_nodes[5] = d_nodes[1];
79  new_nodes[6] = d_nodes[2];
80  new_nodes[7] = d_nodes[3];
81  coelem = new QCoElement( new_nodes );
82  // now for the new face set E2 to side_elem (will correct the nodes later)
83  Face* oface = coelem->getFaces()[0];
84  ((QuadFace*)oface)->d_E2 = side_elem;
85  }
86  return coelem;
87 }
This class encapsulate a node over a window manifold.
Definition: Manifold_2.h:370
void addFace(Face *face)
Definition: Node.cpp:55
virtual int getNumNodes() const
Returns the number of nodes for this type of face (four for the quad face)
Definition: QuadFace.cpp:35
Element * d_E2
The second element that this face is associated with.
Definition: Face.hpp:154
virtual Element * buildCohesive(Element *side_elem, Node *node, Node *new_node)
Definition: QuadFace.cpp:39
Element * d_E1
Pointer to the first element that this face is associated with.
Definition: Face.hpp:147
Definition: adj.h:150
Face ** getFaces()
Definition: Element.hpp:106
blockLoc i
Definition: read.cpp:79
~QuadFace()
Destructor.
Definition: QuadFace.cpp:27
QuadFace()
Definition: QuadFace.cpp:17
Node ** d_nodes
Array of nodes assigned to this face.
Definition: Face.hpp:161
void removeFace(Face *face)
Definition: Node.cpp:70
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