44#ifndef NIMBLE_VECTOR_COMMUNICATOR_H
45#define NIMBLE_VECTOR_COMMUNICATOR_H
61#ifdef NIMBLE_HAVE_TRILINOS
65#ifdef NIMBLE_HAVE_TRILINOS
66typedef Teuchos::RCP<const Teuchos::Comm<int>>
comm_type;
76 unsigned int num_nodes_ = 0;
77#ifdef NIMBLE_HAVE_TRILINOS
84 std::unique_ptr<reduction::ReductionInfo> MeshReductionInfo =
nullptr;
87#ifdef NIMBLE_HAVE_TRILINOS
88 std::unique_ptr<nimble::TpetraContainer> TpetraReductionInfo =
nullptr;
107#ifdef NIMBLE_HAVE_TRILINOS
110 TpetraReductionInfo.reset(tpetra_container);
111 TpetraReductionInfo->Initialize(dim_, num_nodes_, comm_, global_node_ids);
115#ifdef NIMBLE_HAVE_MPI
117 MPI_Comm duplicate_of_world;
118 MPI_Comm_dup(MPI_COMM_WORLD, &duplicate_of_world);
120 reduction::ReductionInfo* reduction_info = reduction::GenerateReductionInfo(global_node_ids, context);
121 MeshReductionInfo.reset(reduction_info);
133#ifdef NIMBLE_HAVE_MPI
134 MeshReductionInfo->GetAllIndices(node_local_ids, min_rank_containing_node);
136 min_rank_containing_node.push_back(0);
147#ifdef NIMBLE_HAVE_TRILINOS
148 if (TpetraReductionInfo) {
149 TpetraReductionInfo->VectorReduction(data_dimension, data);
154#ifdef NIMBLE_HAVE_MPI
155 MeshReductionInfo->PerformReduction(data, data_dimension);
164 template <
class Lookup>
168#ifdef NIMBLE_HAVE_MPI
169 MeshReductionInfo->PerformReduction(lookup, data_dimension);
Definition nimble_tpetra_utils.h:119
~VectorCommunicator()=default
void GetPartitionBoundaryNodeLocalIds(std::vector< int > &node_local_ids, std::vector< int > &min_rank_containing_node)
Definition nimble_vector_communicator.h:131
void VectorReduction(int data_dimension, Lookup &&lookup)
Definition nimble_vector_communicator.h:166
VectorCommunicator()=default
VectorCommunicator(int d, unsigned int n, comm_type comm)
Definition nimble_vector_communicator.h:94
void VectorReduction(int data_dimension, double *data)
Definition nimble_vector_communicator.h:145
void Initialize(std::vector< int > const &global_node_ids)
Definition nimble_vector_communicator.h:105
Definition nimble.mpi.mpicontext.h:63
Definition kokkos_contact_manager.h:49
int comm_type
Definition nimble_tpetra_utils.h:75