|
MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include "moab/ParallelComm.hpp"#include "moab/Core.hpp"#include "moab_mpi.h"#include "TestUtil.hpp"#include "MBTagConventions.hpp"#include <iostream>#include <sstream>
Include dependency graph for augment_with_ghosts.cpp:Go to the source code of this file.
Functions | |
| void | report_sets (moab::Core *mb, int rank, int nproc) |
| void | test_read_with_ghost () |
| void | test_read_and_ghost_after () |
| void | test_read_with_ghost_no_augment () |
| int | main (int argc, char *argv[]) |
Variables | |
| std::string | filename = "unittest/io/p8ex1.h5m" |
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 129 of file augment_with_ghosts.cpp.
References filename, RUN_TEST, test_read_and_ghost_after(), test_read_with_ghost(), and test_read_with_ghost_no_augment().
{
MPI_Init( &argc, &argv );
int result = 0;
if( argc >= 2 ) filename = argv[1];
result += RUN_TEST( test_read_with_ghost );
result += RUN_TEST( test_read_and_ghost_after );
result += RUN_TEST( test_read_with_ghost_no_augment );
MPI_Finalize();
return 0;
}
| void report_sets | ( | moab::Core * | mb, |
| int | rank, | ||
| int | nproc | ||
| ) |
Definition at line 12 of file augment_with_ghosts.cpp.
References moab::Range::begin(), CHECK_ERR, DIRICHLET_SET_TAG_NAME, moab::Range::end(), ErrorCode, moab::Core::get_entities_by_handle(), moab::Core::get_entities_by_type_and_tag(), moab::Core::id_from_handle(), MATERIAL_SET_TAG_NAME, MB_TAG_ANY, MB_TYPE_INTEGER, MBENTITYSET, MPI_COMM_WORLD, NEUMANN_SET_TAG_NAME, PARALLEL_PARTITION_TAG_NAME, moab::Range::size(), moab::Core::tag_get_data(), moab::Core::tag_get_handle(), and moab::Interface::UNION.
Referenced by test_read_and_ghost_after(), test_read_with_ghost(), and test_read_with_ghost_no_augment().
{
// check neumann and material sets, and see if their number of quads / hexes in them
const char* const shared_set_tag_names[] = { MATERIAL_SET_TAG_NAME, DIRICHLET_SET_TAG_NAME, NEUMANN_SET_TAG_NAME,
PARALLEL_PARTITION_TAG_NAME };
int num_tags = sizeof( shared_set_tag_names ) / sizeof( shared_set_tag_names[0] );
for( int p = 0; p < nproc; p++ )
{
if( rank == p )
{
std::cout << " Task no:" << rank << "\n";
for( int i = 0; i < num_tags; i++ )
{
Tag tag;
ErrorCode rval = mb->tag_get_handle( shared_set_tag_names[i], 1, MB_TYPE_INTEGER, tag, MB_TAG_ANY );CHECK_ERR( rval );
Range sets;
rval = mb->get_entities_by_type_and_tag( 0, MBENTITYSET, &tag, 0, 1, sets, Interface::UNION );CHECK_ERR( rval );
std::vector< int > vals( sets.size() );
rval = mb->tag_get_data( tag, sets, &vals[0] );CHECK_ERR( rval );
std::cout << " sets: " << shared_set_tag_names[i] << "\n";
int j = 0;
for( Range::iterator it = sets.begin(); it != sets.end(); it++, j++ )
{
Range ents;
rval = mb->get_entities_by_handle( *it, ents );CHECK_ERR( rval );
std::cout << " set " << mb->id_from_handle( *it ) << " with tagval=" << vals[j] << " has "
<< ents.size() << " entities\n";
}
}
}
MPI_Barrier( MPI_COMM_WORLD );
}
}
| void test_read_and_ghost_after | ( | ) |
Definition at line 72 of file augment_with_ghosts.cpp.
References moab::ParallelComm::augment_default_sets_with_ghosts(), CHECK_ERR, ErrorCode, moab::ParallelComm::exchange_ghost_cells(), filename, layers, moab::Core::load_file(), mb, MB_SUCCESS, MPI_COMM_WORLD, outfile, rank, report_sets(), moab::ParallelComm::set_debug_verbosity(), and moab::Core::write_file().
Referenced by main().
{
int nproc, rank;
MPI_Comm_size( MPI_COMM_WORLD, &nproc );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
moab::Core* mb = new moab::Core();
moab::ParallelComm* pc = new moab::ParallelComm( mb, MPI_COMM_WORLD );
ErrorCode rval = MB_SUCCESS;
// first read in parallel, then ghost, then augment
char read_opts[] = "PARALLEL=READ_PART;PARALLEL_RESOLVE_SHARED_ENTS;PARTITION=PARALLEL_PARTITION";
rval = mb->load_file( filename.c_str(), 0, read_opts );CHECK_ERR( rval );
int ghost_dim = 3, bridge = 0, layers = 1, addl_ents = 3;
rval = pc->exchange_ghost_cells( ghost_dim, bridge, layers, addl_ents, true, true );CHECK_ERR( rval );
//
pc->set_debug_verbosity( 1 );
rval = pc->augment_default_sets_with_ghosts( 0 );CHECK_ERR( rval );
report_sets( mb, rank, nproc );
// write in serial the database , on each rank
std::ostringstream outfile;
outfile << "TaskMesh_n" << nproc << "." << rank << ".h5m";
// the mesh contains ghosts too, but they were not part of mat/neumann set
// write in serial the file, to see what tags are missing / or not
rval = mb->write_file( outfile.str().c_str() ); // everything on root
CHECK_ERR( rval );
delete pc;
delete mb;
}
| void test_read_with_ghost | ( | ) |
Definition at line 48 of file augment_with_ghosts.cpp.
References CHECK_ERR, ErrorCode, filename, moab::Core::load_file(), mb, MB_SUCCESS, MPI_COMM_WORLD, outfile, rank, report_sets(), and moab::Core::write_file().
Referenced by main().
{
int nproc, rank;
MPI_Comm_size( MPI_COMM_WORLD, &nproc );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
moab::Core* mb = new moab::Core();
ErrorCode rval = MB_SUCCESS;
char read_opts[] = "PARALLEL=READ_PART;PARALLEL_RESOLVE_SHARED_ENTS;PARALLEL_GHOSTS=3.0.1.3;"
"PARTITION=PARALLEL_PARTITION";
rval = mb->load_file( filename.c_str(), 0, read_opts );CHECK_ERR( rval );
report_sets( mb, rank, nproc );
// write in serial the database , on each rank
std::ostringstream outfile;
outfile << "testReadGhost_n" << nproc << "." << rank << ".h5m";
// the mesh contains ghosts too, but they were not part of mat/neumann set
// write in serial the file, to see what tags are missing / or not
rval = mb->write_file( outfile.str().c_str() ); // everything on root
CHECK_ERR( rval );
delete mb;
}
| void test_read_with_ghost_no_augment | ( | ) |
Definition at line 106 of file augment_with_ghosts.cpp.
References CHECK_ERR, ErrorCode, filename, moab::Core::load_file(), mb, MB_SUCCESS, MPI_COMM_WORLD, outfile, rank, report_sets(), and moab::Core::write_file().
Referenced by main().
{
int nproc, rank;
MPI_Comm_size( MPI_COMM_WORLD, &nproc );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
moab::Core* mb = new moab::Core();
ErrorCode rval = MB_SUCCESS;
char read_opts[] = "PARALLEL=READ_PART;PARALLEL_RESOLVE_SHARED_ENTS;PARALLEL_GHOSTS=3.0.1.3;"
"PARTITION=PARALLEL_PARTITION;SKIP_AUGMENT_WITH_GHOSTS";
rval = mb->load_file( filename.c_str(), 0, read_opts );CHECK_ERR( rval );
report_sets( mb, rank, nproc );
// write in serial the database , on each rank
std::ostringstream outfile;
outfile << "testReadGhost_n" << nproc << "." << rank << ".h5m";
// the mesh contains ghosts too, but they were not part of mat/neumann set
// write in serial the file, to see what tags are missing / or not
rval = mb->write_file( outfile.str().c_str() ); // everything on root
CHECK_ERR( rval );
delete mb;
}
| std::string filename = "unittest/io/p8ex1.h5m" |
Definition at line 9 of file augment_with_ghosts.cpp.