本文整理汇总了C++中stk::CommSparse::send_buffer方法的典型用法代码示例。如果您正苦于以下问题:C++ CommSparse::send_buffer方法的具体用法?C++ CommSparse::send_buffer怎么用?C++ CommSparse::send_buffer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类stk::CommSparse
的用法示例。
在下文中一共展示了CommSparse::send_buffer方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pack_graph_edge_and_chosen_side_id_to_proc
void pack_graph_edge_and_chosen_side_id_to_proc(stk::CommSparse& commSparse, int otherProc, const stk::mesh::GraphEdge& graphEdge, stk::mesh::EntityId chosenSideId)
{
commSparse.send_buffer(otherProc).pack<stk::mesh::EntityId>(graphEdge.elem1);
commSparse.send_buffer(otherProc).pack<int>(graphEdge.side1);
commSparse.send_buffer(otherProc).pack<stk::mesh::EntityId>(graphEdge.elem2);
commSparse.send_buffer(otherProc).pack<int>(graphEdge.side2);
commSparse.send_buffer(otherProc).pack<stk::mesh::EntityId>(chosenSideId);
}
示例2: pack_num_active_neighbors_into_buffer
void NoGhostGameofLife::pack_num_active_neighbors_into_buffer(stk::CommSparse& buffer,
int numActive, stk::mesh::EntityKey
remoteElemKey)
{
int procNum = m_remoteElementKeyToOwningProcessor[remoteElemKey];
buffer.send_buffer(procNum).pack<stk::mesh::EntityKey>(remoteElemKey);
buffer.send_buffer(procNum).pack<int>(numActive);
}
示例3: pack_edge
void pack_edge(stk::CommSparse &comm, const ElemElemGraph& graph, const stk::mesh::BulkData& bulkData, const stk::mesh::GraphEdge& edge, int other_proc)
{
stk::mesh::EntityId id1 = bulkData.identifier(graph.get_entity(edge.elem1()));
unsigned side1 = edge.side1();
stk::mesh::EntityId id2 = -edge.elem2();
unsigned side2 = edge.side2();
comm.send_buffer(other_proc).pack<stk::mesh::EntityId>(id1);
comm.send_buffer(other_proc).pack<unsigned>(side1);
comm.send_buffer(other_proc).pack<stk::mesh::EntityId>(id2);
comm.send_buffer(other_proc).pack<unsigned>(side2);
}
示例4: fill_buffer_with_local_neighbors_of_remote_element_key
void NoGhostGameofLife::fill_buffer_with_local_neighbors_of_remote_element_key(stk::mesh::EntityKey
remoteKey,
stk::CommSparse&
buffer)
{
int procNum = m_remoteElementKeyToOwningProcessor[remoteKey];
size_t numNeighbors = m_remoteElementKeyToLocalNeighborElements[remoteKey].size();
buffer.send_buffer(procNum).pack<stk::mesh::EntityKey>(remoteKey);
buffer.send_buffer(procNum).pack<size_t>(numNeighbors);
for (stk::mesh::Entity localElem : m_remoteElementKeyToLocalNeighborElements[remoteKey])
buffer.send_buffer(procNum).pack<stk::mesh::EntityKey>(m_bulkData->entity_key(localElem));
}
示例5: fill_buffer_with_map_info
void NoGhostGameofLife::fill_buffer_with_map_info(stk::mesh::Entity elem, stk::CommSparse& buffer,
std::unordered_map<int,std::unordered_set
<stk::mesh::EntityKey, std::hash
<stk::mesh::EntityKey>>>& map)
{
for (std::pair< const int,std::unordered_set<stk::mesh::EntityKey,
std::hash<stk::mesh::EntityKey>>>& pair : map)
{
int remoteProc = pair.first;
buffer.send_buffer(remoteProc).pack<stk::mesh::EntityKey>(m_bulkData->entity_key(elem));
buffer.send_buffer(remoteProc).pack<size_t>(pair.second.size());
for (stk::mesh::EntityKey nodeKey : pair.second)
buffer.send_buffer(remoteProc).pack<stk::mesh::EntityKey>(nodeKey);
}
}
示例6: pack_data_for_part_ordinals
void pack_data_for_part_ordinals(stk::CommSparse &comm, const ElemElemGraph& graph, const stk::mesh::BulkData& bulkData)
{
const stk::mesh::impl::ParallelGraphInfo& parallel_info = graph.get_parallel_graph().get_parallel_graph_info();
for(const auto& item : parallel_info)
{
const stk::mesh::GraphEdge &edge = item.first;
const stk::mesh::impl::ParallelInfo &pinfo = item.second;
stk::mesh::Entity local_element = graph.get_entity(edge.elem1());
std::vector<stk::mesh::PartOrdinal> partOrdinals = stk::mesh::impl::get_element_block_part_ordinals(local_element, bulkData);
pack_edge(comm, graph, bulkData, edge, pinfo.get_proc_rank_of_neighbor());
comm.send_buffer(pinfo.get_proc_rank_of_neighbor()).pack<size_t>(partOrdinals.size());
for(stk::mesh::PartOrdinal partOrdinal : partOrdinals)
comm.send_buffer(pinfo.get_proc_rank_of_neighbor()).pack<stk::mesh::PartOrdinal>(partOrdinal);
}
}
示例7: communicate_remote_element_keys_to_check
void NoGhostGameofLife::communicate_remote_element_keys_to_check(stk::CommSparse& buffer)
{
for (int phase = 0; phase < 2; phase++)
{
for (stk::mesh::EntityKey remoteElemKey : m_remoteElementKeysToVisit)
buffer.send_buffer(m_remoteElementKeyToOwningProcessor[remoteElemKey]).
pack<stk::mesh::EntityKey>(remoteElemKey);
if (0 == phase)
buffer.allocate_buffers();
else
buffer.communicate();
}
}
示例8: pack_data
void pack_data(stk::CommSparse& comm, const std::vector<SideSharingData>& sideSharingDataThisProc, const std::vector<stk::mesh::impl::IdViaSidePair>& idAndSides)
{
for(size_t i=0;i<idAndSides.size();++i)
{
int other_proc = sideSharingDataThisProc[i].sharingProc;
comm.send_buffer(other_proc).pack<stk::mesh::EntityId>(idAndSides[i].id);
comm.send_buffer(other_proc).pack<int>(idAndSides[i].side);
comm.send_buffer(other_proc).pack<stk::mesh::EntityId>(sideSharingDataThisProc[i].chosenSideId);
comm.send_buffer(other_proc).pack<size_t>(sideSharingDataThisProc[i].sideNodes.size());
for(stk::mesh::EntityId nodeId : sideSharingDataThisProc[i].sideNodes) {
comm.send_buffer(other_proc).pack<stk::mesh::EntityId>(nodeId);
}
comm.send_buffer(other_proc).pack<size_t>(sideSharingDataThisProc[i].partOrdinals.size());
for(stk::mesh::PartOrdinal partOrd : sideSharingDataThisProc[i].partOrdinals) {
comm.send_buffer(other_proc).pack<stk::mesh::PartOrdinal>(partOrd);
}
}
}
示例9: pack_vector_to_proc
void pack_vector_to_proc(stk::CommSparse& comm, const T& data, int otherProc)
{
comm.send_buffer(otherProc).pack<unsigned>(data.size());
for(size_t i=0; i<data.size(); ++i)
comm.send_buffer(otherProc).pack<typename T::value_type>(data[i]);
}
示例10: pack_selected_value_for_par_info
void pack_selected_value_for_par_info(stk::CommSparse &comm, int procRank, const stk::mesh::BulkData& bulkData, stk::mesh::Entity local_element, stk::mesh::Selector sel)
{
if(sel(bulkData.bucket(local_element)))
comm.send_buffer(procRank).pack<int64_t>(bulkData.identifier(local_element));
}