StructuredMatrix.hpp File Reference

Contains the structured matrix interfaces. More...

#include <vector>
#include <cassert>
#include <memory>
#include <functional>
#include <algorithm>
#include "StructuredOptions.hpp"
#include "ClusterTree.hpp"
#include "dense/DenseMatrix.hpp"
#include "dense/DistributedMatrix.hpp"
Include dependency graph for StructuredMatrix.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  strumpack::structured::StructuredMatrix< scalar_t >
 Class to represent a structured matrix. This is the abstract base class for several types of structured matrices. More...
 

Namespaces

 strumpack
 
 strumpack::structured
 

Typedefs

template<typename scalar_t >
using strumpack::structured::extract_t = std::function< scalar_t(std::size_t i, std::size_t j)>
 
template<typename scalar_t >
using strumpack::structured::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 strumpack::structured::mult_t = std::function< void(Trans op, const DenseMatrix< scalar_t > &R, DenseMatrix< scalar_t > &S)>
 
template<typename scalar_t >
using strumpack::structured::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 strumpack::structured::mult_2d_t = std::function< void(Trans op, const DistributedMatrix< scalar_t > &R, DistributedMatrix< scalar_t > &S)>
 
template<typename scalar_t >
using strumpack::structured::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 strumpack::structured::admissibility_t = DenseMatrix< bool >
 

Functions

template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 
template<typename scalar_t >
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)
 

Detailed Description

Contains the structured matrix interfaces.