| Classes | |
| class | ClusterTree | 
| The cluster tree, or partition tree that represents the partitioning of the rows or columns of a hierarchical matrix.  More... | |
| class | StructuredMatrix | 
| Class to represent a structured matrix. This is the abstract base class for several types of structured matrices.  More... | |
| class | StructuredOptions | 
| Class containing several options for the StructuredMatrix code and data-structures.  More... | |
| Typedefs | |
| template<typename scalar_t > | |
| using | extract_t = std::function< scalar_t(std::size_t i, std::size_t j)> | 
| template<typename scalar_t > | |
| using | extract_block_t = std::function< void(const std::vector< std::size_t > &I, const std::vector< std::size_t > &J, DenseMatrix< scalar_t > &B)> | 
| template<typename scalar_t > | |
| using | mult_t = std::function< void(Trans op, const DenseMatrix< scalar_t > &R, DenseMatrix< scalar_t > &S)> | 
| template<typename scalar_t > | |
| using | extract_dist_block_t = std::function< void(const std::vector< std::size_t > &I, const std::vector< std::size_t > &J, DistributedMatrix< scalar_t > &B)> | 
| template<typename scalar_t > | |
| using | mult_2d_t = std::function< void(Trans op, const DistributedMatrix< scalar_t > &R, DistributedMatrix< scalar_t > &S)> | 
| template<typename scalar_t > | |
| using | mult_1d_t = std::function< void(Trans op, const DenseMatrix< scalar_t > &R, DenseMatrix< scalar_t > &S, const std::vector< int > &rdist, const std::vector< int > &cdist)> | 
| using | admissibility_t = DenseMatrix< bool > | 
| Enumerations | |
| enum class | Type : int { HSS = 0 , BLR , HODLR , HODBF , BUTTERFLY , LR , LOSSY , LOSSLESS } | 
| Functions | |
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_dense (const DenseMatrix< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_dense (int rows, int cols, const scalar_t *A, int ldA, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_elements (int rows, int cols, const extract_t< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_elements (int rows, int cols, const extract_block_t< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_matrix_free (int rows, int cols, const mult_t< scalar_t > &Amult, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_partially_matrix_free (int rows, int cols, const mult_t< scalar_t > &Amult, const extract_block_t< scalar_t > &Aelem, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_partially_matrix_free (int rows, int cols, const mult_t< scalar_t > &Amult, const extract_t< scalar_t > &Aelem, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_dense (const DistributedMatrix< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_elements (const MPIComm &comm, const BLACSGrid *grid, int rows, int cols, const extract_t< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_from_elements (const MPIComm &comm, const BLACSGrid *grid, int rows, int cols, const extract_dist_block_t< scalar_t > &A, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_matrix_free (const MPIComm &comm, const BLACSGrid *g, int rows, int cols, const mult_2d_t< scalar_t > &Amult, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_matrix_free (const MPIComm &comm, int rows, int cols, const mult_1d_t< scalar_t > &Amult, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename scalar_t > | |
| std::unique_ptr< StructuredMatrix< scalar_t > > | construct_partially_matrix_free (const BLACSGrid *grid, int rows, int cols, const mult_2d_t< scalar_t > &Amult, const extract_dist_block_t< scalar_t > &Aelem, const StructuredOptions< scalar_t > &opts, const structured::ClusterTree *row_tree=nullptr, const structured::ClusterTree *col_tree=nullptr) | 
| template<typename real_t > | |
| real_t | default_structured_rel_tol () | 
| template<typename real_t > | |
| real_t | default_structured_abs_tol () | 
| template<> | |
| float | default_structured_rel_tol () | 
| template<> | |
| float | default_structured_abs_tol () | 
| std::string | get_name (Type a) | 
Namespace containing the StructuredMatrix class, a general abstract interface to several other rank-structured matrix representations.
| using strumpack::structured::admissibility_t = typedef DenseMatrix<bool> | 
Type to specify admissibility of individual sub-blocks.
| using strumpack::structured::extract_block_t = typedef std::function <void(const std::vector<std::size_t>& I, const std::vector<std::size_t>& J, DenseMatrix<scalar_t>& B)> | 
Type for block element extraction routine. This can be implemented as a lambda function, a functor or a funtion pointer.
| I | vector of row indices | 
| J | vector of column indices | 
| B | submatrix (I, J) to be computed by user code | 
| using strumpack::structured::extract_dist_block_t = typedef std::function <void(const std::vector<std::size_t>& I, const std::vector<std::size_t>& J, DistributedMatrix<scalar_t>& B)> | 
Type for block element extraction routine. This can be implemented as a lambda function, a functor or a funtion pointer. The sub-matrix should be put into a 2d block cyclicly distributed matrix.
| I | vector of row indices | 
| J | vector of column indices | 
| B | 2d block cyclic matrix, submatrix (I, J) to be computed by user code | 
| using strumpack::structured::extract_t = typedef std::function <scalar_t(std::size_t i, std::size_t j)> | 
Type for element extraction routine. This can be implemented as a lambda function, a functor or a funtion pointer.
| i | vector of row indices | 
| j | vector of column indices | 
| using strumpack::structured::mult_1d_t = typedef std::function <void(Trans op, const DenseMatrix<scalar_t>& R, DenseMatrix<scalar_t>& S, const std::vector<int>& rdist, const std::vector<int>& cdist)> | 
Type for matrix multiplication routine with 1D block row distribution. The block row/column distribution of the matrix is given by the rdist and cdist vectors, with processor p owning rows [rdist[p],rdist[p+1]). cdist is only needed for non-square matrices. S is distributed according to rdist if t==Trans::N, else cdist. R is distributed according to cdist of t==Trans::N, else rdist.
| op | whether to compute the transposed/conjugate product | 
| R | random matrix passed to user code | 
| S | sample matrix to be computed by user code: S = A*R if op is Trans::N S = A*T*R if op is Trans::T S = A^C*R if op is Trans::C | 
| rdist | Matrix row distribution, same on all ranks | 
| cdist | Matrix column distribution, same on all ranks | 
| using strumpack::structured::mult_2d_t = typedef std::function <void(Trans op, const DistributedMatrix<scalar_t>& R, DistributedMatrix<scalar_t>& S)> | 
Type for matrix multiplication routine with 2D block cyclic distribution. This can be implemented as a lambda function, a functor or a funtion pointer.
| using strumpack::structured::mult_t = typedef std::function <void(Trans op, const DenseMatrix<scalar_t>& R, DenseMatrix<scalar_t>& S)> | 
Type for matrix multiplication routine. This can be implemented as a lambda function, a functor or a funtion pointer.
| 
 | strong | 
Enumeration of possible structured matrix types.
| Enumerator | |
|---|---|
| HSS | Hierarchically Semi-Separable, see HSS::HSSMatrix and HSS::HSSMatrixMPI | 
| BLR | Block Low Rank, see BLR::BLRMatrix and BLR::BLRMatrixMPI | 
| HODLR | Hierarchically Off-Diagonal Low Rank, see HODLR::HODLRMatrix. Does not support float or std::complex<float>. | 
| HODBF | Hierarchically Off-Diagonal Butterfly, implemented as HODLR::HODLRMatrix. Does not support float or std::complex<float>. | 
| BUTTERFLY | Butterfly matrix, implemented as HODLR::ButterflyMatrix. Does not support float or std::complex<float>. | 
| LR | Low rank matrix, implemented as HODLR::ButterflyMatrix. Does not support float or std::complex<float>. | 
| LOSSY | Lossy compression matrix | 
| LOSSLESS | Lossless compressed matrix | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_dense | ( | const DenseMatrix< scalar_t > & | A, | 
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix from a DenseMatrix<scalar_t>. This construction, taking a dense matrix should be valid for all StructuredMatrix types (see StructuredMatrix::Type). However, faster and more memory efficient methods of constructing StructuredMatrix representations are available, see StructuredMatrix::construct_from_elements, StructuredMatrix::construct_matrix_free and StructuredMatrix::construct_partially_matrix_free.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| A | Input dense matrix, will not be modified | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_dense | ( | const DistributedMatrix< scalar_t > & | A, | 
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix from a 2D block-cyclicly distributed matrix (ScaLAPACK layout).
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| A | 2D block cyclic distributed matrix (ScaLAPACK layout). | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_dense | ( | int | rows, | 
| int | cols, | ||
| const scalar_t * | A, | ||
| int | ldA, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix from a DenseMatrix<scalar_t>. This construction, taking a dense matrix should be valid for all StructuredMatrix types (see StructuredMatrix::Type). However, faster and more memory efficient methods of constructing StructuredMatrix representations are available, see StructuredMatrix::construct_from_elements, StructuredMatrix::construct_matrix_free and StructuredMatrix::construct_partially_matrix_free.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | number of rows in matrix to be constructed | 
| cols | number of columnss in matrix to be constructed | 
| A | pointer to matrix A data | 
| ldA | leading dimension of A | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_elements | ( | const MPIComm & | comm, | 
| const BLACSGrid * | grid, | ||
| int | rows, | ||
| int | cols, | ||
| const extract_dist_block_t< scalar_t > & | A, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using a routine to extract a matrix sub-block.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| comm | MPI communicator (wrapper class) | 
| grid | Only used for HSS construction, can be NULL otherwise | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| A | Matrix sub-block extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_elements | ( | const MPIComm & | comm, | 
| const BLACSGrid * | grid, | ||
| int | rows, | ||
| int | cols, | ||
| const extract_t< scalar_t > & | A, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using an element extraction routine.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| comm | MPI communicator (wrapper class) | 
| grid | Only used for HSS construction, can be NULL otherwise | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| A | Matrix element extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_elements | ( | int | rows, | 
| int | cols, | ||
| const extract_block_t< scalar_t > & | A, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using a routine to extract a sub-block from the matrix.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| A | Matrix block extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_from_elements | ( | int | rows, | 
| int | cols, | ||
| const extract_t< scalar_t > & | A, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using a routine, provided by the user, to extract elements from the matrix.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | number of rows in matrix to be constructed | 
| cols | number of columnss in matrix to be constructed | 
| A | element extraction routine | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_matrix_free | ( | const MPIComm & | comm, | 
| const BLACSGrid * | g, | ||
| int | rows, | ||
| int | cols, | ||
| const mult_2d_t< scalar_t > & | Amult, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using only a matrix-vector multiplication routine.
| comm | MPI communicator (wrapper class) | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine (using 2d block cyclic layout for vectors). | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_matrix_free | ( | const MPIComm & | comm, | 
| int | rows, | ||
| int | cols, | ||
| const mult_1d_t< scalar_t > & | Amult, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using only a matrix-vector multiplication routine.
| comm | MPI communicator (wrapper class) | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine (using 1d block row distribution for vectors). | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_matrix_free | ( | int | rows, | 
| int | cols, | ||
| const mult_t< scalar_t > & | Amult, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using only a matrix-vector multiplication routine.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_partially_matrix_free | ( | const BLACSGrid * | grid, | 
| int | rows, | ||
| int | cols, | ||
| const mult_2d_t< scalar_t > & | Amult, | ||
| const extract_dist_block_t< scalar_t > & | Aelem, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using both a matrix-vector multiplication routine and a routine to extract individual matrix elements.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| grid | BLACS grid (wrapper class) | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine (using 2d block cyclic distribution for vectors). | 
| Aelem | Matrix block extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_partially_matrix_free | ( | int | rows, | 
| int | cols, | ||
| const mult_t< scalar_t > & | Amult, | ||
| const extract_block_t< scalar_t > & | Aelem, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using both a matrix-vector multiplication routine and a routine to extract a matrix sub-block.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine. | 
| Aelem | Matrix block extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. | 
| std::unique_ptr<StructuredMatrix<scalar_t> > strumpack::structured::construct_partially_matrix_free | ( | int | rows, | 
| int | cols, | ||
| const mult_t< scalar_t > & | Amult, | ||
| const extract_t< scalar_t > & | Aelem, | ||
| const StructuredOptions< scalar_t > & | opts, | ||
| const structured::ClusterTree * | row_tree = nullptr, | ||
| const structured::ClusterTree * | col_tree = nullptr | ||
| ) | 
Construct a StructuredMatrix using both a matrix-vector multiplication routine and a routine to extract individual matrix elements.
| scalar_t | precision of input matrix, and of constructed StructuredMatrix. Note that not all types support every all precisions. See StructuredMatrix::Type. | 
| rows | Number of rows of matrix to be constructed. | 
| cols | Number of columns of matrix to be constructed. | 
| Amult | Matrix-(multi)vector multiplication routine. | 
| Aelem | Matrix element extraction routine. | 
| opts | Options object | 
| row_tree | optional clustertree for the rows, see also strumpack::binary_tree_clustering | 
| col_tree | optional clustertree for the columns. If the matrix is square, this does not need to be specified. | 
| std::invalid_argument | If the operatation is not supported for the type of structured::StructuredMatrix, if the type requires a square matrix and the input is not square, if the structured::StructuredMatrix type requires MPI. | 
| std::logic_error | If the operation is not implemented yet | 
| std::runtime_error | If the operation requires a third party library which was not enabled when configuring STRUMPACK. |