Morpheus 1.0.0
Dynamic matrix type and algorithms for sparse matrices
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
Morpheus::CooMatrix< ValueType, Properties > Class Template Reference

Implementation of the Coordinate (COO) Sparse Matrix Format Representation. More...

#include <Morpheus_CooMatrix.hpp>

Inheritance diagram for Morpheus::CooMatrix< ValueType, Properties >:
Inheritance graph
[legend]
Collaboration diagram for Morpheus::CooMatrix< ValueType, Properties >:
Collaboration graph
[legend]

Public Types

using traits = ContainerTraits< CooMatrix, ValueType, Properties... >
 The complete type of the container.
 
using type = typename traits::type
 
using base = MatrixBase< CooMatrix, ValueType, Properties... >
 The tag associated specificaly to the particular container*‍/.
 
using tag = typename MatrixFormatTag< Morpheus::CooFormatTag >::tag
 
using value_type = typename traits::value_type
 
using non_const_value_type = typename traits::non_const_value_type
 
using size_type = typename traits::size_type
 The type of the indices held by the container - can be const.
 
using index_type = typename traits::index_type
 
using non_const_index_type = typename traits::non_const_index_type
 
using array_layout = typename traits::array_layout
 
using backend = typename traits::backend
 
using memory_space = typename traits::memory_space
 
using execution_space = typename traits::execution_space
 
using device_type = typename traits::device_type
 
using memory_traits = typename traits::memory_traits
 
using HostMirror = typename traits::HostMirror
 
using pointer = typename traits::pointer
 
using const_pointer = typename traits::const_pointer
 
using reference = typename traits::reference
 
using const_reference = typename traits::const_reference
 
using index_array_type = Morpheus::DenseVector< index_type, size_type, array_layout, backend, memory_traits >
 
using index_array_pointer = typename index_array_type::value_array_pointer
 
using index_array_reference = typename index_array_type::value_array_reference
 
using value_array_type = Morpheus::DenseVector< value_type, size_type, array_layout, backend, memory_traits >
 
using value_array_pointer = typename value_array_type::value_array_pointer
 
using value_array_reference = typename value_array_type::value_array_reference
 
- Public Types inherited from Morpheus::MatrixBase< CooMatrix, ValueType, Properties... >
using type = MatrixBase< CooMatrix, ValueType, Properties... >
 The traits associated with the particular container.
 
using traits = ContainerTraits< CooMatrix, ValueType, Properties... >
 The type of the indices held by the container.
 
using size_type = typename traits::size_type
 
- Public Types inherited from Morpheus::ContainerTraits< Container, ValueType, Properties >
enum  { is_hostspace = std::is_same<MemorySpace, Kokkos::HostSpace>::value }
 
enum  { is_managed = MemoryTraits::is_unmanaged == 0 }
 
using value_type = ValueType
 The type of values held by the container.
 
using const_value_type = typename std::add_const< ValueType >::type
 The const type of values held by the container.
 
using non_const_value_type = typename std::remove_const< ValueType >::type
 The non-const type of values held by the container.
 
using index_type = IndexType
 The type of indices held by the container.
 
using size_type = size_t
 The size type of the container.
 
using non_const_index_type = typename std::remove_const< IndexType >::type
 The non-const type of indices held by the container.
 
using array_layout = ArrayLayout
 The storage layout of data held by the container.
 
using backend = Backend
 The backend out of which algorithms will be dispatched from.
 
using execution_space = ExecutionSpace
 The space in which member functions will be executed in.
 
using memory_space = MemorySpace
 The space in which data will be stored in.
 
using device_type = Morpheus::Device< execution_space, memory_space, backend >
 A device aware of the execution, memory spaces and backend.
 
using memory_traits = MemoryTraits
 Represents the user's intended access behaviour.
 
using host_mirror_backend = typename Morpheus::HostMirror< backend >::backend
 The host equivalent backend.
 
using type = Container< value_type, index_type, array_layout, backend, memory_traits >
 The complete type of the container.
 
using HostMirror = Container< non_const_value_type, non_const_index_type, array_layout, Morpheus::Device< typename host_mirror_backend::execution_space, typename host_mirror_backend::memory_space, typename host_mirror_backend::backend >, typename Kokkos::MemoryManaged >
 The host mirror equivalent for the container. More...
 
using pointer = typename std::add_pointer< type >::type
 The pointer type of the container.
 
using const_pointer = typename std::add_pointer< typename std::add_const< type >::type >::type
 The const pointer type of the container.
 
using reference = typename std::add_lvalue_reference< type >::type
 The reference type of the container.
 
using const_reference = typename std::add_lvalue_reference< typename std::add_const< type >::type >::type
 The const reference type of the container.
 

Public Member Functions

 ~CooMatrix ()=default
 The default destructor.
 
 CooMatrix (const CooMatrix &)=default
 The default copy contructor (shallow copy) of a CooMatrix container from another CooMatrix container with the same properties.
 
 CooMatrix (CooMatrix &&)=default
 The default move contructor (shallow copy) of a CooMatrix container from another CooMatrix container with the same properties.
 
CooMatrixoperator= (const CooMatrix &)=default
 The default copy assignment (shallow copy) of a CooMatrix container from another CooMatrix container with the same properties.
 
CooMatrixoperator= (CooMatrix &&)=default
 The default move assignment (shallow copy) of a CooMatrix container from another CooMatrix container with the same properties.
 
 CooMatrix ()
 Construct an empty CooMatrix object.
 
 CooMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries)
 Construct a CooMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries. More...
 
template<typename ValuePtr , typename IndexPtr >
 CooMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries, IndexPtr rind_ptr, IndexPtr cind_ptr, ValuePtr vals_ptr, typename std::enable_if<(std::is_pointer< ValuePtr >::value &&is_same_value_type< value_type, ValuePtr >::value &&memory_traits::is_unmanaged) &&(std::is_pointer< IndexPtr >::value &&is_same_index_type< index_type, IndexPtr >::value &&memory_traits::is_unmanaged)>::type *=nullptr)
 
template<typename ValueArray , typename IndexArray >
 CooMatrix (const size_type num_rows, const size_type num_cols, const size_type num_entries, IndexArray rind, IndexArray cind, ValueArray vals, typename std::enable_if< is_dense_vector_format_container< ValueArray >::value &&is_dense_vector_format_container< IndexArray >::value &&is_compatible< typename CooMatrix::value_array_type, ValueArray >::value &&is_compatible< typename CooMatrix::index_array_type, IndexArray >::value &&!ValueArray::memory_traits::is_unmanaged &&!IndexArray::memory_traits::is_unmanaged >::type *=nullptr)
 Construct a CooMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries and assign the indices and values from DenseVector arrays. More...
 
template<class VR , class... PR>
 CooMatrix (const CooMatrix< VR, PR... > &src, typename std::enable_if< is_format_compatible< CooMatrix, CooMatrix< VR, PR... > >::value >::type *=nullptr)
 Constructs a CooMatrix from another compatible CooMatrix. More...
 
template<class VR , class... PR>
std::enable_if< is_format_compatible< CooMatrix, CooMatrix< VR, PR... > >::value, CooMatrix & >::type operator= (const CooMatrix< VR, PR... > &src)
 Assigns a CooMatrix from another compatible CooMatrix. More...
 
template<class VR , class... PR>
 CooMatrix (const DynamicMatrix< VR, PR... > &src, typename std::enable_if< is_dynamically_compatible< CooMatrix, DynamicMatrix< VR, PR... > >::value >::type *=nullptr)
 Constructs a CooMatrix from a compatible DynamicMatrix. More...
 
template<class VR , class... PR>
std::enable_if< is_dynamically_compatible< CooMatrix, DynamicMatrix< VR, PR... > >::value, CooMatrix & >::type operator= (const DynamicMatrix< VR, PR... > &src)
 Assigns a CooMatrix from a compatible DynamicMatrix. More...
 
template<typename MatrixType >
 CooMatrix (const MatrixType &src)=delete
 Construct a CooMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations. More...
 
template<typename MatrixType >
reference operator= (const MatrixType &src)=delete
 Assign to CooMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations. More...
 
void resize (const size_type num_rows, const size_type num_cols, const size_type num_entries)
 Resizes CooMatrix with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries. More...
 
template<class VR , class... PR>
void resize (const CooMatrix< VR, PR... > &src)
 Resizes CooMatrix with the shape and number of non-zero entries of another CooMatrix with different parameters. More...
 
template<class VR , class... PR>
CooMatrixallocate (const CooMatrix< VR, PR... > &src)
 Allocates memory from another CooMatrix container with different properties. More...
 
void sort_by_row (void)
 Sorts matrix elements by row index. More...
 
void sort (void)
 Sorts matrix elements by row index first and then by column index. More...
 
bool is_sorted_by_row (void)
 Determines whether matrix elements are sorted by row index. More...
 
bool is_sorted (void)
 Determines whether matrix elements are sorted by row and column index. More...
 
formats_e format_enum () const
 Returns the format enum assigned to the CooMatrix container. More...
 
int format_index () const
 Returns the equivalent index to the format enum assigned to the CooMatrix container. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference row_indices (size_type n)
 Returns a reference to the row index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference column_indices (size_type n)
 Returns a reference to the column index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION value_array_reference values (size_type n)
 Returns a reference to the value of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const index_array_reference crow_indices (size_type n) const
 Returns a const-reference to the row index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const index_array_reference ccolumn_indices (size_type n) const
 Returns a const-reference to the column index of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const value_array_reference cvalues (size_type n) const
 Returns a const-reference to the value of the matrix with index n. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_typerow_indices ()
 Returns a reference to the row indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION index_array_typecolumn_indices ()
 Returns a reference to the column indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION value_array_typevalues ()
 Returns a reference to the values of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const index_array_typecrow_indices () const
 Returns a const-reference to the row indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const index_array_typeccolumn_indices () const
 Returns a const-reference to the column indices of the matrix. More...
 
MORPHEUS_FORCEINLINE_FUNCTION const value_array_typecvalues () const
 Returns a reference to the values of the matrix. More...
 
- Public Member Functions inherited from Morpheus::MatrixBase< CooMatrix, ValueType, Properties... >
 MatrixBase ()
 Default constructor. More...
 
 MatrixBase (size_type rows, size_type cols, size_type entries=0)
 Construct a MatrixBase object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries. More...
 
void resize (size_type rows, size_type cols, size_type entries)
 Resizes MatrixBase with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries. More...
 
size_type nrows () const
 Number of rows of the matrix. More...
 
size_type ncols () const
 Number of columns of the matrix. More...
 
size_type nnnz () const
 Number of non-zeros of the matrix. More...
 
void set_nrows (const size_type rows)
 Set the number of rows of the matrix. More...
 
void set_ncols (const size_type cols)
 Set the number of columns of the matrix. More...
 
void set_nnnz (const size_type nnz)
 Set the number of non-zeros of the matrix. More...
 
MatrixStructure structure () const
 The specialized structure of the matrix e.g Symmetric. More...
 
MatrixOptions options () const
 Information about specific characteristics of the matrix e.g has short rows. More...
 
void set_structure (MatrixStructure op)
 Set the structure of the matrix. More...
 
void set_options (MatrixOptions op)
 Set the characteristics of the matrix. More...
 

Detailed Description

template<class ValueType, class... Properties>
class Morpheus::CooMatrix< ValueType, Properties >

Implementation of the Coordinate (COO) Sparse Matrix Format Representation.

Template Parameters
ValueTypeType of values to store
PropertiesOptional properties to modify the behaviour of the container. Sensible defaults are selected based on the configuration. Please refer to impl/Morpheus_ContainerTraits.hpp to find out more about the valid properties.
Overview
The CooMatrix container is a two-dimensional container that represents a sparse matrix. This container is the implementation of the Coordinate Format (COO), that is also known as the "triplet" format because it stores pairs of "ijv" of the matrix. In general, it is a fast and convenient format for constructing sparse matrices. It is a polymorphic container in the sense that it can store scalar or integer type values, on host or device depending how the template parameters are selected.
Example
#include <Morpheus_Core.hpp>
// Matrix to Build
// [1 * 2]
// [* * 3]
// [* 4 *]
int main(){
using index_array_type = typename Matrix::index_array_type;
using value_array_type = typename Matrix::value_array_type;
index_array_type i(4, 0), j(4, 0);
i[0] = 0; j[0] = 0; v[0] = 1;
i[1] = 0; j[1] = 2; v[1] = 2;
i[2] = 1; j[2] = 2; v[2] = 3;
i[3] = 2; j[3] = 1; v[3] = 4;
// Construct the matrix from i,j,v
Matrix A(3, 3, 4, i, j, v);
Morpheus::print(A); // prints A
}
Implementation of the Coordinate (COO) Sparse Matrix Format Representation.
Definition: Morpheus_CooMatrix.hpp:91

Member Typedef Documentation

◆ index_array_type

template<class ValueType , class... Properties>
using Morpheus::CooMatrix< ValueType, Properties >::index_array_type = Morpheus::DenseVector<index_type, size_type, array_layout, backend, memory_traits>

The type of DenseVector that holds the index_type data

◆ non_const_index_type

template<class ValueType , class... Properties>
using Morpheus::CooMatrix< ValueType, Properties >::non_const_index_type = typename traits::non_const_index_type

The non-constant type of the indices held by the container

◆ non_const_value_type

template<class ValueType , class... Properties>
using Morpheus::CooMatrix< ValueType, Properties >::non_const_value_type = typename traits::non_const_value_type

The non-constant type of the values held by the container

◆ value_array_type

template<class ValueType , class... Properties>
using Morpheus::CooMatrix< ValueType, Properties >::value_array_type = Morpheus::DenseVector<value_type, size_type, array_layout, backend, memory_traits>

The type of DenseVector that holds the value_type data

◆ value_type

template<class ValueType , class... Properties>
using Morpheus::CooMatrix< ValueType, Properties >::value_type = typename traits::value_type

The type of the values held by the container - can be const

Constructor & Destructor Documentation

◆ CooMatrix() [1/5]

template<class ValueType , class... Properties>
Morpheus::CooMatrix< ValueType, Properties >::CooMatrix ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries 
)
inline

Construct a CooMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries.

Parameters
num_rowsNumber of rows of the matrix.
num_colsNumber of columns of the matrix.
num_entriesNumber of non-zero values in the matrix.

◆ CooMatrix() [2/5]

template<class ValueType , class... Properties>
template<typename ValueArray , typename IndexArray >
Morpheus::CooMatrix< ValueType, Properties >::CooMatrix ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries,
IndexArray  rind,
IndexArray  cind,
ValueArray  vals,
typename std::enable_if< is_dense_vector_format_container< ValueArray >::value &&is_dense_vector_format_container< IndexArray >::value &&is_compatible< typename CooMatrix< ValueType, Properties >::value_array_type, ValueArray >::value &&is_compatible< typename CooMatrix< ValueType, Properties >::index_array_type, IndexArray >::value &&!ValueArray::memory_traits::is_unmanaged &&!IndexArray::memory_traits::is_unmanaged >::type *  = nullptr 
)
inlineexplicit

Construct a CooMatrix object with shape (num_rows, num_cols) and number of non-zeros equal to num_entries and assign the indices and values from DenseVector arrays.

Template Parameters
ValueArrayValue type DenseVector type.
IndexArrayIndex type DenseVector type.
Parameters
num_rowsNumber of rows of the matrix.
num_colsNumber of columns of the matrix.
num_entriesNumber of non-zero values in the matrix.
rindDenseVector containing the row indices of the matrix.
cindDenseVector containing the column indices of the matrix.
valsDenseVector containing the values of the matrix.

◆ CooMatrix() [3/5]

template<class ValueType , class... Properties>
template<class VR , class... PR>
Morpheus::CooMatrix< ValueType, Properties >::CooMatrix ( const CooMatrix< VR, PR... > &  src,
typename std::enable_if< is_format_compatible< CooMatrix< ValueType, Properties >, CooMatrix< VR, PR... > >::value >::type *  = nullptr 
)
inline

Constructs a CooMatrix from another compatible CooMatrix.

Constructs a CooMatrix from another compatible CooMatrix i.e a
matrix that satisfies the is_format_compatible check.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are constructing from.

◆ CooMatrix() [4/5]

template<class ValueType , class... Properties>
template<class VR , class... PR>
Morpheus::CooMatrix< ValueType, Properties >::CooMatrix ( const DynamicMatrix< VR, PR... > &  src,
typename std::enable_if< is_dynamically_compatible< CooMatrix< ValueType, Properties >, DynamicMatrix< VR, PR... > >::value >::type *  = nullptr 
)
inline

Constructs a CooMatrix from a compatible DynamicMatrix.

Overview
Constructs a CooMatrix from a compatible DynamicMatrix i.e a matrix that satisfies the is_dynamically_compatible check. Note that when the active type of the dynamic matrix is different from the concrete type, this will result in an exception thrown.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are constructing from.

◆ CooMatrix() [5/5]

template<class ValueType , class... Properties>
template<typename MatrixType >
Morpheus::CooMatrix< ValueType, Properties >::CooMatrix ( const MatrixType &  src)
delete

Construct a CooMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations.

Template Parameters
MatrixTypeAny of the supported storage formats.
Parameters
srcThe source container.

Member Function Documentation

◆ allocate()

template<class ValueType , class... Properties>
template<class VR , class... PR>
CooMatrix & Morpheus::CooMatrix< ValueType, Properties >::allocate ( const CooMatrix< VR, PR... > &  src)
inline

Allocates memory from another CooMatrix container with different properties.

Template Parameters
VRValue Type of the container we are allocating from.
PROptional properties of the container we are allocating from.
Parameters
srcThe CooMatrix container we are allocating from.

◆ ccolumn_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const index_array_type & Morpheus::CooMatrix< ValueType, Properties >::ccolumn_indices ( ) const
inline

Returns a const-reference to the column indices of the matrix.

Returns
index_array_type& A const-reference to the column indices.

◆ ccolumn_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const index_array_reference Morpheus::CooMatrix< ValueType, Properties >::ccolumn_indices ( size_type  n) const
inline

Returns a const-reference to the column index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Column index at index n

◆ column_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_type & Morpheus::CooMatrix< ValueType, Properties >::column_indices ( )
inline

Returns a reference to the column indices of the matrix.

Returns
index_array_type& A reference to the column indices.

◆ column_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference Morpheus::CooMatrix< ValueType, Properties >::column_indices ( size_type  n)
inline

Returns a reference to the column index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Column index at index n

◆ crow_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const index_array_type & Morpheus::CooMatrix< ValueType, Properties >::crow_indices ( ) const
inline

Returns a const-reference to the row indices of the matrix.

Returns
const index_array_type& A const reference to the row indices.

◆ crow_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const index_array_reference Morpheus::CooMatrix< ValueType, Properties >::crow_indices ( size_type  n) const
inline

Returns a const-reference to the row index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Row index at index n

◆ cvalues() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const value_array_type & Morpheus::CooMatrix< ValueType, Properties >::cvalues ( ) const
inline

Returns a reference to the values of the matrix.

Returns
values_array_type& A reference to the values.

◆ cvalues() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION const value_array_reference Morpheus::CooMatrix< ValueType, Properties >::cvalues ( size_type  n) const
inline

Returns a const-reference to the value of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Value of the element at index n

◆ format_enum()

template<class ValueType , class... Properties>
formats_e Morpheus::CooMatrix< ValueType, Properties >::format_enum ( ) const
inline

Returns the format enum assigned to the CooMatrix container.

Returns
formats_e The format enum

◆ format_index()

template<class ValueType , class... Properties>
int Morpheus::CooMatrix< ValueType, Properties >::format_index ( ) const
inline

Returns the equivalent index to the format enum assigned to the CooMatrix container.

Returns
int The equivalent index to format_e

◆ is_sorted()

template<class ValueType , class... Properties>
bool Morpheus::CooMatrix< ValueType, Properties >::is_sorted ( void  )
inline

Determines whether matrix elements are sorted by row and column index.

◆ is_sorted_by_row()

template<class ValueType , class... Properties>
bool Morpheus::CooMatrix< ValueType, Properties >::is_sorted_by_row ( void  )
inline

Determines whether matrix elements are sorted by row index.

◆ operator=() [1/3]

template<class ValueType , class... Properties>
template<class VR , class... PR>
std::enable_if< is_format_compatible< CooMatrix, CooMatrix< VR, PR... > >::value, CooMatrix & >::type Morpheus::CooMatrix< ValueType, Properties >::operator= ( const CooMatrix< VR, PR... > &  src)
inline

Assigns a CooMatrix from another compatible CooMatrix.

Overview
Assigns a CooMatrix from another compatible CooMatrix i.e a matrix that satisfies the is_format_compatible check.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are assigning from.

◆ operator=() [2/3]

template<class ValueType , class... Properties>
template<class VR , class... PR>
std::enable_if< is_dynamically_compatible< CooMatrix, DynamicMatrix< VR, PR... > >::value, CooMatrix & >::type Morpheus::CooMatrix< ValueType, Properties >::operator= ( const DynamicMatrix< VR, PR... > &  src)
inline

Assigns a CooMatrix from a compatible DynamicMatrix.

Overview
Assigns a CooMatrix from a compatible DynamicMatrix i.e a matrix that satisfies the is_dynamically_compatible check. Note that when the active type of the dynamic matrix is different from the concrete type, this will result in an exception thrown.
Template Parameters
VRType of Values the Other Matrix holds.
PRProperties of the Other Matrix.
Parameters
srcThe matrix we are assigning from.

◆ operator=() [3/3]

template<class ValueType , class... Properties>
template<typename MatrixType >
reference Morpheus::CooMatrix< ValueType, Properties >::operator= ( const MatrixType &  src)
delete

Assign to CooMatrix object from another storage format. This functionality is disabled to avoid implicit copies and conversion operations.

Template Parameters
MatrixTypeAny of the supported storage formats.
Parameters
srcThe source container.

◆ resize() [1/2]

template<class ValueType , class... Properties>
template<class VR , class... PR>
void Morpheus::CooMatrix< ValueType, Properties >::resize ( const CooMatrix< VR, PR... > &  src)
inline

Resizes CooMatrix with the shape and number of non-zero entries of another CooMatrix with different parameters.

Template Parameters
VRType of values the source matrix stores.
PROther properties of source matrix.
Parameters
srcThe source CooMatrix we are resizing from.

◆ resize() [2/2]

template<class ValueType , class... Properties>
void Morpheus::CooMatrix< ValueType, Properties >::resize ( const size_type  num_rows,
const size_type  num_cols,
const size_type  num_entries 
)
inline

Resizes CooMatrix with shape of (num_rows, num_cols) and sets number of non-zero entries to num_entries.

Parameters
num_rowsNumber of rows of resized matrix.
num_colsNumber of columns of resized matrix.
num_entriesNumber of non-zero entries in resized matrix.

◆ row_indices() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_type & Morpheus::CooMatrix< ValueType, Properties >::row_indices ( )
inline

Returns a reference to the row indices of the matrix.

Returns
index_array_type& A reference to the row indices.

◆ row_indices() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION index_array_reference Morpheus::CooMatrix< ValueType, Properties >::row_indices ( size_type  n)
inline

Returns a reference to the row index of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Row index at index n

◆ sort()

template<class ValueType , class... Properties>
void Morpheus::CooMatrix< ValueType, Properties >::sort ( void  )
inline

Sorts matrix elements by row index first and then by column index.

◆ sort_by_row()

template<class ValueType , class... Properties>
void Morpheus::CooMatrix< ValueType, Properties >::sort_by_row ( void  )
inline

Sorts matrix elements by row index.

◆ values() [1/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION value_array_type & Morpheus::CooMatrix< ValueType, Properties >::values ( )
inline

Returns a reference to the values of the matrix.

Returns
value_array_type& A reference to the values.

◆ values() [2/2]

template<class ValueType , class... Properties>
MORPHEUS_FORCEINLINE_FUNCTION value_array_reference Morpheus::CooMatrix< ValueType, Properties >::values ( size_type  n)
inline

Returns a reference to the value of the matrix with index n.

Parameters
nIndex of the value to extract
Returns
Value of the element at index n

The documentation for this class was generated from the following files: