Mesh Oriented datABase  (version 5.6.0)
An array-based unstructured mesh library
Mesh Query Operations

Functions for querying mesh information (vertices, elements, blocks, BCs) More...

+ Collaboration diagram for Mesh Query Operations:

Functions

ErrCode iMOAB_UpdateMeshInfo (iMOAB_AppID pid)
 Update application's mesh information after loading or modification. More...
 
ErrCode iMOAB_GetMeshInfo (iMOAB_AppID pid, int *num_visible_vertices, int *num_visible_elements, int *num_visible_blocks, int *num_visible_surfaceBC, int *num_visible_vertexBC)
 Query mesh statistics including vertices, elements, and boundary conditions. More...
 
ErrCode iMOAB_GetVertexID (iMOAB_AppID pid, int *vertices_length, iMOAB_GlobalID *global_vertex_ID)
 Retrieve global IDs for all vertices in application's mesh. More...
 
ErrCode iMOAB_GetVertexOwnership (iMOAB_AppID pid, int *vertices_length, int *visible_global_rank_ID)
 Retrieve parallel ownership information for all vertices. More...
 
ErrCode iMOAB_GetVisibleVerticesCoordinates (iMOAB_AppID pid, int *coords_length, double *coordinates)
 Retrieve coordinates for all vertices in interleaved format. More...
 
ErrCode iMOAB_GetBlockID (iMOAB_AppID pid, int *block_length, iMOAB_GlobalID *global_block_IDs)
 Retrieve global IDs for all material blocks in mesh. More...
 
ErrCode iMOAB_GetBlockInfo (iMOAB_AppID pid, iMOAB_GlobalID *global_block_ID, int *vertices_per_element, int *num_elements_in_block)
 Retrieve information about a specific material block. More...
 

Detailed Description

Functions for querying mesh information (vertices, elements, blocks, BCs)

Function Documentation

◆ iMOAB_GetBlockID()

ErrCode iMOAB_GetBlockID ( iMOAB_AppID  pid,
int *  block_length,
iMOAB_GlobalID global_block_IDs 
)

Retrieve global IDs for all material blocks in mesh.

Get the global block IDs for all locally visible (owned and shared/ghosted) blocks.

Extracts MATERIAL_SET tag values for all material blocks. Blocks are identified by unique integer IDs and contain elements with similar material properties.

Parameters
[in]pidApplication ID
[in]block_lengthNumber of blocks (must match actual count)
[out]global_block_IDsArray of material set IDs (size = block_length)
Precondition
Application must be registered and mesh loaded
block_length must match block count from iMOAB_GetMeshInfo
global_block_IDs array must be pre-allocated
Postcondition
global_block_IDs populated with MATERIAL_SET tag values
Internal matIndex map populated for fast block lookup
Note
Material blocks are mesh sets containing elements of same material
Creates internal index map for subsequent block queries
Block IDs are user-defined and may not be consecutive
Returns
moab::MB_SUCCESS on success, moab::MB_FAILURE if count mismatch
See also
iMOAB_GetBlockInfo(), iMOAB_GetMeshInfo()

Definition at line 1599 of file iMOAB.cpp.

1600 {
1601  Range& matSets = context.appDatas[*pid].mat_sets;
1602 
1603  // Validate array size matches actual block count
1604  if( *block_length != (int)matSets.size() )
1605  {
1606  return moab::MB_INVALID_SIZE; // Size mismatch
1607  }
1608 
1609  // Extract MATERIAL_SET tag values for all material blocks
1610  MB_CHK_SET_ERR( context.MBI->tag_get_data( context.material_tag, matSets, global_block_IDs ),
1611  "can't get material IDs" );
1612 
1613  // Build internal index map: block_id -> array_index for fast lookup
1614  std::map< int, int >& matIdx = context.appDatas[*pid].matIndex;
1615  for( unsigned i = 0; i < matSets.size(); i++ )
1616  {
1617  matIdx[global_block_IDs[i]] = i; // Cache block index for future queries
1618  }
1619 
1620  return moab::MB_SUCCESS;
1621 }

References GlobalContext::appDatas, context, GlobalContext::material_tag, MB_CHK_SET_ERR, MB_INVALID_SIZE, MB_SUCCESS, GlobalContext::MBI, moab::Range::size(), and moab::Interface::tag_get_data().

◆ iMOAB_GetBlockInfo()

ErrCode iMOAB_GetBlockInfo ( iMOAB_AppID  pid,
iMOAB_GlobalID global_block_ID,
int *  vertices_per_element,
int *  num_elements_in_block 
)

Retrieve information about a specific material block.

Get the global block information and number of visible elements of belonging to a block (MATERIAL SET).

Queries element count and connectivity size for specified material block. Assumes all elements in block have same topology type.

Parameters
[in]pidApplication ID
[in]global_block_IDMaterial block ID to query
[out]vertices_per_elementNumber of vertices per element in this block
[out]num_elements_in_blockTotal number of elements in this block
Precondition
Application must be registered and mesh loaded
iMOAB_GetBlockID must have been called first (to populate matIndex)
global_block_ID must be valid block ID from iMOAB_GetBlockID
Postcondition
vertices_per_element set to connectivity size
num_elements_in_block set to element count
Note
All elements in block assumed to have same topology
vertices_per_element depends on element type (4=tet, 8=hex, etc.)
Warning
Returns failure if block ID not found in matIndex map
Returns
moab::MB_SUCCESS on success, moab::MB_FAILURE if block not found
See also
iMOAB_GetBlockID(), iMOAB_GetBlockElementConnectivities()

Definition at line 1650 of file iMOAB.cpp.

1654 {
1655  assert( global_block_ID );
1656 
1657  std::map< int, int >& matMap = context.appDatas[*pid].matIndex;
1658  std::map< int, int >::iterator it = matMap.find( *global_block_ID );
1659 
1660  if( it == matMap.end() )
1661  {
1662  return moab::MB_FAILURE;
1663  } // error in finding block with id
1664 
1665  int blockIndex = matMap[*global_block_ID];
1666  EntityHandle matMeshSet = context.appDatas[*pid].mat_sets[blockIndex];
1667  Range blo_elems;
1668  MB_CHK_SET_ERR( context.MBI->get_entities_by_handle( matMeshSet, blo_elems ), "can't get block elements" );
1669 
1670  if( blo_elems.empty() ) return moab::MB_FAILURE;
1671 
1672  EntityType type = context.MBI->type_from_handle( blo_elems[0] );
1673 
1674  if( !blo_elems.all_of_type( type ) ) return moab::MB_FAILURE;
1675 
1676  const EntityHandle* conn = nullptr;
1677  int num_verts = 0;
1678  MB_CHK_SET_ERR( context.MBI->get_connectivity( blo_elems[0], conn, num_verts ), "can't get connectivity" );
1679 
1680  *vertices_per_element = num_verts;
1681  *num_elements_in_block = (int)blo_elems.size();
1682 
1683  return moab::MB_SUCCESS;
1684 }

References moab::Range::all_of_type(), GlobalContext::appDatas, context, moab::Range::empty(), moab::Interface::get_connectivity(), moab::Interface::get_entities_by_handle(), MB_CHK_SET_ERR, MB_SUCCESS, GlobalContext::MBI, moab::Range::size(), and moab::Interface::type_from_handle().

◆ iMOAB_GetMeshInfo()

ErrCode iMOAB_GetMeshInfo ( iMOAB_AppID  pid,
int *  num_visible_vertices,
int *  num_visible_elements,
int *  num_visible_blocks,
int *  num_visible_surfaceBC,
int *  num_visible_vertexBC 
)

Query mesh statistics including vertices, elements, and boundary conditions.

Retrieve all the important mesh information related to vertices, elements, vertex and surface boundary conditions.

Retrieves counts of vertices, elements, material blocks, and boundary condition sets. Each output array has 3 components: [owned, ghost, total]. Useful for memory allocation and understanding parallel mesh distribution.

Array Format:
All output arrays use 3-element format: [owned, ghost, total]
  • owned: Entities owned by this process
  • ghost: Ghost/halo entities from neighboring processes
  • total: Sum of owned and ghost entities
Parameters
[in]pidApplication ID
[out]num_visible_verticesVertex counts [local(non-ghost), ghost, total]
[out]num_visible_elementsElement counts [owned, ghost, total]
[out]num_visible_blocksMaterial block counts [owned, ghost, total]
[out]num_visible_surfaceBCSurface BC counts (total face count across all BC sets)
[out]num_visible_vertexBCVertex BC counts (total vertex count across all BC sets)
Precondition
Application must be registered and mesh loaded
iMOAB_UpdateMeshInfo must have been called
Postcondition
Output arrays populated with mesh statistics
Note
All parameters are optional (can be NULL if not needed)
Surface BC count includes all faces in Neumann sets
Vertex BC count includes all vertices in Dirichlet sets
Material blocks queried via MATERIAL_SET tag
BCs queried via NEUMANN_SET and DIRICHLET_SET tags
Returns
moab::MB_SUCCESS on success, error code otherwise
See also
iMOAB_UpdateMeshInfo(), iMOAB_LoadMesh()

Definition at line 1332 of file iMOAB.cpp.

1338 {
1339  appData& data = context.appDatas[*pid];
1340  EntityHandle fileSet = data.file_set;
1341 
1342  // this will include ghost elements
1343  // first clear all data ranges; this can be called after ghosting
1344  if( num_visible_elements )
1345  {
1346  num_visible_elements[2] = static_cast< int >( data.primary_elems.size() );
1347  // separate ghost and local/owned primary elements
1348  num_visible_elements[0] = static_cast< int >( data.owned_elems.size() );
1349  num_visible_elements[1] = static_cast< int >( data.ghost_elems.size() );
1350  }
1351  if( num_visible_vertices )
1352  {
1353  num_visible_vertices[2] = static_cast< int >( data.all_verts.size() );
1354  num_visible_vertices[1] = static_cast< int >( data.ghost_vertices.size() );
1355  // local are those that are not ghosts; they may include shared, not owned vertices
1356  num_visible_vertices[0] = num_visible_vertices[2] - num_visible_vertices[1];
1357  }
1358 
1359  if( num_visible_blocks )
1360  {
1362  1, data.mat_sets, Interface::UNION ),
1363  "can't get material sets" );
1364 
1365  num_visible_blocks[2] = data.mat_sets.size();
1366  num_visible_blocks[0] = num_visible_blocks[2];
1367  num_visible_blocks[1] = 0;
1368  }
1369 
1370  if( num_visible_surfaceBC )
1371  {
1373  data.neu_sets, Interface::UNION ),
1374  "can't get neumann sets" );
1375 
1376  num_visible_surfaceBC[2] = 0;
1377  // count how many faces are in each neu set, and how many regions are
1378  // adjacent to them;
1379  int numNeuSets = (int)data.neu_sets.size();
1380 
1381  for( int i = 0; i < numNeuSets; i++ )
1382  {
1383  Range subents;
1384  EntityHandle nset = data.neu_sets[i];
1385  MB_CHK_SET_ERR( context.MBI->get_entities_by_dimension( nset, data.dimension - 1, subents ),
1386  "can't get neumann sets" );
1387 
1388  for( Range::iterator it = subents.begin(); it != subents.end(); ++it )
1389  {
1390  EntityHandle subent = *it;
1391  Range adjPrimaryEnts;
1392  MB_CHK_SET_ERR( context.MBI->get_adjacencies( &subent, 1, data.dimension, false, adjPrimaryEnts ),
1393  "can't get adjacencies" );
1394 
1395  num_visible_surfaceBC[2] += (int)adjPrimaryEnts.size();
1396  }
1397  }
1398 
1399  num_visible_surfaceBC[0] = num_visible_surfaceBC[2];
1400  num_visible_surfaceBC[1] = 0;
1401  }
1402 
1403  if( num_visible_vertexBC )
1404  {
1406  1, data.diri_sets, Interface::UNION ),
1407  "can't get dirichlet sets" );
1408 
1409  num_visible_vertexBC[2] = 0;
1410  int numDiriSets = (int)data.diri_sets.size();
1411 
1412  for( int i = 0; i < numDiriSets; i++ )
1413  {
1414  Range verts;
1415  EntityHandle diset = data.diri_sets[i];
1416  MB_CHK_SET_ERR( context.MBI->get_entities_by_dimension( diset, 0, verts ), "can't get dirichlet sets" );
1417 
1418  num_visible_vertexBC[2] += (int)verts.size();
1419  }
1420 
1421  num_visible_vertexBC[0] = num_visible_vertexBC[2];
1422  num_visible_vertexBC[1] = 0;
1423  }
1424 
1425  return moab::MB_SUCCESS;
1426 }

References appData::all_verts, GlobalContext::appDatas, moab::Range::begin(), context, appData::dimension, appData::diri_sets, GlobalContext::dirichlet_tag, moab::Range::end(), appData::file_set, moab::Interface::get_adjacencies(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_type_and_tag(), appData::ghost_elems, appData::ghost_vertices, appData::mat_sets, GlobalContext::material_tag, MB_CHK_SET_ERR, MB_SUCCESS, MBENTITYSET, GlobalContext::MBI, appData::neu_sets, GlobalContext::neumann_tag, appData::owned_elems, appData::primary_elems, moab::Range::size(), and moab::Interface::UNION.

◆ iMOAB_GetVertexID()

ErrCode iMOAB_GetVertexID ( iMOAB_AppID  pid,
int *  vertices_length,
iMOAB_GlobalID global_vertex_ID 
)

Retrieve global IDs for all vertices in application's mesh.

Get the global vertex IDs for all locally visible (owned and shared/ghosted) vertices.

Extracts GLOBAL_ID tag values for all vertices. Global IDs are unique across all processes and are used for parallel mesh operations and entity identification.

Parameters
[in]pidApplication ID
[in]vertices_lengthNumber of vertices (must match actual vertex count)
[out]global_vertex_IDArray of global IDs (size = vertices_length)
Precondition
Application must be registered and mesh loaded
vertices_length must equal total vertex count from iMOAB_GetMeshInfo
global_vertex_ID array must be pre-allocated
Postcondition
global_vertex_ID populated with GLOBAL_ID tag values
Note
Global IDs are 1-indexed and unique across all processes
Array must be sized correctly or assertion will fail
Returns
moab::MB_SUCCESS on success, error code otherwise
See also
iMOAB_GetMeshInfo(), iMOAB_GetVertexOwnership()

Definition at line 1452 of file iMOAB.cpp.

1453 {
1454  IMOAB_CHECKPOINTER( vertices_length, 2 );
1455  IMOAB_CHECKPOINTER( global_vertex_ID, 3 );
1456 
1457  const Range& verts = context.appDatas[*pid].all_verts;
1458 
1459  // Validate array size matches actual vertex count to prevent buffer overruns
1460  IMOAB_ASSERT( *vertices_length == static_cast< int >( verts.size() ), "Invalid vertices length provided" );
1461 
1462  // Extract GLOBAL_ID tag values for all vertices in order
1463  return context.MBI->tag_get_data( context.globalID_tag, verts, global_vertex_ID );
1464 }

References GlobalContext::appDatas, context, GlobalContext::globalID_tag, IMOAB_ASSERT, IMOAB_CHECKPOINTER, GlobalContext::MBI, moab::Range::size(), and moab::Interface::tag_get_data().

◆ iMOAB_GetVertexOwnership()

ErrCode iMOAB_GetVertexOwnership ( iMOAB_AppID  pid,
int *  vertices_length,
int *  visible_global_rank_ID 
)

Retrieve parallel ownership information for all vertices.

Get vertex ownership information.

Queries which MPI rank owns each vertex. In parallel simulations, each vertex is owned by exactly one process, though it may be ghosted on others.

Parameters
[in]pidApplication ID
[in]vertices_lengthNumber of vertices (must match actual count)
[out]visible_global_rank_IDArray of owning ranks (size = vertices_length)
Precondition
Application must be registered and mesh loaded
For parallel: mesh must have parallel ownership information
visible_global_rank_ID array must be pre-allocated
Postcondition
visible_global_rank_ID[i] = rank that owns vertex i
Note
In serial runs, all vertices owned by rank 0
Ghost vertices report the rank of their owner, not local rank
Returns
moab::MB_SUCCESS on success, moab::MB_FAILURE if count mismatch
See also
iMOAB_GetVertexID(), iMOAB_GetElementOwnership()

Definition at line 1490 of file iMOAB.cpp.

1491 {
1492  assert( vertices_length && *vertices_length );
1493  assert( visible_global_rank_ID );
1494 
1495  Range& verts = context.appDatas[*pid].all_verts;
1496 
1497 #ifdef MOAB_HAVE_MPI
1498  // Parallel: query actual ownership from ParallelComm
1499  ParallelComm* pco = context.appDatas[*pid].pcomm;
1500 
1501  int i = 0;
1502  for( Range::iterator vit = verts.begin(); vit != verts.end(); ++vit, i++ )
1503  {
1504  // Get owning rank for this vertex (may be local or remote)
1505  MB_CHK_SET_ERR( pco->get_owner( *vit, visible_global_rank_ID[i] ), "can't get owner" );
1506  }
1507 
1508  // Validate we processed exactly the expected number of vertices
1509  if( i != *vertices_length )
1510  {
1511  return moab::MB_INVALID_SIZE; // Array size mismatch
1512  }
1513 
1514 #else
1515  // Serial: all vertices owned by rank 0
1516  if( (int)verts.size() != *vertices_length )
1517  {
1518  return moab::MB_INVALID_SIZE; // Array size mismatch
1519  } // warning array allocation problem
1520 
1521  int i = 0;
1522  for( Range::iterator vit = verts.begin(); vit != verts.end(); ++vit, i++ )
1523  {
1524  visible_global_rank_ID[i] = 0;
1525  } // all vertices are owned by processor 0, as this is serial run
1526 
1527 #endif
1528 
1529  return moab::MB_SUCCESS;
1530 }

References GlobalContext::appDatas, moab::Range::begin(), context, moab::Range::end(), moab::ParallelComm::get_owner(), MB_CHK_SET_ERR, MB_INVALID_SIZE, MB_SUCCESS, and moab::Range::size().

◆ iMOAB_GetVisibleVerticesCoordinates()

ErrCode iMOAB_GetVisibleVerticesCoordinates ( iMOAB_AppID  pid,
int *  coords_length,
double *  coordinates 
)

Retrieve coordinates for all vertices in interleaved format.

Get vertex coordinates for all local (owned and ghosted) vertices.

Extracts 3D coordinates (x,y,z) for all vertices in interleaved format: [x0,y0,z0, x1,y1,z1, ...]. Coordinates are returned in same order as vertex IDs.

Parameters
[in]pidApplication ID
[in]coords_lengthLength of coordinates array (must equal 3 * num_vertices)
[out]coordinatesInterleaved coordinate array (size = 3 * num_vertices)
Precondition
Application must be registered and mesh loaded
coords_length must equal 3 * vertex count
coordinates array must be pre-allocated
Postcondition
coordinates filled with interleaved x,y,z values
Note
Format: [x0,y0,z0, x1,y1,z1, x2,y2,z2, ...]
Always returns 3D coordinates even for 2D meshes (z=0)
Warning
Array size must be exact or function returns failure
Returns
moab::MB_SUCCESS on success, moab::MB_FAILURE if size mismatch
See also
iMOAB_GetVertexID(), iMOAB_GetMeshInfo()

Definition at line 1557 of file iMOAB.cpp.

1558 {
1559  Range& verts = context.appDatas[*pid].all_verts;
1560 
1561  // Validate array size: need 3 coordinates (x,y,z) per vertex
1562  if( *coords_length != 3 * (int)verts.size() )
1563  {
1564  return moab::MB_INVALID_SIZE; // Size mismatch
1565  }
1566 
1567  // Extract coordinates in interleaved format (deep copy)
1568  MB_CHK_SET_ERR( context.MBI->get_coords( verts, coordinates ), "can't get coordinates" );
1569 
1570  return moab::MB_SUCCESS;
1571 }

References GlobalContext::appDatas, context, moab::Interface::get_coords(), MB_CHK_SET_ERR, MB_INVALID_SIZE, MB_SUCCESS, GlobalContext::MBI, and moab::Range::size().

◆ iMOAB_UpdateMeshInfo()

ErrCode iMOAB_UpdateMeshInfo ( iMOAB_AppID  pid)

Update application's mesh information after loading or modification.

Update local mesh data structure, from file information.

Refreshes all cached mesh metadata including vertex/element counts, ranges, owned/ghost entities, and material/boundary condition sets. Must be called after mesh loading or ghosting.

Update Process:
  1. Clear all existing cached ranges (vertices, elements, sets)
  2. Query all vertices from file set
  3. Determine mesh dimension (3D → 2D → 1D → 0D) by checking for elements
  4. Extract primary elements of detected dimension
  5. Separate owned vs ghost entities based on parallel ownership
  6. Query material sets (MATERIAL_SET tag)
  7. Query boundary condition sets (NEUMANN_SET, DIRICHLET_SET tags)
  8. Separate local vs owned vertices based on parallel partitioning
Parameters
[in]pidApplication ID
Precondition
Application must be registered and mesh loaded
Postcondition
Mesh dimension determined and cached
All vertex/element ranges updated
Owned/ghost entity ranges computed
Material and BC sets identified
Note
Call this after iMOAB_LoadMesh or ghost layer exchange
Automatically called by iMOAB_LoadMesh
Warning
Clears all existing cached mesh information
Returns
moab::MB_SUCCESS on success, error code otherwise
See also
iMOAB_LoadMesh(), iMOAB_GetMeshInfo()

Definition at line 1186 of file iMOAB.cpp.

1187 {
1188  // this will include ghost elements info
1189  appData& data = context.appDatas[*pid];
1190  EntityHandle fileSet = data.file_set;
1191 
1192  // first clear all data ranges; this can be called after ghosting
1193  data.all_verts.clear();
1194  data.primary_elems.clear();
1195  data.local_verts.clear();
1196  data.owned_verts.clear();
1197  data.ghost_vertices.clear();
1198  data.owned_elems.clear();
1199  data.ghost_elems.clear();
1200  data.mat_sets.clear();
1201  data.neu_sets.clear();
1202  data.diri_sets.clear();
1203 
1204  // Let us get all the vertex entities
1206  "can't get vertices" );
1207 
1208  // Let us check first entities of dimension = 3
1209  data.dimension = 3;
1211  "can't get primary elements" );
1212 
1213  if( data.primary_elems.empty() )
1214  {
1215  // Now 3-D elements. Let us check entities of dimension = 2
1216  data.dimension = 2;
1218  "can't get primary elements" );
1219 
1220  if( data.primary_elems.empty() )
1221  {
1222  // Now 3-D/2-D elements. Let us check entities of dimension = 1
1223  data.dimension = 1;
1225  "can't get primary elements" );
1226 
1227  if( data.primary_elems.empty() )
1228  {
1229  // no elements of dimension 1 or 2 or 3; it could happen for point clouds
1230  data.dimension = 0;
1231  }
1232  }
1233  }
1234 
1235  // check if the current mesh is just a point cloud
1236  data.point_cloud = ( ( data.primary_elems.size() == 0 && data.all_verts.size() > 0 ) || data.dimension == 0 );
1237 
1238 #ifdef MOAB_HAVE_MPI
1239 
1240  if( context.MPI_initialized )
1241  {
1242  ParallelComm* pco = context.appDatas[*pid].pcomm;
1243 
1244  // filter ghost vertices, from local
1246  "can't filter ghost vertices" );
1247 
1248  // Store handles for all ghosted entities
1249  data.ghost_vertices = subtract( data.all_verts, data.local_verts );
1250 
1251  // filter ghost elements, from local
1253  "can't filter ghost elements" );
1254 
1255  data.ghost_elems = subtract( data.primary_elems, data.owned_elems );
1256  // now update global number of primary cells and global number of vertices
1257  // determine first number of owned vertices
1258  // Get local owned vertices
1260  "can't filter ghost vertices" );
1261  int local[2], global[2];
1262  local[0] = data.owned_verts.size();
1263  local[1] = data.owned_elems.size();
1264  MPI_Allreduce( local, global, 2, MPI_INT, MPI_SUM, pco->comm() );
1265  MB_CHK_SET_ERR( iMOAB_SetGlobalInfo( pid, &( global[0] ), &( global[1] ) ), "can't set global info" );
1266  }
1267  else
1268  {
1269  data.local_verts = data.all_verts;
1270  data.owned_elems = data.primary_elems;
1271  }
1272 
1273 #else
1274 
1275  data.local_verts = data.all_verts;
1276  data.owned_elems = data.primary_elems;
1277 
1278 #endif
1279 
1280  // Get the references for some standard internal tags such as material blocks, BCs, etc
1282  data.mat_sets, Interface::UNION ),
1283  "can't get material sets" );
1284 
1286  data.neu_sets, Interface::UNION ),
1287  "can't get neumann sets" );
1288 
1290  data.diri_sets, Interface::UNION ),
1291  "can't get dirichlet sets" );
1292 
1293  return moab::MB_SUCCESS;
1294 }

References appData::all_verts, GlobalContext::appDatas, moab::Range::clear(), moab::ParallelComm::comm(), context, appData::dimension, appData::diri_sets, GlobalContext::dirichlet_tag, moab::Range::empty(), appData::file_set, moab::ParallelComm::filter_pstatus(), moab::Interface::get_entities_by_dimension(), moab::Interface::get_entities_by_type(), moab::Interface::get_entities_by_type_and_tag(), appData::ghost_elems, appData::ghost_vertices, iMOAB_SetGlobalInfo(), appData::local_verts, appData::mat_sets, GlobalContext::material_tag, MB_CHK_SET_ERR, MB_SUCCESS, MBENTITYSET, GlobalContext::MBI, MBVERTEX, GlobalContext::MPI_initialized, appData::neu_sets, GlobalContext::neumann_tag, appData::owned_elems, appData::owned_verts, appData::point_cloud, appData::primary_elems, PSTATUS_GHOST, PSTATUS_NOT, PSTATUS_NOT_OWNED, moab::Range::size(), moab::subtract(), and moab::Interface::UNION.

Referenced by iMOAB_DetermineGhostEntities(), iMOAB_LoadMesh(), iMOAB_MergeVertices(), and iMOAB_ReceiveMesh().