DOLFIN-X
DOLFIN-X C++ interface
|
This class provides a sparsity pattern data structure that can be used to initialize sparse matrices. More...
#include <SparsityPattern.h>
Public Member Functions | |
SparsityPattern (MPI_Comm comm, const std::array< std::shared_ptr< const common::IndexMap >, 2 > &index_maps) | |
Create an empty sparsity pattern with specified dimensions. | |
SparsityPattern (MPI_Comm comm, const std::vector< std::vector< const SparsityPattern * >> &patterns, const std::array< std::vector< std::reference_wrapper< const common::IndexMap >>, 2 > &maps) | |
Create a new sparsity pattern by concatenating sub-patterns, e.g. pattern =[ pattern00 ][ pattern 01] [ pattern10 ][ pattern 11]. More... | |
SparsityPattern (const SparsityPattern &pattern)=delete | |
SparsityPattern (SparsityPattern &&pattern)=default | |
Move constructor. | |
~SparsityPattern ()=default | |
Destructor. | |
SparsityPattern & | operator= (SparsityPattern &&pattern)=default |
Move assignment. | |
std::array< std::int64_t, 2 > | local_range (int dim) const |
Return local range for dimension dim. | |
std::shared_ptr< const common::IndexMap > | index_map (int dim) const |
Return index map for dimension dim. | |
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. | |
void | insert_diagonal (const Eigen::Ref< const Eigen::Array< std::int32_t, Eigen::Dynamic, 1 >> &rows) |
Insert non-zero locations on the diagonal. More... | |
void | assemble () |
Finalize sparsity pattern and communicate off-process entries. | |
std::int64_t | num_nonzeros () const |
Return number of local nonzeros. | |
const graph::AdjacencyList< std::int32_t > & | diagonal_pattern () const |
Sparsity pattern for the owned (diagonal) block. Uses local indices for the columns. | |
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. | |
MPI_Comm | mpi_comm () const |
Return MPI communicator. | |
This class provides a sparsity pattern data structure that can be used to initialize sparse matrices.
SparsityPattern::SparsityPattern | ( | MPI_Comm | comm, |
const std::vector< std::vector< const SparsityPattern * >> & | patterns, | ||
const std::array< std::vector< std::reference_wrapper< const common::IndexMap >>, 2 > & | maps | ||
) |
Create a new sparsity pattern by concatenating sub-patterns, e.g. pattern =[ pattern00 ][ pattern 01] [ pattern10 ][ pattern 11].
[in] | comm | The MPI communicator |
[in] | patterns | Rectangular array of sparsity pattern. The patterns must not be finalised. Null block are permited |
[in] | maps | Index maps for each row block (maps[0]) and column blocks (maps[1]) |
void SparsityPattern::insert_diagonal | ( | const Eigen::Ref< const Eigen::Array< std::int32_t, Eigen::Dynamic, 1 >> & | rows | ) |
Insert non-zero locations on the diagonal.
[in] | rows | The rows in local (process-wise) indices. The indices must exist in the row IndexMap. |