MOAB: Mesh Oriented datABase  (version 5.3.0)
cub_file_test.cpp File Reference
#include "TestUtil.hpp"
#include "moab/Core.hpp"
#include "MBTagConventions.hpp"
#include "moab/CN.hpp"
#include "moab/Range.hpp"
#include "moab/GeomTopoTool.hpp"
#include <cmath>
#include <algorithm>
+ Include dependency graph for cub_file_test.cpp:

Go to the source code of this file.

Functions

void read_file (Interface &moab, const std::string &input_file)
void check_adj_ho_nodes (Interface &moab, EntityHandle entity)
void check_ho_element (Interface &moab, EntityHandle entity, int mid_nodes[4])
void test_ho_elements (EntityType type, int num_nodes)
void test_vertices ()
void test_edges ()
void test_quads ()
void test_hexes ()
void test_geometric_topology ()
void test_geometric_sets ()
void test_blocks ()
void test_side_sets ()
void test_node_sets ()
void test_tri6 ()
void test_tri7 ()
void test_quad5 ()
void test_quad8 ()
void test_quad9 ()
void test_tet8 ()
void test_tet10 ()
void test_tet14 ()
void test_hex9 ()
void test_hex20 ()
void test_hex27 ()
void test_multiple_files ()
void test_cubit12 ()
void test_cubit14 ()
int main ()
void test_element (const std::string &filename, EntityType type, int num_elem, int node_per_elem, const int *conn_list)
template<int L>
std::vector< int > find_parents (const int parent_conn[][L], int num_parent, int id)
int check_geometric_set (Interface &moab, int dim, int id, const int *children, int num_children, std::vector< int > parents)
void test_bc_sets (const char *tag_name, unsigned count, const int *ids, const std::vector< int > set_surfs[])
static EntityHandle find_side (Interface &moab, EntityHandle entity, int side_dim, int side_num)

Variables

static const std::string input_file_1 = std::string( TestDir + "/io/test.cub" )
 Input test file: test.cub Cubit 10.2 file. File contains: Two merged 10x10x10 bricks sharing a single surface (surface 6).
static const std::string ho_file = std::string( TestDir + "/io/ho_test.cub" )
static const std::string cubit12_file = std::string( TestDir + "/io/cubtest12.cub" )
static const std::string cubit14_file = std::string( TestDir + "/io/cubtest14.cub" )

Function Documentation

void check_adj_ho_nodes ( Interface moab,
EntityHandle  entity 
)

Definition at line 709 of file cub_file_test.cpp.

References CHECK_EQUAL, CHECK_ERR, conn, dim, moab::CN::Dimension(), ErrorCode, find_side(), moab::Interface::get_connectivity(), moab::CN::HasMidNodes(), moab::CN::HONodeIndex(), moab::CN::NumSubEntities(), and moab::TYPE_FROM_HANDLE().

Referenced by test_ho_elements().

{
    EntityType type = TYPE_FROM_HANDLE( entity );
    const EntityHandle* conn;
    int conn_len;
    ErrorCode rval = moab.get_connectivity( entity, conn, conn_len );CHECK_ERR( rval );

    int ho[4];
    CN::HasMidNodes( type, conn_len, ho );
    for( int dim = CN::Dimension( type ) - 1; dim > 0; --dim )
    {
        if( !ho[dim] ) continue;

        for( int j = 0; j < CN::NumSubEntities( type, dim ); ++j )
        {
            EntityHandle side = find_side( moab, entity, dim, j );
            if( !side ) continue;

            const EntityHandle* side_conn;
            int side_len;
            rval = moab.get_connectivity( side, side_conn, side_len );CHECK_ERR( rval );

            int this_idx = CN::HONodeIndex( type, conn_len, dim, j );
            int side_idx = CN::HONodeIndex( TYPE_FROM_HANDLE( side ), side_len, dim, 0 );
            CHECK_EQUAL( side_conn[side_idx], conn[this_idx] );
        }
    }
}
int check_geometric_set ( Interface moab,
int  dim,
int  id,
const int *  children,
int  num_children,
std::vector< int >  parents 
)

Definition at line 354 of file cub_file_test.cpp.

References CHECK, CHECK_EQUAL, CHECK_ERR, dim, dim_tag, ErrorCode, moab::Range::front(), geom, moab::Interface::get_child_meshsets(), moab::Interface::get_entities_by_type_and_tag(), moab::Interface::get_parent_meshsets(), MB_TYPE_INTEGER, MBENTITYSET, rel, moab::Range::size(), moab::Interface::tag_get_data(), moab::Interface::tag_get_handle(), and u.

Referenced by test_geometric_topology().

{
    ErrorCode rval;
    Tag gid_tag, dim_tag;

    rval = moab.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );
    rval = moab.tag_get_handle( "GEOM_DIMENSION", 1, MB_TYPE_INTEGER, dim_tag );CHECK_ERR( rval );
    void* tag_vals[] = { &dim, &id };
    Tag tags[]       = { dim_tag, gid_tag };
    Range ents;
    rval = moab.get_entities_by_type_and_tag( 0, MBENTITYSET, tags, tag_vals, 2, ents );CHECK_ERR( rval );
    CHECK_EQUAL( 1u, (unsigned)ents.size() );

    const EntityHandle geom = ents.front();
    std::vector< int > exp_rel, act_rel;
    std::vector< EntityHandle > rel;

    if( num_children )
    {
        exp_rel.resize( num_children );
        std::copy( children, children + num_children, exp_rel.begin() );
        std::sort( exp_rel.begin(), exp_rel.end() );
        rel.clear();
        rval = moab.get_child_meshsets( geom, rel );CHECK_ERR( rval );
        CHECK_EQUAL( num_children, (int)rel.size() );
        act_rel.resize( rel.size() );
        rval = moab.tag_get_data( gid_tag, &rel[0], rel.size(), &act_rel[0] );CHECK_ERR( rval );
        std::sort( act_rel.begin(), act_rel.end() );
        CHECK( exp_rel == act_rel );
    }

    if( !parents.empty() )
    {
        exp_rel = parents;
        std::sort( exp_rel.begin(), exp_rel.end() );
        rel.clear();
        rval = moab.get_parent_meshsets( geom, rel );CHECK_ERR( rval );
        CHECK_EQUAL( parents.size(), rel.size() );
        act_rel.resize( rel.size() );
        rval = moab.tag_get_data( gid_tag, &rel[0], rel.size(), &act_rel[0] );CHECK_ERR( rval );
        std::sort( act_rel.begin(), act_rel.end() );
        CHECK( exp_rel == act_rel );
    }

    return 0;
}
void check_ho_element ( Interface moab,
EntityHandle  entity,
int  mid_nodes[4] 
)

Definition at line 741 of file cub_file_test.cpp.

References CHECK_EQUAL, CHECK_ERR, CHECK_REAL_EQUAL, conn, moab::CN::Dimension(), ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), moab::CN::HONodeParent(), moab::CN::NumSubEntities(), moab::CN::SubEntityType(), moab::CN::SubEntityVertexIndices(), moab::TYPE_FROM_HANDLE(), and moab::CN::VerticesPerEntity().

Referenced by check_ho_elements(), and test_ho_elements().

{
    // get element info
    const EntityType type = TYPE_FROM_HANDLE( entity );
    const EntityHandle* conn;
    int conn_len;
    ErrorCode rval = moab.get_connectivity( entity, conn, conn_len );CHECK_ERR( rval );
    std::vector< double > coords( 3 * conn_len );
    rval = moab.get_coords( conn, conn_len, &coords[0] );CHECK_ERR( rval );

    // calculate and verify expected number of mid nodes
    int num_nodes = CN::VerticesPerEntity( type );
    for( int d = 1; d <= CN::Dimension( type ); ++d )
        if( mid_nodes[d] ) num_nodes += CN::NumSubEntities( type, d );
    CHECK_EQUAL( num_nodes, conn_len );

    // verify that each higher-order node is at the center
    // of its respective sub-entity.
    for( int i = CN::VerticesPerEntity( type ); i < num_nodes; ++i )
    {
        // get sub-entity owning ho-node
        int sub_dim, sub_num;
        CN::HONodeParent( type, num_nodes, i, sub_dim, sub_num );
        // get corner vertex indices
        int sub_conn[8], num_sub;
        if( sub_dim < CN::Dimension( type ) )
        {
            CN::SubEntityVertexIndices( type, sub_dim, sub_num, sub_conn );
            EntityType sub_type = CN::SubEntityType( type, sub_dim, sub_num );
            num_sub             = CN::VerticesPerEntity( sub_type );
        }
        else
        {
            num_sub = CN::VerticesPerEntity( type );
            for( int j = 0; j < num_sub; ++j )
                sub_conn[j] = j;
        }
        // calculate mean of corner vertices
        double mean[3] = { 0, 0, 0 };
        for( int j = 0; j < num_sub; ++j )
        {
            int co = 3 * sub_conn[j];
            mean[0] += coords[co];
            mean[1] += coords[co + 1];
            mean[2] += coords[co + 2];
        }
        mean[0] /= num_sub;
        mean[1] /= num_sub;
        mean[2] /= num_sub;
        // verify that higher-order node is at expected location
        CHECK_REAL_EQUAL( mean[0], coords[3 * i], 1e-6 );
        CHECK_REAL_EQUAL( mean[1], coords[3 * i + 1], 1e-6 );
        CHECK_REAL_EQUAL( mean[2], coords[3 * i + 2], 1e-6 );
    }
}
template<int L>
std::vector< int > find_parents ( const int  parent_conn[][L],
int  num_parent,
int  id 
)

Definition at line 341 of file cub_file_test.cpp.

{
    std::vector< int > results;
    for( int i = 0; i < num_parent; ++i )
    {
        for( int j = 0; j < L; ++j )
        {
            if( parent_conn[i][j] == id ) results.push_back( i + 1 );
        }
    }
    return results;
}
static EntityHandle find_side ( Interface moab,
EntityHandle  entity,
int  side_dim,
int  side_num 
) [static]

Definition at line 665 of file cub_file_test.cpp.

References MBMesquite::adj(), CHECK_ERR, conn, ErrorCode, moab::Interface::get_adjacencies(), moab::Interface::get_connectivity(), n, moab::CN::SubEntityType(), moab::CN::SubEntityVertexIndices(), moab::TYPE_FROM_HANDLE(), and moab::CN::VerticesPerEntity().

Referenced by check_adj_ho_nodes(), and TopologyInfoTest::find_side().

{
    ErrorCode rval;

    std::vector< EntityHandle > adj;
    rval = moab.get_adjacencies( &entity, 1, side_dim, false, adj );CHECK_ERR( rval );

    int sub_ent_indices[4];
    CN::SubEntityVertexIndices( TYPE_FROM_HANDLE( entity ), side_dim, side_num, sub_ent_indices );
    EntityType subtype  = CN::SubEntityType( TYPE_FROM_HANDLE( entity ), side_dim, side_num );
    int sub_ent_corners = CN::VerticesPerEntity( subtype );

    const EntityHandle* conn;
    int conn_len;
    rval = moab.get_connectivity( entity, conn, conn_len );CHECK_ERR( rval );

    for( size_t i = 0; i < adj.size(); ++i )
    {
        if( TYPE_FROM_HANDLE( adj[i] ) != subtype ) continue;

        const EntityHandle* sub_conn;
        int sub_len;
        rval = moab.get_connectivity( adj[i], sub_conn, sub_len );CHECK_ERR( rval );

        int n = std::find( sub_conn, sub_conn + sub_len, conn[sub_ent_indices[0]] ) - sub_conn;
        if( n == sub_len )  // no vertex in common
            continue;

        // check forward direction
        int j;
        for( j = 1; j < sub_ent_corners; ++j )
            if( conn[sub_ent_indices[j]] != sub_conn[( j + n ) % sub_ent_corners] ) break;
        if( j == sub_ent_corners ) return adj[i];

        // check reverse direction
        for( j = 1; j < sub_ent_corners; ++j )
            if( conn[sub_ent_indices[j]] != sub_conn[( n + sub_ent_corners - j ) % sub_ent_corners] ) break;
        if( j == sub_ent_corners ) return adj[i];
    }

    // no match
    return 0;
}
void read_file ( Interface moab,
const std::string &  input_file 
)
Examples:
DeformMeshRemap.cpp.

Definition at line 203 of file cub_file_test.cpp.

References CHECK_ERR, ErrorCode, and moab::Interface::load_file().

Referenced by check_tag_data(), cube_edge_adjacencies_test(), cube_tri_curve_coincidence_test(), cube_tri_vertex_test(), cube_tris_connectivity_test(), cube_verts_connectivity_test(), DeformMeshRemap::execute(), main(), process_bu_auto_merge(), process_merge(), process_mo_auto_merge(), process_td_auto_merge(), read_cube_curves_test(), read_cube_surfs_test(), read_cube_tris_test(), read_cube_vertex_pos_test(), read_cube_verts_test(), read_cube_vols_test(), read_cylcube_curve_senses_test(), read_cylcube_groups_test(), read_cylcube_surf_senses_test(), test_bc_sets(), test_big_endian(), test_blocks(), test_check_groups(), test_check_meshsets(), test_check_num_entities(), test_cone_curve_facet(), test_cube_curve_facet(), test_cubit12(), test_cubit14(), test_detect_byte_order(), test_detect_type(), test_element(), test_free_vertices(), test_geometric_sets(), test_geometric_topology(), test_ho_elements(), test_little_endian(), test_loadfile_1(), test_loadfile_2(), test_meshset_tags_1(), test_meshset_tags_2(), test_multiple_files(), test_read_airfoil(), test_read_ascii(), test_read_fgh(), test_read_geom_set(), test_read_hexes(), test_read_material_on_nodes(), test_read_material_set(), test_read_material_set1(), test_read_material_set2(), test_read_nodes(), test_read_physical_set(), test_read_prisms(), test_read_quads(), test_read_side(), test_read_t1(), test_read_tets(), test_read_triangles(), test_read_write_element(), test_structured_2d(), test_structured_3d(), test_tet_tags_1(), test_tet_tags_2(), test_tets_1(), test_tets_2(), test_triangles_1(), test_triangles_2(), test_triangles_tags_1(), test_triangles_tags_2(), test_unstructured_field(), test_vertices(), test_vertices_1(), test_vertices_2(), and test_write_ascii().

{
    ErrorCode rval = moab.load_file( input_file.c_str() );CHECK_ERR( rval );
}
void test_bc_sets ( const char *  tag_name,
unsigned  count,
const int *  ids,
const std::vector< int >  set_surfs[] 
)

Definition at line 581 of file cub_file_test.cpp.

References moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::Range::clear(), dim_tag, moab::Range::end(), ErrorCode, moab::Range::front(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_type_and_tag(), input_file_1, mb, MB_TYPE_INTEGER, MBENTITYSET, read_file(), moab::Range::size(), moab::Interface::tag_get_data(), moab::Interface::tag_get_handle(), and u.

Referenced by test_node_sets(), and test_side_sets().

{
    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, input_file_1 );
    Tag ss_tag, gid_tag, dim_tag;
    rval = mb.tag_get_handle( tag_name, 1, MB_TYPE_INTEGER, ss_tag );CHECK_ERR( rval );
    rval = mb.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );
    rval = mb.tag_get_handle( "GEOM_DIMENSION", 1, MB_TYPE_INTEGER, dim_tag );CHECK_ERR( rval );

    // check number of sidesets and IDs
    Range sidesets;
    rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &ss_tag, 0, 1, sidesets );CHECK_ERR( rval );
    CHECK_EQUAL( count, (unsigned)sidesets.size() );
    std::vector< EntityHandle > handles( count, 0 );
    for( Range::iterator i = sidesets.begin(); i != sidesets.end(); ++i )
    {
        int id;
        rval = mb.tag_get_data( ss_tag, &*i, 1, &id );CHECK_ERR( rval );
        unsigned idx;
        for( idx = 0; idx < count; ++idx )
            if( ids[idx] == id ) break;
        CHECK( idx != count );
        CHECK( handles[idx] == 0 );
        handles[idx] = *i;
    }

    // get surface faces
    std::vector< Range > exp( count );
    Range surfs, tmp;
    Tag tags[] = { dim_tag, gid_tag };
    for( unsigned i = 0; i < count; ++i )
    {
        exp[i].clear();
        surfs.clear();
        const int two = 2;
        for( unsigned j = 0; j < set_surfs[i].size(); ++j )
        {
            const void* vals[] = { &two, &set_surfs[i][j] };
            surfs.clear();
            rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, tags, vals, 2, surfs );CHECK_ERR( rval );
            CHECK_EQUAL( 1u, (unsigned)surfs.size() );
            tmp.clear();
            rval = mb.get_entities_by_dimension( surfs.front(), 2, tmp, true );CHECK_ERR( rval );
            exp[i].merge( tmp );
        }
    }

    // check each bc set
    Range act;
    for( unsigned i = 0; i < count; ++i )
    {
        act.clear();
        rval = mb.get_entities_by_dimension( handles[i], 2, act, true );CHECK_ERR( rval );
        CHECK( exp[i] == act );
    }
}
void test_blocks ( )

Definition at line 551 of file cub_file_test.cpp.

References CHECK, CHECK_EQUAL, CHECK_ERR, ErrorCode, moab::Range::front(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_type_and_tag(), input_file_1, MATERIAL_SET_TAG_NAME, mb, MB_TYPE_INTEGER, MBENTITYSET, read_file(), moab::Range::size(), moab::Interface::tag_get_data(), moab::Interface::tag_get_handle(), and u.

Referenced by main().

{
    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, input_file_1 );
    Tag mat_tag;
    rval = mb.tag_get_handle( MATERIAL_SET_TAG_NAME, 1, MB_TYPE_INTEGER, mat_tag );CHECK_ERR( rval );

    Range blocks;
    rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &mat_tag, 0, 1, blocks );CHECK_ERR( rval );
    CHECK_EQUAL( 1u, (unsigned)blocks.size() );
    EntityHandle block = blocks.front();
    int id;
    rval = mb.tag_get_data( mat_tag, &block, 1, &id );CHECK_ERR( rval );
    CHECK_EQUAL( 1, id );

    Range block_hexes, mesh_hexes;
    rval = mb.get_entities_by_dimension( 0, 3, mesh_hexes );CHECK_ERR( rval );
    rval = mb.get_entities_by_dimension( block, 3, block_hexes, true );CHECK_ERR( rval );
    CHECK( mesh_hexes == block_hexes );
}
void test_cubit12 ( )

Definition at line 884 of file cub_file_test.cpp.

References cubit12_file, mb, and read_file().

Referenced by main().

{
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, cubit12_file );
}
void test_cubit14 ( )

Definition at line 891 of file cub_file_test.cpp.

References CHECK, CHECK_ERR, cubit14_file, ErrorCode, moab::GeomTopoTool::find_geomsets(), mb, MB_TYPE_INTEGER, read_file(), moab::Interface::tag_get_data(), and moab::Interface::tag_get_handle().

Referenced by main().

{
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, cubit14_file );
    // check the global id for some geometry sets
    GeomTopoTool gtt( &mb_impl );
    Range ranges[5];
    ErrorCode rval = gtt.find_geomsets( ranges );CHECK_ERR( rval );
    EntityHandle set0 = ranges[0][0];  // does it have a global id > 0?
    Tag gid_tag;
    rval = mb.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );

    int val;
    rval = mb.tag_get_data( gid_tag, &set0, 1, &val );
    CHECK( val != 0 );
}
void test_edges ( )

Definition at line 297 of file cub_file_test.cpp.

References input_file_1, MBEDGE, and test_element().

Referenced by main().

{
    const int edge_conn[] = { 1,  3,                                                                           // 1
                              3,  2,  2,  5,  5,  4,  4,  7,  7,  6,  6,  8,  8,  1,  3,  9,  9,  8,           // 10
                              5,  9,  9,  7,  10, 12, 12, 11, 11, 14, 14, 13, 13, 16, 16, 15, 15, 17, 17, 10,  // 20
                              12, 18, 18, 17, 14, 18, 18, 16, 6,  19, 19, 13, 1,  20, 20, 11, 19, 21, 21, 8,   // 30
                              14, 21, 21, 20, 4,  22, 22, 15, 22, 23, 23, 7,  16, 23, 23, 19, 2,  24, 24, 10,  // 40
                              24, 25, 25, 5,  17, 25, 25, 22, 20, 26, 26, 3,  12, 26, 26, 24, 28, 30, 30, 29,  // 50
                              29, 31, 31, 2,  1,  32, 32, 28, 30, 33, 33, 32, 31, 33, 33, 3,  34, 36, 36, 35,  // 60
                              35, 37, 37, 11, 10, 38, 38, 34, 36, 39, 39, 38, 37, 39, 39, 12, 28, 40, 40, 35,  // 70
                              20, 41, 41, 32, 37, 41, 41, 40, 29, 42, 42, 34, 42, 43, 43, 31, 38, 43, 43, 24,  // 80
                              40, 44, 44, 30, 36, 44, 44, 42 };
    test_element( input_file_1, MBEDGE, 84, 2, edge_conn );
}
void test_element ( const std::string &  filename,
EntityType  type,
int  num_elem,
int  node_per_elem,
const int *  conn_list 
)

Definition at line 258 of file cub_file_test.cpp.

References moab::Range::begin(), CHECK_EQUAL, CHECK_ERR, ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_entities_by_type(), mb, MB_TYPE_INTEGER, node_per_elem, read_file(), moab::Range::size(), moab::Interface::tag_get_data(), and moab::Interface::tag_get_handle().

Referenced by test_edges(), test_hexes(), and test_quads().

{
    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, filename );

    Range elems;
    rval = mb.get_entities_by_type( 0, type, elems );CHECK_ERR( rval );
    CHECK_EQUAL( num_elem, (int)elems.size() );

    // get global ids
    Tag gid_tag;
    rval = mb.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );
    std::vector< int > ids( num_elem );
    rval = mb.tag_get_data( gid_tag, elems, &ids[0] );CHECK_ERR( rval );

    // check that global ids are consecutive, beginning with 1
    std::vector< int > sorted( ids );
    std::sort( sorted.begin(), sorted.end() );
    for( int i = 0; i < num_elem; ++i )
        CHECK_EQUAL( i + 1, sorted[i] );

    // check connectivity of each element
    std::vector< int > conn_ids( node_per_elem );
    std::vector< EntityHandle > conn_h;
    Range::iterator j = elems.begin();
    for( int i = 0; i < num_elem; ++i, ++j )
    {
        conn_h.clear();
        rval = mb.get_connectivity( &*j, 1, conn_h );CHECK_ERR( rval );
        CHECK_EQUAL( node_per_elem, (int)conn_h.size() );
        rval = mb.tag_get_data( gid_tag, &conn_h[0], node_per_elem, &conn_ids[0] );CHECK_ERR( rval );
        const int* exp = conn_list + node_per_elem * ( ids[i] - 1 );
        for( int k = 0; k < node_per_elem; ++k )
            CHECK_EQUAL( exp[k], conn_ids[k] );
    }
}

Definition at line 448 of file cub_file_test.cpp.

References moab::Range::begin(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::Range::clear(), dim, dim_tag, moab::Range::empty(), moab::Range::end(), ErrorCode, geom, moab::Interface::get_adjacencies(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_handle(), moab::Interface::get_entities_by_type(), moab::Interface::get_entities_by_type_and_tag(), moab::Interface::get_parent_meshsets(), input_file_1, mb, MB_TYPE_INTEGER, MBEDGE, MBENTITYSET, MBHEX, MBQUAD, MBVERTEX, read_file(), moab::Range::size(), moab::subtract(), moab::Interface::tag_get_handle(), u, and moab::Interface::UNION.

Referenced by main().

{
    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, input_file_1 );
    Tag gid_tag, dim_tag;
    rval = mb.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );
    rval = mb.tag_get_handle( "GEOM_DIMENSION", 1, MB_TYPE_INTEGER, dim_tag );CHECK_ERR( rval );

    // verify mesh entity counts
    Range verts, curves, surfs, vols;
    int dim = 0;
    // Cppcheck warning (false positive): variable dim is assigned a value that is never used
    // Cppcheck warning (false positive): variable dim is reassigned a value before the old one has
    // been used
    const void* vals[] = { &dim };
    rval               = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &dim_tag, vals, 1, verts );CHECK_ERR( rval );
    dim  = 1;
    rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &dim_tag, vals, 1, curves );CHECK_ERR( rval );
    dim  = 2;
    rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &dim_tag, vals, 1, surfs );CHECK_ERR( rval );
    dim  = 3;
    rval = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &dim_tag, vals, 1, vols );CHECK_ERR( rval );

    CHECK_EQUAL( 12u, (unsigned)verts.size() );
    CHECK_EQUAL( 20u, (unsigned)curves.size() );
    CHECK_EQUAL( 11u, (unsigned)surfs.size() );
    CHECK_EQUAL( 2u, (unsigned)vols.size() );

    // check that each vertex has a single node, and that the
    // node is also contained in any parent curve
    Range ents;
    Range::iterator i;
    for( i = verts.begin(); i != verts.end(); ++i )
    {
        ents.clear();
        rval = mb.get_entities_by_handle( *i, ents );CHECK_ERR( rval );
        CHECK_EQUAL( 1u, (unsigned)ents.size() );
        CHECK( ents.all_of_type( MBVERTEX ) );
    }

    // check that each curve has one node and two edges
    for( i = curves.begin(); i != curves.end(); ++i )
    {
        ents.clear();
        rval = mb.get_entities_by_handle( *i, ents );CHECK_ERR( rval );
        CHECK_EQUAL( 1u, (unsigned)ents.num_of_type( MBVERTEX ) );
        CHECK_EQUAL( 2u, (unsigned)ents.num_of_type( MBEDGE ) );
        CHECK_EQUAL( 3u, (unsigned)ents.size() );
    }

    // check that each surface has 1 node, 4 edges, 4 quads
    for( i = surfs.begin(); i != surfs.end(); ++i )
    {
        ents.clear();
        rval = mb.get_entities_by_handle( *i, ents );CHECK_ERR( rval );
        CHECK_EQUAL( 1u, (unsigned)ents.num_of_type( MBVERTEX ) );
        CHECK_EQUAL( 4u, (unsigned)ents.num_of_type( MBEDGE ) );
        CHECK_EQUAL( 4u, (unsigned)ents.num_of_type( MBQUAD ) );
        CHECK_EQUAL( 9u, (unsigned)ents.size() );
    }

    // check that each volume has 1 node and 8 hexes.
    for( i = vols.begin(); i != vols.end(); ++i )
    {
        ents.clear();
        rval = mb.get_entities_by_handle( *i, ents );CHECK_ERR( rval );
        CHECK_EQUAL( 1u, (unsigned)ents.num_of_type( MBVERTEX ) );
        CHECK_EQUAL( 8u, (unsigned)ents.num_of_type( MBHEX ) );
        CHECK_EQUAL( 9u, (unsigned)ents.size() );
    }

    // Check that for each geometric entity, any contained vertices
    // are adjacent to some entity in one of its parents.
    Range parents, geom, nodes, tmp;
    for( int d = 0; d < 3; ++d )
    {
        const void* vals1[] = { &d };
        rval                = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, &dim_tag, vals1, 1, geom );CHECK_ERR( rval );

        for( i = geom.begin(); i != geom.end(); ++i )
        {
            nodes.clear();
            ents.clear();
            parents.clear();
            rval = mb.get_entities_by_type( *i, MBVERTEX, nodes );CHECK_ERR( rval );
            rval = mb.get_parent_meshsets( *i, parents );CHECK_ERR( rval );
            for( Range::iterator j = parents.begin(); j != parents.end(); ++j )
            {
                tmp.clear();
                rval = mb.get_entities_by_dimension( *j, d + 1, tmp );CHECK_ERR( rval );
                ents.merge( tmp );
            }
            tmp.clear();
            rval = mb.get_adjacencies( ents, 0, false, tmp, Interface::UNION );CHECK_ERR( rval );
            nodes = subtract( nodes, tmp );
            CHECK( nodes.empty() );
        }
    }
}

Definition at line 402 of file cub_file_test.cpp.

References check_geometric_set(), input_file_1, mb, and read_file().

Referenced by main().

{
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, input_file_1 );
    // expected geometric vertices, specified by global ID
    const int vertex_ids[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14 };
    // List of global IDs of surfacs in geometric volumes, indexed by ID-1
    const int volume_surfs[2][6] = { { 1, 2, 3, 4, 5, 6 }, { 7, 8, 9, 6, 11, 12 } };
    // List of global IDs of curves in geometric surfaces, indexed by ID-1
    // Curve IDs of zero indicates that corresponding surface doesn't exist.
    const int surf_curves[12][4] = { { 1, 2, 3, 4 },     { 5, 6, 7, 8 },    { 9, 6, 10, 4 },   { 11, 7, 9, 3 },
                                     { 12, 8, 11, 2 },   { 10, 5, 12, 1 },  { 13, 14, 1, 16 }, { 17, 18, 5, 20 },
                                     { 10, 18, 22, 16 }, { 0, 0, 0, 0 },  // no surf 10
                                     { 24, 20, 12, 14 }, { 22, 17, 24, 13 } };
    // List of global IDs of vertices in geometric curves, indexed by ID-1
    // Vertex IDs of zero indicates that corresponding curve doesn't exist.
    const int curve_verts[24][2] = { { 1, 2 },  { 2, 3 },   { 3, 4 },  { 4, 1 }, { 5, 6 },  // 5
                                     { 6, 7 },  { 7, 8 },   { 8, 5 },  { 4, 7 }, { 1, 6 },  // 10
                                     { 3, 8 },  { 2, 5 },   { 9, 10 },                      // 13
                                     { 10, 2 }, { 0, 0 },                                   // no curve 15
                                     { 1, 9 },  { 13, 14 }, { 14, 6 }, { 0, 0 },            // no curve 19
                                     { 5, 13 }, { 0, 0 },                                   // no curve 21
                                     { 9, 14 }, { 0, 0 },                                   // no curve 23
                                     { 10, 13 } };

    // check all vertices
    for( unsigned i = 0; i < ( sizeof( vertex_ids ) / sizeof( vertex_ids[0] ) ); ++i )
        check_geometric_set( mb, 0, vertex_ids[i], 0, 0, find_parents< 2 >( curve_verts, 24, vertex_ids[i] ) );

    // check all curves
    for( int i = 1; i <= 24; ++i )
        if( curve_verts[i - 1][0] )
            check_geometric_set( mb, 1, i, curve_verts[i - 1], 2, find_parents< 4 >( surf_curves, 12, i ) );

    // check all surfs
    for( int i = 1; i <= 12; ++i )
        if( surf_curves[i - 1][0] )
            check_geometric_set( mb, 2, i, surf_curves[i - 1], 4, find_parents< 6 >( volume_surfs, 2, i ) );

    // check all volumes
    std::vector< int > empty;
    for( int i = 1; i <= 2; ++i )
        check_geometric_set( mb, 3, i, volume_surfs[i - 1], 6, empty );
}
void test_hex20 ( )

Definition at line 159 of file cub_file_test.cpp.

References MBHEX, and test_ho_elements().

Referenced by main().

{
    test_ho_elements( MBHEX, 20 );
}
void test_hex27 ( )

Definition at line 163 of file cub_file_test.cpp.

References MBHEX, and test_ho_elements().

Referenced by main().

{
    test_ho_elements( MBHEX, 27 );
}
void test_hex9 ( )

Definition at line 155 of file cub_file_test.cpp.

References MBHEX, and test_ho_elements().

Referenced by main().

void test_hexes ( )

Definition at line 329 of file cub_file_test.cpp.

References input_file_1, MBHEX, and test_element().

Referenced by main().

{
    const int hex_conn[] = { 6,  19, 23, 7,  8,  21, 27, 9,  19, 13, 16, 23, 21, 14, 18, 27, 7,  23, 22, 4,  9,  27,
                             25, 5,  23, 16, 15, 22, 27, 18, 17, 25, 8,  21, 27, 9,  1,  20, 26, 3,  21, 14, 18, 27,
                             20, 11, 12, 26, 9,  27, 25, 5,  3,  26, 24, 2,  27, 18, 17, 25, 26, 12, 10, 24, 1,  20,
                             26, 3,  32, 41, 45, 33, 20, 11, 12, 26, 41, 37, 39, 45, 3,  26, 24, 2,  33, 45, 43, 31,
                             26, 12, 10, 24, 45, 39, 38, 43, 32, 41, 45, 33, 28, 40, 44, 30, 41, 37, 39, 45, 40, 35,
                             36, 44, 33, 45, 43, 31, 30, 44, 42, 29, 45, 39, 38, 43, 44, 36, 34, 42 };
    test_element( input_file_1, MBHEX, 16, 8, hex_conn );
}
void test_ho_elements ( EntityType  type,
int  num_nodes 
)

Definition at line 801 of file cub_file_test.cpp.

References moab::Range::begin(), CHECK, check_adj_ho_nodes(), CHECK_ERR, check_ho_element(), moab::Range::empty(), moab::Range::end(), entities, ErrorCode, moab::Interface::get_entities_by_type(), moab::Interface::get_entities_by_type_and_tag(), HAS_MID_NODES_TAG_NAME, moab::CN::HasMidNodes(), ho_file, MATERIAL_SET_TAG_NAME, mb, MB_TYPE_INTEGER, MBENTITYSET, read_file(), and moab::Interface::tag_get_handle().

Referenced by test_hex20(), test_hex27(), test_hex9(), test_quad5(), test_quad8(), test_quad9(), test_tet10(), test_tet14(), test_tet8(), test_tri6(), and test_tri7().

{
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, ho_file );

    ErrorCode rval;
    Tag ho_tag, block_tag;
    rval = mb.tag_get_handle( MATERIAL_SET_TAG_NAME, 1, MB_TYPE_INTEGER, block_tag );CHECK_ERR( rval );
    rval = mb.tag_get_handle( HAS_MID_NODES_TAG_NAME, 4, MB_TYPE_INTEGER, ho_tag );CHECK_ERR( rval );

    // get material sets with expected higher-order nodes
    Range blocks;
    int ho_flags[4];
    CN::HasMidNodes( type, num_nodes, ho_flags );
    Tag tags[2]   = { ho_tag, block_tag };
    void* vals[2] = { ho_flags, NULL };
    rval          = mb.get_entities_by_type_and_tag( 0, MBENTITYSET, tags, vals, 2, blocks );CHECK_ERR( rval );

    Range::iterator i;
    Range entities;
    for( i = blocks.begin(); i != blocks.end(); ++i )
    {
        rval = mb.get_entities_by_type( *i, type, entities, true );CHECK_ERR( rval );
    }
    // test file should contain all types of HO entities
    CHECK( !entities.empty() );
    // test ho node positions -- expect to be at center of adj corners
    for( i = entities.begin(); i != entities.end(); ++i )
        check_ho_element( mb, *i, ho_flags );
    // test ho node handles consistent with adjacent entities
    for( i = entities.begin(); i != entities.end(); ++i )
        check_adj_ho_nodes( mb, *i );
}

Definition at line 836 of file cub_file_test.cpp.

References moab::Interface::add_entities(), CHECK, CHECK_EQUAL, CHECK_ERR, moab::Interface::create_meshset(), moab::Range::empty(), ErrorCode, moab::Interface::get_adjacencies(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_handle(), moab::Interface::get_entities_by_type(), input_file_1, moab::intersect(), mb, MBVERTEX, MESHSET_SET, read_file(), moab::Range::size(), moab::subtract(), and moab::Interface::UNION.

Referenced by main().

{
    // load two surface meshes, one at z=+5 at z=-5.
    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    Range file1_ents, file2_ents;
    read_file( mb, input_file_1 );
    mb.get_entities_by_handle( 0, file1_ents );
    read_file( mb, input_file_1 );
    mb.get_entities_by_handle( 0, file2_ents );
    file2_ents = subtract( file2_ents, file1_ents );
    EntityHandle file1, file2;
    mb.create_meshset( MESHSET_SET, file1 );
    mb.create_meshset( MESHSET_SET, file2 );
    mb.add_entities( file1, file1_ents );
    mb.add_entities( file2, file2_ents );

    // first check that we get the same number of verts from
    // each file and that they are distinct vertices
    Range file1_verts, file2_verts;
    rval = mb.get_entities_by_type( file1, MBVERTEX, file1_verts );CHECK_ERR( rval );
    CHECK( !file1_verts.empty() );
    rval = mb.get_entities_by_type( file2, MBVERTEX, file2_verts );CHECK_ERR( rval );
    CHECK( !file2_verts.empty() );
    CHECK_EQUAL( file1_verts.size(), file2_verts.size() );
    CHECK( intersect( file1_verts, file2_verts ).empty() );

    // now check that we get the same number of elements from
    // each file and that they are distinct
    Range file1_elems, file2_elems;
    rval = mb.get_entities_by_dimension( file1, 3, file1_elems );CHECK_ERR( rval );
    CHECK( !file1_elems.empty() );
    rval = mb.get_entities_by_dimension( file2, 3, file2_elems );CHECK_ERR( rval );
    CHECK( !file2_elems.empty() );
    CHECK_EQUAL( file1_elems.size(), file2_elems.size() );
    CHECK( intersect( file1_elems, file2_elems ).empty() );

    // now check that the connectivity for each element is
    // defined using the appropriate vertex instances
    Range file1_elem_verts, file2_elem_verts;
    rval = mb.get_adjacencies( file1_elems, 0, false, file1_elem_verts, Interface::UNION );CHECK_ERR( rval );
    rval = mb.get_adjacencies( file2_elems, 0, false, file2_elem_verts, Interface::UNION );CHECK_ERR( rval );
    CHECK_EQUAL( file1_elem_verts.size(), file2_elem_verts.size() );
    CHECK( intersect( file1_elem_verts, file1_verts ) == file1_elem_verts );
    CHECK( intersect( file2_elem_verts, file2_verts ) == file2_elem_verts );
}
void test_node_sets ( )

Definition at line 654 of file cub_file_test.cpp.

References DIRICHLET_SET_TAG_NAME, and test_bc_sets().

Referenced by main().

{
    int ids[] = { 1, 2 };
    std::vector< int > surfs[2];
    surfs[0].push_back( 2 );
    surfs[0].push_back( 8 );
    surfs[1].push_back( 3 );
    surfs[1].push_back( 9 );
    test_bc_sets( DIRICHLET_SET_TAG_NAME, 2, ids, surfs );
}
void test_quad5 ( )

Definition at line 129 of file cub_file_test.cpp.

References MBQUAD, and test_ho_elements().

Referenced by main().

void test_quad8 ( )

Definition at line 133 of file cub_file_test.cpp.

References MBQUAD, and test_ho_elements().

Referenced by main().

void test_quad9 ( )

Definition at line 137 of file cub_file_test.cpp.

References MBQUAD, and test_ho_elements().

Referenced by main().

void test_quads ( )

Definition at line 312 of file cub_file_test.cpp.

References input_file_1, MBQUAD, and test_element().

Referenced by main().

{
    const int quad_conn[] = {
        1,  3,  9,  8,  // 1
        3,  2,  5,  9,  8,  9,  7,  6,  9,  5,  4,  7,  10, 12, 18, 17, 12, 11, 14, 18,
        17, 18, 16, 15, 18, 14, 13, 16, 6,  19, 21, 8,  19, 13, 14, 21,  // 10
        8,  21, 20, 1,  21, 14, 11, 20, 4,  22, 23, 7,  22, 15, 16, 23, 7,  23, 19, 6,
        23, 16, 13, 19, 2,  24, 25, 5,  24, 10, 17, 25, 5,  25, 22, 4,  25, 17, 15, 22,  // 20
        1,  20, 26, 3,  20, 11, 12, 26, 3,  26, 24, 2,  26, 12, 10, 24, 28, 30, 33, 32,
        30, 29, 31, 33, 32, 33, 3,  1,  33, 31, 2,  3,  34, 36, 39, 38, 36, 35, 37, 39,  // 30
        38, 39, 12, 10, 39, 37, 11, 12, 1,  20, 41, 32, 20, 11, 37, 41, 32, 41, 40, 28,
        41, 37, 35, 40, 29, 42, 43, 31, 42, 34, 38, 43, 31, 43, 24, 2,  43, 38, 10, 24,  // 40
        28, 40, 44, 30, 40, 35, 36, 44, 30, 44, 42, 29, 44, 36, 34, 42,
    };
    test_element( input_file_1, MBQUAD, 44, 4, quad_conn );
}
void test_side_sets ( )

Definition at line 643 of file cub_file_test.cpp.

References NEUMANN_SET_TAG_NAME, and test_bc_sets().

Referenced by main().

{
    int ids[] = { 1, 2 };
    std::vector< int > surfs[2];
    surfs[0].push_back( 1 );
    surfs[0].push_back( 7 );
    surfs[1].push_back( 5 );
    surfs[1].push_back( 11 );
    test_bc_sets( NEUMANN_SET_TAG_NAME, 2, ids, surfs );
}
void test_tet10 ( )

Definition at line 146 of file cub_file_test.cpp.

References MBTET, and test_ho_elements().

Referenced by main().

{
    test_ho_elements( MBTET, 10 );
}
void test_tet14 ( )

Definition at line 150 of file cub_file_test.cpp.

References MBTET, and test_ho_elements().

Referenced by main().

{
    test_ho_elements( MBTET, 14 );
}
void test_tet8 ( )

Definition at line 142 of file cub_file_test.cpp.

References MBTET, and test_ho_elements().

Referenced by main().

void test_tri6 ( )

Definition at line 120 of file cub_file_test.cpp.

References MBTRI, and test_ho_elements().

Referenced by main().

void test_tri7 ( )

Definition at line 124 of file cub_file_test.cpp.

References MBTRI, and test_ho_elements().

Referenced by main().

void test_vertices ( )

Definition at line 208 of file cub_file_test.cpp.

References CHECK_EQUAL, CHECK_ERR, CHECK_REAL_EQUAL, ErrorCode, moab::Interface::get_coords(), moab::Interface::get_entities_by_type(), input_file_1, mb, MB_TYPE_INTEGER, MBVERTEX, read_file(), moab::Range::size(), moab::Interface::tag_get_data(), and moab::Interface::tag_get_handle().

Referenced by main().

{
    /* Node coordinates, in order of node ID, beginning with 1. */
    const double node_coords[] = {
        5,  -5, 5,                                                   // 1
        5,  5,  5,  5,  0,  5,  -5, 5,  5,  0,  5,  5,               // 5
        -5, -5, 5,  -5, 0,  5,  0,  -5, 5,  0,  0,  5,  5,  5,  -5,  // 10
        5,  -5, -5, 5,  0,  -5, -5, -5, -5, 0,  -5, -5, -5, 5,  -5,  // 15
        -5, 0,  -5, 0,  5,  -5, 0,  0,  -5, -5, -5, 0,  5,  -5, 0,   // 20
        0,  -5, 0,  -5, 5,  0,  -5, 0,  0,  5,  5,  0,  0,  5,  0,   // 25
        5,  0,  0,  0,  0,  0,  15, -5, 5,  15, 5,  5,  15, 0,  5,   // 30
        10, 5,  5,  10, -5, 5,  10, 0,  5,  15, 5,  -5, 15, -5, -5,  // 35
        15, 0,  -5, 10, -5, -5, 10, 5,  -5, 10, 0,  -5, 15, -5, 0,   // 40
        10, -5, 0,  15, 5,  0,  10, 5,  0,  15, 0,  0,  10, 0,  0    // 45
    };

    ErrorCode rval;
    Core mb_impl;
    Interface& mb = mb_impl;
    read_file( mb, input_file_1 );

    // get vertex handles and check correct number of vertices
    const size_t num_nodes = sizeof( node_coords ) / ( 3 * sizeof( double ) );
    Range verts;
    rval = mb.get_entities_by_type( 0, MBVERTEX, verts );CHECK_ERR( rval );
    CHECK_EQUAL( num_nodes, (size_t)verts.size() );

    // check global ids (should be 1 to 45 for vertices.)
    Tag gid_tag;
    rval = mb.tag_get_handle( "GLOBAL_ID", 1, MB_TYPE_INTEGER, gid_tag );CHECK_ERR( rval );
    std::vector< int > ids( num_nodes );
    rval = mb.tag_get_data( gid_tag, verts, &ids[0] );CHECK_ERR( rval );
    std::vector< int > sorted( ids );
    std::sort( sorted.begin(), sorted.end() );
    for( size_t i = 0; i < num_nodes; ++i )
        CHECK_EQUAL( (int)( i + 1 ), sorted[i] );

    // check coordinates of each vertex
    std::vector< double > coords( 3 * num_nodes );
    rval = mb.get_coords( verts, &coords[0] );CHECK_ERR( rval );
    for( size_t i = 0; i < num_nodes; ++i )
    {
        const double* exp = node_coords + 3 * ( ids[i] - 1 );
        const double* act = &coords[3 * i];
        CHECK_REAL_EQUAL( exp[0], act[0], 1e-8 );
        CHECK_REAL_EQUAL( exp[1], act[1], 1e-8 );
        CHECK_REAL_EQUAL( exp[2], act[2], 1e-8 );
    }
}

Variable Documentation

const std::string cubit12_file = std::string( TestDir + "/io/cubtest12.cub" ) [static]

Definition at line 82 of file cub_file_test.cpp.

Referenced by test_cubit12().

const std::string cubit14_file = std::string( TestDir + "/io/cubtest14.cub" ) [static]

Definition at line 83 of file cub_file_test.cpp.

Referenced by test_cubit14().

const std::string ho_file = std::string( TestDir + "/io/ho_test.cub" ) [static]

Definition at line 81 of file cub_file_test.cpp.

Referenced by test_ho_elements().

const std::string input_file_1 = std::string( TestDir + "/io/test.cub" ) [static]

Input test file: test.cub Cubit 10.2 file. File contains: Two merged 10x10x10 bricks sharing a single surface (surface 6).

  • Each brick is meshed with 8 5x5x5 hexes.
  • Each surface is meshed with 4 5x5 quads.
  • Each curve is meshed with 2 5-unit edges. A single block containing both bricks. Two side sets
  • sideset 1: surfaces 1 and 7
  • sideset 2: surfaces 5 and 11 Two node sets:
  • nodeset 1: surfaces 2 and 8
  • nodeset 2: surfaces 3 and 9

Surfaces: 2 8 / / o----------o----------o /. / /. / /| / . (5)/ / . (11)/ / | / . L / . L / | o----------o----------o | | . | . |(12) 4--|-> o . . .|. .o. . . | . o | . (1) | . (9) | / | . ^ | . ^ | / |. | |. | |/ o----------o----------o | | 3 9

Curves:

o----8-----o----20----o /. /. /| 12 . 11 . 24 | / 7 / 5 / 17 o----2-----o----14----o | | . | . | | | o . .6.|. .o. . 18| . o 3 . 1 . 13 / | 9 | 10 | 22 |. |. |/ o----4-----o----16----o

Vertices:

8----------5----------13 /. /. /| / . / . / | / . / . / | 3----------2----------10 | | . | . | | | 7 . . .|. .6. . . | . 14 | . | . | / | . | . | / |. |. |/ 4----------1----------9

Definition at line 80 of file cub_file_test.cpp.

Referenced by test_bc_sets(), test_blocks(), test_edges(), test_geometric_sets(), test_geometric_topology(), test_hexes(), test_multiple_files(), test_quads(), and test_vertices().

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines