Note: this is documentation for an old release. View the latest documentation at docs.fenicsproject.org/v0.1.0/v0.9.0/cpp
DOLFINx  0.1.0
DOLFINx C++ interface
Public Member Functions | List of all members
dolfinx::la::SparsityPattern Class Reference

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 > &maps, const std::array< int, 2 > &bs)
 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::pair< std::reference_wrapper< const common::IndexMap >, int >>, 2 > &maps, const std::array< std::vector< int >, 2 > &bs)
 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.
 
SparsityPatternoperator= (SparsityPattern &&pattern)=default
 Move assignment.
 
std::shared_ptr< const common::IndexMapindex_map (int dim) const
 Index map for given dimension dimension. Returns the index map for rows and columns that will be set by the current MPI rank. More...
 
std::vector< std::int64_t > column_indices () const
 Global indices of non-zero columns on owned rows. More...
 
int block_size (int dim) const
 Return index map block size for dimension dim.
 
void insert (const xtl::span< const std::int32_t > &rows, const xtl::span< const std::int32_t > &cols)
 Insert non-zero locations using local (process-wise) indices.
 
void insert_diagonal (const std::vector< std::int32_t > &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::int32_t > & off_diagonal_pattern () const
 Sparsity pattern for the un-owned (off-diagonal) columns. Uses local indices for the columns. Translate to global with column IndexMap.
 
MPI_Comm mpi_comm () const
 Return MPI communicator.
 

Detailed Description

This class provides a sparsity pattern data structure that can be used to initialize sparse matrices.

Constructor & Destructor Documentation

◆ SparsityPattern()

SparsityPattern::SparsityPattern ( MPI_Comm  comm,
const std::vector< std::vector< const SparsityPattern * >> &  patterns,
const std::array< std::vector< std::pair< std::reference_wrapper< const common::IndexMap >, int >>, 2 > &  maps,
const std::array< std::vector< int >, 2 > &  bs 
)

Create a new sparsity pattern by concatenating sub-patterns, e.g. pattern =[ pattern00 ][ pattern 01] [ pattern10 ][ pattern 11].

Parameters
[in]commThe MPI communicator
[in]patternsRectangular array of sparsity pattern. The patterns must not be finalised. Null block are permited
[in]mapsPairs of (index map, block size) for each row block (maps[0]) and column blocks (maps[1])
[in]bsBlock sizes for the sparsity pattern entries

Member Function Documentation

◆ column_indices()

std::vector< std::int64_t > SparsityPattern::column_indices ( ) const

Global indices of non-zero columns on owned rows.

Note
The ghosts are computed only once SparsityPattern::assemble has been called.
Returns
The global index non-zero columns on this process, including ghosts

◆ index_map()

std::shared_ptr< const common::IndexMap > SparsityPattern::index_map ( int  dim) const

Index map for given dimension dimension. Returns the index map for rows and columns that will be set by the current MPI rank.

Parameters
[in]dimThe requested map, row (0) or column (1)
Returns
The index map

◆ insert_diagonal()

void SparsityPattern::insert_diagonal ( const std::vector< std::int32_t > &  rows)

Insert non-zero locations on the diagonal.

Parameters
[in]rowsThe rows in local (process-wise) indices. The indices must exist in the row IndexMap.

The documentation for this class was generated from the following files: