From 6eb0d2451b521ca7f2594305c67933684672efd7 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 12 Jul 2013 15:17:45 +0000 Subject: [PATCH] mld2p4-2: mlprec/mld_c_slu_solver.F90 mlprec/mld_d_slu_solver.F90 mlprec/mld_s_slu_solver.F90 mlprec/mld_z_slu_solver.F90 Clip off-diagonal elements for SLU local factorization. --- mlprec/mld_c_slu_solver.F90 | 3 +++ mlprec/mld_d_slu_solver.F90 | 3 +++ mlprec/mld_s_slu_solver.F90 | 3 +++ mlprec/mld_z_slu_solver.F90 | 3 +++ 4 files changed, 12 insertions(+) diff --git a/mlprec/mld_c_slu_solver.F90 b/mlprec/mld_c_slu_solver.F90 index 76774159..80c8b53b 100644 --- a/mlprec/mld_c_slu_solver.F90 +++ b/mlprec/mld_c_slu_solver.F90 @@ -259,6 +259,7 @@ contains ! Local variables type(psb_cspmat_type) :: atmp type(psb_c_csr_sparse_mat) :: acsr + type(psb_c_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level character(len=20) :: name='c_slu_solver_bld', ch_err @@ -283,6 +284,8 @@ contains call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) call atmp%mv_to(acsr) nrow_a = acsr%get_nrows() + call acsr%csclip(acoo,info,jmax=nrow_a) + call acsr%mv_from_coo(acoo,info) nztota = acsr%get_nzeros() ! Fix the entries to call C-base SuperLU acsr%ja(:) = acsr%ja(:) - 1 diff --git a/mlprec/mld_d_slu_solver.F90 b/mlprec/mld_d_slu_solver.F90 index b5e036f6..0c9b1dbb 100644 --- a/mlprec/mld_d_slu_solver.F90 +++ b/mlprec/mld_d_slu_solver.F90 @@ -259,6 +259,7 @@ contains ! Local variables type(psb_dspmat_type) :: atmp type(psb_d_csr_sparse_mat) :: acsr + type(psb_d_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level character(len=20) :: name='d_slu_solver_bld', ch_err @@ -283,6 +284,8 @@ contains call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) call atmp%mv_to(acsr) nrow_a = acsr%get_nrows() + call acsr%csclip(acoo,info,jmax=nrow_a) + call acsr%mv_from_coo(acoo,info) nztota = acsr%get_nzeros() ! Fix the entries to call C-base SuperLU acsr%ja(:) = acsr%ja(:) - 1 diff --git a/mlprec/mld_s_slu_solver.F90 b/mlprec/mld_s_slu_solver.F90 index e32ca169..21f7457a 100644 --- a/mlprec/mld_s_slu_solver.F90 +++ b/mlprec/mld_s_slu_solver.F90 @@ -259,6 +259,7 @@ contains ! Local variables type(psb_sspmat_type) :: atmp type(psb_s_csr_sparse_mat) :: acsr + type(psb_s_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level character(len=20) :: name='s_slu_solver_bld', ch_err @@ -283,6 +284,8 @@ contains call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) call atmp%mv_to(acsr) nrow_a = acsr%get_nrows() + call acsr%csclip(acoo,info,jmax=nrow_a) + call acsr%mv_from_coo(acoo,info) nztota = acsr%get_nzeros() ! Fix the entries to call C-base SuperLU acsr%ja(:) = acsr%ja(:) - 1 diff --git a/mlprec/mld_z_slu_solver.F90 b/mlprec/mld_z_slu_solver.F90 index c1e0e111..95f834ee 100644 --- a/mlprec/mld_z_slu_solver.F90 +++ b/mlprec/mld_z_slu_solver.F90 @@ -259,6 +259,7 @@ contains ! Local variables type(psb_zspmat_type) :: atmp type(psb_z_csr_sparse_mat) :: acsr + type(psb_z_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level character(len=20) :: name='z_slu_solver_bld', ch_err @@ -283,6 +284,8 @@ contains call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) call atmp%mv_to(acsr) nrow_a = acsr%get_nrows() + call acsr%csclip(acoo,info,jmax=nrow_a) + call acsr%mv_from_coo(acoo,info) nztota = acsr%get_nzeros() ! Fix the entries to call C-base SuperLU acsr%ja(:) = acsr%ja(:) - 1