MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include "MeshSet.hpp"
#include "AEntityFactory.hpp"
#include "TestUtil.hpp"
#include "moab/Core.hpp"
#include "moab/SetIterator.hpp"
#include <iostream>
Go to the source code of this file.
Enumerations | |
enum | BoolOp { UNITE, INTERSECT, SUBTRACT } |
Functions | |
void | test_add_entities (unsigned flags) |
test add_entities, get_entities, num_entities | |
void | test_remove_entities (unsigned flags) |
test remove_entities, get_entities, num_entities | |
void | test_entities_by_type (unsigned flags) |
test get_entities_by_type, num_entities_by_type | |
void | test_entities_by_dimension (unsigned flags) |
test get_entities_by_dimension, num_entities_by_dimension | |
void | test_subtract (unsigned flags1, unsigned flags2) |
test subtract_meshset | |
void | test_intersect (unsigned flags1, unsigned flags2) |
test intersect_meshset | |
void | test_unite (unsigned flags1, unsigned flags2) |
test unite_meshset | |
void | test_contains_entities (unsigned flags) |
test MeshSet::contains_entities | |
void | test_clear (unsigned flags) |
test clear_meshset | |
void | make_mesh (Interface &iface) |
Create 10x10x10 hex mesh. | |
void | make_mesh (Interface &iface, EntityHandle &vstart, EntityHandle &vend, EntityHandle &hstart, EntityHandle &hend) |
Create 10x10x10 hex mesh, return ranges of handles. | |
void | print_handle_vect (const char *prefix, const std::vector< EntityHandle > &vect) |
Print std::vector<EntityHandle> | |
void | print_mbrange (const char *prefix, const Range &range) |
Print Range. | |
bool | check_set_contents (Core &mb, EntityHandle set, const std::vector< EntityHandle > &expected) |
Compare set contents against passed vector, and if MESHSET_TRACK_OWNER then check adjacencies. | |
bool | check_set_contents (Core &mb, EntityType type, EntityHandle set, unsigned flags) |
Compare result of get_entities_by_type to result of get_entities_by_handle. | |
bool | check_set_contents (Core &mb, int dim, EntityHandle set, unsigned flags) |
Compare result of get_entities_by_dimension to result of get_entities_by_handle. | |
void | remove_from_back (std::vector< EntityHandle > &vect, const Range &range) |
For each entry in range, if one or more occurances in vect, remove last occurance from vect. | |
bool | test_boolean (Core &mb, BoolOp op, unsigned flags1, const Range &set1_ents, unsigned flags2, const Range &set2_ents) |
Perform boolean op on two entity sets and verify result. | |
void | test_iterator (Interface &moab, SetIterator *iter, EntityHandle set, EntityType etype, int dim) |
void | test_iterators (unsigned int flags, bool type, bool dim) |
void | test_all_iterators () |
void | test_add_entities_ordered () |
void | test_add_entities_set () |
void | test_add_entities_ordered_tracking () |
void | test_add_entities_set_tracking () |
void | test_remove_entities_ordered () |
void | test_remove_entities_set () |
void | test_remove_entities_ordered_tracking () |
void | test_remove_entities_set_tracking () |
void | test_entities_by_type_ordered () |
void | test_entities_by_type_set () |
void | test_entities_by_dim_ordered () |
void | test_entities_by_dim_set () |
void | test_subtract_set_set () |
void | test_subtract_set_ordered () |
void | test_subtract_ordered_set () |
void | test_subtract_ordered_ordered () |
void | test_subtract_set_set_tracking () |
void | test_subtract_set_ordered_tracking () |
void | test_subtract_ordered_set_tracking () |
void | test_subtract_ordered_ordered_tracking () |
void | test_itersect_set_set () |
void | test_itersect_set_ordered () |
void | test_itersect_ordered_set () |
void | test_itersect_ordered_ordered () |
void | test_itersect_set_set_tracking () |
void | test_itersect_set_ordered_tracking () |
void | test_itersect_ordered_set_tracking () |
void | test_itersect_ordered_ordered_tracking () |
void | test_unite_set_set () |
void | test_unite_set_ordered () |
void | test_unite_ordered_set () |
void | test_unite_ordered_ordered () |
void | test_unite_set_set_tracking () |
void | test_unite_set_ordered_tracking () |
void | test_unite_ordered_set_tracking () |
void | test_unite_ordered_ordered_tracking () |
void | test_contains_entities_ordered () |
void | test_contains_entities_set () |
void | test_clear_ordered () |
void | test_clear_set () |
void | test_clear_ordered_tracking () |
void | test_clear_set_tracking () |
void | regression_insert_set_1 () |
int | main () |
template<typename iter_type > | |
void | print_handles (std::ostream &str, const char *prefix, iter_type begin, iter_type end) |
bool | compare_set_contents (unsigned flags, const std::vector< EntityHandle > &expected, int set_count, std::vector< EntityHandle > &vect, const Range &range) |
enum BoolOp |
Definition at line 46 of file Test_MBMeshSet.cpp.
bool check_set_contents | ( | Core & | mb, |
EntityHandle | set, | ||
const std::vector< EntityHandle > & | expected | ||
) |
Compare set contents against passed vector, and if MESHSET_TRACK_OWNER then check adjacencies.
Definition at line 479 of file Test_MBMeshSet.cpp.
References moab::Core::a_entity_factory(), moab::Range::begin(), CHECK_ERR, compare_set_contents(), moab::Range::end(), ErrorCode, moab::AEntityFactory::get_adjacencies(), moab::Core::get_entities_by_handle(), moab::Core::get_meshset_options(), moab::Core::get_number_entities_by_handle(), moab::Range::insert(), MESHSET_TRACK_OWNER, and print_mbrange().
Referenced by test_add_entities(), test_boolean(), test_clear(), test_entities_by_dimension(), test_entities_by_type(), and test_remove_entities().
{ unsigned flags; ErrorCode rval = mb.get_meshset_options( set, flags );CHECK_ERR( rval ); int count; std::vector< EntityHandle > vect; Range range; rval = mb.get_entities_by_handle( set, vect, false );CHECK_ERR( rval ); rval = mb.get_entities_by_handle( set, range, false );CHECK_ERR( rval ); rval = mb.get_number_entities_by_handle( set, count, false );CHECK_ERR( rval ); if( !compare_set_contents( flags, expected, count, vect, range ) ) return false; if( !( flags & MESHSET_TRACK_OWNER ) ) return true; // get all entitites with an adjacency to the set std::vector< EntityHandle > adj; Range all, adjacent; Range::iterator in = adjacent.begin(); mb.get_entities_by_handle( 0, all ); for( Range::iterator i = all.begin(); i != all.end(); ++i ) { adj.clear(); rval = mb.a_entity_factory()->get_adjacencies( *i, adj );CHECK_ERR( rval ); std::vector< EntityHandle >::iterator j = std::lower_bound( adj.begin(), adj.end(), set ); if( j != adj.end() && *j == set ) in = adjacent.insert( in, *i, *i ); } if( range != adjacent ) { std::cout << "Incorrect adjacent entities for tracking set" << std::endl; print_mbrange( "Expected", range ); print_mbrange( "Actual", adjacent ); return false; } return true; }
bool check_set_contents | ( | Core & | mb, |
EntityType | type, | ||
EntityHandle | set, | ||
unsigned | flags | ||
) |
Compare result of get_entities_by_type to result of get_entities_by_handle.
Definition at line 519 of file Test_MBMeshSet.cpp.
References moab::Range::begin(), CHECK_ERR, compare_set_contents(), moab::Range::end(), ErrorCode, moab::Core::get_entities_by_handle(), moab::Core::get_entities_by_type(), moab::Core::get_number_entities_by_type(), and moab::TYPE_FROM_HANDLE().
{ ErrorCode rval; int count; std::vector< EntityHandle > vect, expected; Range range; rval = mb.get_entities_by_handle( set, expected, false );CHECK_ERR( rval ); std::vector< EntityHandle >::iterator i = expected.begin(); while( i != expected.end() ) { if( TYPE_FROM_HANDLE( *i ) != type ) i = expected.erase( i ); else ++i; } rval = mb.get_entities_by_type( set, type, range, false );CHECK_ERR( rval ); rval = mb.get_number_entities_by_type( set, type, count, false );CHECK_ERR( rval ); std::copy( range.begin(), range.end(), std::back_inserter( vect ) ); return compare_set_contents( flags, expected, count, vect, range ); }
bool check_set_contents | ( | Core & | mb, |
int | dim, | ||
EntityHandle | set, | ||
unsigned | flags | ||
) |
Compare result of get_entities_by_dimension to result of get_entities_by_handle.
Definition at line 543 of file Test_MBMeshSet.cpp.
References moab::Range::begin(), CHECK_ERR, compare_set_contents(), dim, moab::CN::Dimension(), moab::Range::end(), ErrorCode, moab::Core::get_entities_by_dimension(), moab::Core::get_entities_by_handle(), moab::Core::get_number_entities_by_dimension(), and moab::TYPE_FROM_HANDLE().
{ ErrorCode rval; int count; std::vector< EntityHandle > vect, expected; Range range; rval = mb.get_entities_by_handle( set, expected, false );CHECK_ERR( rval ); std::vector< EntityHandle >::iterator i = expected.begin(); while( i != expected.end() ) { if( CN::Dimension( TYPE_FROM_HANDLE( *i ) ) != dim ) i = expected.erase( i ); else ++i; } rval = mb.get_entities_by_dimension( set, dim, range, false );CHECK_ERR( rval ); rval = mb.get_number_entities_by_dimension( set, dim, count, false );CHECK_ERR( rval ); std::copy( range.begin(), range.end(), std::back_inserter( vect ) ); return compare_set_contents( flags, expected, count, vect, range ); }
bool compare_set_contents | ( | unsigned | flags, |
const std::vector< EntityHandle > & | expected, | ||
int | set_count, | ||
std::vector< EntityHandle > & | vect, | ||
const Range & | range | ||
) |
Definition at line 422 of file Test_MBMeshSet.cpp.
References moab::Range::begin(), moab::Range::end(), print_handle_vect(), print_mbrange(), and moab::Range::size().
Referenced by check_set_contents().
{ std::vector< EntityHandle > sorted( expected ); std::sort( sorted.begin(), sorted.end() ); sorted.erase( std::unique( sorted.begin(), sorted.end() ), sorted.end() ); int expected_size = 0; if( flags & MESHSET_ORDERED ) { if( expected != vect ) { std::cout << "Incorrect set contents from vector-based query" << std::endl; print_handle_vect( "Expected", expected ); print_handle_vect( "Actual", vect ); return false; } expected_size = expected.size(); } else { if( sorted != vect ) { std::cout << "Incorrect set contents from vector-based query" << std::endl; print_handle_vect( "Expected", sorted ); print_handle_vect( "Actual", vect ); return false; } expected_size = sorted.size(); } if( expected_size != set_count ) { std::cout << "Incorrect size for entity set" << std::endl; std::cout << "Expected: " << expected_size << std::endl; std::cout << "Actual: " << set_count << std::endl; return false; } vect.clear(); vect.resize( range.size() ); std::copy( range.begin(), range.end(), vect.begin() ); if( sorted != vect ) { std::cout << "Incorrect set contents from mbrange-based query" << std::endl; print_handle_vect( "Expected", vect ); print_mbrange( "Actual", range ); return false; } return true; }
int main | ( | ) |
Definition at line 244 of file Test_MBMeshSet.cpp.
References regression_insert_set_1(), RUN_TEST, test_add_entities_ordered(), test_add_entities_ordered_tracking(), test_add_entities_set(), test_add_entities_set_tracking(), test_all_iterators(), test_clear_ordered(), test_clear_ordered_tracking(), test_clear_set(), test_clear_set_tracking(), test_contains_entities_ordered(), test_contains_entities_set(), test_entities_by_dim_ordered(), test_entities_by_dim_set(), test_entities_by_type_ordered(), test_entities_by_type_set(), test_itersect_ordered_ordered(), test_itersect_ordered_ordered_tracking(), test_itersect_ordered_set(), test_itersect_ordered_set_tracking(), test_itersect_set_ordered(), test_itersect_set_ordered_tracking(), test_itersect_set_set(), test_itersect_set_set_tracking(), test_remove_entities_ordered(), test_remove_entities_ordered_tracking(), test_remove_entities_set(), test_remove_entities_set_tracking(), test_subtract_ordered_ordered(), test_subtract_ordered_ordered_tracking(), test_subtract_ordered_set(), test_subtract_ordered_set_tracking(), test_subtract_set_ordered(), test_subtract_set_ordered_tracking(), test_subtract_set_set(), test_subtract_set_set_tracking(), test_unite_ordered_ordered(), test_unite_ordered_ordered_tracking(), test_unite_ordered_set(), test_unite_ordered_set_tracking(), test_unite_set_ordered(), test_unite_set_ordered_tracking(), test_unite_set_set(), and test_unite_set_set_tracking().
{ int err = 0; err += RUN_TEST( test_add_entities_ordered ); err += RUN_TEST( test_add_entities_set ); err += RUN_TEST( test_add_entities_ordered_tracking ); err += RUN_TEST( test_add_entities_set_tracking ); err += RUN_TEST( test_remove_entities_ordered ); err += RUN_TEST( test_remove_entities_set ); err += RUN_TEST( test_remove_entities_ordered_tracking ); err += RUN_TEST( test_remove_entities_set_tracking ); err += RUN_TEST( test_entities_by_type_ordered ); err += RUN_TEST( test_entities_by_type_set ); err += RUN_TEST( test_entities_by_dim_ordered ); err += RUN_TEST( test_entities_by_dim_set ); err += RUN_TEST( test_subtract_set_set ); err += RUN_TEST( test_subtract_set_ordered ); err += RUN_TEST( test_subtract_ordered_set ); err += RUN_TEST( test_subtract_ordered_ordered ); err += RUN_TEST( test_subtract_set_set_tracking ); err += RUN_TEST( test_subtract_set_ordered_tracking ); err += RUN_TEST( test_subtract_ordered_set_tracking ); err += RUN_TEST( test_subtract_ordered_ordered_tracking ); err += RUN_TEST( test_itersect_set_set ); err += RUN_TEST( test_itersect_set_ordered ); err += RUN_TEST( test_itersect_ordered_set ); err += RUN_TEST( test_itersect_ordered_ordered ); err += RUN_TEST( test_itersect_set_set_tracking ); err += RUN_TEST( test_itersect_set_ordered_tracking ); err += RUN_TEST( test_itersect_ordered_set_tracking ); err += RUN_TEST( test_itersect_ordered_ordered_tracking ); err += RUN_TEST( test_unite_set_set ); err += RUN_TEST( test_unite_set_ordered ); err += RUN_TEST( test_unite_ordered_set ); err += RUN_TEST( test_unite_ordered_ordered ); err += RUN_TEST( test_unite_set_set_tracking ); err += RUN_TEST( test_unite_set_ordered_tracking ); err += RUN_TEST( test_unite_ordered_set_tracking ); err += RUN_TEST( test_unite_ordered_ordered_tracking ); err += RUN_TEST( test_contains_entities_ordered ); err += RUN_TEST( test_contains_entities_set ); err += RUN_TEST( test_clear_ordered ); err += RUN_TEST( test_clear_set ); err += RUN_TEST( test_clear_ordered_tracking ); err += RUN_TEST( test_clear_set_tracking ); err += RUN_TEST( regression_insert_set_1 ); err += RUN_TEST( test_all_iterators ); if( !err ) printf( "ALL TESTS PASSED\n" ); else printf( "%d TESTS FAILED\n", err ); return err; }
Create 10x10x10 hex mesh.
Definition at line 311 of file Test_MBMeshSet.cpp.
References CHECK_EQUAL, CHECK_ERR, PointInVol::coords, moab::Interface::create_element(), moab::Interface::create_vertex(), dim, ErrorCode, moab::FIRST_HANDLE(), and MBHEX.
Referenced by make_mesh(), test_add_entities(), test_clear(), test_entities_by_dimension(), test_entities_by_type(), test_intersect(), test_iterators(), test_remove_entities(), test_subtract(), and test_unite().
{ const int dim = 10; // create vertices EntityHandle prev_handle = 0; for( int z = 0; z <= dim; ++z ) { for( int y = 0; y <= dim; ++y ) { for( int x = 0; x <= dim; ++x ) { const double coords[] = { static_cast< double >( x ), static_cast< double >( y ), static_cast< double >( z ) }; EntityHandle new_handle = 0; ErrorCode rval = iface.create_vertex( coords, new_handle );CHECK_ERR( rval ); CHECK_EQUAL( ++prev_handle, new_handle ); } } } // create hexes const int dim1 = dim + 1; const int dimq = dim1 * dim1; prev_handle = FIRST_HANDLE( MBHEX ); for( int z = 0; z < dim; ++z ) { for( int y = 0; y < dim; ++y ) { for( int x = 0; x < dim; ++x ) { const EntityHandle off = 1 + x + dim1 * y + dimq * z; const EntityHandle conn[] = { off, off + 1, off + 1 + dim1, off + dim1, off + dimq, off + 1 + dimq, off + 1 + dim1 + dimq, off + dim1 + dimq }; EntityHandle new_handle = 0; ErrorCode rval = iface.create_element( MBHEX, conn, 8, new_handle );CHECK_ERR( rval ); CHECK_EQUAL( prev_handle++, new_handle ); } } } }
void make_mesh | ( | Interface & | iface, |
EntityHandle & | vstart, | ||
EntityHandle & | vend, | ||
EntityHandle & | hstart, | ||
EntityHandle & | hend | ||
) |
Create 10x10x10 hex mesh, return ranges of handles.
Definition at line 353 of file Test_MBMeshSet.cpp.
References moab::Range::back(), CHECK_EQUAL, CHECK_ERR, moab::Range::clear(), ErrorCode, moab::Range::front(), moab::Interface::get_entities_by_type(), make_mesh(), MBHEX, and MBVERTEX.
{ make_mesh( mb ); // Get handle ranges, and validate assumption that handles // are contiguous. Range range; ErrorCode rval = mb.get_entities_by_type( 0, MBVERTEX, range );CHECK_ERR( rval ); first_vert = range.front(); last_vert = range.back(); CHECK_EQUAL( (EntityHandle)1331, last_vert - first_vert + 1 ); range.clear(); rval = mb.get_entities_by_type( 0, MBHEX, range );CHECK_ERR( rval ); first_hex = range.front(); last_hex = range.back(); CHECK_EQUAL( (EntityHandle)1000, last_hex - first_hex + 1 ); }
void print_handle_vect | ( | const char * | prefix, |
const std::vector< EntityHandle > & | vect | ||
) |
Print std::vector<EntityHandle>
Definition at line 412 of file Test_MBMeshSet.cpp.
References print_handles().
Referenced by compare_set_contents().
{ print_handles( std::cout, prefix, vect.begin(), vect.end() ); }
void print_handles | ( | std::ostream & | str, |
const char * | prefix, | ||
iter_type | begin, | ||
iter_type | end | ||
) |
Definition at line 376 of file Test_MBMeshSet.cpp.
References moab::CN::EntityTypeName(), moab::ID_FROM_HANDLE(), and moab::TYPE_FROM_HANDLE().
Referenced by print_handle_vect(), and print_mbrange().
{ if( prefix ) str << prefix << ':'; if( begin == end ) { str << " (empty)" << std::endl; return; } iter_type i = begin; EntityType prev_type = TYPE_FROM_HANDLE( *i ); EntityHandle prev_ent = *i; str << ' ' << CN::EntityTypeName( prev_type ) << ' ' << ID_FROM_HANDLE( *i ); for( ;; ) { iter_type j = i; for( ++j, ++prev_ent; j != end && *j == prev_ent; ++j, ++prev_ent ) ; --prev_ent; if( prev_ent - *i > 1 ) str << "-" << ID_FROM_HANDLE( prev_ent ); else if( prev_ent - *i == 1 ) str << ", " << ID_FROM_HANDLE( prev_ent ); i = j; if( i == end ) break; str << ','; if( TYPE_FROM_HANDLE( *i ) != prev_type ) str << ' ' << CN::EntityTypeName( prev_type = TYPE_FROM_HANDLE( *i ) ); str << ' ' << ID_FROM_HANDLE( *i ); prev_ent = *i; } str << std::endl; }
void print_mbrange | ( | const char * | prefix, |
const Range & | range | ||
) |
Print Range.
Definition at line 417 of file Test_MBMeshSet.cpp.
References moab::Range::begin(), moab::Range::end(), and print_handles().
Referenced by check_set_contents(), and compare_set_contents().
{ print_handles( std::cout, prefix, range.begin(), range.end() ); }
void regression_insert_set_1 | ( | ) |
Definition at line 1209 of file Test_MBMeshSet.cpp.
References moab::Interface::add_entities(), moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::CREATE_HANDLE(), moab::Interface::create_meshset(), moab::Range::end(), ErrorCode, moab::Interface::get_entities_by_handle(), init(), moab::Range::insert(), mb, MBEDGE, MBQUAD, moab::Range::merge(), and MESHSET_SET.
Referenced by main().
{ EntityHandle e = CREATE_HANDLE( MBEDGE, 0 ); EntityHandle q = CREATE_HANDLE( MBQUAD, 0 ); const EntityHandle initial_ranges[] = { 0x7fe, 0x7fe, 0x802, 0x80b, 0xb3a, 0xb3c, 0xb6b, 0xb6b, 0xbed, 0xbee, 0x19ff, 0x19ff, 0x1a0b, 0x1a0b, 0x1a16, 0x1a17, 0x1a56, 0x1a57, 0x2554, 0x255c, e + 0x0099, e + 0x009b, e + 0x00c0, e + 0x00c2, e + 0x0729, e + 0x0732, e + 0x0a3b, e + 0x0a3d, e + 0x0ba9, e + 0x0bab, e + 0x2322, e + 0x232b, q + 0x00c, q + 0x017, q + 0x0e9, q + 0x112, q + 0x2f2, q + 0x303, q + 0x67e, q + 0x6a5, q + 0x866, q + 0x871, q + 0x8f5, q + 0x900, q + 0xc06, q + 0xc17, q + 0xc7e, q + 0xc9b, q + 0xce0, q + 0xd07 }; const EntityHandle new_ranges[] = { 0x7e1, 0x829, 0xb37, 0xb63, 0xb6b, 0xb6b, 0xb73, 0xb75, 0xbed, 0xbee, 0xc0b, 0xc10, 0x19fd, 0x19fd, 0x19ff, 0x19ff, 0x1a02, 0x1a04, 0x1a0b, 0x1a0b, 0x1a11, 0x1a17, 0x1a1b, 0x1a23, 0x1a56, 0x1a57, 0x1a7c, 0x1a96, 0x1bb5, 0x1bba, 0x254b, 0x2565, 0x25a5, 0x25bf }; Core moab; Interface& mb = moab; ErrorCode rval; EntityHandle set; rval = mb.create_meshset( MESHSET_SET, set );CHECK_ERR( rval ); Range init, add; for( size_t i = 0; i < sizeof( initial_ranges ) / sizeof( initial_ranges[0] ); i += 2 ) init.insert( initial_ranges[i], initial_ranges[i + 1] ); for( size_t i = 0; i < sizeof( new_ranges ) / sizeof( new_ranges[0] ); i += 2 ) add.insert( new_ranges[i], new_ranges[i + 1] ); rval = mb.add_entities( set, init );CHECK_ERR( rval ); rval = mb.add_entities( set, add );CHECK_ERR( rval ); std::vector< EntityHandle > contents; rval = mb.get_entities_by_handle( set, contents );CHECK_ERR( rval ); init.merge( add ); Range::iterator r = init.begin(); std::vector< EntityHandle >::iterator v = contents.begin(); for( ;; ) { if( r == init.end() || v == contents.end() ) { CHECK( r == init.end() ); CHECK( v == contents.end() ); break; } CHECK_EQUAL( *r, *v ); ++r; ++v; } }
void remove_from_back | ( | std::vector< EntityHandle > & | vect, |
const Range & | range | ||
) |
For each entry in range, if one or more occurances in vect, remove last occurance from vect.
Definition at line 744 of file Test_MBMeshSet.cpp.
References moab::Range::begin(), and moab::Range::end().
Referenced by test_remove_entities().
{ for( Range::const_iterator r = range.begin(); r != range.end(); ++r ) { std::vector< EntityHandle >::reverse_iterator i = find( vect.rbegin(), vect.rend(), *r ); if( i != vect.rend() ) *i = 0; } std::vector< EntityHandle >::iterator j = vect.begin(); while( j != vect.end() ) { if( *j == 0 ) j = vect.erase( j ); else ++j; } }
void test_add_entities | ( | unsigned | flags | ) |
test add_entities, get_entities, num_entities
Definition at line 567 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), moab::Range::begin(), CHECK, CHECK_ERR, check_set_contents(), moab::Range::clear(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, moab::Range::insert(), make_mesh(), and mb.
Referenced by test_add_entities_ordered(), test_add_entities_ordered_tracking(), test_add_entities_set(), and test_add_entities_set_tracking().
{ Core mb; make_mesh( mb ); EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); std::vector< EntityHandle > contents, vect; Range range; range.clear(); range.insert( 11, 20 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 31, 40 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20],[31,40] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 51, 60 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20],[31,40],[51,60] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 71, 80 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20],[31,40],[51,60],[71,80] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 91, 100 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20],[31,40],[51,60],[71,80],[91,100] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 111, 120 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [11,20],[31,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 6, 12 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [6,20],[31,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1, 3 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[31,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 25, 25 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[31,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 30, 30 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[30,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 29, 31 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,40],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 41, 41 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,41],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 41, 45 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,45],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 47, 47 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,45],[47,47],[51,60],[71,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 51, 80 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,45],[47,47],[51,80],[91,100],[111,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 49, 105 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,3],[6,20],[25,25],[29,45],[47,47],[49,105],[111,120] CHECK( check_set_contents( mb, set, contents ) ); vect.clear(); for( EntityHandle h = 1; h < 100; ++h ) { vect.push_back( h ); contents.push_back( h ); } rval = mb.add_entities( set, &vect[0], vect.size() );CHECK_ERR( rval ); // [1,105],[111,120] CHECK( check_set_contents( mb, set, contents ) ); vect.clear(); vect.push_back( 106 ); vect.push_back( 108 ); vect.push_back( 110 ); std::copy( vect.begin(), vect.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, &vect[0], vect.size() );CHECK_ERR( rval ); // [1,106],[108,108],[110,120] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 107, 200 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,200] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1, 1 ); range.insert( 5, 6 ); range.insert( 199, 200 ); range.insert( 201, 202 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,202] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 300, 301 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,202],[300,301] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 203, 203 ); range.insert( 205, 205 ); range.insert( 207, 207 ); range.insert( 299, 299 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,203],[205,205],[207,207],[299,301] CHECK( check_set_contents( mb, set, contents ) ); }
void test_add_entities_ordered | ( | ) |
Definition at line 63 of file Test_MBMeshSet.cpp.
References test_add_entities().
Referenced by main().
{ test_add_entities( MESHSET_ORDERED ); }
void test_add_entities_ordered_tracking | ( | ) |
Definition at line 71 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_add_entities().
Referenced by main().
{ test_add_entities( MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_add_entities_set | ( | ) |
Definition at line 67 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_add_entities().
Referenced by main().
{ test_add_entities( MESHSET_SET ); }
void test_add_entities_set_tracking | ( | ) |
Definition at line 75 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_add_entities().
Referenced by main().
{ test_add_entities( MESHSET_TRACK_OWNER | MESHSET_SET ); }
void test_all_iterators | ( | ) |
Definition at line 1262 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_iterators().
Referenced by main().
{ test_iterators( MESHSET_SET, true, false ); test_iterators( MESHSET_SET, false, true ); test_iterators( MESHSET_ORDERED, true, false ); test_iterators( MESHSET_ORDERED, false, true ); }
bool test_boolean | ( | Core & | mb, |
BoolOp | op, | ||
unsigned | flags1, | ||
const Range & | set1_ents, | ||
unsigned | flags2, | ||
const Range & | set2_ents | ||
) |
Perform boolean op on two entity sets and verify result.
Definition at line 1028 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), moab::Range::begin(), CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, INTERSECT, moab::intersect(), moab::Core::intersect_meshset(), MB_INDEX_OUT_OF_RANGE, moab::Range::merge(), MESHSET_SET, moab::Range::size(), SUBTRACT, moab::subtract(), moab::Core::subtract_meshset(), UNITE, and moab::Core::unite_meshset().
Referenced by test_intersect(), test_subtract(), and test_unite().
{ ErrorCode rval; // make sets EntityHandle set1, set2; rval = mb.create_meshset( flags1, set1 );CHECK_ERR( rval ); rval = mb.create_meshset( flags2, set2 );CHECK_ERR( rval ); rval = mb.add_entities( set1, set1_ents );CHECK_ERR( rval ); rval = mb.add_entities( set2, set2_ents );CHECK_ERR( rval ); Range tmp_range; std::vector< EntityHandle > expected; rval = MB_INDEX_OUT_OF_RANGE; switch( op ) { case UNITE: if( flags1 & MESHSET_SET ) { tmp_range = set1_ents; tmp_range.merge( set2_ents ); expected.resize( tmp_range.size() ); std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() ); } else { expected.clear(); std::copy( set1_ents.begin(), set1_ents.end(), std::back_inserter( expected ) ); std::copy( set2_ents.begin(), set2_ents.end(), std::back_inserter( expected ) ); } rval = mb.unite_meshset( set1, set2 ); break; case INTERSECT: tmp_range = intersect( set1_ents, set2_ents ); expected.resize( tmp_range.size() ); std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() ); rval = mb.intersect_meshset( set1, set2 ); break; case SUBTRACT: tmp_range = subtract( set1_ents, set2_ents ); expected.resize( tmp_range.size() ); std::copy( tmp_range.begin(), tmp_range.end(), expected.begin() ); rval = mb.subtract_meshset( set1, set2 ); break; } CHECK_ERR( rval ); return check_set_contents( mb, set1, expected ); }
void test_clear | ( | unsigned | flags | ) |
test clear_meshset
Definition at line 1195 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::clear_meshset(), moab::Core::create_meshset(), ErrorCode, make_mesh(), and mb.
Referenced by test_clear_ordered(), test_clear_ordered_tracking(), test_clear_set(), and test_clear_set_tracking().
{ std::vector< EntityHandle > contents( 4 ); Core mb; make_mesh( mb, contents[0], contents[1], contents[2], contents[3] ); EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); rval = mb.add_entities( set, &contents[0], contents.size() );CHECK_ERR( rval ); CHECK( check_set_contents( mb, set, contents ) ); rval = mb.clear_meshset( &set, 1 );CHECK_ERR( rval ); contents.clear(); CHECK( check_set_contents( mb, set, contents ) ); }
void test_clear_ordered | ( | ) |
Definition at line 222 of file Test_MBMeshSet.cpp.
References test_clear().
Referenced by main().
{ test_clear( MESHSET_ORDERED ); }
void test_clear_ordered_tracking | ( | ) |
Definition at line 230 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_clear().
Referenced by main().
{ test_clear( MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_clear_set | ( | ) |
Definition at line 226 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_clear().
Referenced by main().
{ test_clear( MESHSET_SET ); }
void test_clear_set_tracking | ( | ) |
Definition at line 234 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_clear().
Referenced by main().
{ test_clear( MESHSET_TRACK_OWNER | MESHSET_SET ); }
void test_contains_entities | ( | unsigned | flags | ) |
test MeshSet::contains_entities
Definition at line 1167 of file Test_MBMeshSet.cpp.
References CHECK, CHECK_ERR, entities, ErrorCode, moab::Interface::INTERSECT, MESHSET_TRACK_OWNER, PointInVol::result, and moab::Interface::UNION.
Referenced by test_contains_entities_ordered(), and test_contains_entities_set().
{ CHECK( !( flags & MESHSET_TRACK_OWNER ) ); MeshSet set( flags ); bool result; const EntityHandle entities[] = { 1, 2, 3, 6, 10, 11, 25, 100 }; const int num_ents = sizeof( entities ) / sizeof( EntityHandle ); ErrorCode rval = set.add_entities( entities, num_ents, 0, 0 );CHECK_ERR( rval ); result = set.contains_entities( entities, num_ents, Interface::UNION ); CHECK( result ); result = set.contains_entities( entities, num_ents, Interface::INTERSECT ); CHECK( result ); result = set.contains_entities( entities, 1, Interface::UNION ); CHECK( result ); result = set.contains_entities( entities, 1, Interface::INTERSECT ); CHECK( result ); const EntityHandle entities2[] = { 3, 4, 5 }; const int num_ents2 = sizeof( entities2 ) / sizeof( EntityHandle ); result = set.contains_entities( entities2, num_ents2, Interface::UNION ); CHECK( result ); result = set.contains_entities( entities2, num_ents2, Interface::INTERSECT ); CHECK( !result ); }
void test_contains_entities_ordered | ( | ) |
Definition at line 213 of file Test_MBMeshSet.cpp.
References test_contains_entities().
Referenced by main().
{ test_contains_entities( MESHSET_ORDERED ); }
void test_contains_entities_set | ( | ) |
Definition at line 217 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_contains_entities().
Referenced by main().
{ test_contains_entities( MESHSET_SET ); }
void test_entities_by_dim_ordered | ( | ) |
Definition at line 105 of file Test_MBMeshSet.cpp.
References test_entities_by_dimension().
Referenced by main().
{ test_entities_by_dimension( MESHSET_ORDERED ); }
void test_entities_by_dim_set | ( | ) |
Definition at line 109 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_entities_by_dimension().
Referenced by main().
void test_entities_by_dimension | ( | unsigned | flags | ) |
test get_entities_by_dimension, num_entities_by_dimension
Definition at line 997 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), ErrorCode, moab::Range::insert(), make_mesh(), and mb.
Referenced by test_entities_by_dim_ordered(), and test_entities_by_dim_set().
{ EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // Create an entity set EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); // Test empty set CHECK( check_set_contents( mb, 0, set, flags ) ); CHECK( check_set_contents( mb, 1, set, flags ) ); CHECK( check_set_contents( mb, 2, set, flags ) ); CHECK( check_set_contents( mb, 3, set, flags ) ); // Add stuff to set Range range; range.insert( first_vert, first_vert + 10 ); range.insert( first_vert + 100, first_vert + 110 ); range.insert( first_hex + 200, first_hex + 299 ); range.insert( last_hex, last_hex - 99 ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // Test CHECK( check_set_contents( mb, 0, set, flags ) ); CHECK( check_set_contents( mb, 1, set, flags ) ); CHECK( check_set_contents( mb, 2, set, flags ) ); CHECK( check_set_contents( mb, 3, set, flags ) ); }
void test_entities_by_type | ( | unsigned | flags | ) |
test get_entities_by_type, num_entities_by_type
Definition at line 968 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), CHECK, CHECK_ERR, check_set_contents(), moab::Core::create_meshset(), ErrorCode, moab::Range::insert(), make_mesh(), mb, MBEDGE, MBHEX, and MBVERTEX.
Referenced by test_entities_by_type_ordered(), and test_entities_by_type_set().
{ EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // Create an entity set EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); // Test empty set CHECK( check_set_contents( mb, MBVERTEX, set, flags ) ); CHECK( check_set_contents( mb, MBEDGE, set, flags ) ); CHECK( check_set_contents( mb, MBHEX, set, flags ) ); // Add stuff to set Range range; range.insert( first_vert, first_vert + 10 ); range.insert( first_vert + 100, first_vert + 110 ); range.insert( first_hex + 200, first_hex + 299 ); range.insert( last_hex, last_hex - 99 ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // Test CHECK( check_set_contents( mb, MBVERTEX, set, flags ) ); CHECK( check_set_contents( mb, MBEDGE, set, flags ) ); CHECK( check_set_contents( mb, MBHEX, set, flags ) ); }
void test_entities_by_type_ordered | ( | ) |
Definition at line 97 of file Test_MBMeshSet.cpp.
References test_entities_by_type().
Referenced by main().
{ test_entities_by_type( MESHSET_ORDERED ); }
void test_entities_by_type_set | ( | ) |
Definition at line 101 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_entities_by_type().
Referenced by main().
{ test_entities_by_type( MESHSET_SET ); }
void test_intersect | ( | unsigned | flags1, |
unsigned | flags2 | ||
) |
test intersect_meshset
Definition at line 1083 of file Test_MBMeshSet.cpp.
References CHECK, moab::Range::insert(), INTERSECT, make_mesh(), mb, and test_boolean().
Referenced by test_itersect_ordered_ordered(), test_itersect_ordered_ordered_tracking(), test_itersect_ordered_set(), test_itersect_ordered_set_tracking(), test_itersect_set_ordered(), test_itersect_set_ordered_tracking(), test_itersect_set_set(), and test_itersect_set_set_tracking().
{ Range empty, set1_ents, set2_ents; EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // define contents of first set set1_ents.insert( first_vert, first_vert + 10 ); set1_ents.insert( first_vert + 100, first_vert + 199 ); set1_ents.insert( first_hex + 100, first_hex + 200 ); // define contents of second set set2_ents.insert( first_vert, first_vert ); set2_ents.insert( first_vert + 10, first_vert + 10 ); set2_ents.insert( first_vert + 90, first_vert + 209 ); set2_ents.insert( first_hex + 50, first_hex + 300 ); // check empty sets CHECK( test_boolean( mb, INTERSECT, flags1, empty, flags2, empty ) ); // check intersection with 1 empty CHECK( test_boolean( mb, INTERSECT, flags1, empty, flags2, set2_ents ) ); CHECK( test_boolean( mb, INTERSECT, flags1, set1_ents, flags2, empty ) ); // check intersection of non-empty sets CHECK( test_boolean( mb, INTERSECT, flags1, set1_ents, flags2, set2_ents ) ); }
void test_iterator | ( | Interface & | moab, |
SetIterator * | iter, | ||
EntityHandle | set, | ||
EntityType | etype, | ||
int | dim | ||
) |
Definition at line 1449 of file Test_MBMeshSet.cpp.
References CHECK_EQUAL, CHECK_ERR, entities, ErrorCode, moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_handle(), moab::Interface::get_entities_by_type(), moab::SetIterator::get_next_arr(), and MBMAXTYPE.
{ // iterate over the set, adding to contents std::vector< EntityHandle > entities, entities2; bool atend = false; ErrorCode rval; while( !atend ) { rval = iter->get_next_arr( entities, atend );CHECK_ERR( rval ); } // check contents against what's in the set if( MBMAXTYPE != etype ) { rval = moab.get_entities_by_type( set, etype, entities2 );CHECK_ERR( rval ); } else if( MBMAXTYPE == etype && -1 == dim ) { rval = moab.get_entities_by_handle( set, entities2 );CHECK_ERR( rval ); } else if( -1 != dim ) { rval = moab.get_entities_by_dimension( set, dim, entities2 );CHECK_ERR( rval ); } else { // error, one of those needs to be true CHECK_ERR( MB_FAILURE ); } CHECK_EQUAL( entities.size(), entities2.size() ); }
void test_iterators | ( | unsigned int | flags, |
bool | type, | ||
bool | dim | ||
) |
Definition at line 1271 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), CHECK_ERR, moab::Core::create_meshset(), moab::Core::create_set_iterator(), ErrorCode, moab::Range::insert(), make_mesh(), mb, MBEDGE, MBHEX, MBMAXTYPE, MBVERTEX, and test_iterator().
Referenced by test_all_iterators().
{ if( test_type && test_dim ) CHECK_ERR( MB_FAILURE ); EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // Create an entity set EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); // Test iteration over empty set SetIterator* iter = NULL; rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, -1 ); delete iter; iter = NULL; } rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 100, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, -1 ); delete iter; iter = NULL; } rval = mb.create_set_iterator( set, MBMAXTYPE, 0, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, 0 ); delete iter; iter = NULL; } rval = mb.create_set_iterator( set, MBMAXTYPE, 3, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, 3 ); delete iter; iter = NULL; } // Add stuff to set Range range; range.insert( first_vert, first_vert + 10 ); range.insert( first_vert + 100, first_vert + 110 ); range.insert( first_hex + 200, first_hex + 299 ); range.insert( last_hex, last_hex - 99 ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); EntityType etype = MBVERTEX; int edim = -1; if( test_dim && !test_type ) { edim = 0; etype = MBMAXTYPE; } // Test // chunk size 1 rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // chunk size 3 rval = mb.create_set_iterator( set, etype, edim, 3, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // chunk size 11 rval = mb.create_set_iterator( set, etype, edim, 11, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // chunk size 100 rval = mb.create_set_iterator( set, etype, edim, 100, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } if( test_type ) { // chunk size 1, all ents rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, -1 ); delete iter; iter = NULL; } // chunk size 3, all ents rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 3, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, -1 ); delete iter; iter = NULL; } // chunk size large, all ents rval = mb.create_set_iterator( set, MBMAXTYPE, -1, 100000, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, MBMAXTYPE, -1 ); delete iter; iter = NULL; } etype = MBEDGE; // edges, chunk size 1 rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // edges, chunk size 100 rval = mb.create_set_iterator( set, etype, edim, 100, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } etype = MBHEX; // hexes, chunk size 1 rval = mb.create_set_iterator( set, etype, edim, 1, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // hexes, chunk size 3 rval = mb.create_set_iterator( set, etype, edim, 3, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } // hexes, chunk size 1000 rval = mb.create_set_iterator( set, etype, edim, 1000, false, iter );CHECK_ERR( rval ); if( NULL != iter ) { test_iterator( mb, iter, set, etype, edim ); delete iter; iter = NULL; } } }
void test_itersect_ordered_ordered | ( | ) |
Definition at line 159 of file Test_MBMeshSet.cpp.
References test_intersect().
Referenced by main().
{ test_intersect( MESHSET_ORDERED, MESHSET_ORDERED ); }
Definition at line 175 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_itersect_ordered_set | ( | ) |
Definition at line 155 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_ORDERED, MESHSET_SET ); }
void test_itersect_ordered_set_tracking | ( | ) |
Definition at line 171 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_SET ); }
void test_itersect_set_ordered | ( | ) |
Definition at line 151 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_SET, MESHSET_ORDERED ); }
void test_itersect_set_ordered_tracking | ( | ) |
Definition at line 167 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_TRACK_OWNER | MESHSET_SET, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_itersect_set_set | ( | ) |
Definition at line 147 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_intersect().
Referenced by main().
{ test_intersect( MESHSET_SET, MESHSET_SET ); }
void test_itersect_set_set_tracking | ( | ) |
Definition at line 163 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_intersect().
Referenced by main().
void test_remove_entities | ( | unsigned | flags | ) |
test remove_entities, get_entities, num_entities
Definition at line 761 of file Test_MBMeshSet.cpp.
References moab::Core::add_entities(), moab::Range::begin(), CHECK, CHECK_ERR, check_set_contents(), moab::Range::clear(), moab::Core::create_meshset(), moab::Range::end(), ErrorCode, moab::Range::insert(), make_mesh(), mb, moab::Core::remove_entities(), remove_from_back(), and moab::subtract().
Referenced by test_remove_entities_ordered(), test_remove_entities_ordered_tracking(), test_remove_entities_set(), and test_remove_entities_set_tracking().
{ Core mb; make_mesh( mb ); EntityHandle set; ErrorCode rval = mb.create_meshset( flags, set );CHECK_ERR( rval ); std::vector< EntityHandle > contents; Range range; range.clear(); range.insert( 1, 1000 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1, 5 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [6,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 6, 6 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [7,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 7, 10 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [11,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1, 20 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1, 5 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 22, 30 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,1000] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1000, 1000 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,999] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 901, 999 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,900] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 900, 999 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 1000, 1001 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 890, 898 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 100, 149 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[31,99],[150,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 31, 99 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 200, 249 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,199],[250,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 300, 349 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,199],[250,299],[350,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 159, 399 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,158],[400,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 450, 499 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,158],[400,449],[500,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 550, 599 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[150,158],[400,449],[500,549],[600,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 150, 549 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[600,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); range.clear(); range.insert( 650, 699 ); remove_from_back( contents, range ); rval = mb.remove_entities( set, range );CHECK_ERR( rval ); // [21,21],[600,649],[700,889],[899,899] CHECK( check_set_contents( mb, set, contents ) ); // test vector-based remove assert( contents.size() == 242 ); std::vector< EntityHandle > remlist( 5 ); remlist[0] = contents[240]; contents.erase( contents.begin() + 240 ); remlist[1] = contents[200]; contents.erase( contents.begin() + 200 ); remlist[2] = contents[100]; contents.erase( contents.begin() + 100 ); remlist[3] = contents[25]; contents.erase( contents.begin() + 25 ); remlist[4] = contents[0]; contents.erase( contents.begin() + 0 ); rval = mb.remove_entities( set, &remlist[0], remlist.size() );CHECK_ERR( rval ); // [600,623],[625,649],[700,748],[750,848],[850,888],[899,899] CHECK( check_set_contents( mb, set, contents ) ); // remove everything std::reverse( contents.begin(), contents.begin() + contents.size() / 2 ); // mix up a bit rval = mb.remove_entities( set, &contents[0], contents.size() );CHECK_ERR( rval ); contents.clear(); CHECK( check_set_contents( mb, set, contents ) ); // try complicated range-based remove range.clear(); contents.clear(); range.insert( 100, 200 ); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.add_entities( set, range );CHECK_ERR( rval ); // [1000,2000] CHECK( check_set_contents( mb, set, contents ) ); Range remove; remove.insert( 1, 3 ); remove.insert( 10, 100 ); remove.insert( 110, 120 ); remove.insert( 130, 140 ); remove.insert( 150, 160 ); remove.insert( 190, 200 ); remove.insert( 210, 220 ); remove.insert( 230, 240 ); range = subtract( range, remove ); contents.clear(); std::copy( range.begin(), range.end(), std::back_inserter( contents ) ); rval = mb.remove_entities( set, remove );CHECK_ERR( rval ); CHECK( check_set_contents( mb, set, contents ) ); }
void test_remove_entities_ordered | ( | ) |
Definition at line 80 of file Test_MBMeshSet.cpp.
References test_remove_entities().
Referenced by main().
{ test_remove_entities( MESHSET_ORDERED ); }
Definition at line 88 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_remove_entities().
Referenced by main().
{ test_remove_entities( MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_remove_entities_set | ( | ) |
Definition at line 84 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_remove_entities().
Referenced by main().
{ test_remove_entities( MESHSET_SET ); }
void test_remove_entities_set_tracking | ( | ) |
Definition at line 92 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_remove_entities().
Referenced by main().
void test_subtract | ( | unsigned | flags1, |
unsigned | flags2 | ||
) |
test subtract_meshset
Definition at line 1138 of file Test_MBMeshSet.cpp.
References CHECK, moab::Range::insert(), make_mesh(), mb, SUBTRACT, and test_boolean().
Referenced by test_subtract_ordered_ordered(), test_subtract_ordered_ordered_tracking(), test_subtract_ordered_set(), test_subtract_ordered_set_tracking(), test_subtract_set_ordered(), test_subtract_set_ordered_tracking(), test_subtract_set_set(), and test_subtract_set_set_tracking().
{ Range empty, set1_ents, set2_ents; EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // define contents of first set set1_ents.insert( first_vert, first_vert + 10 ); set1_ents.insert( first_vert + 100, first_vert + 199 ); set1_ents.insert( first_hex + 100, first_hex + 200 ); // define contents of second set set2_ents.insert( first_vert, first_vert ); set2_ents.insert( first_vert + 9, first_vert + 9 ); set2_ents.insert( first_vert + 11, first_vert + 99 ); set2_ents.insert( first_vert + 150, first_vert + 199 ); set2_ents.insert( first_hex + 50, first_hex + 60 ); set2_ents.insert( first_hex + 90, first_hex + 220 ); // check empty sets CHECK( test_boolean( mb, SUBTRACT, flags1, empty, flags2, empty ) ); // check union with 1 empty CHECK( test_boolean( mb, SUBTRACT, flags1, empty, flags2, set2_ents ) ); CHECK( test_boolean( mb, SUBTRACT, flags1, set1_ents, flags2, empty ) ); // check union of non-empty sets CHECK( test_boolean( mb, SUBTRACT, flags1, set1_ents, flags2, set2_ents ) ); }
void test_subtract_ordered_ordered | ( | ) |
Definition at line 126 of file Test_MBMeshSet.cpp.
References test_subtract().
Referenced by main().
{ test_subtract( MESHSET_ORDERED, MESHSET_ORDERED ); }
Definition at line 142 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_subtract_ordered_set | ( | ) |
Definition at line 122 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_ORDERED, MESHSET_SET ); }
void test_subtract_ordered_set_tracking | ( | ) |
Definition at line 138 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_SET ); }
void test_subtract_set_ordered | ( | ) |
Definition at line 118 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_SET, MESHSET_ORDERED ); }
void test_subtract_set_ordered_tracking | ( | ) |
Definition at line 134 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_TRACK_OWNER | MESHSET_SET, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_subtract_set_set | ( | ) |
Definition at line 114 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_subtract().
Referenced by main().
{ test_subtract( MESHSET_SET, MESHSET_SET ); }
void test_subtract_set_set_tracking | ( | ) |
Definition at line 130 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_subtract().
Referenced by main().
void test_unite | ( | unsigned | flags1, |
unsigned | flags2 | ||
) |
test unite_meshset
Definition at line 1110 of file Test_MBMeshSet.cpp.
References CHECK, moab::Range::insert(), make_mesh(), mb, test_boolean(), and UNITE.
Referenced by test_unite_ordered_ordered(), test_unite_ordered_ordered_tracking(), test_unite_ordered_set(), test_unite_ordered_set_tracking(), test_unite_set_ordered(), test_unite_set_ordered_tracking(), test_unite_set_set(), and test_unite_set_set_tracking().
{ Range empty, set1_ents, set2_ents; EntityHandle first_vert, last_vert, first_hex, last_hex; Core mb; make_mesh( mb, first_vert, last_vert, first_hex, last_hex ); // define contents of first set set1_ents.insert( first_vert, first_vert + 10 ); set1_ents.insert( first_vert + 100, first_vert + 199 ); set1_ents.insert( first_hex + 100, first_hex + 200 ); // define contents of second set set2_ents.insert( first_vert, first_vert ); set2_ents.insert( first_vert + 11, first_vert + 99 ); set2_ents.insert( first_vert + 150, first_vert + 209 ); set2_ents.insert( first_vert + 211, first_vert + 211 ); set2_ents.insert( first_hex + 50, first_hex + 99 ); // check empty sets CHECK( test_boolean( mb, UNITE, flags1, empty, flags2, empty ) ); // check union with 1 empty CHECK( test_boolean( mb, UNITE, flags1, empty, flags2, set2_ents ) ); CHECK( test_boolean( mb, UNITE, flags1, set1_ents, flags2, empty ) ); // check union of non-empty sets CHECK( test_boolean( mb, UNITE, flags1, set1_ents, flags2, set2_ents ) ); }
void test_unite_ordered_ordered | ( | ) |
Definition at line 192 of file Test_MBMeshSet.cpp.
References test_unite().
Referenced by main().
{ test_unite( MESHSET_ORDERED, MESHSET_ORDERED ); }
void test_unite_ordered_ordered_tracking | ( | ) |
Definition at line 208 of file Test_MBMeshSet.cpp.
References MESHSET_TRACK_OWNER, and test_unite().
Referenced by main().
{ test_unite( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_unite_ordered_set | ( | ) |
Definition at line 188 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_unite().
Referenced by main().
{ test_unite( MESHSET_ORDERED, MESHSET_SET ); }
void test_unite_ordered_set_tracking | ( | ) |
Definition at line 204 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().
Referenced by main().
{ test_unite( MESHSET_TRACK_OWNER | MESHSET_ORDERED, MESHSET_TRACK_OWNER | MESHSET_SET ); }
void test_unite_set_ordered | ( | ) |
Definition at line 184 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_unite().
Referenced by main().
{ test_unite( MESHSET_SET, MESHSET_ORDERED ); }
void test_unite_set_ordered_tracking | ( | ) |
Definition at line 200 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().
Referenced by main().
{ test_unite( MESHSET_TRACK_OWNER | MESHSET_SET, MESHSET_TRACK_OWNER | MESHSET_ORDERED ); }
void test_unite_set_set | ( | ) |
Definition at line 180 of file Test_MBMeshSet.cpp.
References MESHSET_SET, and test_unite().
Referenced by main().
{ test_unite( MESHSET_SET, MESHSET_SET ); }
void test_unite_set_set_tracking | ( | ) |
Definition at line 196 of file Test_MBMeshSet.cpp.
References MESHSET_SET, MESHSET_TRACK_OWNER, and test_unite().
Referenced by main().