本文整理汇总了C++中ParallelComm::get_id方法的典型用法代码示例。如果您正苦于以下问题:C++ ParallelComm::get_id方法的具体用法?C++ ParallelComm::get_id怎么用?C++ ParallelComm::get_id使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParallelComm
的用法示例。
在下文中一共展示了ParallelComm::get_id方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read_file
ErrorCode DeformMeshRemap::read_file(int m_or_s, string &fname, EntityHandle &seth)
{
// Create meshset
ErrorCode rval = mbImpl->create_meshset(0, seth);MB_CHK_SET_ERR(rval, "Couldn't create master/slave set");
ostringstream options;
#ifdef USE_MPI
ParallelComm *pc = (m_or_s == MASTER ? pcMaster : pcSlave);
if (pc && pc->size() > 1) {
if (debug) options << "DEBUG_IO=1;CPUTIME;";
options << "PARALLEL=READ_PART;PARTITION=PARALLEL_PARTITION;PARALLEL_RESOLVE_SHARED_ENTS;"
<< "PARALLEL_GHOSTS=2.0.1;PARALLEL_COMM=" << pc->get_id();
}
#endif
rval = mbImpl->load_file(fname.c_str(), &seth, options.str().c_str());MB_CHK_SET_ERR(rval, "Couldn't load master/slave mesh");
if (*solidSetNos[m_or_s].begin() == -1 || *fluidSetNos[m_or_s].begin() == -1) return MB_SUCCESS;
// Get material sets for solid/fluid
Tag tagh;
rval = mbImpl->tag_get_handle(MATERIAL_SET_TAG_NAME, tagh);MB_CHK_SET_ERR(rval, "Couldn't get material set tag name");
for (set<int>::iterator sit = solidSetNos[m_or_s].begin(); sit != solidSetNos[m_or_s].end(); ++sit) {
Range sets;
int set_no = *sit;
const void *setno_ptr = &set_no;
rval = mbImpl->get_entities_by_type_and_tag(seth, MBENTITYSET, &tagh, &setno_ptr, 1, sets);
if (MB_SUCCESS != rval || sets.empty()) {
MB_SET_ERR(MB_FAILURE, "Couldn't find solid set #" << *sit);
}
else
solidSets[m_or_s].merge(sets);
}
// Get solid entities, and dimension
Range tmp_range;
for (Range::iterator rit = solidSets[m_or_s].begin(); rit != solidSets[m_or_s].end(); ++rit) {
rval = mbImpl->get_entities_by_handle(*rit, tmp_range, true);MB_CHK_SET_ERR(rval, "Failed to get entities in solid");
}
if (!tmp_range.empty()) {
int dim = mbImpl->dimension_from_handle(*tmp_range.rbegin());
assert(dim > 0 && dim < 4);
solidElems[m_or_s] = tmp_range.subset_by_dimension(dim);
}
if (debug)
cout << "Read " << solidElems[m_or_s].size() << " solid elements from " << solidSets[m_or_s].size() <<
" sets in " << (m_or_s == MASTER ? "master" : "slave") << " mesh." << endl;
for (set<int>::iterator sit = fluidSetNos[m_or_s].begin(); sit != fluidSetNos[m_or_s].end(); ++sit) {
Range sets;
int set_no = *sit;
const void *setno_ptr = &set_no;
rval = mbImpl->get_entities_by_type_and_tag(seth, MBENTITYSET, &tagh, &setno_ptr, 1, sets);
if (MB_SUCCESS != rval || sets.empty()) {
MB_SET_ERR(MB_FAILURE, "Couldn't find fluid set #" << *sit);
}
else
fluidSets[m_or_s].merge(sets);
}
// Get fluid entities, and dimension
tmp_range.clear();
for (Range::iterator rit = fluidSets[m_or_s].begin(); rit != fluidSets[m_or_s].end(); ++rit) {
rval = mbImpl->get_entities_by_handle(*rit, tmp_range, true);MB_CHK_SET_ERR(rval, "Failed to get entities in fluid");
}
if (!tmp_range.empty()) {
int dim = mbImpl->dimension_from_handle(*tmp_range.rbegin());
assert(dim > 0 && dim < 4);
fluidElems[m_or_s] = tmp_range.subset_by_dimension(dim);
}
if (debug)
cout << "Read " << fluidElems[m_or_s].size() << " fluid elements from " << fluidSets[m_or_s].size() <<
" sets in " << (m_or_s == MASTER ? "master" : "slave") << " mesh." << endl;
return rval;
}