![]() |
Ginkgo Generated from branch based on master. Ginkgo version 1.7.0
A numerical linear algebra library targeting many-core architectures
|
This structure is used as an intermediate data type to store a sparse matrix. More...
#include <ginkgo/core/base/matrix_data.hpp>
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | nonzero_type = matrix_data_entry<value_type, index_type> |
Public Member Functions | |
| matrix_data (dim< 2 > size_=dim< 2 >{}, ValueType value=zero< ValueType >()) | |
| Initializes a matrix filled with the specified value. | |
| template<typename RandomDistribution , typename RandomEngine > | |
| matrix_data (dim< 2 > size_, RandomDistribution &&dist, RandomEngine &&engine) | |
| Initializes a matrix with random values from the specified distribution. | |
| matrix_data (std::initializer_list< std::initializer_list< ValueType > > values) | |
| List-initializes the structure from a matrix of values. | |
| matrix_data (dim< 2 > size_, std::initializer_list< detail::input_triple< ValueType, IndexType > > nonzeros_) | |
| Initializes the structure from a list of nonzeros. | |
| matrix_data (dim< 2 > size_, const matrix_data &block) | |
| Initializes a matrix out of a matrix block via duplication. | |
| template<typename Accessor > | |
| matrix_data (const range< Accessor > &data) | |
| Initializes a matrix from a range. | |
| void | ensure_row_major_order () |
| Sorts the nonzero vector so the values follow row-major order. | |
| void | remove_zeros () |
| Remove entries with value zero from the matrix data. | |
| void | sum_duplicates () |
| Sum up all values that refer to the same matrix entry. | |
Static Public Member Functions | |
| static matrix_data | diag (dim< 2 > size_, ValueType value) |
| Initializes a diagonal matrix. | |
| static matrix_data | diag (dim< 2 > size_, std::initializer_list< ValueType > nonzeros_) |
| Initializes a diagonal matrix using a list of diagonal elements. | |
| static matrix_data | diag (dim< 2 > size_, const matrix_data &block) |
| Initializes a block-diagonal matrix. | |
| template<typename ForwardIterator > | |
| static matrix_data | diag (ForwardIterator begin, ForwardIterator end) |
| Initializes a block-diagonal matrix from a list of diagonal blocks. | |
| static matrix_data | diag (std::initializer_list< matrix_data > blocks) |
| Initializes a block-diagonal matrix from a list of diagonal blocks. | |
| template<typename RandomDistribution , typename RandomEngine > | |
| static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine, size_type num_reflectors) |
| Initializes a random dense matrix with a specific condition number. | |
| template<typename RandomDistribution , typename RandomEngine > | |
| static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine) |
| Initializes a random dense matrix with a specific condition number. | |
Public Attributes | |
| dim< 2 > | size |
| Size of the matrix. | |
| std::vector< nonzero_type > | nonzeros |
| A vector of tuples storing the non-zeros of the matrix. | |
This structure is used as an intermediate data type to store a sparse matrix.
The matrix is stored as a sequence of nonzero elements, where each element is a triple of the form (row_index, column_index, value).
| ValueType | type of matrix values stored in the structure |
| IndexType | type of matrix indexes stored in the structure |
|
inline |
Initializes a matrix filled with the specified value.
| size_ | dimensions of the matrix |
| value | value used to fill the elements of the matrix |
|
inline |
Initializes a matrix with random values from the specified distribution.
| RandomDistribution | random distribution type |
| RandomEngine | random engine type |
| size_ | dimensions of the matrix |
| dist | random distribution of the elements of the matrix |
| engine | random engine used to generate random values |
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, gko::one(), and gko::matrix_data< ValueType, IndexType >::size.
|
inline |
List-initializes the structure from a matrix of values.
| values | a 2D braced-init-list of matrix values. |
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, gko::one(), and gko::matrix_data< ValueType, IndexType >::size.
|
inline |
Initializes the structure from a list of nonzeros.
| size_ | dimensions of the matrix |
| nonzeros_ | list of nonzero elements |
References gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::one().
|
inline |
Initializes a matrix out of a matrix block via duplication.
| size | size of the block-matrix (in blocks) |
| diag_block | matrix block used to fill the complete matrix |
References gko::matrix_data< ValueType, IndexType >::ensure_row_major_order(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::one().
|
inline |
Initializes a matrix from a range.
| Accessor | accessor type of the input range |
| data | range used to initialize the matrix |
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
|
inlinestatic |
Initializes a random dense matrix with a specific condition number.
The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).
This version of the function applies size - 1 reflectors to each side of the diagonal matrix.
| RandomDistribution | the type of the random distribution |
| RandomEngine | the type of the random engine |
| size | number of rows and columns of the matrix |
| condition_number | condition number of the matrix |
| dist | random distribution used to generate reflectors |
| engine | random engine used to generate reflectors |
References gko::matrix_data< ValueType, IndexType >::cond(), gko::one(), and gko::matrix_data< ValueType, IndexType >::size.
|
inlinestatic |
Initializes a random dense matrix with a specific condition number.
The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).
| RandomDistribution | the type of the random distribution |
| RandomEngine | the type of the random engine |
| size | number of rows and columns of the matrix |
| condition_number | condition number of the matrix |
| dist | random distribution used to generate reflectors |
| engine | random engine used to generate reflectors |
| num_reflectors | number of reflectors to apply from each side |
References gko::one(), and gko::matrix_data< ValueType, IndexType >::size.
Referenced by gko::matrix_data< ValueType, IndexType >::cond().
|
inlinestatic |
Initializes a block-diagonal matrix.
| size_ | the size of the matrix |
| diag_block | matrix used to fill diagonal blocks |
References gko::one().
|
inlinestatic |
Initializes a diagonal matrix using a list of diagonal elements.
| size_ | dimensions of the matrix |
| nonzeros_ | list of diagonal elements |
References gko::one().
|
inlinestatic |
Initializes a diagonal matrix.
| size_ | dimensions of the matrix |
| value | value used to fill the elements of the matrix |
References gko::is_nonzero(), and gko::one().
Referenced by gko::matrix_data< ValueType, IndexType >::diag().
|
inlinestatic |
Initializes a block-diagonal matrix from a list of diagonal blocks.
| ForwardIterator | type of list iterator |
| begin | the first iterator of the list |
| end | the last iterator of the list |
References gko::one().
|
inlinestatic |
Initializes a block-diagonal matrix from a list of diagonal blocks.
| blocks | a list of blocks to initialize from |
References gko::matrix_data< ValueType, IndexType >::diag(), and gko::one().
|
inline |
Sum up all values that refer to the same matrix entry.
The result is sorted in row-major order.
References gko::matrix_data< ValueType, IndexType >::ensure_row_major_order(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::one().
| std::vector<nonzero_type> gko::matrix_data< ValueType, IndexType >::nonzeros |
A vector of tuples storing the non-zeros of the matrix.
The first two elements of the tuple are the row index and the column index of a matrix element, and its third element is the value at that position.
Referenced by gko::matrix_data< ValueType, IndexType >::ensure_row_major_order(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::remove_zeros(), and gko::matrix_data< ValueType, IndexType >::sum_duplicates().