DOLFIN-X
DOLFIN-X C++ interface
|
10 #include <dolfinx/common/MPI.h>
43 const std::array<std::shared_ptr<const common::IndexMap>, 2>& index_maps);
50 const std::vector<std::vector<const SparsityPattern*>>& patterns);
64 std::array<std::int64_t, 2>
local_range(
int dim)
const;
67 std::shared_ptr<const common::IndexMap>
index_map(
int dim)
const;
71 insert(
const Eigen::Ref<
const Eigen::Array<std::int32_t, Eigen::Dynamic, 1>>&
73 const Eigen::Ref<
const Eigen::Array<std::int32_t, Eigen::Dynamic, 1>>&
80 const Eigen::Ref<
const Eigen::Array<std::int32_t, Eigen::Dynamic, 1>>&
96 Eigen::Array<std::int32_t, Eigen::Dynamic, 1>
115 std::string
str()
const;
122 std::array<std::shared_ptr<const common::IndexMap>, 2> _index_maps;
125 std::vector<std::vector<std::int32_t>> _diagonal_cache;
126 std::vector<std::vector<std::int64_t>> _off_diagonal_cache;
128 std::shared_ptr<graph::AdjacencyList<std::int32_t>> _diagonal;
129 std::shared_ptr<graph::AdjacencyList<std::int64_t>> _off_diagonal;
SparsityPattern(MPI_Comm comm, const std::array< std::shared_ptr< const common::IndexMap >, 2 > &index_maps)
Create an empty sparsity pattern with specified dimensions.
Definition: SparsityPattern.cpp:32
std::array< std::int64_t, 2 > local_range(int dim) const
Return local range for dimension dim.
Definition: SparsityPattern.cpp:189
void insert(const Eigen::Ref< const Eigen::Array< std::int32_t, Eigen::Dynamic, 1 >> &rows, const Eigen::Ref< const Eigen::Array< std::int32_t, Eigen::Dynamic, 1 >> &cols)
Insert non-zero locations using local (process-wise) indices.
Definition: SparsityPattern.cpp:202
Eigen::Array< std::int32_t, Eigen::Dynamic, 1 > num_nonzeros_off_diagonal() const
Fill array with number of nonzeros for off-diagonal block in local_range for dimension 0....
Definition: SparsityPattern.cpp:424
This class provides a sparsity pattern data structure that can be used to initialize sparse matrices.
Definition: SparsityPattern.h:36
MPI_Comm mpi_comm() const
Return MPI communicator.
Definition: SparsityPattern.cpp:459
void insert_diagonal(const Eigen::Ref< const Eigen::Array< std::int32_t, Eigen::Dynamic, 1 >> &rows)
Insert non-zero locations on the diagonal.
Definition: SparsityPattern.cpp:244
This class provides a static adjacency list data structure. It is commonly used to store directed gra...
Definition: assemble_matrix_impl.h:26
~SparsityPattern()=default
Destructor.
void assemble()
Finalize sparsity pattern and communicate off-process entries.
Definition: SparsityPattern.cpp:270
const graph::AdjacencyList< std::int32_t > & diagonal_pattern() const
Sparsity pattern for the owned (diagonal) block. Uses local indices for the columns.
Definition: SparsityPattern.cpp:444
A duplicate MPI communicator and manage lifetime of the communicator.
Definition: MPI.h:34
SparsityPattern & operator=(SparsityPattern &&pattern)=default
Move assignment.
std::shared_ptr< const common::IndexMap > index_map(int dim) const
Return index map for dimension dim.
Definition: SparsityPattern.cpp:197
Eigen::Array< std::int32_t, Eigen::Dynamic, 1 > num_nonzeros_diagonal() const
Fill array with number of nonzeros per row for diagonal block in local_range for dimension 0.
Definition: SparsityPattern.cpp:410
std::int64_t num_nonzeros() const
Return number of local nonzeros.
Definition: SparsityPattern.cpp:401
std::string str() const
Return informal string representation (pretty-print)
Definition: SparsityPattern.cpp:461
Eigen::Array< std::int32_t, Eigen::Dynamic, 1 > num_local_nonzeros() const
Fill vector with number of nonzeros in local_range for dimension 0.
Definition: SparsityPattern.cpp:438
const graph::AdjacencyList< std::int64_t > & off_diagonal_pattern() const
Sparsity pattern for the un-owned (off-diagonal) columns. Uses global indices for the columns.
Definition: SparsityPattern.cpp:452