Merge branch 'psblas-3.6-maint' into psblas-paraggr

psblas-paraggr
Salvatore Filippone 6 years ago
commit 83e2cb444a

@ -116,6 +116,8 @@ module psb_base_mat_mod
!! can ever be in the BUILD state, hence all other formats !! can ever be in the BUILD state, hence all other formats
!! cannot have duplicate entries. !! cannot have duplicate entries.
integer(psb_ipk_), private :: duplicate integer(psb_ipk_), private :: duplicate
!> Is the matrix symmetric? (must also be square)
logical, private :: symmetric
!> Is the matrix triangular? (must also be square) !> Is the matrix triangular? (must also be square)
logical, private :: triangle logical, private :: triangle
!> Is the matrix upper or lower? (only if triangular) !> Is the matrix upper or lower? (only if triangular)
@ -152,6 +154,7 @@ module psb_base_mat_mod
procedure, pass(a) :: is_upper => psb_base_is_upper procedure, pass(a) :: is_upper => psb_base_is_upper
procedure, pass(a) :: is_lower => psb_base_is_lower procedure, pass(a) :: is_lower => psb_base_is_lower
procedure, pass(a) :: is_triangle => psb_base_is_triangle procedure, pass(a) :: is_triangle => psb_base_is_triangle
procedure, pass(a) :: is_symmetric => psb_base_is_symmetric
procedure, pass(a) :: is_unit => psb_base_is_unit procedure, pass(a) :: is_unit => psb_base_is_unit
procedure, pass(a) :: is_by_rows => psb_base_is_by_rows procedure, pass(a) :: is_by_rows => psb_base_is_by_rows
procedure, pass(a) :: is_by_cols => psb_base_is_by_cols procedure, pass(a) :: is_by_cols => psb_base_is_by_cols
@ -174,6 +177,7 @@ module psb_base_mat_mod
procedure, pass(a) :: set_upper => psb_base_set_upper procedure, pass(a) :: set_upper => psb_base_set_upper
procedure, pass(a) :: set_lower => psb_base_set_lower procedure, pass(a) :: set_lower => psb_base_set_lower
procedure, pass(a) :: set_triangle => psb_base_set_triangle procedure, pass(a) :: set_triangle => psb_base_set_triangle
procedure, pass(a) :: set_symmetric => psb_base_set_symmetric
procedure, pass(a) :: set_unit => psb_base_set_unit procedure, pass(a) :: set_unit => psb_base_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_base_set_repeatable_updates procedure, pass(a) :: set_repeatable_updates => psb_base_set_repeatable_updates
@ -586,6 +590,18 @@ contains
end if end if
end subroutine psb_base_set_triangle end subroutine psb_base_set_triangle
subroutine psb_base_set_symmetric(a,val)
implicit none
class(psb_base_sparse_mat), intent(inout) :: a
logical, intent(in), optional :: val
if (present(val)) then
a%symmetric = val
else
a%symmetric = .true.
end if
end subroutine psb_base_set_symmetric
subroutine psb_base_set_unit(a,val) subroutine psb_base_set_unit(a,val)
implicit none implicit none
class(psb_base_sparse_mat), intent(inout) :: a class(psb_base_sparse_mat), intent(inout) :: a
@ -641,6 +657,13 @@ contains
res = a%triangle res = a%triangle
end function psb_base_is_triangle end function psb_base_is_triangle
function psb_base_is_symmetric(a) result(res)
implicit none
class(psb_base_sparse_mat), intent(in) :: a
logical :: res
res = a%symmetric
end function psb_base_is_symmetric
function psb_base_is_unit(a) result(res) function psb_base_is_unit(a) result(res)
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
@ -652,14 +675,14 @@ contains
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
logical :: res logical :: res
res = a%upper res = a%upper .and. a%triangle
end function psb_base_is_upper end function psb_base_is_upper
function psb_base_is_lower(a) result(res) function psb_base_is_lower(a) result(res)
implicit none implicit none
class(psb_base_sparse_mat), intent(in) :: a class(psb_base_sparse_mat), intent(in) :: a
logical :: res logical :: res
res = .not.a%upper res = (.not.a%upper) .and. a%triangle
end function psb_base_is_lower end function psb_base_is_lower
function psb_base_is_null(a) result(res) function psb_base_is_null(a) result(res)

@ -81,42 +81,44 @@ module psb_c_mat_mod
contains contains
! Getters ! Getters
procedure, pass(a) :: get_nrows => psb_c_get_nrows procedure, pass(a) :: get_nrows => psb_c_get_nrows
procedure, pass(a) :: get_ncols => psb_c_get_ncols procedure, pass(a) :: get_ncols => psb_c_get_ncols
procedure, pass(a) :: get_nzeros => psb_c_get_nzeros procedure, pass(a) :: get_nzeros => psb_c_get_nzeros
procedure, pass(a) :: get_nz_row => psb_c_get_nz_row procedure, pass(a) :: get_nz_row => psb_c_get_nz_row
procedure, pass(a) :: get_size => psb_c_get_size procedure, pass(a) :: get_size => psb_c_get_size
procedure, pass(a) :: get_dupl => psb_c_get_dupl procedure, pass(a) :: get_dupl => psb_c_get_dupl
procedure, pass(a) :: is_null => psb_c_is_null procedure, pass(a) :: is_null => psb_c_is_null
procedure, pass(a) :: is_bld => psb_c_is_bld procedure, pass(a) :: is_bld => psb_c_is_bld
procedure, pass(a) :: is_upd => psb_c_is_upd procedure, pass(a) :: is_upd => psb_c_is_upd
procedure, pass(a) :: is_asb => psb_c_is_asb procedure, pass(a) :: is_asb => psb_c_is_asb
procedure, pass(a) :: is_sorted => psb_c_is_sorted procedure, pass(a) :: is_sorted => psb_c_is_sorted
procedure, pass(a) :: is_by_rows => psb_c_is_by_rows procedure, pass(a) :: is_by_rows => psb_c_is_by_rows
procedure, pass(a) :: is_by_cols => psb_c_is_by_cols procedure, pass(a) :: is_by_cols => psb_c_is_by_cols
procedure, pass(a) :: is_upper => psb_c_is_upper procedure, pass(a) :: is_upper => psb_c_is_upper
procedure, pass(a) :: is_lower => psb_c_is_lower procedure, pass(a) :: is_lower => psb_c_is_lower
procedure, pass(a) :: is_triangle => psb_c_is_triangle procedure, pass(a) :: is_triangle => psb_c_is_triangle
procedure, pass(a) :: is_symmetric => psb_c_is_symmetric
procedure, pass(a) :: is_unit => psb_c_is_unit procedure, pass(a) :: is_unit => psb_c_is_unit
procedure, pass(a) :: is_repeatable_updates => psb_c_is_repeatable_updates procedure, pass(a) :: is_repeatable_updates => psb_c_is_repeatable_updates
procedure, pass(a) :: get_fmt => psb_c_get_fmt procedure, pass(a) :: get_fmt => psb_c_get_fmt
procedure, pass(a) :: sizeof => psb_c_sizeof procedure, pass(a) :: sizeof => psb_c_sizeof
! Setters ! Setters
procedure, pass(a) :: set_nrows => psb_c_set_nrows procedure, pass(a) :: set_nrows => psb_c_set_nrows
procedure, pass(a) :: set_ncols => psb_c_set_ncols procedure, pass(a) :: set_ncols => psb_c_set_ncols
procedure, pass(a) :: set_dupl => psb_c_set_dupl procedure, pass(a) :: set_dupl => psb_c_set_dupl
procedure, pass(a) :: set_null => psb_c_set_null procedure, pass(a) :: set_null => psb_c_set_null
procedure, pass(a) :: set_bld => psb_c_set_bld procedure, pass(a) :: set_bld => psb_c_set_bld
procedure, pass(a) :: set_upd => psb_c_set_upd procedure, pass(a) :: set_upd => psb_c_set_upd
procedure, pass(a) :: set_asb => psb_c_set_asb procedure, pass(a) :: set_asb => psb_c_set_asb
procedure, pass(a) :: set_sorted => psb_c_set_sorted procedure, pass(a) :: set_sorted => psb_c_set_sorted
procedure, pass(a) :: set_upper => psb_c_set_upper procedure, pass(a) :: set_upper => psb_c_set_upper
procedure, pass(a) :: set_lower => psb_c_set_lower procedure, pass(a) :: set_lower => psb_c_set_lower
procedure, pass(a) :: set_triangle => psb_c_set_triangle procedure, pass(a) :: set_triangle => psb_c_set_triangle
procedure, pass(a) :: set_unit => psb_c_set_unit procedure, pass(a) :: set_symmetric => psb_c_set_symmetric
procedure, pass(a) :: set_unit => psb_c_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_c_set_repeatable_updates procedure, pass(a) :: set_repeatable_updates => psb_c_set_repeatable_updates
procedure, pass(a) :: has_xt_tri => psb_c_has_xt_tri procedure, pass(a) :: has_xt_tri => psb_c_has_xt_tri
! Memory/data management ! Memory/data management
@ -322,6 +324,14 @@ module psb_c_mat_mod
end subroutine psb_c_set_triangle end subroutine psb_c_set_triangle
end interface end interface
interface
subroutine psb_c_set_symmetric(a,val)
import :: psb_ipk_, psb_cspmat_type
class(psb_cspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
end subroutine psb_c_set_symmetric
end interface
interface interface
subroutine psb_c_set_unit(a,val) subroutine psb_c_set_unit(a,val)
import :: psb_ipk_, psb_cspmat_type import :: psb_ipk_, psb_cspmat_type
@ -1037,6 +1047,19 @@ contains
end function psb_c_is_triangle end function psb_c_is_triangle
function psb_c_is_symmetric(a) result(res)
implicit none
class(psb_cspmat_type), intent(in) :: a
logical :: res
if (allocated(a%a)) then
res = a%a%is_symmetric()
else
res = .false.
end if
end function psb_c_is_symmetric
function psb_c_is_unit(a) result(res) function psb_c_is_unit(a) result(res)
implicit none implicit none
class(psb_cspmat_type), intent(in) :: a class(psb_cspmat_type), intent(in) :: a

@ -81,42 +81,44 @@ module psb_d_mat_mod
contains contains
! Getters ! Getters
procedure, pass(a) :: get_nrows => psb_d_get_nrows procedure, pass(a) :: get_nrows => psb_d_get_nrows
procedure, pass(a) :: get_ncols => psb_d_get_ncols procedure, pass(a) :: get_ncols => psb_d_get_ncols
procedure, pass(a) :: get_nzeros => psb_d_get_nzeros procedure, pass(a) :: get_nzeros => psb_d_get_nzeros
procedure, pass(a) :: get_nz_row => psb_d_get_nz_row procedure, pass(a) :: get_nz_row => psb_d_get_nz_row
procedure, pass(a) :: get_size => psb_d_get_size procedure, pass(a) :: get_size => psb_d_get_size
procedure, pass(a) :: get_dupl => psb_d_get_dupl procedure, pass(a) :: get_dupl => psb_d_get_dupl
procedure, pass(a) :: is_null => psb_d_is_null procedure, pass(a) :: is_null => psb_d_is_null
procedure, pass(a) :: is_bld => psb_d_is_bld procedure, pass(a) :: is_bld => psb_d_is_bld
procedure, pass(a) :: is_upd => psb_d_is_upd procedure, pass(a) :: is_upd => psb_d_is_upd
procedure, pass(a) :: is_asb => psb_d_is_asb procedure, pass(a) :: is_asb => psb_d_is_asb
procedure, pass(a) :: is_sorted => psb_d_is_sorted procedure, pass(a) :: is_sorted => psb_d_is_sorted
procedure, pass(a) :: is_by_rows => psb_d_is_by_rows procedure, pass(a) :: is_by_rows => psb_d_is_by_rows
procedure, pass(a) :: is_by_cols => psb_d_is_by_cols procedure, pass(a) :: is_by_cols => psb_d_is_by_cols
procedure, pass(a) :: is_upper => psb_d_is_upper procedure, pass(a) :: is_upper => psb_d_is_upper
procedure, pass(a) :: is_lower => psb_d_is_lower procedure, pass(a) :: is_lower => psb_d_is_lower
procedure, pass(a) :: is_triangle => psb_d_is_triangle procedure, pass(a) :: is_triangle => psb_d_is_triangle
procedure, pass(a) :: is_symmetric => psb_d_is_symmetric
procedure, pass(a) :: is_unit => psb_d_is_unit procedure, pass(a) :: is_unit => psb_d_is_unit
procedure, pass(a) :: is_repeatable_updates => psb_d_is_repeatable_updates procedure, pass(a) :: is_repeatable_updates => psb_d_is_repeatable_updates
procedure, pass(a) :: get_fmt => psb_d_get_fmt procedure, pass(a) :: get_fmt => psb_d_get_fmt
procedure, pass(a) :: sizeof => psb_d_sizeof procedure, pass(a) :: sizeof => psb_d_sizeof
! Setters ! Setters
procedure, pass(a) :: set_nrows => psb_d_set_nrows procedure, pass(a) :: set_nrows => psb_d_set_nrows
procedure, pass(a) :: set_ncols => psb_d_set_ncols procedure, pass(a) :: set_ncols => psb_d_set_ncols
procedure, pass(a) :: set_dupl => psb_d_set_dupl procedure, pass(a) :: set_dupl => psb_d_set_dupl
procedure, pass(a) :: set_null => psb_d_set_null procedure, pass(a) :: set_null => psb_d_set_null
procedure, pass(a) :: set_bld => psb_d_set_bld procedure, pass(a) :: set_bld => psb_d_set_bld
procedure, pass(a) :: set_upd => psb_d_set_upd procedure, pass(a) :: set_upd => psb_d_set_upd
procedure, pass(a) :: set_asb => psb_d_set_asb procedure, pass(a) :: set_asb => psb_d_set_asb
procedure, pass(a) :: set_sorted => psb_d_set_sorted procedure, pass(a) :: set_sorted => psb_d_set_sorted
procedure, pass(a) :: set_upper => psb_d_set_upper procedure, pass(a) :: set_upper => psb_d_set_upper
procedure, pass(a) :: set_lower => psb_d_set_lower procedure, pass(a) :: set_lower => psb_d_set_lower
procedure, pass(a) :: set_triangle => psb_d_set_triangle procedure, pass(a) :: set_triangle => psb_d_set_triangle
procedure, pass(a) :: set_unit => psb_d_set_unit procedure, pass(a) :: set_symmetric => psb_d_set_symmetric
procedure, pass(a) :: set_unit => psb_d_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_d_set_repeatable_updates procedure, pass(a) :: set_repeatable_updates => psb_d_set_repeatable_updates
procedure, pass(a) :: has_xt_tri => psb_d_has_xt_tri procedure, pass(a) :: has_xt_tri => psb_d_has_xt_tri
! Memory/data management ! Memory/data management
@ -322,6 +324,14 @@ module psb_d_mat_mod
end subroutine psb_d_set_triangle end subroutine psb_d_set_triangle
end interface end interface
interface
subroutine psb_d_set_symmetric(a,val)
import :: psb_ipk_, psb_dspmat_type
class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
end subroutine psb_d_set_symmetric
end interface
interface interface
subroutine psb_d_set_unit(a,val) subroutine psb_d_set_unit(a,val)
import :: psb_ipk_, psb_dspmat_type import :: psb_ipk_, psb_dspmat_type
@ -1037,6 +1047,19 @@ contains
end function psb_d_is_triangle end function psb_d_is_triangle
function psb_d_is_symmetric(a) result(res)
implicit none
class(psb_dspmat_type), intent(in) :: a
logical :: res
if (allocated(a%a)) then
res = a%a%is_symmetric()
else
res = .false.
end if
end function psb_d_is_symmetric
function psb_d_is_unit(a) result(res) function psb_d_is_unit(a) result(res)
implicit none implicit none
class(psb_dspmat_type), intent(in) :: a class(psb_dspmat_type), intent(in) :: a

@ -81,42 +81,44 @@ module psb_s_mat_mod
contains contains
! Getters ! Getters
procedure, pass(a) :: get_nrows => psb_s_get_nrows procedure, pass(a) :: get_nrows => psb_s_get_nrows
procedure, pass(a) :: get_ncols => psb_s_get_ncols procedure, pass(a) :: get_ncols => psb_s_get_ncols
procedure, pass(a) :: get_nzeros => psb_s_get_nzeros procedure, pass(a) :: get_nzeros => psb_s_get_nzeros
procedure, pass(a) :: get_nz_row => psb_s_get_nz_row procedure, pass(a) :: get_nz_row => psb_s_get_nz_row
procedure, pass(a) :: get_size => psb_s_get_size procedure, pass(a) :: get_size => psb_s_get_size
procedure, pass(a) :: get_dupl => psb_s_get_dupl procedure, pass(a) :: get_dupl => psb_s_get_dupl
procedure, pass(a) :: is_null => psb_s_is_null procedure, pass(a) :: is_null => psb_s_is_null
procedure, pass(a) :: is_bld => psb_s_is_bld procedure, pass(a) :: is_bld => psb_s_is_bld
procedure, pass(a) :: is_upd => psb_s_is_upd procedure, pass(a) :: is_upd => psb_s_is_upd
procedure, pass(a) :: is_asb => psb_s_is_asb procedure, pass(a) :: is_asb => psb_s_is_asb
procedure, pass(a) :: is_sorted => psb_s_is_sorted procedure, pass(a) :: is_sorted => psb_s_is_sorted
procedure, pass(a) :: is_by_rows => psb_s_is_by_rows procedure, pass(a) :: is_by_rows => psb_s_is_by_rows
procedure, pass(a) :: is_by_cols => psb_s_is_by_cols procedure, pass(a) :: is_by_cols => psb_s_is_by_cols
procedure, pass(a) :: is_upper => psb_s_is_upper procedure, pass(a) :: is_upper => psb_s_is_upper
procedure, pass(a) :: is_lower => psb_s_is_lower procedure, pass(a) :: is_lower => psb_s_is_lower
procedure, pass(a) :: is_triangle => psb_s_is_triangle procedure, pass(a) :: is_triangle => psb_s_is_triangle
procedure, pass(a) :: is_symmetric => psb_s_is_symmetric
procedure, pass(a) :: is_unit => psb_s_is_unit procedure, pass(a) :: is_unit => psb_s_is_unit
procedure, pass(a) :: is_repeatable_updates => psb_s_is_repeatable_updates procedure, pass(a) :: is_repeatable_updates => psb_s_is_repeatable_updates
procedure, pass(a) :: get_fmt => psb_s_get_fmt procedure, pass(a) :: get_fmt => psb_s_get_fmt
procedure, pass(a) :: sizeof => psb_s_sizeof procedure, pass(a) :: sizeof => psb_s_sizeof
! Setters ! Setters
procedure, pass(a) :: set_nrows => psb_s_set_nrows procedure, pass(a) :: set_nrows => psb_s_set_nrows
procedure, pass(a) :: set_ncols => psb_s_set_ncols procedure, pass(a) :: set_ncols => psb_s_set_ncols
procedure, pass(a) :: set_dupl => psb_s_set_dupl procedure, pass(a) :: set_dupl => psb_s_set_dupl
procedure, pass(a) :: set_null => psb_s_set_null procedure, pass(a) :: set_null => psb_s_set_null
procedure, pass(a) :: set_bld => psb_s_set_bld procedure, pass(a) :: set_bld => psb_s_set_bld
procedure, pass(a) :: set_upd => psb_s_set_upd procedure, pass(a) :: set_upd => psb_s_set_upd
procedure, pass(a) :: set_asb => psb_s_set_asb procedure, pass(a) :: set_asb => psb_s_set_asb
procedure, pass(a) :: set_sorted => psb_s_set_sorted procedure, pass(a) :: set_sorted => psb_s_set_sorted
procedure, pass(a) :: set_upper => psb_s_set_upper procedure, pass(a) :: set_upper => psb_s_set_upper
procedure, pass(a) :: set_lower => psb_s_set_lower procedure, pass(a) :: set_lower => psb_s_set_lower
procedure, pass(a) :: set_triangle => psb_s_set_triangle procedure, pass(a) :: set_triangle => psb_s_set_triangle
procedure, pass(a) :: set_unit => psb_s_set_unit procedure, pass(a) :: set_symmetric => psb_s_set_symmetric
procedure, pass(a) :: set_unit => psb_s_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_s_set_repeatable_updates procedure, pass(a) :: set_repeatable_updates => psb_s_set_repeatable_updates
procedure, pass(a) :: has_xt_tri => psb_s_has_xt_tri procedure, pass(a) :: has_xt_tri => psb_s_has_xt_tri
! Memory/data management ! Memory/data management
@ -322,6 +324,14 @@ module psb_s_mat_mod
end subroutine psb_s_set_triangle end subroutine psb_s_set_triangle
end interface end interface
interface
subroutine psb_s_set_symmetric(a,val)
import :: psb_ipk_, psb_sspmat_type
class(psb_sspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
end subroutine psb_s_set_symmetric
end interface
interface interface
subroutine psb_s_set_unit(a,val) subroutine psb_s_set_unit(a,val)
import :: psb_ipk_, psb_sspmat_type import :: psb_ipk_, psb_sspmat_type
@ -1037,6 +1047,19 @@ contains
end function psb_s_is_triangle end function psb_s_is_triangle
function psb_s_is_symmetric(a) result(res)
implicit none
class(psb_sspmat_type), intent(in) :: a
logical :: res
if (allocated(a%a)) then
res = a%a%is_symmetric()
else
res = .false.
end if
end function psb_s_is_symmetric
function psb_s_is_unit(a) result(res) function psb_s_is_unit(a) result(res)
implicit none implicit none
class(psb_sspmat_type), intent(in) :: a class(psb_sspmat_type), intent(in) :: a

@ -81,42 +81,44 @@ module psb_z_mat_mod
contains contains
! Getters ! Getters
procedure, pass(a) :: get_nrows => psb_z_get_nrows procedure, pass(a) :: get_nrows => psb_z_get_nrows
procedure, pass(a) :: get_ncols => psb_z_get_ncols procedure, pass(a) :: get_ncols => psb_z_get_ncols
procedure, pass(a) :: get_nzeros => psb_z_get_nzeros procedure, pass(a) :: get_nzeros => psb_z_get_nzeros
procedure, pass(a) :: get_nz_row => psb_z_get_nz_row procedure, pass(a) :: get_nz_row => psb_z_get_nz_row
procedure, pass(a) :: get_size => psb_z_get_size procedure, pass(a) :: get_size => psb_z_get_size
procedure, pass(a) :: get_dupl => psb_z_get_dupl procedure, pass(a) :: get_dupl => psb_z_get_dupl
procedure, pass(a) :: is_null => psb_z_is_null procedure, pass(a) :: is_null => psb_z_is_null
procedure, pass(a) :: is_bld => psb_z_is_bld procedure, pass(a) :: is_bld => psb_z_is_bld
procedure, pass(a) :: is_upd => psb_z_is_upd procedure, pass(a) :: is_upd => psb_z_is_upd
procedure, pass(a) :: is_asb => psb_z_is_asb procedure, pass(a) :: is_asb => psb_z_is_asb
procedure, pass(a) :: is_sorted => psb_z_is_sorted procedure, pass(a) :: is_sorted => psb_z_is_sorted
procedure, pass(a) :: is_by_rows => psb_z_is_by_rows procedure, pass(a) :: is_by_rows => psb_z_is_by_rows
procedure, pass(a) :: is_by_cols => psb_z_is_by_cols procedure, pass(a) :: is_by_cols => psb_z_is_by_cols
procedure, pass(a) :: is_upper => psb_z_is_upper procedure, pass(a) :: is_upper => psb_z_is_upper
procedure, pass(a) :: is_lower => psb_z_is_lower procedure, pass(a) :: is_lower => psb_z_is_lower
procedure, pass(a) :: is_triangle => psb_z_is_triangle procedure, pass(a) :: is_triangle => psb_z_is_triangle
procedure, pass(a) :: is_symmetric => psb_z_is_symmetric
procedure, pass(a) :: is_unit => psb_z_is_unit procedure, pass(a) :: is_unit => psb_z_is_unit
procedure, pass(a) :: is_repeatable_updates => psb_z_is_repeatable_updates procedure, pass(a) :: is_repeatable_updates => psb_z_is_repeatable_updates
procedure, pass(a) :: get_fmt => psb_z_get_fmt procedure, pass(a) :: get_fmt => psb_z_get_fmt
procedure, pass(a) :: sizeof => psb_z_sizeof procedure, pass(a) :: sizeof => psb_z_sizeof
! Setters ! Setters
procedure, pass(a) :: set_nrows => psb_z_set_nrows procedure, pass(a) :: set_nrows => psb_z_set_nrows
procedure, pass(a) :: set_ncols => psb_z_set_ncols procedure, pass(a) :: set_ncols => psb_z_set_ncols
procedure, pass(a) :: set_dupl => psb_z_set_dupl procedure, pass(a) :: set_dupl => psb_z_set_dupl
procedure, pass(a) :: set_null => psb_z_set_null procedure, pass(a) :: set_null => psb_z_set_null
procedure, pass(a) :: set_bld => psb_z_set_bld procedure, pass(a) :: set_bld => psb_z_set_bld
procedure, pass(a) :: set_upd => psb_z_set_upd procedure, pass(a) :: set_upd => psb_z_set_upd
procedure, pass(a) :: set_asb => psb_z_set_asb procedure, pass(a) :: set_asb => psb_z_set_asb
procedure, pass(a) :: set_sorted => psb_z_set_sorted procedure, pass(a) :: set_sorted => psb_z_set_sorted
procedure, pass(a) :: set_upper => psb_z_set_upper procedure, pass(a) :: set_upper => psb_z_set_upper
procedure, pass(a) :: set_lower => psb_z_set_lower procedure, pass(a) :: set_lower => psb_z_set_lower
procedure, pass(a) :: set_triangle => psb_z_set_triangle procedure, pass(a) :: set_triangle => psb_z_set_triangle
procedure, pass(a) :: set_unit => psb_z_set_unit procedure, pass(a) :: set_symmetric => psb_z_set_symmetric
procedure, pass(a) :: set_unit => psb_z_set_unit
procedure, pass(a) :: set_repeatable_updates => psb_z_set_repeatable_updates procedure, pass(a) :: set_repeatable_updates => psb_z_set_repeatable_updates
procedure, pass(a) :: has_xt_tri => psb_z_has_xt_tri procedure, pass(a) :: has_xt_tri => psb_z_has_xt_tri
! Memory/data management ! Memory/data management
@ -322,6 +324,14 @@ module psb_z_mat_mod
end subroutine psb_z_set_triangle end subroutine psb_z_set_triangle
end interface end interface
interface
subroutine psb_z_set_symmetric(a,val)
import :: psb_ipk_, psb_zspmat_type
class(psb_zspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
end subroutine psb_z_set_symmetric
end interface
interface interface
subroutine psb_z_set_unit(a,val) subroutine psb_z_set_unit(a,val)
import :: psb_ipk_, psb_zspmat_type import :: psb_ipk_, psb_zspmat_type
@ -1037,6 +1047,19 @@ contains
end function psb_z_is_triangle end function psb_z_is_triangle
function psb_z_is_symmetric(a) result(res)
implicit none
class(psb_zspmat_type), intent(in) :: a
logical :: res
if (allocated(a%a)) then
res = a%a%is_symmetric()
else
res = .false.
end if
end function psb_z_is_symmetric
function psb_z_is_unit(a) result(res) function psb_z_is_unit(a) result(res)
implicit none implicit none
class(psb_zspmat_type), intent(in) :: a class(psb_zspmat_type), intent(in) :: a

@ -328,6 +328,35 @@ subroutine psb_c_set_triangle(a,val)
end subroutine psb_c_set_triangle end subroutine psb_c_set_triangle
subroutine psb_c_set_symmetric(a,val)
use psb_c_mat_mod, psb_protect_name => psb_c_set_symmetric
use psb_error_mod
implicit none
class(psb_cspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
integer(psb_ipk_) :: err_act, info
character(len=20) :: name='get_nzeros'
logical, parameter :: debug=.false.
call psb_erractionsave(err_act)
if (.not.allocated(a%a)) then
info = psb_err_invalid_mat_state_
call psb_errpush(info,name)
goto 9999
endif
call a%a%set_symmetric(val)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(err_act)
return
end subroutine psb_c_set_symmetric
subroutine psb_c_set_unit(a,val) subroutine psb_c_set_unit(a,val)
use psb_c_mat_mod, psb_protect_name => psb_c_set_unit use psb_c_mat_mod, psb_protect_name => psb_c_set_unit

@ -328,6 +328,35 @@ subroutine psb_d_set_triangle(a,val)
end subroutine psb_d_set_triangle end subroutine psb_d_set_triangle
subroutine psb_d_set_symmetric(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_symmetric
use psb_error_mod
implicit none
class(psb_dspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
integer(psb_ipk_) :: err_act, info
character(len=20) :: name='get_nzeros'
logical, parameter :: debug=.false.
call psb_erractionsave(err_act)
if (.not.allocated(a%a)) then
info = psb_err_invalid_mat_state_
call psb_errpush(info,name)
goto 9999
endif
call a%a%set_symmetric(val)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(err_act)
return
end subroutine psb_d_set_symmetric
subroutine psb_d_set_unit(a,val) subroutine psb_d_set_unit(a,val)
use psb_d_mat_mod, psb_protect_name => psb_d_set_unit use psb_d_mat_mod, psb_protect_name => psb_d_set_unit

@ -328,6 +328,35 @@ subroutine psb_s_set_triangle(a,val)
end subroutine psb_s_set_triangle end subroutine psb_s_set_triangle
subroutine psb_s_set_symmetric(a,val)
use psb_s_mat_mod, psb_protect_name => psb_s_set_symmetric
use psb_error_mod
implicit none
class(psb_sspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
integer(psb_ipk_) :: err_act, info
character(len=20) :: name='get_nzeros'
logical, parameter :: debug=.false.
call psb_erractionsave(err_act)
if (.not.allocated(a%a)) then
info = psb_err_invalid_mat_state_
call psb_errpush(info,name)
goto 9999
endif
call a%a%set_symmetric(val)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(err_act)
return
end subroutine psb_s_set_symmetric
subroutine psb_s_set_unit(a,val) subroutine psb_s_set_unit(a,val)
use psb_s_mat_mod, psb_protect_name => psb_s_set_unit use psb_s_mat_mod, psb_protect_name => psb_s_set_unit

@ -328,6 +328,35 @@ subroutine psb_z_set_triangle(a,val)
end subroutine psb_z_set_triangle end subroutine psb_z_set_triangle
subroutine psb_z_set_symmetric(a,val)
use psb_z_mat_mod, psb_protect_name => psb_z_set_symmetric
use psb_error_mod
implicit none
class(psb_zspmat_type), intent(inout) :: a
logical, intent(in), optional :: val
integer(psb_ipk_) :: err_act, info
character(len=20) :: name='get_nzeros'
logical, parameter :: debug=.false.
call psb_erractionsave(err_act)
if (.not.allocated(a%a)) then
info = psb_err_invalid_mat_state_
call psb_errpush(info,name)
goto 9999
endif
call a%a%set_symmetric(val)
call psb_erractionrestore(err_act)
return
9999 call psb_error_handler(err_act)
return
end subroutine psb_z_set_symmetric
subroutine psb_z_set_unit(a,val) subroutine psb_z_set_unit(a,val)
use psb_z_mat_mod, psb_protect_name => psb_z_set_unit use psb_z_mat_mod, psb_protect_name => psb_z_set_unit

@ -131,7 +131,7 @@ int matgen(int ictxt, int ng,int idim,int vg[],psb_c_dspmat *ah,psb_c_descriptor
info = 0; info = 0;
psb_c_info(ictxt,&iam,&np); psb_c_info(ictxt,&iam,&np);
deltah = (double) 1.0/(idim+2); deltah = (double) 1.0/(idim+1);
sqdeltah = deltah*deltah; sqdeltah = deltah*deltah;
deltah2 = 2.0* deltah; deltah2 = 2.0* deltah;
psb_c_set_index_base(0); psb_c_set_index_base(0);

@ -36,11 +36,11 @@ dnl NOTE : There is no cross compilation support.
############################################################################### ###############################################################################
# NOTE: the literal for version (the second argument to AC_INIT should be a literal!) # NOTE: the literal for version (the second argument to AC_INIT should be a literal!)
AC_INIT([PSBLAS],3.5, [https://github.com/sfilippone/psblas3/issues]) AC_INIT([PSBLAS],3.6, [https://github.com/sfilippone/psblas3/issues])
# VERSION is the file containing the PSBLAS version code # VERSION is the file containing the PSBLAS version code
# FIXME # FIXME
psblas_cv_version="3.5" psblas_cv_version="3.6"
# A sample source file # A sample source file
AC_CONFIG_SRCDIR([base/modules/psb_base_mod.f90]) AC_CONFIG_SRCDIR([base/modules/psb_base_mod.f90])

Loading…
Cancel
Save