proxsuite-nlp  0.10.0
A primal-dual augmented Lagrangian-type solver for nonlinear programming on manifolds.
Loading...
Searching...
No Matches
proxsuite::nlp::linalg::SymbolicBlockMatrix Struct Reference

Symbolic representation of the sparsity structure of a (square) block matrix. More...

#include <proxsuite-nlp/linalg/block-kind.hpp>

Public Member Functions

 SymbolicBlockMatrix ()
 
 SymbolicBlockMatrix (isize nc, isize os)
 Allocating constructor.
 
 SymbolicBlockMatrix (BlockKind *data, isize *lens, isize nc, isize os)
 Constructor from external data.
 
 SymbolicBlockMatrix (SymbolicBlockMatrix const &other)=default
 Shallow copy constructor.
 
SymbolicBlockMatrixoperator= (SymbolicBlockMatrix const &other)=default
 
 SymbolicBlockMatrix (const std::vector< isize > &lens)
 
SymbolicBlockMatrix copy () const
 Deep copy.
 
isize nsegments () const noexcept
 
isize size () const noexcept
 
BlockKindptr (isize i, isize j) noexcept
 
BlockKind const * ptr (isize i, isize j) const noexcept
 
SymbolicBlockMatrix submatrix (isize i, isize n) noexcept
 
BlockKindoperator() (isize i, isize j) noexcept
 Get a reference to the block in position (i, j).
 
const BlockKindoperator() (isize i, isize j) const noexcept
 
Eigen::ComputationInfo brute_force_best_permutation (SymbolicBlockMatrix const &in, isize *best_perm, isize *iwork)
 
bool check_if_symmetric () const noexcept
 
isize count_nnz () const noexcept
 
bool llt_in_place () noexcept
 
SymbolicBlockMatrix transpose () const
 

Public Attributes

BlockKindm_data
 
isizesegment_lens
 
isize segments_count
 
isize outer_stride
 
bool performed_llt = false
 

Detailed Description

Symbolic representation of the sparsity structure of a (square) block matrix.

This struct describes the block-wise layout of a matrix, in row-major format.

Definition at line 48 of file block-kind.hpp.

Constructor & Destructor Documentation

◆ SymbolicBlockMatrix() [1/5]

proxsuite::nlp::linalg::SymbolicBlockMatrix::SymbolicBlockMatrix ( )
inline

Definition at line 64 of file block-kind.hpp.

◆ SymbolicBlockMatrix() [2/5]

proxsuite::nlp::linalg::SymbolicBlockMatrix::SymbolicBlockMatrix ( isize nc,
isize os )
inline

Allocating constructor.

Definition at line 66 of file block-kind.hpp.

◆ SymbolicBlockMatrix() [3/5]

proxsuite::nlp::linalg::SymbolicBlockMatrix::SymbolicBlockMatrix ( BlockKind * data,
isize * lens,
isize nc,
isize os )
inline

Constructor from external data.

Definition at line 71 of file block-kind.hpp.

◆ SymbolicBlockMatrix() [4/5]

proxsuite::nlp::linalg::SymbolicBlockMatrix::SymbolicBlockMatrix ( SymbolicBlockMatrix const & other)
default

Shallow copy constructor.

◆ SymbolicBlockMatrix() [5/5]

proxsuite::nlp::linalg::SymbolicBlockMatrix::SymbolicBlockMatrix ( const std::vector< isize > & lens)
inline

Definition at line 77 of file block-kind.hpp.

Member Function Documentation

◆ operator=()

SymbolicBlockMatrix & proxsuite::nlp::linalg::SymbolicBlockMatrix::operator= ( SymbolicBlockMatrix const & other)
default

◆ copy()

SymbolicBlockMatrix proxsuite::nlp::linalg::SymbolicBlockMatrix::copy ( ) const

Deep copy.

◆ nsegments()

isize proxsuite::nlp::linalg::SymbolicBlockMatrix::nsegments ( ) const
inlinenoexcept

Definition at line 90 of file block-kind.hpp.

◆ size()

isize proxsuite::nlp::linalg::SymbolicBlockMatrix::size ( ) const
inlinenoexcept

Definition at line 91 of file block-kind.hpp.

◆ ptr() [1/2]

BlockKind * proxsuite::nlp::linalg::SymbolicBlockMatrix::ptr ( isize i,
isize j )
inlinenoexcept

Definition at line 92 of file block-kind.hpp.

◆ ptr() [2/2]

BlockKind const * proxsuite::nlp::linalg::SymbolicBlockMatrix::ptr ( isize i,
isize j ) const
inlinenoexcept

Definition at line 95 of file block-kind.hpp.

◆ submatrix()

SymbolicBlockMatrix proxsuite::nlp::linalg::SymbolicBlockMatrix::submatrix ( isize i,
isize n )
noexcept

Get the lower-right submatrix of size (n, n) starting from the block in position (i, i). This is a view of the original data.

◆ operator()() [1/2]

BlockKind & proxsuite::nlp::linalg::SymbolicBlockMatrix::operator() ( isize i,
isize j )
inlinenoexcept

Get a reference to the block in position (i, j).

Definition at line 103 of file block-kind.hpp.

◆ operator()() [2/2]

const BlockKind & proxsuite::nlp::linalg::SymbolicBlockMatrix::operator() ( isize i,
isize j ) const
inlinenoexcept

Definition at line 105 of file block-kind.hpp.

◆ brute_force_best_permutation()

Eigen::ComputationInfo proxsuite::nlp::linalg::SymbolicBlockMatrix::brute_force_best_permutation ( SymbolicBlockMatrix const & in,
isize * best_perm,
isize * iwork )

Brute-force search of the best permutation possible in the block matrix, with respect to the final sparsity of the LLT decomposition. The struct instance *this will be the result.

Parameters
inthe input matrix to analyze.
iworkworkspace; has length in.nsegments().

◆ check_if_symmetric()

bool proxsuite::nlp::linalg::SymbolicBlockMatrix::check_if_symmetric ( ) const
noexcept

◆ count_nnz()

isize proxsuite::nlp::linalg::SymbolicBlockMatrix::count_nnz ( ) const
noexcept

◆ llt_in_place()

bool proxsuite::nlp::linalg::SymbolicBlockMatrix::llt_in_place ( )
noexcept

Perform symbolic block-wise LLT decomposition; the output sparsity pattern should be that of the matrix \(L\) of the Cholesky decomposition.

◆ transpose()

SymbolicBlockMatrix proxsuite::nlp::linalg::SymbolicBlockMatrix::transpose ( ) const
inline

Definition at line 124 of file block-kind.hpp.

Member Data Documentation

◆ m_data

BlockKind* proxsuite::nlp::linalg::SymbolicBlockMatrix::m_data

Definition at line 49 of file block-kind.hpp.

◆ segment_lens

isize* proxsuite::nlp::linalg::SymbolicBlockMatrix::segment_lens

Definition at line 50 of file block-kind.hpp.

◆ segments_count

isize proxsuite::nlp::linalg::SymbolicBlockMatrix::segments_count

Definition at line 51 of file block-kind.hpp.

◆ outer_stride

isize proxsuite::nlp::linalg::SymbolicBlockMatrix::outer_stride

Definition at line 52 of file block-kind.hpp.

◆ performed_llt

bool proxsuite::nlp::linalg::SymbolicBlockMatrix::performed_llt = false

Flag stating whether the block structure was successfully analyzed. This should be checked when attempting to factorize.

Definition at line 55 of file block-kind.hpp.


The documentation for this struct was generated from the following file: