15#ifndef dealii_partitioner_h
16#define dealii_partitioner_h
316 std::pair<types::global_dof_index, types::global_dof_index>
381 const std::vector<std::pair<unsigned int, unsigned int>> &
389 const std::vector<std::pair<unsigned int, unsigned int>> &
400 const std::vector<std::pair<unsigned int, unsigned int>> &
419 const std::vector<std::pair<unsigned int, unsigned int>> &
482#ifdef DEAL_II_WITH_MPI
518 template <
typename Number,
typename MemorySpaceType = MemorySpace::Host>
521 const unsigned int communication_channel,
525 std::vector<MPI_Request> &requests)
const;
544 template <
typename Number,
typename MemorySpaceType = MemorySpace::Host>
548 std::vector<MPI_Request> &requests)
const;
587 template <
typename Number,
typename MemorySpaceType = MemorySpace::Host>
591 const unsigned int communication_channel,
594 std::vector<MPI_Request> &requests)
const;
630 template <
typename Number,
typename MemorySpaceType = MemorySpace::Host>
637 std::vector<MPI_Request> &requests)
const;
652 <<
"Global index " << arg1
653 <<
" neither owned nor ghost on proc " << arg2 <<
'.');
662 <<
"The size of the ghost index array (" << arg1
663 <<
") must either equal the number of ghost in the "
664 <<
"partitioner (" << arg2
665 <<
") or be equal in size to a more comprehensive index"
666 <<
"set which contains " << arg3
667 <<
" elements for this partitioner.");
691 std::pair<types::global_dof_index, types::global_dof_index>
729 Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space>>
767 std::vector<std::pair<unsigned int, unsigned int>>
813 inline std::pair<types::global_dof_index, types::global_dof_index>
826 Assert(
size <= std::numeric_limits<unsigned int>::max(),
828 return static_cast<unsigned int>(
size);
875 static_cast<unsigned int>(index_within_ghosts);
911 inline const std::vector<std::pair<unsigned int, unsigned int>> &
919 inline const std::vector<std::pair<unsigned int, unsigned int>> &
926 inline const std::vector<std::pair<unsigned int, unsigned int>> &
942 inline const std::vector<std::pair<unsigned int, unsigned int>> &
size_type index_within_set(const size_type global_index) const
bool is_element(const size_type index) const
size_type nth_index_in_set(const size_type local_index) const
unsigned int n_ghost_indices_data
Partitioner(const IndexSet &locally_owned_indices, const IndexSet &ghost_indices_in, const MPI_Comm communicator_in)
std::size_t memory_consumption() const
unsigned int global_to_local(const types::global_dof_index global_index) const
bool in_local_range(const types::global_dof_index global_index) const
std::vector< Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > > import_indices_plain_dev
std::vector< std::pair< unsigned int, unsigned int > > import_indices_data
bool is_globally_compatible(const Partitioner &part) const
void set_owned_indices(const IndexSet &locally_owned_indices)
IndexSet ghost_indices_data
const IndexSet & locally_owned_range() const
unsigned int n_ghost_indices_in_larger_set
unsigned int n_ghost_indices() const
std::vector< std::pair< unsigned int, unsigned int > > ghost_targets_data
const std::vector< std::pair< unsigned int, unsigned int > > & ghost_indices_within_larger_ghost_set() const
const IndexSet & ghost_indices() const
const std::vector< std::pair< unsigned int, unsigned int > > & ghost_targets() const
Partitioner(const IndexSet &locally_owned_indices, const MPI_Comm communicator_in)
void export_to_ghosted_array_start(const unsigned int communication_channel, const ArrayView< const Number, MemorySpaceType > &locally_owned_array, const ArrayView< Number, MemorySpaceType > &temporary_storage, const ArrayView< Number, MemorySpaceType > &ghost_array, std::vector< MPI_Request > &requests) const
unsigned int this_mpi_process() const
const std::vector< std::pair< unsigned int, unsigned int > > & import_targets() const
void import_from_ghosted_array_finish(const VectorOperation::values vector_operation, const ArrayView< const Number, MemorySpaceType > &temporary_storage, const ArrayView< Number, MemorySpaceType > &locally_owned_storage, const ArrayView< Number, MemorySpaceType > &ghost_array, std::vector< MPI_Request > &requests) const
unsigned int n_mpi_processes() const
void initialize_import_indices_plain_dev() const
Partitioner(const unsigned int size)
types::global_dof_index global_size
unsigned int locally_owned_size() const
types::global_dof_index local_to_global(const unsigned int local_index) const
std::pair< types::global_dof_index, types::global_dof_index > local_range_data
std::vector< unsigned int > import_indices_chunks_by_rank_data
virtual MPI_Comm get_mpi_communicator() const override
unsigned int n_import_indices_data
void set_ghost_indices(const IndexSet &ghost_indices, const IndexSet &larger_ghost_index_set=IndexSet())
void export_to_ghosted_array_finish(const ArrayView< Number, MemorySpaceType > &ghost_array, std::vector< MPI_Request > &requests) const
Partitioner(const types::global_dof_index local_size, const types::global_dof_index ghost_size, const MPI_Comm communicator)
std::pair< types::global_dof_index, types::global_dof_index > local_range() const
unsigned int n_import_indices() const
const std::vector< std::pair< unsigned int, unsigned int > > & import_indices() const
std::vector< unsigned int > ghost_indices_subset_chunks_by_rank_data
void import_from_ghosted_array_start(const VectorOperation::values vector_operation, const unsigned int communication_channel, const ArrayView< Number, MemorySpaceType > &ghost_array, const ArrayView< Number, MemorySpaceType > &temporary_storage, std::vector< MPI_Request > &requests) const
std::vector< std::pair< unsigned int, unsigned int > > import_targets_data
types::global_dof_index size() const
virtual void reinit(const IndexSet &locally_owned_indices, const IndexSet &ghost_indices, const MPI_Comm communicator) override
bool is_ghost_entry(const types::global_dof_index global_index) const
IndexSet locally_owned_range_data
bool is_compatible(const Partitioner &part) const
std::vector< std::pair< unsigned int, unsigned int > > ghost_indices_subset_data
bool ghost_indices_initialized() const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcNotImplemented()
#define Assert(cond, exc)
static ::ExceptionBase & ExcIndexNotPresent(types::global_dof_index arg1, unsigned int arg2)
#define DeclException2(Exception2, type1, type2, outsequence)
static ::ExceptionBase & ExcGhostIndexArrayHasWrongSize(unsigned int arg1, unsigned int arg2, unsigned int arg3)
#define AssertIndexRange(index, range)
#define DeclException3(Exception3, type1, type2, type3, outsequence)
TrilinosWrappers::types::int_type global_index(const Epetra_BlockMap &map, const ::types::global_dof_index i)
static const unsigned int invalid_unsigned_int
const types::global_dof_index invalid_dof_index
unsigned int global_dof_index