![]() |
Ginkgo
Generated from pipelines/1727914675 branch based on develop. Ginkgo version 1.10.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. More... | |
template<typename RandomDistribution , typename RandomEngine > | |
matrix_data (dim< 2 > size_, RandomDistribution &&dist, RandomEngine &&engine) | |
Initializes a matrix with random values from the specified distribution. More... | |
matrix_data (std::initializer_list< std::initializer_list< ValueType >> values) | |
List-initializes the structure from a matrix of values. More... | |
matrix_data (dim< 2 > size_, std::initializer_list< detail::input_triple< ValueType, IndexType >> nonzeros_) | |
Initializes the structure from a list of nonzeros. More... | |
matrix_data (dim< 2 > size_, const matrix_data &block) | |
Initializes a matrix out of a matrix block via duplication. More... | |
template<typename Accessor > | |
matrix_data (const range< Accessor > &data) | |
Initializes a matrix from a range. More... | |
void | sort_row_major () |
Sorts the nonzero vector so the values follow row-major order. | |
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. More... | |
Static Public Member Functions | |
static matrix_data | diag (dim< 2 > size_, ValueType value) |
Initializes a diagonal matrix. More... | |
static matrix_data | diag (dim< 2 > size_, std::initializer_list< ValueType > nonzeros_) |
Initializes a diagonal matrix using a list of diagonal elements. More... | |
static matrix_data | diag (dim< 2 > size_, const matrix_data &block) |
Initializes a block-diagonal matrix. More... | |
template<typename ForwardIterator > | |
static matrix_data | diag (ForwardIterator begin, ForwardIterator end) |
Initializes a block-diagonal matrix from a list of diagonal blocks. More... | |
static matrix_data | diag (std::initializer_list< matrix_data > blocks) |
Initializes a block-diagonal matrix from a list of diagonal blocks. More... | |
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. More... | |
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. More... | |
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. More... | |
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 |
|
inline |
List-initializes the structure from a matrix of values.
values | a 2D braced-init-list of matrix values. |
|
inline |
Initializes the structure from a list of nonzeros.
size_ | dimensions of the matrix |
nonzeros_ | list of nonzero elements |
|
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 >::size.
|
inline |
Initializes a matrix from a range.
Accessor | accessor type of the input range |
data | range used to initialize the matrix |
References gko::range< Accessor >::length().
|
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(), 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::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::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
|
inlinestatic |
Initializes a diagonal matrix using a list of diagonal elements.
size_ | dimensions of the matrix |
nonzeros_ | list of diagonal elements |
References gko::matrix_data< ValueType, IndexType >::nonzeros.
|
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::matrix_data< ValueType, IndexType >::nonzeros.
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::matrix_data< ValueType, IndexType >::nonzeros.
|
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().
|
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 >::nonzeros, and gko::matrix_data< ValueType, IndexType >::sort_row_major().
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 >::diag(), gko::matrix_data< ValueType, IndexType >::remove_zeros(), gko::matrix_data< ValueType, IndexType >::sort_row_major(), and gko::matrix_data< ValueType, IndexType >::sum_duplicates().