TABLE OF CONTENTS
ABINIT/m_sparse_matrix [ Modules ]
NAME
m_sparse_matrix
FUNCTION
This module implement several sparse matrix data structure and matrix-vector product including LIL_mat: for constructing CSR matrix CSR_mat : for m-v product. dense matrix and COO_mat: for reference. Maybe dense matrix will be used if dipdip is considered? Datatypes: * lnode: a node in linked list * llist: linked list * LIL_mat: linked list sparse matrix * dense_mat: dense matrix (to have compatible syntax with sparse matrices so it's easy to test.) * COO_mat : COO matrix * CSR_mat : CSR matrix Subroutines: * dense_mat_initialize * dense_mat_finalize * dense_mat_mv * dense_mat_spmv * dense_mat_insert * LIL_mat_initialize * LIL_mat_finalize * LIL_mat_insert : insert value to LIL matrix * mat_to_LIL_mat: dense->LIL * LIL_mat_to_mat: LIL->dense * LIL_mat_to_COO: LIL->COO * LIL_mat_to_CSR: LIL->CSR * CSR_mat_initialize: * CSR_mat_finalize: * CSR_mat_mv : matrix-vector product * COO_mat_initialize * COO_mat_finalize TODO hexu: not yet! * COO_mat_mv
COPYRIGHT
Copyright (C) 2010-2018 ABINIT group (hexu) This file is distributed under the terms of the GNU General Public Licence, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt . For the initials of contributors, see ~abinit/doc/developers/contributors.txt .
SOURCE
53 ! This file implement several sparse matrix format and matrix vector product. 54 ! Dense matrix is also here for test. 55 ! Dense_mat 56 ! LIL_mat 57 ! COO_mat 58 ! CSR_mat 59 ! LIL mat is use only for constructing matrix, therefore there is no mat-vec production. 60 ! No good to use COO in this implementation. (perhaps) 61 ! CSR mat is better used for matrix-vector product. 62 ! Dense_mat is better if matrix is dense or small. 63 ! Dense<->LIL->CSR and LIL->COO translations are possible. 64 65 ! A distributed counterpart of the module is m_sparse_matrix_distributed. (TODO: To be implemented) 66 #if defined HAVE_CONFIG_H 67 #include "config.h" 68 #endif 69 #include "abi_common.h" 70 71 module m_sparse_matrix 72 use defs_basis 73 use m_errors 74 use m_abicore 75 implicit none