Now element insertion appears to work
authorIsaac Dooley <idooley2@illinois.edu>
Sat, 17 Feb 2007 18:00:35 +0000 (18:00 +0000)
committerIsaac Dooley <idooley2@illinois.edu>
Sat, 17 Feb 2007 18:00:35 +0000 (18:00 +0000)
src/libs/ck-libs/ParFUM-Tops/ParFUM_TOPS.C

index 8a554e37dd0c6315babf4ff43a24a9a842d8505b..c0c08e651a845516bd6a50441fc0b4238c8b6cb6 100644 (file)
@@ -3,6 +3,20 @@
 *
 *      Author: Isaac Dooley
 
+
+
+Assumptions: 
+
+TopNode is just the index into the nodes
+TopElem is just the signed index into the elements negatives are ghosts
+
+
+
+
+
+Notes:
+
+
 mesh_modify.C:  FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
 mesh_modify.C:  return FEM_add_node(FEM_Mesh_lookup(mesh,"FEM_add_node"), adjacent_nodes, num_adjacent_nodes, chunks, numChunks, forceShared);
 mesh_modify.C:  return FEM_remove_node(FEM_Mesh_lookup(mesh,"FEM_remove_node"), node);
@@ -21,27 +35,26 @@ TopModel* topModel_Create(){
   int which_mesh=FEM_Mesh_default_read();
   FEM_Mesh_allocate_valid_attr(which_mesh, FEM_NODE);
   FEM_Mesh_allocate_valid_attr(which_mesh, FEM_ELEM+0);
-  
-  // Allocate an ID attribute for the elements and nodes
-  
-  //   FEM_GLOBALNO
-  
-  return FEM_Mesh_lookup(which_mesh,"TopModel::TopModel()");
+  FEM_Mesh_allocate_valid_attr(which_mesh, FEM_ELEM+1);
+  FEM_Mesh *mesh = FEM_Mesh_lookup(which_mesh,"TopModel::TopModel()");
+
+  // Don't Allocate the Global Number attribute for the elements and nodes  
+  // It will be automatically created upon calls to void FEM_Entity::setGlobalno(int r,int g) {
+
+  return mesh;
 }
 
 TopNode topModel_InsertNode(TopModel* m, double x, double y, double z){
-  // TODO : insert a node here
-  int which = FEM_add_node_local_nolock(m);
-  m->node.set_coord(which,x,y,z);
-
-  TopNode a;
-  return a;
+  int newNode = FEM_add_node_local_nolock(m);
+  m->node.set_coord(newNode,x,y,z);
+  return newNode;
 }
 
 
 /** Set id of a node */
-void topNode_SetId(TopModel*, TopNode, TopID id){
+void topNode_SetId(TopModel* m, TopNode n, TopID id){
        // just set the nodal id attribute to id
+  m->node.setGlobalno(n,id);
 }
 
 /** Set attribute of a node */
@@ -50,19 +63,24 @@ void topNode_SetAttrib(TopModel*, TopNode, NodeAtt*){
 }
 
 /** Insert an element */
-TopElement topModel_InsertElem(TopModel*, TopElemType, TopNode*){
-
+TopElement topModel_InsertElem(TopModel*m, TopElemType type, TopNode* nodes){
+  assert(type == FEM_TRIANGULAR);
+  int conn[3];
+  conn[0] = nodes[0];
+  conn[1] = nodes[1];
+  conn[2] = nodes[2];
+  int newEl = FEM_add_element_local(m, conn, 3, 0, 0, 0);
+  return newEl;
 }
 
 /** Set id of an element */
-void topElement_SetId(TopModel*, TopElement, TopID id){
-
+void topElement_SetId(TopModel* m, TopElement e, TopID id){
+  m->elem[0].setGlobalno(e,id);
 }
 
 /** Set attribute of an element */
 void topElement_SetAttrib(TopModel*, TopElement, ElemAtt*){
 
-
 }
 
 /** Get node via id */