[MOAB-dev] r2663 - MOAB/trunk

kraftche at cae.wisc.edu kraftche at cae.wisc.edu
Thu Feb 26 15:13:13 CST 2009


Author: kraftche
Date: 2009-02-26 15:13:13 -0600 (Thu, 26 Feb 2009)
New Revision: 2663

Modified:
   MOAB/trunk/MBSkinner.cpp
Log:
fix skinnig of higher-order elements

Modified: MOAB/trunk/MBSkinner.cpp
===================================================================
--- MOAB/trunk/MBSkinner.cpp	2009-02-26 21:12:47 UTC (rev 2662)
+++ MOAB/trunk/MBSkinner.cpp	2009-02-26 21:13:13 UTC (rev 2663)
@@ -280,7 +280,7 @@
   for(iter = source_entities.begin(); iter != end_iter; ++iter)
   {
     // get the connectivity of this entity
-    result = thisMB->get_connectivity(*iter, tmp_conn, num_nodes, true);
+    result = thisMB->get_connectivity(*iter, tmp_conn, num_nodes, false);
     if (MB_SUCCESS == result)
       conn = tmp_conn;
     else {
@@ -288,7 +288,7 @@
         // which doesn't store connectivity explicitly; use a connect
         // vector instead
       tmp_conn_vec.clear();
-      result = thisMB->get_connectivity(&(*iter), 1, tmp_conn_vec, true);
+      result = thisMB->get_connectivity(&(*iter), 1, tmp_conn_vec, false);
       if (MB_SUCCESS != result) return MB_FAILURE;
       conn = &tmp_conn_vec[0];
       num_nodes = tmp_conn_vec.size();
@@ -327,8 +327,15 @@
           if (dum_sub_elems.empty()) {
               // need to create one
             MBEntityHandle tmphndl=0;
-            result = thisMB->create_element(conn_map->target_type[i], sub_conn, num_sub_nodes,
-                                            tmphndl);
+            int indices[MB_MAX_SUB_ENTITY_VERTICES];
+            MBEntityType new_type;
+            int num_new_nodes;
+            MBCN::SubEntityNodeIndices( type, num_nodes, mTargetDim, i, new_type, num_new_nodes, indices );
+            for(int j=0; j<num_new_nodes; j++)
+              sub_conn[j] = conn[indices[j]];
+        
+            result = thisMB->create_element(new_type, sub_conn,  
+                                            num_new_nodes, tmphndl);
             forward_target_entities.insert(tmphndl);
           }
           else {
@@ -358,7 +365,13 @@
         if(match == 0)
         {
           MBEntityHandle tmphndl=0;
-          result = thisMB->create_element(conn_map->target_type[i], sub_conn, num_sub_nodes,
+          int indices[MB_MAX_SUB_ENTITY_VERTICES];
+          MBEntityType new_type;
+          int num_new_nodes;
+          MBCN::SubEntityNodeIndices( type, num_nodes, mTargetDim, i, new_type, num_new_nodes, indices );
+          for(int j=0; j<num_new_nodes; j++)
+            sub_conn[j] = conn[indices[j]];
+          result = thisMB->create_element(new_type, sub_conn, num_new_nodes,
                                           tmphndl);
           assert(MB_SUCCESS == result);
           add_adjacency(tmphndl, sub_conn, num_sub_nodes);
@@ -640,7 +653,7 @@
   {
     // get the connectivity of this entity
     conn.clear();
-    result = thisMB->get_connectivity(&(*iter), 1, conn, true);
+    result = thisMB->get_connectivity(&(*iter), 1, conn, false);
     assert(MB_SUCCESS == result);
 
     // add node handles to boundary_node range
@@ -665,8 +678,15 @@
       if(match == 0)
       {
         MBEntityHandle tmphndl=0;
-        result = thisMB->create_element(conn_map->target_type[i], sub_conn, 
-                                         num_sub_nodes, tmphndl);
+        int indices[MB_MAX_SUB_ENTITY_VERTICES];
+        MBEntityType new_type;
+        int num_new_nodes;
+        MBCN::SubEntityNodeIndices( type, conn.size(), 1, i, new_type, num_new_nodes, indices );
+        for(int j=0; j<num_new_nodes; j++)
+          sub_conn[j] = conn[indices[j]];
+        
+        result = thisMB->create_element(new_type, sub_conn,  
+                                        num_new_nodes, tmphndl);
         assert(MB_SUCCESS == result);
         add_adjacency(tmphndl, sub_conn, num_sub_nodes);
         //target_entities.insert(tmphndl);



More information about the moab-dev mailing list