mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-19 12:22:10 +00:00
Implement TRIL/TRIU for CSR.
This commit is contained in:
@@ -80,6 +80,8 @@ module psb_c_csr_mat_mod
|
||||
procedure, pass(a) :: aclsum => psb_c_csr_aclsum
|
||||
procedure, pass(a) :: reallocate_nz => psb_c_csr_reallocate_nz
|
||||
procedure, pass(a) :: allocate_mnnz => psb_c_csr_allocate_mnnz
|
||||
procedure, pass(a) :: tril => psb_c_csr_tril
|
||||
procedure, pass(a) :: triu => psb_c_csr_triu
|
||||
procedure, pass(a) :: cp_to_coo => psb_c_cp_csr_to_coo
|
||||
procedure, pass(a) :: cp_from_coo => psb_c_cp_csr_from_coo
|
||||
procedure, pass(a) :: cp_to_fmt => psb_c_cp_csr_to_fmt
|
||||
@@ -170,6 +172,93 @@ module psb_c_csr_mat_mod
|
||||
integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:)
|
||||
end subroutine psb_c_csr_print
|
||||
end interface
|
||||
!
|
||||
!> Function tril:
|
||||
!! \memberof psb_c_base_sparse_mat
|
||||
!! \brief Copy the lower triangle, i.e. all entries
|
||||
!! A(I,J) such that J-I <= DIAG
|
||||
!! default value is DIAG=0, i.e. lower triangle up to
|
||||
!! the main diagonal.
|
||||
!! DIAG=-1 means copy the strictly lower triangle
|
||||
!! DIAG= 1 means copy the lower triangle plus the first diagonal
|
||||
!! of the upper triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!!
|
||||
!! \param l the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param u [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_c_csr_tril(a,l,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,u)
|
||||
import :: psb_ipk_, psb_c_csr_sparse_mat, psb_c_coo_sparse_mat, psb_spk_
|
||||
class(psb_c_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_c_coo_sparse_mat), intent(out) :: l
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_c_coo_sparse_mat), optional, intent(out) :: u
|
||||
end subroutine psb_c_csr_tril
|
||||
end interface
|
||||
|
||||
!
|
||||
!> Function triu:
|
||||
!! \memberof psb_c_csr_sparse_mat
|
||||
!! \brief Copy the upper triangle, i.e. all entries
|
||||
!! A(I,J) such that DIAG <= J-I
|
||||
!! default value is DIAG=0, i.e. upper triangle from
|
||||
!! the main diagonal up.
|
||||
!! DIAG= 1 means copy the strictly upper triangle
|
||||
!! DIAG=-1 means copy the upper triangle plus the first diagonal
|
||||
!! of the lower triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!! Optionally copies the lower triangle at the same time
|
||||
!!
|
||||
!! \param u the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param l [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_c_csr_triu(a,u,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,l)
|
||||
import :: psb_ipk_, psb_c_csr_sparse_mat, psb_c_coo_sparse_mat, psb_spk_
|
||||
class(psb_c_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_c_coo_sparse_mat), intent(out) :: u
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_c_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_c_csr_triu
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_c_csr_sparse_mat
|
||||
!! \see psb_c_base_mat_mod::psb_c_base_cp_to_coo
|
||||
|
||||
@@ -80,6 +80,8 @@ module psb_d_csr_mat_mod
|
||||
procedure, pass(a) :: aclsum => psb_d_csr_aclsum
|
||||
procedure, pass(a) :: reallocate_nz => psb_d_csr_reallocate_nz
|
||||
procedure, pass(a) :: allocate_mnnz => psb_d_csr_allocate_mnnz
|
||||
procedure, pass(a) :: tril => psb_d_csr_tril
|
||||
procedure, pass(a) :: triu => psb_d_csr_triu
|
||||
procedure, pass(a) :: cp_to_coo => psb_d_cp_csr_to_coo
|
||||
procedure, pass(a) :: cp_from_coo => psb_d_cp_csr_from_coo
|
||||
procedure, pass(a) :: cp_to_fmt => psb_d_cp_csr_to_fmt
|
||||
@@ -170,6 +172,93 @@ module psb_d_csr_mat_mod
|
||||
integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:)
|
||||
end subroutine psb_d_csr_print
|
||||
end interface
|
||||
!
|
||||
!> Function tril:
|
||||
!! \memberof psb_d_base_sparse_mat
|
||||
!! \brief Copy the lower triangle, i.e. all entries
|
||||
!! A(I,J) such that J-I <= DIAG
|
||||
!! default value is DIAG=0, i.e. lower triangle up to
|
||||
!! the main diagonal.
|
||||
!! DIAG=-1 means copy the strictly lower triangle
|
||||
!! DIAG= 1 means copy the lower triangle plus the first diagonal
|
||||
!! of the upper triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!!
|
||||
!! \param l the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param u [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_d_csr_tril(a,l,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,u)
|
||||
import :: psb_ipk_, psb_d_csr_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
|
||||
class(psb_d_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_d_coo_sparse_mat), intent(out) :: l
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_d_coo_sparse_mat), optional, intent(out) :: u
|
||||
end subroutine psb_d_csr_tril
|
||||
end interface
|
||||
|
||||
!
|
||||
!> Function triu:
|
||||
!! \memberof psb_d_csr_sparse_mat
|
||||
!! \brief Copy the upper triangle, i.e. all entries
|
||||
!! A(I,J) such that DIAG <= J-I
|
||||
!! default value is DIAG=0, i.e. upper triangle from
|
||||
!! the main diagonal up.
|
||||
!! DIAG= 1 means copy the strictly upper triangle
|
||||
!! DIAG=-1 means copy the upper triangle plus the first diagonal
|
||||
!! of the lower triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!! Optionally copies the lower triangle at the same time
|
||||
!!
|
||||
!! \param u the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param l [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_d_csr_triu(a,u,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,l)
|
||||
import :: psb_ipk_, psb_d_csr_sparse_mat, psb_d_coo_sparse_mat, psb_dpk_
|
||||
class(psb_d_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_d_coo_sparse_mat), intent(out) :: u
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_d_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_d_csr_triu
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_d_csr_sparse_mat
|
||||
!! \see psb_d_base_mat_mod::psb_d_base_cp_to_coo
|
||||
|
||||
@@ -80,6 +80,8 @@ module psb_s_csr_mat_mod
|
||||
procedure, pass(a) :: aclsum => psb_s_csr_aclsum
|
||||
procedure, pass(a) :: reallocate_nz => psb_s_csr_reallocate_nz
|
||||
procedure, pass(a) :: allocate_mnnz => psb_s_csr_allocate_mnnz
|
||||
procedure, pass(a) :: tril => psb_s_csr_tril
|
||||
procedure, pass(a) :: triu => psb_s_csr_triu
|
||||
procedure, pass(a) :: cp_to_coo => psb_s_cp_csr_to_coo
|
||||
procedure, pass(a) :: cp_from_coo => psb_s_cp_csr_from_coo
|
||||
procedure, pass(a) :: cp_to_fmt => psb_s_cp_csr_to_fmt
|
||||
@@ -170,6 +172,93 @@ module psb_s_csr_mat_mod
|
||||
integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:)
|
||||
end subroutine psb_s_csr_print
|
||||
end interface
|
||||
!
|
||||
!> Function tril:
|
||||
!! \memberof psb_s_base_sparse_mat
|
||||
!! \brief Copy the lower triangle, i.e. all entries
|
||||
!! A(I,J) such that J-I <= DIAG
|
||||
!! default value is DIAG=0, i.e. lower triangle up to
|
||||
!! the main diagonal.
|
||||
!! DIAG=-1 means copy the strictly lower triangle
|
||||
!! DIAG= 1 means copy the lower triangle plus the first diagonal
|
||||
!! of the upper triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!!
|
||||
!! \param l the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param u [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_s_csr_tril(a,l,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,u)
|
||||
import :: psb_ipk_, psb_s_csr_sparse_mat, psb_s_coo_sparse_mat, psb_spk_
|
||||
class(psb_s_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_s_coo_sparse_mat), intent(out) :: l
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_s_coo_sparse_mat), optional, intent(out) :: u
|
||||
end subroutine psb_s_csr_tril
|
||||
end interface
|
||||
|
||||
!
|
||||
!> Function triu:
|
||||
!! \memberof psb_s_csr_sparse_mat
|
||||
!! \brief Copy the upper triangle, i.e. all entries
|
||||
!! A(I,J) such that DIAG <= J-I
|
||||
!! default value is DIAG=0, i.e. upper triangle from
|
||||
!! the main diagonal up.
|
||||
!! DIAG= 1 means copy the strictly upper triangle
|
||||
!! DIAG=-1 means copy the upper triangle plus the first diagonal
|
||||
!! of the lower triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!! Optionally copies the lower triangle at the same time
|
||||
!!
|
||||
!! \param u the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param l [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_s_csr_triu(a,u,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,l)
|
||||
import :: psb_ipk_, psb_s_csr_sparse_mat, psb_s_coo_sparse_mat, psb_spk_
|
||||
class(psb_s_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_s_coo_sparse_mat), intent(out) :: u
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_s_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_s_csr_triu
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_s_csr_sparse_mat
|
||||
!! \see psb_s_base_mat_mod::psb_s_base_cp_to_coo
|
||||
|
||||
@@ -80,6 +80,8 @@ module psb_z_csr_mat_mod
|
||||
procedure, pass(a) :: aclsum => psb_z_csr_aclsum
|
||||
procedure, pass(a) :: reallocate_nz => psb_z_csr_reallocate_nz
|
||||
procedure, pass(a) :: allocate_mnnz => psb_z_csr_allocate_mnnz
|
||||
procedure, pass(a) :: tril => psb_z_csr_tril
|
||||
procedure, pass(a) :: triu => psb_z_csr_triu
|
||||
procedure, pass(a) :: cp_to_coo => psb_z_cp_csr_to_coo
|
||||
procedure, pass(a) :: cp_from_coo => psb_z_cp_csr_from_coo
|
||||
procedure, pass(a) :: cp_to_fmt => psb_z_cp_csr_to_fmt
|
||||
@@ -170,6 +172,93 @@ module psb_z_csr_mat_mod
|
||||
integer(psb_ipk_), intent(in), optional :: ivr(:), ivc(:)
|
||||
end subroutine psb_z_csr_print
|
||||
end interface
|
||||
!
|
||||
!> Function tril:
|
||||
!! \memberof psb_z_base_sparse_mat
|
||||
!! \brief Copy the lower triangle, i.e. all entries
|
||||
!! A(I,J) such that J-I <= DIAG
|
||||
!! default value is DIAG=0, i.e. lower triangle up to
|
||||
!! the main diagonal.
|
||||
!! DIAG=-1 means copy the strictly lower triangle
|
||||
!! DIAG= 1 means copy the lower triangle plus the first diagonal
|
||||
!! of the upper triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!!
|
||||
!! \param l the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param u [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_z_csr_tril(a,l,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,u)
|
||||
import :: psb_ipk_, psb_z_csr_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_
|
||||
class(psb_z_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_z_coo_sparse_mat), intent(out) :: l
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_z_coo_sparse_mat), optional, intent(out) :: u
|
||||
end subroutine psb_z_csr_tril
|
||||
end interface
|
||||
|
||||
!
|
||||
!> Function triu:
|
||||
!! \memberof psb_z_csr_sparse_mat
|
||||
!! \brief Copy the upper triangle, i.e. all entries
|
||||
!! A(I,J) such that DIAG <= J-I
|
||||
!! default value is DIAG=0, i.e. upper triangle from
|
||||
!! the main diagonal up.
|
||||
!! DIAG= 1 means copy the strictly upper triangle
|
||||
!! DIAG=-1 means copy the upper triangle plus the first diagonal
|
||||
!! of the lower triangle.
|
||||
!! Moreover, apply a clipping by copying entries A(I,J) only if
|
||||
!! IMIN<=I<=IMAX
|
||||
!! JMIN<=J<=JMAX
|
||||
!! Optionally copies the lower triangle at the same time
|
||||
!!
|
||||
!! \param u the output (sub)matrix
|
||||
!! \param info return code
|
||||
!! \param diag [0] the last diagonal (J-I) to be considered.
|
||||
!! \param imin [1] the minimum row index we are interested in
|
||||
!! \param imax [a\%get_nrows()] the minimum row index we are interested in
|
||||
!! \param jmin [1] minimum col index
|
||||
!! \param jmax [a\%get_ncols()] maximum col index
|
||||
!! \param iren(:) [none] an array to return renumbered indices (iren(ia(:)),iren(ja(:))
|
||||
!! \param rscale [false] map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
|
||||
!! \param cscale [false] map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
|
||||
!! ( iren cannot be specified with rscale/cscale)
|
||||
!! \param append [false] append to ia,ja
|
||||
!! \param nzin [none] if append, then first new entry should go in entry nzin+1
|
||||
!! \param l [none] copy of the complementary triangle
|
||||
!!
|
||||
!
|
||||
interface
|
||||
subroutine psb_z_csr_triu(a,u,info,diag,imin,imax,&
|
||||
& jmin,jmax,rscale,cscale,l)
|
||||
import :: psb_ipk_, psb_z_csr_sparse_mat, psb_z_coo_sparse_mat, psb_dpk_
|
||||
class(psb_z_csr_sparse_mat), intent(in) :: a
|
||||
class(psb_z_coo_sparse_mat), intent(out) :: u
|
||||
integer(psb_ipk_),intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: diag,imin,imax,jmin,jmax
|
||||
logical, intent(in), optional :: rscale,cscale
|
||||
class(psb_z_coo_sparse_mat), optional, intent(out) :: l
|
||||
end subroutine psb_z_csr_triu
|
||||
end interface
|
||||
|
||||
|
||||
!> \memberof psb_z_csr_sparse_mat
|
||||
!! \see psb_z_base_mat_mod::psb_z_base_cp_to_coo
|
||||
|
||||
Reference in New Issue
Block a user