Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /** @example GetEntities.cpp 00002 * Description: Get entities and report non-vertex entity connectivity and vertex adjacencies.\n 00003 * This example shows how to get connectivity and adjacencies.\n 00004 * 00005 * To run: ./GetEntities [meshfile]\n 00006 * (default values can run if users don't specify a mesh file) 00007 */ 00008 00009 #include "moab/Core.hpp" 00010 #include "moab/Range.hpp" 00011 #include "moab/CN.hpp" 00012 #include <iostream> 00013 00014 using namespace moab; 00015 using namespace std; 00016 00017 #ifndef MESH_DIR 00018 #define MESH_DIR "." 00019 #endif 00020 00021 string test_file_name = string( MESH_DIR ) + string( "/hex01.vtk" ); 00022 00023 int main( int argc, char** argv ) 00024 { 00025 if( argc > 1 ) 00026 { 00027 // User has input a mesh file 00028 test_file_name = argv[1]; 00029 } 00030 00031 // Instantiate & load a mesh from a file 00032 Core* mb = new( std::nothrow ) Core; 00033 if( NULL == mb ) return 1; 00034 ErrorCode rval = mb->load_mesh( test_file_name.c_str() );MB_CHK_ERR( rval ); 00035 00036 Range ents; 00037 00038 // Get all entities in the database 00039 rval = mb->get_entities_by_handle( 0, ents );MB_CHK_ERR( rval ); 00040 00041 for( Range::iterator it = ents.begin(); it != ents.end(); ++it ) 00042 { 00043 if( MBVERTEX == mb->type_from_handle( *it ) ) 00044 { 00045 Range adjs; 00046 rval = mb->get_adjacencies( &( *it ), 1, 3, false, adjs );MB_CHK_ERR( rval ); 00047 cout << "Vertex " << mb->id_from_handle( *it ) << " adjacencies:" << endl; 00048 adjs.print(); 00049 } 00050 else if( mb->type_from_handle( *it ) < MBENTITYSET ) 00051 { 00052 const EntityHandle* connect; 00053 int num_connect; 00054 rval = mb->get_connectivity( *it, connect, num_connect );MB_CHK_ERR( rval ); 00055 cout << CN::EntityTypeName( mb->type_from_handle( *it ) ) << " " << mb->id_from_handle( *it ) 00056 << " vertex connectivity is: "; 00057 for( int i = 0; i < num_connect; i++ ) 00058 cout << mb->id_from_handle( connect[i] ) << " "; 00059 cout << endl; 00060 } 00061 } 00062 00063 delete mb; 00064 00065 return 0; 00066 }