MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include "moab/Core.hpp"
#include "moab/Range.hpp"
#include "TestRunner.hpp"
#include "ReadHDF5.hpp"
#include "MBTagConventions.hpp"
#include "moab/FileOptions.hpp"
#include <vector>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <limits>
Go to the source code of this file.
Defines | |
#define | FILE_NAME_BASE "portable" |
#define | BASE_NAME STRINGIFY( MESHDIR ) "/h5file/" FILE_NAME_BASE |
#define | NATIVE_NAME FILE_NAME_BASE ".h5m" |
#define | READ_OPTS "BUFFER_SIZE=256" |
#define | DEFINE_TEST_SET(NAME) |
#define | REGISTER_TEST_SET(NAME) |
Functions | |
void | create_mesh (const char *filename) |
void | test_load_file (const char *filename) |
void | test_read_vertices (const char *filename) |
void | test_elements (Interface &mb, bool odd_only) |
void | test_read_elements (const char *filename) |
void | read_sets (Interface &mb, EntityHandle rows[INTERVALS]) |
void | test_read_set_contents (const char *filename) |
void | test_read_set_parent_child (const char *filename) |
void | test_read_int_tag (const char *filename) |
void | test_read_real_tag (const char *filename) |
void | test_read_handle_tag (const char *filename) |
void | test_read_bit_tag (const char *filename) |
void | test_read_partial (const char *filename) |
void | test_native_read () |
int | main (int argc, char *argv[]) |
Variables | |
const int | default_int_tag [] = { -100, -99 } |
const int | mesh_int_tag [] = { 1134, -1134 } |
const double | default_real_tag [] = { -1, -2, -3, -4, -5, -6, -7, -8 } |
const double | mesh_real_tag [] = { 8, 7, 6, 5, 4, 3, 2, 1 } |
const size_t | INTERVALS = 8 |
const size_t | NUM_VERT = ( INTERVALS + 1 ) * ( INTERVALS + 1 ) |
const size_t | NUM_QUAD = INTERVALS * INTERVALS |
const double | Z = 0.0 |
const double | EPS = std::numeric_limits< double >::epsilon() |
Tests for HDF5 portability because we call H5Tconvert ourselves to work around parallel performance issues in the HDF5 library.
Definition in file h5portable.cpp.
Definition at line 24 of file h5portable.cpp.
#define DEFINE_TEST_SET | ( | NAME | ) |
Definition at line 530 of file h5portable.cpp.
#define FILE_NAME_BASE "portable" |
Definition at line 23 of file h5portable.cpp.
#define NATIVE_NAME FILE_NAME_BASE ".h5m" |
Definition at line 25 of file h5portable.cpp.
Referenced by test_native_read().
#define READ_OPTS "BUFFER_SIZE=256" |
Definition at line 26 of file h5portable.cpp.
Referenced by test_load_file(), test_read_bit_tag(), test_read_elements(), test_read_handle_tag(), test_read_int_tag(), test_read_partial(), test_read_real_tag(), test_read_set_contents(), test_read_set_parent_child(), and test_read_vertices().
#define REGISTER_TEST_SET | ( | NAME | ) |
REGISTER_DEP_TEST( test_load_file_##NAME, test_native_read ); \ REGISTER_DEP_TEST( test_read_vertices_##NAME, test_load_file_##NAME ); \ REGISTER_DEP_TEST( test_read_elements_##NAME, test_read_vertices_##NAME ); \ REGISTER_DEP_TEST( test_read_set_contents_##NAME, test_read_elements_##NAME ); \ REGISTER_DEP_TEST( test_read_set_parent_child_##NAME, test_read_set_contents_##NAME ); \ REGISTER_DEP_TEST( test_read_int_tag_##NAME, test_read_elements_##NAME ); \ REGISTER_DEP_TEST( test_read_real_tag_##NAME, test_read_elements_##NAME ); \ REGISTER_DEP_TEST( test_read_handle_tag_##NAME, test_read_elements_##NAME ); \ REGISTER_DEP_TEST( test_read_bit_tag_##NAME, test_read_set_contents_##NAME ); \ REGISTER_DEP_TEST( test_read_partial_##NAME, test_read_elements_##NAME );
Definition at line 572 of file h5portable.cpp.
Referenced by main().
void create_mesh | ( | const char * | filename | ) |
Definition at line 73 of file h5portable.cpp.
References moab::Interface::add_entities(), moab::Interface::add_parent_child(), CHECK_ERR, moab::Interface::create_element(), moab::Interface::create_meshset(), moab::Interface::create_vertex(), default_int_tag, default_real_tag, ErrorCode, moab::Interface::get_coords(), INTERVALS, mb, MB_TAG_DENSE, MB_TAG_EXCL, MB_TAG_SPARSE, MB_TYPE_BIT, MB_TYPE_DOUBLE, MB_TYPE_HANDLE, MB_TYPE_INTEGER, MBQUAD, mesh_int_tag, mesh_real_tag, MESHSET_SET, NUM_QUAD, NUM_VERT, moab::Interface::tag_get_handle(), moab::Interface::tag_set_data(), moab::Interface::write_file(), and Z.
{ EntityHandle verts[NUM_VERT]; EntityHandle quads[NUM_QUAD]; ErrorCode rval; Core core; Interface& mb = core; const EntityHandle root = 0; Tag int_tag, real_tag, handle_tag, bit_tag, row_tag; rval = mb.tag_get_handle( "int_tag", 2, MB_TYPE_INTEGER, int_tag, MB_TAG_DENSE | MB_TAG_EXCL, default_int_tag );CHECK_ERR( rval ); rval = mb.tag_set_data( int_tag, &root, 1, mesh_int_tag );CHECK_ERR( rval ); rval = mb.tag_get_handle( "real_tag", 8, MB_TYPE_DOUBLE, real_tag, MB_TAG_DENSE | MB_TAG_EXCL, default_real_tag );CHECK_ERR( rval ); rval = mb.tag_set_data( real_tag, &root, 1, mesh_real_tag );CHECK_ERR( rval ); rval = mb.tag_get_handle( "handle_tag", 1, MB_TYPE_HANDLE, handle_tag, MB_TAG_SPARSE | MB_TAG_EXCL );CHECK_ERR( rval ); rval = mb.tag_get_handle( "bit_tag", 1, MB_TYPE_BIT, bit_tag, MB_TAG_EXCL );CHECK_ERR( rval ); rval = mb.tag_get_handle( "rowset", 1, MB_TYPE_INTEGER, row_tag, MB_TAG_SPARSE | MB_TAG_EXCL );CHECK_ERR( rval ); for( size_t i = 0; i < NUM_VERT; ++i ) { double coords[] = { static_cast< double >( i % 9 ), static_cast< double >( i / 9 ), static_cast< double >( Z ) }; rval = mb.create_vertex( coords, verts[i] );CHECK_ERR( rval ); } for( size_t i = 0; i < NUM_QUAD; ++i ) { size_t j = ( i / 8 ) * 9 + i % 8; EntityHandle conn[] = { verts[j], verts[j + 1], verts[j + 10], verts[j + 9] }; rval = mb.create_element( MBQUAD, conn, 4, quads[i] );CHECK_ERR( rval ); double coords[4 * 3]; rval = mb.get_coords( conn, 4, coords );CHECK_ERR( rval ); int int_val[] = { (int)coords[0], (int)coords[1] }; rval = mb.tag_set_data( int_tag, quads + i, 1, int_val );CHECK_ERR( rval ); double real_val[] = { coords[0], coords[1], coords[3], coords[4], coords[6], coords[7], coords[9], coords[10] }; rval = mb.tag_set_data( real_tag, quads + i, 1, real_val );CHECK_ERR( rval ); rval = mb.tag_set_data( handle_tag, conn, 1, quads + i );CHECK_ERR( rval ); } EntityHandle prev = 0; for( size_t i = 0; i < INTERVALS; ++i ) { EntityHandle set; int flag = i < 4 ? MESHSET_SET : MESHSET_ORDERED; rval = mb.create_meshset( flag, set );CHECK_ERR( rval ); rval = mb.add_entities( set, quads + i * INTERVALS, INTERVALS );CHECK_ERR( rval ); char bit = i % 2; rval = mb.tag_set_data( bit_tag, &set, 1, &bit );CHECK_ERR( rval ); int ival = bit; rval = mb.tag_set_data( row_tag, &set, 1, &ival );CHECK_ERR( rval ); if( prev != 0 ) { rval = mb.add_parent_child( prev, set );CHECK_ERR( rval ); } prev = set; } rval = mb.write_file( filename, "MOAB" );CHECK_ERR( rval ); }
int main | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 588 of file h5portable.cpp.
References moab::fail(), REGISTER_TEST, REGISTER_TEST_SET, RUN_TESTS, and test_native_read().
{ #ifdef MOAB_HAVE_MPI int fail = MPI_Init( &argc, &argv ); if( fail ) return fail; #endif REGISTER_TEST( test_native_read ); REGISTER_TEST_SET( x86_64 ); REGISTER_TEST_SET( x86_32 ); REGISTER_TEST_SET( power_32 ); int result = RUN_TESTS( argc, argv ); #ifdef MOAB_HAVE_MPI fail = MPI_Finalize(); if( fail ) return fail; #endif return result; }
void read_sets | ( | Interface & | mb, |
EntityHandle | rows[INTERVALS] | ||
) |
Definition at line 242 of file h5portable.cpp.
References moab::Range::all_of_type(), moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::Range::end(), ErrorCode, moab::Range::front(), moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::Interface::get_entities_by_handle(), moab::Interface::get_entities_by_type(), MBENTITYSET, MBQUAD, and moab::Range::size().
Referenced by test_gather_sets_ranged(), test_read_bit_tag(), test_read_set_contents(), and test_read_set_parent_child().
{ // get the sets Range sets; ErrorCode rval = mb.get_entities_by_type( 0, MBENTITYSET, sets );CHECK_ERR( rval ); CHECK_EQUAL( INTERVALS, sets.size() ); // check set contents for( Range::iterator i = sets.begin(); i != sets.end(); ++i ) { Range contents; rval = mb.get_entities_by_handle( *i, contents );CHECK_ERR( rval ); CHECK_EQUAL( INTERVALS, contents.size() ); CHECK( contents.all_of_type( MBQUAD ) ); const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( contents.front(), conn, len );CHECK_ERR( rval ); double coords[3]; rval = mb.get_coords( conn, 1, coords );CHECK_ERR( rval ); size_t y = (size_t)coords[1]; CHECK( y < INTERVALS ); rows[y] = *i; } }
void test_elements | ( | Interface & | mb, |
bool | odd_only | ||
) |
Definition at line 185 of file h5portable.cpp.
References moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, CHECK_REAL_EQUAL, moab::Range::end(), EPS, ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::Interface::get_entities_by_type(), INTERVALS, MBQUAD, NUM_QUAD, moab::Range::size(), and Z.
Referenced by test_read_elements(), and test_read_partial().
{ // get the elements Range quads; ErrorCode rval = mb.get_entities_by_type( 0, MBQUAD, quads );CHECK_ERR( rval ); CHECK_EQUAL( NUM_QUAD / ( 1 + odd_only ), quads.size() ); // check quad connectivity bool seen[INTERVALS][INTERVALS]; for( size_t i = 0; i < INTERVALS; ++i ) for( size_t j = 0; j < INTERVALS; ++j ) seen[i][j] = false; for( Range::iterator i = quads.begin(); i != quads.end(); ++i ) { const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( *i, conn, len );CHECK_ERR( rval ); CHECK_EQUAL( 4, len ); double coords[4 * 3]; rval = mb.get_coords( conn, len, coords );CHECK_ERR( rval ); size_t x = (size_t)coords[0]; size_t y = (size_t)coords[1]; CHECK_REAL_EQUAL( (double)x, coords[0], EPS ); CHECK_REAL_EQUAL( (double)y, coords[1], EPS ); CHECK( x < INTERVALS ); CHECK( y < INTERVALS ); CHECK_REAL_EQUAL( Z, coords[2], EPS ); CHECK_REAL_EQUAL( 1.0 + x, coords[3], EPS ); CHECK_REAL_EQUAL( 0.0 + y, coords[4], EPS ); CHECK_REAL_EQUAL( Z, coords[5], EPS ); CHECK_REAL_EQUAL( 1.0 + x, coords[6], EPS ); CHECK_REAL_EQUAL( 1.0 + y, coords[7], EPS ); CHECK_REAL_EQUAL( Z, coords[8], EPS ); CHECK_REAL_EQUAL( 0.0 + x, coords[9], EPS ); CHECK_REAL_EQUAL( 1.0 + y, coords[10], EPS ); CHECK_REAL_EQUAL( Z, coords[11], EPS ); } if( odd_only ) { for( size_t i = 0; i < INTERVALS; i += 2 ) for( size_t j = 0; j < INTERVALS; ++j ) CHECK( !seen[i][j] ); } }
void test_load_file | ( | const char * | filename | ) |
void test_native_read | ( | ) |
Definition at line 514 of file h5portable.cpp.
References create_mesh(), filename, NATIVE_NAME, test_read_bit_tag(), test_read_elements(), test_read_handle_tag(), test_read_int_tag(), test_read_partial(), test_read_real_tag(), test_read_set_contents(), test_read_set_parent_child(), and test_read_vertices().
Referenced by main().
{ const char* filename = NATIVE_NAME; create_mesh( filename ); test_read_vertices( filename ); test_read_elements( filename ); test_read_set_contents( filename ); test_read_set_parent_child( filename ); test_read_int_tag( filename ); test_read_real_tag( filename ); test_read_handle_tag( filename ); test_read_bit_tag( filename ); test_read_partial( filename ); if( !getenv( "KEEP_FILE" ) ) remove( filename ); }
void test_read_bit_tag | ( | const char * | filename | ) |
Definition at line 469 of file h5portable.cpp.
References CHECK_ARRAYS_EQUAL, CHECK_EQUAL, CHECK_ERR, ErrorCode, INTERVALS, moab::Interface::load_file(), MB_TAG_BIT, MB_TYPE_BIT, READ_OPTS, read_sets(), size, moab::Interface::tag_get_data(), moab::Interface::tag_get_data_type(), moab::Interface::tag_get_handle(), moab::Interface::tag_get_length(), moab::Interface::tag_get_type(), and TagType.
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the tag Tag tag; rval = mb.tag_get_handle( "bit_tag", 1, MB_TYPE_BIT, tag );CHECK_ERR( rval ); // check tag properties int size; rval = mb.tag_get_length( tag, size );CHECK_ERR( rval ); CHECK_EQUAL( 1, size ); TagType storage; rval = mb.tag_get_type( tag, storage );CHECK_ERR( rval ); CHECK_EQUAL( MB_TAG_BIT, storage ); DataType type; rval = mb.tag_get_data_type( tag, type );CHECK_ERR( rval ); CHECK_EQUAL( MB_TYPE_BIT, type ); // check entity values EntityHandle sets[INTERVALS]; read_sets( mb, sets ); char values[INTERVALS], expected[INTERVALS]; rval = mb.tag_get_data( tag, sets, INTERVALS, values );CHECK_ERR( rval ); for( size_t i = 0; i < INTERVALS; ++i ) expected[i] = (char)( i % 2 ); CHECK_ARRAYS_EQUAL( expected, INTERVALS, values, INTERVALS ); }
void test_read_elements | ( | const char * | filename | ) |
Definition at line 232 of file h5portable.cpp.
References CHECK_ERR, ErrorCode, moab::Interface::load_file(), READ_OPTS, and test_elements().
Referenced by main(), and test_native_read().
void test_read_handle_tag | ( | const char * | filename | ) |
Definition at line 432 of file h5portable.cpp.
References moab::Range::begin(), CHECK_EQUAL, CHECK_ERR, moab::Range::end(), ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_entities_by_type(), moab::Interface::load_file(), MB_TAG_SPARSE, MB_TYPE_HANDLE, MBQUAD, READ_OPTS, size, moab::Interface::tag_get_data(), moab::Interface::tag_get_data_type(), moab::Interface::tag_get_handle(), moab::Interface::tag_get_length(), moab::Interface::tag_get_type(), and TagType.
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the tag Tag tag; rval = mb.tag_get_handle( "handle_tag", 1, MB_TYPE_HANDLE, tag );CHECK_ERR( rval ); // check tag properties int size; rval = mb.tag_get_length( tag, size );CHECK_ERR( rval ); CHECK_EQUAL( 1, size ); TagType storage; rval = mb.tag_get_type( tag, storage );CHECK_ERR( rval ); CHECK_EQUAL( MB_TAG_SPARSE, storage ); DataType type; rval = mb.tag_get_data_type( tag, type );CHECK_ERR( rval ); CHECK_EQUAL( MB_TYPE_HANDLE, type ); // check entity values Range quads; rval = mb.get_entities_by_type( 0, MBQUAD, quads );CHECK_ERR( rval ); for( Range::iterator i = quads.begin(); i != quads.end(); ++i ) { const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( *i, conn, len );CHECK_ERR( rval ); EntityHandle value; rval = mb.tag_get_data( tag, conn, 1, &value );CHECK_ERR( rval ); CHECK_EQUAL( *i, value ); } }
void test_read_int_tag | ( | const char * | filename | ) |
Definition at line 333 of file h5portable.cpp.
References moab::Range::begin(), CHECK_ARRAYS_EQUAL, CHECK_EQUAL, CHECK_ERR, default_int_tag, moab::Range::end(), ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::Interface::get_entities_by_type(), moab::Interface::load_file(), MB_TAG_DENSE, MB_TYPE_INTEGER, MBQUAD, mesh_int_tag, READ_OPTS, size, moab::Interface::tag_get_data(), moab::Interface::tag_get_data_type(), moab::Interface::tag_get_default_value(), moab::Interface::tag_get_handle(), moab::Interface::tag_get_length(), moab::Interface::tag_get_type(), and TagType.
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the tag Tag tag; rval = mb.tag_get_handle( "int_tag", 2, MB_TYPE_INTEGER, tag );CHECK_ERR( rval ); // check tag properties int size; rval = mb.tag_get_length( tag, size );CHECK_ERR( rval ); CHECK_EQUAL( 2, size ); TagType storage; rval = mb.tag_get_type( tag, storage );CHECK_ERR( rval ); CHECK_EQUAL( MB_TAG_DENSE, storage ); DataType type; rval = mb.tag_get_data_type( tag, type );CHECK_ERR( rval ); CHECK_EQUAL( MB_TYPE_INTEGER, type ); // check default value int value[2]; rval = mb.tag_get_default_value( tag, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( default_int_tag, 2, value, 2 ); // check mesh value const EntityHandle root = 0; rval = mb.tag_get_data( tag, &root, 1, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( mesh_int_tag, 2, value, 2 ); // check entity values Range quads; rval = mb.get_entities_by_type( 0, MBQUAD, quads );CHECK_ERR( rval ); for( Range::iterator i = quads.begin(); i != quads.end(); ++i ) { const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( *i, conn, len );CHECK_ERR( rval ); double coords[3]; rval = mb.get_coords( conn, 1, coords );CHECK_ERR( rval ); int exp[] = { (int)coords[0], (int)coords[1] }; rval = mb.tag_get_data( tag, &*i, 1, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( exp, 2, value, 2 ); } }
void test_read_partial | ( | const char * | filename | ) |
Definition at line 501 of file h5portable.cpp.
References CHECK_ERR, ErrorCode, moab::Interface::load_file(), READ_OPTS, and test_elements().
Referenced by test_native_read().
void test_read_real_tag | ( | const char * | filename | ) |
Definition at line 382 of file h5portable.cpp.
References moab::Range::begin(), CHECK_ARRAYS_EQUAL, CHECK_EQUAL, CHECK_ERR, default_real_tag, moab::Range::end(), ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::Interface::get_entities_by_type(), moab::Interface::load_file(), MB_TAG_DENSE, MB_TYPE_DOUBLE, MBQUAD, mesh_real_tag, READ_OPTS, size, moab::Interface::tag_get_data(), moab::Interface::tag_get_data_type(), moab::Interface::tag_get_default_value(), moab::Interface::tag_get_handle(), moab::Interface::tag_get_length(), moab::Interface::tag_get_type(), and TagType.
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the tag Tag tag; rval = mb.tag_get_handle( "real_tag", 8, MB_TYPE_DOUBLE, tag );CHECK_ERR( rval ); // check tag properties int size; rval = mb.tag_get_length( tag, size );CHECK_ERR( rval ); CHECK_EQUAL( 8, size ); TagType storage; rval = mb.tag_get_type( tag, storage );CHECK_ERR( rval ); CHECK_EQUAL( MB_TAG_DENSE, storage ); DataType type; rval = mb.tag_get_data_type( tag, type );CHECK_ERR( rval ); CHECK_EQUAL( MB_TYPE_DOUBLE, type ); // check default value double value[8]; rval = mb.tag_get_default_value( tag, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( default_real_tag, 8, value, 8 ); // check mesh value const EntityHandle root = 0; rval = mb.tag_get_data( tag, &root, 1, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( mesh_real_tag, 8, value, 8 ); // check entity values Range quads; rval = mb.get_entities_by_type( 0, MBQUAD, quads );CHECK_ERR( rval ); for( Range::iterator i = quads.begin(); i != quads.end(); ++i ) { const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( *i, conn, len );CHECK_ERR( rval ); CHECK_EQUAL( 4, len ); double coords[3 * 4]; rval = mb.get_coords( conn, len, coords );CHECK_ERR( rval ); double exp[] = { coords[0], coords[1], coords[3], coords[4], coords[6], coords[7], coords[9], coords[10] }; rval = mb.tag_get_data( tag, &*i, 1, value );CHECK_ERR( rval ); CHECK_ARRAYS_EQUAL( exp, 8, value, 8 ); } }
void test_read_set_contents | ( | const char * | filename | ) |
Definition at line 268 of file h5portable.cpp.
References moab::Range::all_of_type(), moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::Range::end(), ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::Interface::get_entities_by_handle(), INTERVALS, moab::Interface::load_file(), MBQUAD, READ_OPTS, read_sets(), and moab::Range::size().
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the sets EntityHandle rows[INTERVALS]; read_sets( mb, rows ); // check set contents for( size_t i = 0; i < INTERVALS; ++i ) { Range contents; rval = mb.get_entities_by_handle( rows[i], contents );CHECK_ERR( rval ); CHECK_EQUAL( INTERVALS, contents.size() ); CHECK( contents.all_of_type( MBQUAD ) ); for( Range::iterator j = contents.begin(); j != contents.end(); ++j ) { const EntityHandle* conn = 0; int len = 0; rval = mb.get_connectivity( *j, conn, len );CHECK_ERR( rval ); double coords[3]; rval = mb.get_coords( conn, 1, coords );CHECK_ERR( rval ); size_t y = (size_t)coords[1]; CHECK_EQUAL( i, y ); } } }
void test_read_set_parent_child | ( | const char * | filename | ) |
Definition at line 299 of file h5portable.cpp.
References CHECK, CHECK_EQUAL, CHECK_ERR, ErrorCode, moab::Interface::get_child_meshsets(), moab::Interface::get_parent_meshsets(), INTERVALS, moab::Interface::load_file(), READ_OPTS, and read_sets().
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the sets EntityHandle rows[INTERVALS]; read_sets( mb, rows ); // check set children std::vector< EntityHandle > list; for( size_t i = 0; i < INTERVALS - 1; ++i ) { list.clear(); rval = mb.get_child_meshsets( rows[i], list );CHECK_ERR( rval ); CHECK_EQUAL( (size_t)1, list.size() ); CHECK_EQUAL( rows[i + 1], list.front() ); } list.clear(); rval = mb.get_child_meshsets( rows[INTERVALS - 1], list );CHECK_ERR( rval ); CHECK( list.empty() ); // check set parents list.clear(); rval = mb.get_parent_meshsets( rows[0], list );CHECK_ERR( rval ); CHECK( list.empty() ); for( size_t i = 1; i < INTERVALS; ++i ) { list.clear(); rval = mb.get_parent_meshsets( rows[i], list );CHECK_ERR( rval ); CHECK_EQUAL( (size_t)1, list.size() ); CHECK_EQUAL( rows[i - 1], list.front() ); } }
void test_read_vertices | ( | const char * | filename | ) |
Definition at line 154 of file h5portable.cpp.
References moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, CHECK_REAL_EQUAL, moab::Range::end(), EPS, ErrorCode, moab::Interface::get_coords(), moab::Interface::get_entities_by_type(), INTERVALS, moab::Interface::load_file(), MBVERTEX, READ_OPTS, moab::Range::size(), and Z.
Referenced by test_native_read().
{ // load the file Core core; Interface& mb = core; ErrorCode rval = mb.load_file( filename, 0, READ_OPTS );CHECK_ERR( rval ); // get the vertices Range verts; rval = mb.get_entities_by_type( 0, MBVERTEX, verts );CHECK_ERR( rval ); CHECK_EQUAL( NUM_VERT, verts.size() ); // check vertex coordinates bool seen[INTERVALS + 1][INTERVALS + 1]; for( size_t i = 0; i <= INTERVALS; ++i ) for( size_t j = 0; j <= INTERVALS; ++j ) seen[i][j] = false; for( Range::iterator i = verts.begin(); i != verts.end(); ++i ) { double coords[3]; rval = mb.get_coords( &*i, 1, coords );CHECK_ERR( rval ); CHECK_REAL_EQUAL( Z, coords[2], EPS ); size_t x = (size_t)coords[0]; size_t y = (size_t)coords[1]; CHECK_REAL_EQUAL( (double)x, coords[0], EPS ); CHECK_REAL_EQUAL( (double)y, coords[1], EPS ); CHECK( x <= INTERVALS ); CHECK( y <= INTERVALS ); CHECK( !seen[x][y] ); seen[x][y] = true; } }
const int default_int_tag[] = { -100, -99 } |
Definition at line 28 of file h5portable.cpp.
Referenced by create_mesh(), and test_read_int_tag().
const double default_real_tag[] = { -1, -2, -3, -4, -5, -6, -7, -8 } |
Definition at line 30 of file h5portable.cpp.
Referenced by create_mesh(), and test_read_real_tag().
const double EPS = std::numeric_limits< double >::epsilon() |
Definition at line 37 of file h5portable.cpp.
Referenced by moab::Matrix3::is_symmetric(), test_elements(), test_read_vertices(), test_real_arg(), and test_real_opt().
const size_t INTERVALS = 8 |
Definition at line 33 of file h5portable.cpp.
const int mesh_int_tag[] = { 1134, -1134 } |
Definition at line 29 of file h5portable.cpp.
Referenced by create_mesh(), and test_read_int_tag().
const double mesh_real_tag[] = { 8, 7, 6, 5, 4, 3, 2, 1 } |
Definition at line 31 of file h5portable.cpp.
Referenced by create_mesh(), and test_read_real_tag().
Definition at line 35 of file h5portable.cpp.
Referenced by create_mesh(), and test_elements().
Definition at line 34 of file h5portable.cpp.
Referenced by create_mesh().
const double Z = 0.0 |
Definition at line 36 of file h5portable.cpp.
Referenced by create_mesh(), decide_gnomonic_plane_test(), find_rotation(), tensor_c3(), tensor_r3(), test_elements(), test_read_vertices(), and test_segment_box_intersect().