mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-19 12:22:10 +00:00
Refactor assembly and cnv
This commit is contained in:
@@ -204,6 +204,7 @@ module psb_c_mat_mod
|
||||
procedure, pass(a) :: cscnv_ip => psb_c_cscnv_ip
|
||||
procedure, pass(a) :: cscnv_base => psb_c_cscnv_base
|
||||
generic, public :: cscnv => cscnv_np, cscnv_ip, cscnv_base
|
||||
procedure, pass(a) :: split_nd => psb_c_split_nd
|
||||
procedure, pass(a) :: clone => psb_cspmat_clone
|
||||
procedure, pass(a) :: move_alloc => psb_cspmat_type_move
|
||||
!
|
||||
@@ -842,6 +843,18 @@ module psb_c_mat_mod
|
||||
!
|
||||
!
|
||||
|
||||
interface
|
||||
subroutine psb_c_split_nd(a,n_rows,n_cols,info)
|
||||
import :: psb_ipk_, psb_lpk_, psb_cspmat_type, psb_spk_, psb_c_base_sparse_mat
|
||||
class(psb_cspmat_type), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(in) :: n_rows, n_cols
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
!!$ integer(psb_ipk_),optional, intent(in) :: dupl
|
||||
!!$ character(len=*), optional, intent(in) :: type
|
||||
!!$ class(psb_c_base_sparse_mat), intent(in), optional :: mold
|
||||
end subroutine psb_c_split_nd
|
||||
end interface
|
||||
|
||||
!
|
||||
! CSCNV: switches to a different internal derived type.
|
||||
! 3 versions: copying to target
|
||||
@@ -861,7 +874,6 @@ module psb_c_mat_mod
|
||||
end subroutine psb_c_cscnv
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_c_cscnv_ip(a,iinfo,type,mold,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_cspmat_type, psb_spk_, psb_c_base_sparse_mat
|
||||
@@ -873,7 +885,6 @@ module psb_c_mat_mod
|
||||
end subroutine psb_c_cscnv_ip
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_c_cscnv_base(a,b,info,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_cspmat_type, psb_spk_, psb_c_base_sparse_mat
|
||||
|
||||
@@ -204,6 +204,7 @@ module psb_d_mat_mod
|
||||
procedure, pass(a) :: cscnv_ip => psb_d_cscnv_ip
|
||||
procedure, pass(a) :: cscnv_base => psb_d_cscnv_base
|
||||
generic, public :: cscnv => cscnv_np, cscnv_ip, cscnv_base
|
||||
procedure, pass(a) :: split_nd => psb_d_split_nd
|
||||
procedure, pass(a) :: clone => psb_dspmat_clone
|
||||
procedure, pass(a) :: move_alloc => psb_dspmat_type_move
|
||||
!
|
||||
@@ -842,6 +843,18 @@ module psb_d_mat_mod
|
||||
!
|
||||
!
|
||||
|
||||
interface
|
||||
subroutine psb_d_split_nd(a,n_rows,n_cols,info)
|
||||
import :: psb_ipk_, psb_lpk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
|
||||
class(psb_dspmat_type), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(in) :: n_rows, n_cols
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
!!$ integer(psb_ipk_),optional, intent(in) :: dupl
|
||||
!!$ character(len=*), optional, intent(in) :: type
|
||||
!!$ class(psb_d_base_sparse_mat), intent(in), optional :: mold
|
||||
end subroutine psb_d_split_nd
|
||||
end interface
|
||||
|
||||
!
|
||||
! CSCNV: switches to a different internal derived type.
|
||||
! 3 versions: copying to target
|
||||
@@ -861,7 +874,6 @@ module psb_d_mat_mod
|
||||
end subroutine psb_d_cscnv
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_d_cscnv_ip(a,iinfo,type,mold,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
|
||||
@@ -873,7 +885,6 @@ module psb_d_mat_mod
|
||||
end subroutine psb_d_cscnv_ip
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_d_cscnv_base(a,b,info,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_dspmat_type, psb_dpk_, psb_d_base_sparse_mat
|
||||
|
||||
@@ -204,6 +204,7 @@ module psb_s_mat_mod
|
||||
procedure, pass(a) :: cscnv_ip => psb_s_cscnv_ip
|
||||
procedure, pass(a) :: cscnv_base => psb_s_cscnv_base
|
||||
generic, public :: cscnv => cscnv_np, cscnv_ip, cscnv_base
|
||||
procedure, pass(a) :: split_nd => psb_s_split_nd
|
||||
procedure, pass(a) :: clone => psb_sspmat_clone
|
||||
procedure, pass(a) :: move_alloc => psb_sspmat_type_move
|
||||
!
|
||||
@@ -842,6 +843,18 @@ module psb_s_mat_mod
|
||||
!
|
||||
!
|
||||
|
||||
interface
|
||||
subroutine psb_s_split_nd(a,n_rows,n_cols,info)
|
||||
import :: psb_ipk_, psb_lpk_, psb_sspmat_type, psb_spk_, psb_s_base_sparse_mat
|
||||
class(psb_sspmat_type), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(in) :: n_rows, n_cols
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
!!$ integer(psb_ipk_),optional, intent(in) :: dupl
|
||||
!!$ character(len=*), optional, intent(in) :: type
|
||||
!!$ class(psb_s_base_sparse_mat), intent(in), optional :: mold
|
||||
end subroutine psb_s_split_nd
|
||||
end interface
|
||||
|
||||
!
|
||||
! CSCNV: switches to a different internal derived type.
|
||||
! 3 versions: copying to target
|
||||
@@ -861,7 +874,6 @@ module psb_s_mat_mod
|
||||
end subroutine psb_s_cscnv
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_s_cscnv_ip(a,iinfo,type,mold,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_sspmat_type, psb_spk_, psb_s_base_sparse_mat
|
||||
@@ -873,7 +885,6 @@ module psb_s_mat_mod
|
||||
end subroutine psb_s_cscnv_ip
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_s_cscnv_base(a,b,info,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_sspmat_type, psb_spk_, psb_s_base_sparse_mat
|
||||
|
||||
@@ -204,6 +204,7 @@ module psb_z_mat_mod
|
||||
procedure, pass(a) :: cscnv_ip => psb_z_cscnv_ip
|
||||
procedure, pass(a) :: cscnv_base => psb_z_cscnv_base
|
||||
generic, public :: cscnv => cscnv_np, cscnv_ip, cscnv_base
|
||||
procedure, pass(a) :: split_nd => psb_z_split_nd
|
||||
procedure, pass(a) :: clone => psb_zspmat_clone
|
||||
procedure, pass(a) :: move_alloc => psb_zspmat_type_move
|
||||
!
|
||||
@@ -842,6 +843,18 @@ module psb_z_mat_mod
|
||||
!
|
||||
!
|
||||
|
||||
interface
|
||||
subroutine psb_z_split_nd(a,n_rows,n_cols,info)
|
||||
import :: psb_ipk_, psb_lpk_, psb_zspmat_type, psb_dpk_, psb_z_base_sparse_mat
|
||||
class(psb_zspmat_type), intent(inout) :: a
|
||||
integer(psb_ipk_), intent(in) :: n_rows, n_cols
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
!!$ integer(psb_ipk_),optional, intent(in) :: dupl
|
||||
!!$ character(len=*), optional, intent(in) :: type
|
||||
!!$ class(psb_z_base_sparse_mat), intent(in), optional :: mold
|
||||
end subroutine psb_z_split_nd
|
||||
end interface
|
||||
|
||||
!
|
||||
! CSCNV: switches to a different internal derived type.
|
||||
! 3 versions: copying to target
|
||||
@@ -861,7 +874,6 @@ module psb_z_mat_mod
|
||||
end subroutine psb_z_cscnv
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_z_cscnv_ip(a,iinfo,type,mold,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_zspmat_type, psb_dpk_, psb_z_base_sparse_mat
|
||||
@@ -873,7 +885,6 @@ module psb_z_mat_mod
|
||||
end subroutine psb_z_cscnv_ip
|
||||
end interface
|
||||
|
||||
|
||||
interface
|
||||
subroutine psb_z_cscnv_base(a,b,info,dupl)
|
||||
import :: psb_ipk_, psb_lpk_, psb_zspmat_type, psb_dpk_, psb_z_base_sparse_mat
|
||||
|
||||
Reference in New Issue
Block a user