mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-20 04:42:08 +00:00
Implement clean_zeros for CSC and CSR
This commit is contained in:
@@ -87,6 +87,7 @@ module psb_c_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_c_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_c_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_c_mv_csc_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_c_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_c_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_c_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_c_csc_csgetptn
|
||||
@@ -142,10 +143,11 @@ module psb_c_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_lc_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_lc_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_lc_mv_csc_from_fmt
|
||||
procedure, pass(a) :: csput_a => psb_lc_csc_csput_a
|
||||
procedure, pass(a) :: clean_zeros => psb_lc_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_lc_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_lc_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_lc_csc_csgetptn
|
||||
procedure, pass(a) :: csgetrow => psb_lc_csc_csgetrow
|
||||
procedure, pass(a) :: csgetrow => psb_lc_csc_csgetrow
|
||||
procedure, pass(a) :: get_nz_col => lc_csc_get_nz_col
|
||||
procedure, pass(a) :: reinit => psb_lc_csc_reinit
|
||||
procedure, pass(a) :: trim => psb_lc_csc_trim
|
||||
@@ -311,6 +313,20 @@ module psb_c_csc_mat_mod
|
||||
end subroutine psb_c_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_c_csc_sparse_mat
|
||||
!! \see psb_c_base_mat_mod::psb_c_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_c_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_c_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_c_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_c_csc_sparse_mat
|
||||
!! \see psb_c_base_mat_mod::psb_c_base_cp_from
|
||||
interface
|
||||
@@ -702,6 +718,19 @@ module psb_c_csc_mat_mod
|
||||
end subroutine psb_lc_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_lc_csc_sparse_mat
|
||||
!! \see psb_lc_base_mat_mod::psb_lc_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_lc_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_lc_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_lc_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_lc_csc_sparse_mat
|
||||
!! \see psb_lc_base_mat_mod::psb_lc_base_cp_from
|
||||
interface
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
!
|
||||
! Parallel Sparse BLAS version 3.5
|
||||
! (C) Copyright 2006-2018
|
||||
@@ -90,6 +91,7 @@ module psb_c_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_c_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_c_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_c_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_c_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_c_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_c_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_c_csr_csgetptn
|
||||
@@ -259,6 +261,18 @@ module psb_c_csr_mat_mod
|
||||
end subroutine psb_c_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_c_csr_sparse_mat
|
||||
!! \see psb_c_base_mat_mod::psb_c_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_c_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_c_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_c_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_c_csr_sparse_mat
|
||||
!! \see psb_c_base_mat_mod::psb_c_base_cp_to_coo
|
||||
@@ -599,6 +613,7 @@ module psb_c_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_lc_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_lc_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_lc_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_lc_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_lc_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_lc_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_lc_csr_csgetptn
|
||||
@@ -775,7 +790,21 @@ module psb_c_csr_mat_mod
|
||||
class(psb_lc_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_lc_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_lc_csr_sparse_mat
|
||||
!! \see psb_lc_base_mat_mod::psb_lc_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_lc_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_lc_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_lc_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
|
||||
!> \memberof psb_lc_csr_sparse_mat
|
||||
!! \see psb_lc_base_mat_mod::psb_lc_base_cp_to_coo
|
||||
|
||||
@@ -87,6 +87,7 @@ module psb_d_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_d_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_d_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_d_mv_csc_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_d_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_d_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_d_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_d_csc_csgetptn
|
||||
@@ -142,10 +143,11 @@ module psb_d_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_ld_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_ld_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_ld_mv_csc_from_fmt
|
||||
procedure, pass(a) :: csput_a => psb_ld_csc_csput_a
|
||||
procedure, pass(a) :: clean_zeros => psb_ld_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_ld_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_ld_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_ld_csc_csgetptn
|
||||
procedure, pass(a) :: csgetrow => psb_ld_csc_csgetrow
|
||||
procedure, pass(a) :: csgetrow => psb_ld_csc_csgetrow
|
||||
procedure, pass(a) :: get_nz_col => ld_csc_get_nz_col
|
||||
procedure, pass(a) :: reinit => psb_ld_csc_reinit
|
||||
procedure, pass(a) :: trim => psb_ld_csc_trim
|
||||
@@ -311,6 +313,20 @@ module psb_d_csc_mat_mod
|
||||
end subroutine psb_d_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_d_csc_sparse_mat
|
||||
!! \see psb_d_base_mat_mod::psb_d_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_d_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_d_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_d_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_d_csc_sparse_mat
|
||||
!! \see psb_d_base_mat_mod::psb_d_base_cp_from
|
||||
interface
|
||||
@@ -702,6 +718,19 @@ module psb_d_csc_mat_mod
|
||||
end subroutine psb_ld_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_ld_csc_sparse_mat
|
||||
!! \see psb_ld_base_mat_mod::psb_ld_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_ld_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_ld_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_ld_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_ld_csc_sparse_mat
|
||||
!! \see psb_ld_base_mat_mod::psb_ld_base_cp_from
|
||||
interface
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
!
|
||||
! Parallel Sparse BLAS version 3.5
|
||||
! (C) Copyright 2006-2018
|
||||
@@ -90,6 +91,7 @@ module psb_d_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_d_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_d_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_d_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_d_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_d_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_d_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_d_csr_csgetptn
|
||||
@@ -259,6 +261,18 @@ module psb_d_csr_mat_mod
|
||||
end subroutine psb_d_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_d_csr_sparse_mat
|
||||
!! \see psb_d_base_mat_mod::psb_d_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_d_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_d_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_d_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_d_csr_sparse_mat
|
||||
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo
|
||||
@@ -599,6 +613,7 @@ module psb_d_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_ld_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_ld_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_ld_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_ld_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_ld_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_ld_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_ld_csr_csgetptn
|
||||
@@ -775,7 +790,21 @@ module psb_d_csr_mat_mod
|
||||
class(psb_ld_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_ld_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_ld_csr_sparse_mat
|
||||
!! \see psb_ld_base_mat_mod::psb_ld_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_ld_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_ld_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_ld_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
|
||||
!> \memberof psb_ld_csr_sparse_mat
|
||||
!! \see psb_ld_base_mat_mod::psb_ld_base_cp_to_coo
|
||||
|
||||
@@ -87,6 +87,7 @@ module psb_s_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_s_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_s_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_s_mv_csc_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_s_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_s_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_s_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_s_csc_csgetptn
|
||||
@@ -142,10 +143,11 @@ module psb_s_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_ls_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_ls_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_ls_mv_csc_from_fmt
|
||||
procedure, pass(a) :: csput_a => psb_ls_csc_csput_a
|
||||
procedure, pass(a) :: clean_zeros => psb_ls_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_ls_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_ls_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_ls_csc_csgetptn
|
||||
procedure, pass(a) :: csgetrow => psb_ls_csc_csgetrow
|
||||
procedure, pass(a) :: csgetrow => psb_ls_csc_csgetrow
|
||||
procedure, pass(a) :: get_nz_col => ls_csc_get_nz_col
|
||||
procedure, pass(a) :: reinit => psb_ls_csc_reinit
|
||||
procedure, pass(a) :: trim => psb_ls_csc_trim
|
||||
@@ -311,6 +313,20 @@ module psb_s_csc_mat_mod
|
||||
end subroutine psb_s_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_s_csc_sparse_mat
|
||||
!! \see psb_s_base_mat_mod::psb_s_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_s_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_s_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_s_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_s_csc_sparse_mat
|
||||
!! \see psb_s_base_mat_mod::psb_s_base_cp_from
|
||||
interface
|
||||
@@ -702,6 +718,19 @@ module psb_s_csc_mat_mod
|
||||
end subroutine psb_ls_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_ls_csc_sparse_mat
|
||||
!! \see psb_ls_base_mat_mod::psb_ls_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_ls_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_ls_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_ls_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_ls_csc_sparse_mat
|
||||
!! \see psb_ls_base_mat_mod::psb_ls_base_cp_from
|
||||
interface
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
!
|
||||
! Parallel Sparse BLAS version 3.5
|
||||
! (C) Copyright 2006-2018
|
||||
@@ -90,6 +91,7 @@ module psb_s_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_s_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_s_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_s_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_s_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_s_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_s_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_s_csr_csgetptn
|
||||
@@ -259,6 +261,18 @@ module psb_s_csr_mat_mod
|
||||
end subroutine psb_s_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_s_csr_sparse_mat
|
||||
!! \see psb_s_base_mat_mod::psb_s_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_s_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_s_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_s_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_s_csr_sparse_mat
|
||||
!! \see psb_s_base_mat_mod::psb_s_base_cp_to_coo
|
||||
@@ -599,6 +613,7 @@ module psb_s_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_ls_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_ls_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_ls_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_ls_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_ls_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_ls_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_ls_csr_csgetptn
|
||||
@@ -775,7 +790,21 @@ module psb_s_csr_mat_mod
|
||||
class(psb_ls_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_ls_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_ls_csr_sparse_mat
|
||||
!! \see psb_ls_base_mat_mod::psb_ls_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_ls_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_ls_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_ls_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
|
||||
!> \memberof psb_ls_csr_sparse_mat
|
||||
!! \see psb_ls_base_mat_mod::psb_ls_base_cp_to_coo
|
||||
|
||||
@@ -87,6 +87,7 @@ module psb_z_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_z_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_z_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_z_mv_csc_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_z_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_z_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_z_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_z_csc_csgetptn
|
||||
@@ -142,10 +143,11 @@ module psb_z_csc_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_lz_mv_csc_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_lz_mv_csc_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_lz_mv_csc_from_fmt
|
||||
procedure, pass(a) :: csput_a => psb_lz_csc_csput_a
|
||||
procedure, pass(a) :: clean_zeros => psb_lz_csc_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_lz_csc_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_lz_csc_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_lz_csc_csgetptn
|
||||
procedure, pass(a) :: csgetrow => psb_lz_csc_csgetrow
|
||||
procedure, pass(a) :: csgetrow => psb_lz_csc_csgetrow
|
||||
procedure, pass(a) :: get_nz_col => lz_csc_get_nz_col
|
||||
procedure, pass(a) :: reinit => psb_lz_csc_reinit
|
||||
procedure, pass(a) :: trim => psb_lz_csc_trim
|
||||
@@ -311,6 +313,20 @@ module psb_z_csc_mat_mod
|
||||
end subroutine psb_z_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_z_csc_sparse_mat
|
||||
!! \see psb_z_base_mat_mod::psb_z_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_z_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_z_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_z_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_z_csc_sparse_mat
|
||||
!! \see psb_z_base_mat_mod::psb_z_base_cp_from
|
||||
interface
|
||||
@@ -702,6 +718,19 @@ module psb_z_csc_mat_mod
|
||||
end subroutine psb_lz_mv_csc_from_fmt
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_lz_csc_sparse_mat
|
||||
!! \see psb_lz_base_mat_mod::psb_lz_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_lz_csc_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_lz_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_lz_csc_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_lz_csc_sparse_mat
|
||||
!! \see psb_lz_base_mat_mod::psb_lz_base_cp_from
|
||||
interface
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
!
|
||||
! Parallel Sparse BLAS version 3.5
|
||||
! (C) Copyright 2006-2018
|
||||
@@ -90,6 +91,7 @@ module psb_z_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_z_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_z_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_z_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_z_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_z_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_z_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_z_csr_csgetptn
|
||||
@@ -259,6 +261,18 @@ module psb_z_csr_mat_mod
|
||||
end subroutine psb_z_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_z_csr_sparse_mat
|
||||
!! \see psb_z_base_mat_mod::psb_z_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_z_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_z_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_z_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
!> \memberof psb_z_csr_sparse_mat
|
||||
!! \see psb_z_base_mat_mod::psb_z_base_cp_to_coo
|
||||
@@ -599,6 +613,7 @@ module psb_z_csr_mat_mod
|
||||
procedure, pass(a) :: mv_from_coo => psb_lz_mv_csr_from_coo
|
||||
procedure, pass(a) :: mv_to_fmt => psb_lz_mv_csr_to_fmt
|
||||
procedure, pass(a) :: mv_from_fmt => psb_lz_mv_csr_from_fmt
|
||||
procedure, pass(a) :: clean_zeros => psb_lz_csr_clean_zeros
|
||||
procedure, pass(a) :: csput_a => psb_lz_csr_csput_a
|
||||
procedure, pass(a) :: get_diag => psb_lz_csr_get_diag
|
||||
procedure, pass(a) :: csgetptn => psb_lz_csr_csgetptn
|
||||
@@ -775,7 +790,21 @@ module psb_z_csr_mat_mod
|
||||
class(psb_lz_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_lz_csr_triu
|
||||
end interface
|
||||
|
||||
!
|
||||
!>
|
||||
!! \memberof psb_lz_csr_sparse_mat
|
||||
!! \see psb_lz_base_mat_mod::psb_lz_base_clean_zeros
|
||||
!
|
||||
interface
|
||||
subroutine psb_lz_csr_clean_zeros(a, info)
|
||||
import
|
||||
class(psb_lz_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine psb_lz_csr_clean_zeros
|
||||
end interface
|
||||
|
||||
|
||||
|
||||
!> \memberof psb_lz_csr_sparse_mat
|
||||
!! \see psb_lz_base_mat_mod::psb_lz_base_cp_to_coo
|
||||
|
||||
@@ -2366,7 +2366,35 @@ subroutine psb_c_mv_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_c_mv_csc_from_fmt
|
||||
|
||||
|
||||
subroutine psb_c_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_c_csc_mat_mod, psb_protect_name => psb_c_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_c_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nc
|
||||
integer(psb_ipk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= czero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_c_csc_clean_zeros
|
||||
|
||||
subroutine psb_c_cp_csc_from_fmt(a,b,info)
|
||||
use psb_const_mod
|
||||
@@ -4233,6 +4261,36 @@ subroutine psb_lc_cp_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_lc_cp_csc_from_fmt
|
||||
|
||||
subroutine psb_lc_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_c_csc_mat_mod, psb_protect_name => psb_lc_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_lc_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nc
|
||||
integer(psb_lpk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= czero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_lc_csc_clean_zeros
|
||||
|
||||
|
||||
subroutine psb_lc_csc_mold(a,b,info)
|
||||
use psb_c_csc_mat_mod, psb_protect_name => psb_lc_csc_mold
|
||||
|
||||
@@ -3225,6 +3225,36 @@ subroutine psb_c_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_c_cp_csr_from_fmt
|
||||
|
||||
subroutine psb_c_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_c_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nr
|
||||
integer(psb_ipk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= czero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_c_csr_clean_zeros
|
||||
|
||||
subroutine psb_ccsrspspmm(a,b,c,info)
|
||||
use psb_c_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_ccsrspspmm
|
||||
@@ -5323,6 +5353,37 @@ subroutine psb_lc_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_lc_cp_csr_from_fmt
|
||||
|
||||
|
||||
subroutine psb_lc_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_c_csr_mat_mod, psb_protect_name => psb_lc_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_lc_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nr
|
||||
integer(psb_lpk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= czero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_lc_csr_clean_zeros
|
||||
|
||||
subroutine psb_lccsrspspmm(a,b,c,info)
|
||||
use psb_c_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_lccsrspspmm
|
||||
|
||||
@@ -2366,7 +2366,35 @@ subroutine psb_d_mv_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_d_mv_csc_from_fmt
|
||||
|
||||
|
||||
subroutine psb_d_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_d_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nc
|
||||
integer(psb_ipk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= dzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_d_csc_clean_zeros
|
||||
|
||||
subroutine psb_d_cp_csc_from_fmt(a,b,info)
|
||||
use psb_const_mod
|
||||
@@ -4233,6 +4261,36 @@ subroutine psb_ld_cp_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_ld_cp_csc_from_fmt
|
||||
|
||||
subroutine psb_ld_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_d_csc_mat_mod, psb_protect_name => psb_ld_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_ld_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nc
|
||||
integer(psb_lpk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= dzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_ld_csc_clean_zeros
|
||||
|
||||
|
||||
subroutine psb_ld_csc_mold(a,b,info)
|
||||
use psb_d_csc_mat_mod, psb_protect_name => psb_ld_csc_mold
|
||||
|
||||
@@ -3225,6 +3225,36 @@ subroutine psb_d_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_d_cp_csr_from_fmt
|
||||
|
||||
subroutine psb_d_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_d_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nr
|
||||
integer(psb_ipk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= dzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_d_csr_clean_zeros
|
||||
|
||||
subroutine psb_dcsrspspmm(a,b,c,info)
|
||||
use psb_d_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_dcsrspspmm
|
||||
@@ -5323,6 +5353,37 @@ subroutine psb_ld_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_ld_cp_csr_from_fmt
|
||||
|
||||
|
||||
subroutine psb_ld_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_d_csr_mat_mod, psb_protect_name => psb_ld_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_ld_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nr
|
||||
integer(psb_lpk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= dzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_ld_csr_clean_zeros
|
||||
|
||||
subroutine psb_ldcsrspspmm(a,b,c,info)
|
||||
use psb_d_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_ldcsrspspmm
|
||||
|
||||
@@ -2366,7 +2366,35 @@ subroutine psb_s_mv_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_s_mv_csc_from_fmt
|
||||
|
||||
|
||||
subroutine psb_s_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_s_csc_mat_mod, psb_protect_name => psb_s_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_s_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nc
|
||||
integer(psb_ipk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= szero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_s_csc_clean_zeros
|
||||
|
||||
subroutine psb_s_cp_csc_from_fmt(a,b,info)
|
||||
use psb_const_mod
|
||||
@@ -4233,6 +4261,36 @@ subroutine psb_ls_cp_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_ls_cp_csc_from_fmt
|
||||
|
||||
subroutine psb_ls_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_s_csc_mat_mod, psb_protect_name => psb_ls_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_ls_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nc
|
||||
integer(psb_lpk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= szero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_ls_csc_clean_zeros
|
||||
|
||||
|
||||
subroutine psb_ls_csc_mold(a,b,info)
|
||||
use psb_s_csc_mat_mod, psb_protect_name => psb_ls_csc_mold
|
||||
|
||||
@@ -3225,6 +3225,36 @@ subroutine psb_s_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_s_cp_csr_from_fmt
|
||||
|
||||
subroutine psb_s_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_s_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nr
|
||||
integer(psb_ipk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= szero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_s_csr_clean_zeros
|
||||
|
||||
subroutine psb_scsrspspmm(a,b,c,info)
|
||||
use psb_s_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_scsrspspmm
|
||||
@@ -5323,6 +5353,37 @@ subroutine psb_ls_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_ls_cp_csr_from_fmt
|
||||
|
||||
|
||||
subroutine psb_ls_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_s_csr_mat_mod, psb_protect_name => psb_ls_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_ls_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nr
|
||||
integer(psb_lpk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= szero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_ls_csr_clean_zeros
|
||||
|
||||
subroutine psb_lscsrspspmm(a,b,c,info)
|
||||
use psb_s_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_lscsrspspmm
|
||||
|
||||
@@ -2366,7 +2366,35 @@ subroutine psb_z_mv_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_z_mv_csc_from_fmt
|
||||
|
||||
|
||||
subroutine psb_z_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_z_csc_mat_mod, psb_protect_name => psb_z_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_z_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nc
|
||||
integer(psb_ipk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= zzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_z_csc_clean_zeros
|
||||
|
||||
subroutine psb_z_cp_csc_from_fmt(a,b,info)
|
||||
use psb_const_mod
|
||||
@@ -4233,6 +4261,36 @@ subroutine psb_lz_cp_csc_from_fmt(a,b,info)
|
||||
|
||||
end subroutine psb_lz_cp_csc_from_fmt
|
||||
|
||||
subroutine psb_lz_csc_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_z_csc_mat_mod, psb_protect_name => psb_lz_csc_clean_zeros
|
||||
implicit none
|
||||
class(psb_lz_csc_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nc
|
||||
integer(psb_lpk_), allocatable :: ilcp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nc = a%get_ncols()
|
||||
ilcp = a%icp(:)
|
||||
a%icp(1) = 1
|
||||
j = a%icp(1)
|
||||
do i=1, nc
|
||||
do k = ilcp(i), ilcp(i+1) -1
|
||||
if (a%val(k) /= zzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ia(j) = a%ia(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%icp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_lz_csc_clean_zeros
|
||||
|
||||
|
||||
subroutine psb_lz_csc_mold(a,b,info)
|
||||
use psb_z_csc_mat_mod, psb_protect_name => psb_lz_csc_mold
|
||||
|
||||
@@ -3225,6 +3225,36 @@ subroutine psb_z_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_z_cp_csr_from_fmt
|
||||
|
||||
subroutine psb_z_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_z_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_ipk_) :: i, j, k, nr
|
||||
integer(psb_ipk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= zzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_z_csr_clean_zeros
|
||||
|
||||
subroutine psb_zcsrspspmm(a,b,c,info)
|
||||
use psb_z_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_zcsrspspmm
|
||||
@@ -5323,6 +5353,37 @@ subroutine psb_lz_cp_csr_from_fmt(a,b,info)
|
||||
end select
|
||||
end subroutine psb_lz_cp_csr_from_fmt
|
||||
|
||||
|
||||
subroutine psb_lz_csr_clean_zeros(a, info)
|
||||
use psb_error_mod
|
||||
use psb_z_csr_mat_mod, psb_protect_name => psb_lz_csr_clean_zeros
|
||||
implicit none
|
||||
class(psb_lz_csr_sparse_mat), intent(inout) :: a
|
||||
integer(psb_ipk_) :: info
|
||||
!
|
||||
integer(psb_lpk_) :: i, j, k, nr
|
||||
integer(psb_lpk_), allocatable :: ilrp(:)
|
||||
|
||||
info = 0
|
||||
call a%sync()
|
||||
nr = a%get_nrows()
|
||||
ilrp = a%irp(:)
|
||||
a%irp(1) = 1
|
||||
j = a%irp(1)
|
||||
do i=1, nr
|
||||
do k = ilrp(i), ilrp(i+1) -1
|
||||
if (a%val(k) /= zzero) then
|
||||
a%val(j) = a%val(k)
|
||||
a%ja(j) = a%ja(k)
|
||||
j = j + 1
|
||||
end if
|
||||
end do
|
||||
a%irp(i+1) = j
|
||||
end do
|
||||
call a%trim()
|
||||
call a%set_host()
|
||||
end subroutine psb_lz_csr_clean_zeros
|
||||
|
||||
subroutine psb_lzcsrspspmm(a,b,c,info)
|
||||
use psb_z_mat_mod
|
||||
use psb_serial_mod, psb_protect_name => psb_lzcsrspspmm
|
||||
|
||||
Reference in New Issue
Block a user