buds  0.1
FORTRAN reference counted types
Modules
Compressed Sparse Row (CSR 0-based row pointer)

Detailed Description

A compressed sparse row matrix implementation using a 0-based row-pointer.

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) + 1, rptr(ir+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 a slight variation of the regular CSR format. Currently these software packages relies on this special format:

Collaboration diagram for Compressed Sparse Row (CSR 0-based row pointer):

Modules

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