11 #include <dolfinx/common/MPI.h> 
   50 std::tuple<std::int64_t, std::vector<std::int32_t>,
 
   51            std::vector<std::vector<std::int64_t>>,
 
   52            std::vector<std::vector<int>>>
 
   55         std::pair<std::reference_wrapper<const common::IndexMap>, 
int>>& maps);
 
   92            const std::span<const std::int64_t>& 
ghosts,
 
   93            const std::span<const int>& 
owners);
 
  115            const std::array<std::vector<int>, 2>& src_dest,
 
  116            const std::span<const std::int64_t>& 
ghosts,
 
  117            const std::span<const int>& 
owners);
 
  135   std::array<std::int64_t, 2> 
local_range() const noexcept;
 
  148   const std::vector<std::int64_t>& 
ghosts() const noexcept;
 
  152   MPI_Comm 
comm() const;
 
  158                        const std::span<std::int64_t>& global) const;
 
  166                        const std::span<std::int32_t>& local) const;
 
  176   const std::vector<
int>& 
owners()
 const { 
return _owners; }
 
  191   std::pair<IndexMap, std::vector<std::int32_t>>
 
  192   create_submap(
const std::span<const std::int32_t>& indices) 
const;
 
  213   const std::vector<int>& 
src() const noexcept;
 
  222   const std::vector<
int>& 
dest() const noexcept;
 
  235   std::array<std::int64_t, 2> _local_range;
 
  238   std::int64_t _size_global;
 
  241   dolfinx::MPI::Comm _comm;
 
  244   std::vector<std::int64_t> _ghosts;
 
  247   std::vector<
int> _owners;
 
  250   std::vector<
int> _src;
 
  253   std::vector<
int> _dest;
 
This class represents the distribution index arrays across processes. An index array is a contiguous ...
Definition: IndexMap.h:64
 
bool overlapped() const noexcept
Check if index map has overlaps (ghosts on any rank).
Definition: IndexMap.cpp:907
 
~IndexMap()=default
Destructor.
 
void local_to_global(const std::span< const std::int32_t > &local, const std::span< std::int64_t > &global) const
Compute global indices for array of local indices.
Definition: IndexMap.cpp:379
 
std::int32_t num_ghosts() const noexcept
Number of ghost indices on this process.
Definition: IndexMap.cpp:365
 
const std::vector< int > & src() const noexcept
Ordered set of MPI ranks that own caller's ghost indices.
Definition: IndexMap.cpp:903
 
const std::vector< int > & owners() const
The ranks that own each ghost index.
Definition: IndexMap.h:176
 
std::array< std::int64_t, 2 > local_range() const noexcept
Range of indices (global) owned by this process.
Definition: IndexMap.cpp:360
 
std::int32_t size_local() const noexcept
Number of indices owned by on this process.
Definition: IndexMap.cpp:367
 
std::int64_t size_global() const noexcept
Number indices across communicator.
Definition: IndexMap.cpp:372
 
IndexMap(IndexMap &&map)=default
Move constructor.
 
IndexMap & operator=(IndexMap &&map)=default
Move assignment.
 
graph::AdjacencyList< int > index_to_dest_ranks() const
Compute map from each local (owned) index to the set of ranks that have the index as a ghost.
Definition: IndexMap.cpp:605
 
const std::vector< std::int64_t > & ghosts() const noexcept
Local-to-global map for ghosts (local indexing beyond end of local range)
Definition: IndexMap.cpp:374
 
std::pair< IndexMap, std::vector< std::int32_t > > create_submap(const std::span< const std::int32_t > &indices) const
Create new index map from a subset of indices in this index map.
Definition: IndexMap.cpp:440
 
void global_to_local(const std::span< const std::int64_t > &global, const std::span< std::int32_t > &local) const
Compute local indices for array of global indices.
Definition: IndexMap.cpp:398
 
IndexMap(MPI_Comm comm, std::int32_t local_size)
Create an non-overlapping index map.
Definition: IndexMap.cpp:298
 
const std::vector< int > & dest() const noexcept
Ordered set of MPI ranks that ghost indices owned by caller.
Definition: IndexMap.cpp:905
 
std::vector< std::int32_t > shared_indices() const
Build a list of owned indices that are ghosted by another rank.
Definition: IndexMap.cpp:822
 
MPI_Comm comm() const
Return the MPI communicator that the map is defined on.
Definition: IndexMap.cpp:437
 
std::vector< std::int64_t > global_indices() const
Build list of indices with global indexing.
Definition: IndexMap.cpp:424
 
This class provides a static adjacency list data structure. It is commonly used to store directed gra...
Definition: AdjacencyList.h:26
 
Miscellaneous classes, functions and types.
 
std::vector< int32_t > compute_owned_indices(const std::span< const std::int32_t > &indices, const IndexMap &map)
Given a vector of indices (local numbering, owned or ghost) and an index map, this function returns t...
Definition: IndexMap.cpp:35
 
std::tuple< std::int64_t, std::vector< std::int32_t >, std::vector< std::vector< std::int64_t > >, std::vector< std::vector< int > > > stack_index_maps(const std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int >> &maps)
Compute layout data and ghost indices for a stacked (concatenated) index map, i.e....
Definition: IndexMap.cpp:136