buds  0.1
FORTRAN reference counted types
Modules
Compressed Sparse Row (CSR)

Detailed Description

A compressed sparse row matrix implementation.

This only contains the indices for the sparse matrix, the data for the sparse matrix should be contained in an additional data array of the corresponding data type.

The CSR sparsity pattern stored must be sorted in each row such that the columns are consecutively aligned. This will help ensure a fast access pattern in the matrix with a row-based access pattern.

integer :: nr, nz, ir, idx
integer, pointer, contiguous :: rptr(:), col(:)
call attach(this, nr=nr, nz=nz, rptr=rptr, col=col)
do ir = 1 , nr
do idx = rptr(ir) , rptr(ir+1) - 1
! access M(ir,col(idx))
end do
end do

There are no data-consistency checks performed (for performance reasons) hence you can end up with multiple entries for the same matrix element. In such cases the developer must take care of these.

Note This sparsity pattern is constructed to conform with the MKL Sparse BLAS library. The sparsity pattern is 1-based and is the 3-array variant of the CSR format. The 3-array variant can be used in the 4-array input without changing any array elements and/or extra memory allocation. To be compatible with the MKL Sparse BLAS library the sparsity pattern must contain the diagonal elements.

Collaboration diagram for Compressed Sparse Row (CSR):

Modules

 Integer (int)
 integer(selected_int_kind(9)) data type
 
 Integer (long)
 integer(selected_int_kind(18)) data type