14 #include "MBiMesh.hpp"
16 #define IMESH_ASSERT( ierr ) \
17 if( ( ierr ) != 0 ) std::cout << "iMesh Assert: \n";
20 extern "C" void update_tracer( iMesh_Instance instance, iBase_EntitySetHandle imesh_euler_set,
int* ierr );
22 int main(
int argc,
char* argv[] )
24 MPI_Init( &argc, &argv );
27 iMeshP_PartitionHandle partn;
30 iBase_EntitySetHandle root;
32 iMesh_newMesh( 0, &imesh, &ierr, 0 );
34 iMesh_getRootSet( imesh, &root, &ierr );
37 iMeshP_createPartitionAll( imesh, MPI_COMM_WORLD, &partn, &ierr );
39 MPI_Comm_rank( MPI_COMM_WORLD, &rank );
40 MPI_Comm_size( MPI_COMM_WORLD, &
size );
43 const char options[] =
" moab:PARALLEL=READ_PART "
44 " moab:PARTITION=PARALLEL_PARTITION "
45 " moab:PARALLEL_RESOLVE_SHARED_ENTS "
46 " moab:PARTITION_DISTRIBUTE ";
47 const char* filename =
"HN16DP.h5m";
49 if( 0 == rank ) std::cout <<
"Load in parallel the file: " << filename << std::endl;
50 iMeshP_loadAll( imesh, partn, root, filename, options, &ierr, strlen( filename ), strlen( options ) );
53 iMesh_getNumEntSets( imesh,
IMESH_NULL, 1, &num_sets, &ierr );
55 std::cout <<
"There's " << num_sets <<
" entity sets here on process rank " << rank << std::endl;
57 iBase_EntitySetHandle euler_set;
59 iMesh_createEntSet( imesh, 0, &euler_set, &ierr );
62 iBase_EntityHandle* cells = NULL;
66 iMesh_getEntities( imesh, root, iBase_FACE, iMesh_ALL_TOPOLOGIES, &cells, &ents_alloc, &ents_size, &ierr );
69 iMesh_addEntArrToSet( imesh, cells, ents_size, euler_set, &ierr );
76 const char* out_name =
"out.h5m";
77 const char optionswrite[] =
" moab:PARALLEL=WRITE_PART ";
78 iMeshP_saveAll( imesh, partn, euler_set, out_name, optionswrite, &ierr, strlen( out_name ),
79 strlen( optionswrite ) );
82 if( 0 == rank ) std::cout <<
"Done\n";