Change and use #define with PSB_ and AMG_ prefixes

This commit is contained in:
sfilippone
2025-03-17 17:52:25 +01:00
parent ac7d7373e6
commit 6fa5b04387
106 changed files with 615 additions and 613 deletions
+1
View File
@@ -5,6 +5,7 @@ MODDIR=../../modules
HERE=..
FINCLUDES=$(FMFLAG)$(HERE) $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(PSBLAS_INCLUDES)
CINCLUDES=-I. -I.. -I$(PSBLAS_INCDIR)
@@ -72,7 +72,7 @@ subroutine amg_c_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_c_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
implicit none
@@ -172,7 +172,7 @@ subroutine amg_c_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -71,7 +71,7 @@ subroutine amg_c_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_c_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
@@ -211,7 +211,7 @@ subroutine amg_c_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -98,7 +98,7 @@ subroutine amg_d_parmatch_aggregator_inner_mat_asb(ag,parms,a,desc_a,&
& ac,desc_ac, op_prol,op_restr,info)
use psb_base_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_aggregator_inner_mat_asb
@@ -133,7 +133,7 @@ subroutine amg_d_parmatch_aggregator_inner_mat_asb(ag,parms,a,desc_a,&
ictxt = desc_a%get_context()
call psb_info(ictxt,me,np)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
if (debug) write(0,*) me,' ',trim(name),' Start:',&
& allocated(ag%ac),allocated(ag%desc_ac), allocated(ag%prol),allocated(ag%restr)
@@ -98,7 +98,7 @@ subroutine amg_d_parmatch_aggregator_mat_asb(ag,parms,a,desc_a,&
& ac,desc_ac, op_prol,op_restr,info)
use psb_base_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_aggregator_mat_asb
@@ -136,7 +136,7 @@ subroutine amg_d_parmatch_aggregator_mat_asb(ag,parms,a,desc_a,&
end if
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
if (debug) write(0,*) me,' ',trim(name),' Start:',&
& allocated(ag%ac),allocated(ag%desc_ac), allocated(ag%prol),allocated(ag%restr)
@@ -135,7 +135,7 @@ subroutine amg_d_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
use psb_base_mod
use amg_d_inner_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_aggregator_mat_bld
@@ -176,7 +176,7 @@ subroutine amg_d_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
! algorithm specified by
!
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call clean_shortcuts(ag)
!
! When requesting smoothed aggregation we cannot use the
@@ -219,7 +219,7 @@ subroutine amg_d_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
9999 call psb_error_handler(err_act)
return
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
contains
subroutine clean_shortcuts(ag)
@@ -47,7 +47,7 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
use psb_base_mod
use amg_base_prec_type
use amg_d_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_aggregator_build_tprol
@@ -120,7 +120,7 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',dzero,is_legal_d_aggr_thrs)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
match_algorithm = ag%matching_alg
n_sweeps = ag%n_sweeps
@@ -110,7 +110,7 @@ subroutine amg_d_parmatch_smth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_d_inner_mod
use amg_d_base_aggregator_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_smth_bld
@@ -194,7 +194,7 @@ subroutine amg_d_parmatch_smth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
if (do_timings) call psb_tic(idx_phase1)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
naggr = nlaggr(me+1)
ntaggr = sum(nlaggr)
@@ -99,7 +99,7 @@ subroutine amg_d_parmatch_spmm_bld(a,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_d_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_spmm_bld
@@ -140,7 +140,7 @@ subroutine amg_d_parmatch_spmm_bld(a,desc_a,ilaggr,nlaggr,parms,&
debug_unit = psb_get_debug_unit()
debug_level = psb_get_debug_level()
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call a%cp_to(acsr)
call amg_d_parmatch_spmm_bld_inner(acsr,desc_a,ilaggr,nlaggr,parms,&
@@ -99,7 +99,7 @@ subroutine amg_d_parmatch_spmm_bld_inner(a_csr,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_d_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_spmm_bld_inner
@@ -163,7 +163,7 @@ subroutine amg_d_parmatch_spmm_bld_inner(a_csr,desc_a,ilaggr,nlaggr,parms,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
!
! Here T_PROL should be arriving with GLOBAL indices on the cols
! and LOCAL indices on the rows.
@@ -99,7 +99,7 @@ subroutine amg_d_parmatch_spmm_bld_ov(a,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_d_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_spmm_bld_ov
@@ -141,7 +141,7 @@ subroutine amg_d_parmatch_spmm_bld_ov(a,desc_a,ilaggr,nlaggr,parms,&
debug_unit = psb_get_debug_unit()
debug_level = psb_get_debug_level()
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call a%mv_to(acsr)
@@ -109,7 +109,7 @@ subroutine amg_d_parmatch_unsmth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_d_inner_mod
use amg_d_base_aggregator_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#else
use amg_d_parmatch_aggregator_mod, amg_protect_name => amg_d_parmatch_unsmth_bld
@@ -168,7 +168,7 @@ subroutine amg_d_parmatch_unsmth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
goto 9999
end if
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
nglob = desc_a%get_global_rows()
nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
@@ -72,7 +72,7 @@ subroutine amg_d_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_d_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
implicit none
@@ -172,7 +172,7 @@ subroutine amg_d_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -71,7 +71,7 @@ subroutine amg_d_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_d_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
@@ -211,7 +211,7 @@ subroutine amg_d_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -98,7 +98,7 @@ subroutine amg_s_parmatch_aggregator_inner_mat_asb(ag,parms,a,desc_a,&
& ac,desc_ac, op_prol,op_restr,info)
use psb_base_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_aggregator_inner_mat_asb
@@ -133,7 +133,7 @@ subroutine amg_s_parmatch_aggregator_inner_mat_asb(ag,parms,a,desc_a,&
ictxt = desc_a%get_context()
call psb_info(ictxt,me,np)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
if (debug) write(0,*) me,' ',trim(name),' Start:',&
& allocated(ag%ac),allocated(ag%desc_ac), allocated(ag%prol),allocated(ag%restr)
@@ -98,7 +98,7 @@ subroutine amg_s_parmatch_aggregator_mat_asb(ag,parms,a,desc_a,&
& ac,desc_ac, op_prol,op_restr,info)
use psb_base_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_aggregator_mat_asb
@@ -136,7 +136,7 @@ subroutine amg_s_parmatch_aggregator_mat_asb(ag,parms,a,desc_a,&
end if
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
if (debug) write(0,*) me,' ',trim(name),' Start:',&
& allocated(ag%ac),allocated(ag%desc_ac), allocated(ag%prol),allocated(ag%restr)
@@ -135,7 +135,7 @@ subroutine amg_s_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
use psb_base_mod
use amg_s_inner_mod
use amg_base_prec_type
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_aggregator_mat_bld
@@ -176,7 +176,7 @@ subroutine amg_s_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
! algorithm specified by
!
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call clean_shortcuts(ag)
!
! When requesting smoothed aggregation we cannot use the
@@ -219,7 +219,7 @@ subroutine amg_s_parmatch_aggregator_mat_bld(ag,parms,a,desc_a,ilaggr,nlaggr,&
9999 call psb_error_handler(err_act)
return
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
contains
subroutine clean_shortcuts(ag)
@@ -47,7 +47,7 @@ subroutine amg_s_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
use psb_base_mod
use amg_base_prec_type
use amg_s_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_aggregator_build_tprol
@@ -120,7 +120,7 @@ subroutine amg_s_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
& amg_aggr_ord_nat_,is_legal_ml_aggr_ord)
call amg_check_def(parms%aggr_thresh,'Aggr_Thresh',szero,is_legal_s_aggr_thrs)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
match_algorithm = ag%matching_alg
n_sweeps = ag%n_sweeps
@@ -110,7 +110,7 @@ subroutine amg_s_parmatch_smth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_s_inner_mod
use amg_s_base_aggregator_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_smth_bld
@@ -194,7 +194,7 @@ subroutine amg_s_parmatch_smth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
if (do_timings) call psb_tic(idx_phase1)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
naggr = nlaggr(me+1)
ntaggr = sum(nlaggr)
@@ -99,7 +99,7 @@ subroutine amg_s_parmatch_spmm_bld(a,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_s_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_spmm_bld
@@ -140,7 +140,7 @@ subroutine amg_s_parmatch_spmm_bld(a,desc_a,ilaggr,nlaggr,parms,&
debug_unit = psb_get_debug_unit()
debug_level = psb_get_debug_level()
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call a%cp_to(acsr)
call amg_s_parmatch_spmm_bld_inner(acsr,desc_a,ilaggr,nlaggr,parms,&
@@ -99,7 +99,7 @@ subroutine amg_s_parmatch_spmm_bld_inner(a_csr,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_s_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_spmm_bld_inner
@@ -163,7 +163,7 @@ subroutine amg_s_parmatch_spmm_bld_inner(a_csr,desc_a,ilaggr,nlaggr,parms,&
naggrm1 = sum(nlaggr(1:me))
naggrp1 = sum(nlaggr(1:me+1))
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
!
! Here T_PROL should be arriving with GLOBAL indices on the cols
! and LOCAL indices on the rows.
@@ -99,7 +99,7 @@ subroutine amg_s_parmatch_spmm_bld_ov(a,desc_a,ilaggr,nlaggr,parms,&
& ac,desc_ac,op_prol,op_restr,t_prol,info)
use psb_base_mod
use amg_s_inner_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_spmm_bld_ov
@@ -141,7 +141,7 @@ subroutine amg_s_parmatch_spmm_bld_ov(a,desc_a,ilaggr,nlaggr,parms,&
debug_unit = psb_get_debug_unit()
debug_level = psb_get_debug_level()
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call a%mv_to(acsr)
@@ -109,7 +109,7 @@ subroutine amg_s_parmatch_unsmth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
use amg_base_prec_type
use amg_s_inner_mod
use amg_s_base_aggregator_mod
#if defined(SERIAL_MPI)
#if defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#else
use amg_s_parmatch_aggregator_mod, amg_protect_name => amg_s_parmatch_unsmth_bld
@@ -168,7 +168,7 @@ subroutine amg_s_parmatch_unsmth_bld(dol1smoothing,ag,a,desc_a,ilaggr,nlaggr,&
goto 9999
end if
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
nglob = desc_a%get_global_rows()
nrow = desc_a%get_local_rows()
ncol = desc_a%get_local_cols()
@@ -72,7 +72,7 @@ subroutine amg_s_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_s_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
implicit none
@@ -172,7 +172,7 @@ subroutine amg_s_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -71,7 +71,7 @@ subroutine amg_s_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_s_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
@@ -211,7 +211,7 @@ subroutine amg_s_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -72,7 +72,7 @@ subroutine amg_z_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_z_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
implicit none
@@ -172,7 +172,7 @@ subroutine amg_z_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
@@ -71,7 +71,7 @@ subroutine amg_z_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
use psb_base_mod
use amg_base_prec_type
use amg_z_inner_mod
#if defined(OPENMP)
#if defined(PSB_OPENMP)
use omp_lib
#endif
@@ -211,7 +211,7 @@ subroutine amg_z_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in
! Phase one: Start with disjoint groups.
!
naggr = 0
#if defined(OPENMP)
#if defined(PSB_OPENMP)
block
integer(psb_ipk_), allocatable :: bnds(:), locnaggr(:)
integer(psb_ipk_) :: myth,nths, kk
View File
View File
View File
+4 -4
View File
@@ -127,9 +127,9 @@ subroutine amg_c_extprol_bld(a,desc_a,p,prolv,restrv,info,amold,vmold,imold)
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Entering '
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
@@ -373,9 +373,9 @@ contains
info = psb_success_
ctxt = desc_a%get_context()
call psb_info(ctxt,me,np)
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
allocate(nlaggr(np),ilaggr(1))
+26 -26
View File
@@ -90,10 +90,10 @@ subroutine amg_ccprecseti(p,what,val,info,ilev,ilmax,pos,idx)
use amg_c_ainv_solver
use amg_c_invk_solver
use amg_c_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_c_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_c_mumps_solver
#endif
@@ -329,10 +329,10 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
use amg_c_ainv_solver
use amg_c_invk_solver
use amg_c_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_c_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_c_mumps_solver
#endif
use amg_c_krm_solver, only : amg_c_krm_solver_type
@@ -480,9 +480,9 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(string))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -494,9 +494,9 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -506,14 +506,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -550,7 +550,7 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -566,14 +566,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -590,14 +590,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -709,9 +709,9 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(trim(string)))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -722,9 +722,9 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -734,14 +734,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -778,7 +778,7 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -794,14 +794,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -818,14 +818,14 @@ subroutine amg_ccprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
+3 -3
View File
@@ -99,7 +99,7 @@ subroutine amg_cprecinit(ctxt,prec,ptype,info)
use amg_c_ilu_solver
use amg_c_gs_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_c_slu_solver
#endif
@@ -230,9 +230,9 @@ subroutine amg_cprecinit(ctxt,prec,ptype,info)
end do
call prec%set('ML_CYCLE','VCYCLE',info)
call prec%set('SMOOTHER_TYPE','FBGS',info)
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call prec%set('COARSE_SOLVE','MUMPS',info)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call prec%set('COARSE_SOLVE','SLU',info)
#else
call prec%set('COARSE_SOLVE','ILU',info)
+9 -9
View File
@@ -88,8 +88,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* October 15, 2003
*
*/
#ifdef Have_SLU_
#include "amg_config.h"
#ifdef AMG_HAVE_SLU
#include "slu_cdefs.h"
#define HANDLE_SIZE 8
@@ -111,7 +111,7 @@ typedef struct {
int amg_cslu_fact(int n, int nnz,
#ifdef HAVE_SLU_
#ifdef AMG_HAVE_SLU
complex *values,
#else
void *values,
@@ -128,7 +128,7 @@ int amg_cslu_fact(int n, int nnz,
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix A, AC;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -177,10 +177,10 @@ int amg_cslu_fact(int n, int nnz,
panel_size = sp_ienv(1);
relax = sp_ienv(2);
#if defined(SLU_VERSION_5)
#if defined(AMG_SLU_VERSION_5)
cgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info);
#elif defined(SLU_VERSION_4)
#elif defined(AMG_SLU_VERSION_4)
cgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &stat, &info);
#else
@@ -229,7 +229,7 @@ int amg_cslu_fact(int n, int nnz,
int amg_cslu_solve(int itrans, int n, int nrhs,
#ifdef HAVE_SLU_
#ifdef AMG_HAVE_SLU
complex *b,
#else
void *b,
@@ -242,7 +242,7 @@ int amg_cslu_solve(int itrans, int n, int nrhs,
*
*/
int info;
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix B;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -304,7 +304,7 @@ int amg_cslu_free(void *f_factors)
* free all storage in the end
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
factors_t *LUfactors;
/* Free the LU factors in the factors handle */
+4 -4
View File
@@ -127,9 +127,9 @@ subroutine amg_d_extprol_bld(a,desc_a,p,prolv,restrv,info,amold,vmold,imold)
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Entering '
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
@@ -373,9 +373,9 @@ contains
info = psb_success_
ctxt = desc_a%get_context()
call psb_info(ctxt,me,np)
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
allocate(nlaggr(np),ilaggr(1))
+40 -40
View File
@@ -90,16 +90,16 @@ subroutine amg_dcprecseti(p,what,val,info,ilev,ilmax,pos,idx)
use amg_d_ainv_solver
use amg_d_invk_solver
use amg_d_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_d_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_d_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_d_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_d_mumps_solver
#endif
@@ -335,16 +335,16 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
use amg_d_ainv_solver
use amg_d_invk_solver
use amg_d_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_d_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_d_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_d_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_d_mumps_solver
#endif
use amg_d_krm_solver, only : amg_d_krm_solver_type
@@ -492,11 +492,11 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(string))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -508,11 +508,11 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -522,14 +522,14 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -566,7 +566,7 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -582,21 +582,21 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -613,28 +613,28 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_sludist_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#elif defined(HAVE_UMF_)
#elif defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -746,11 +746,11 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(trim(string)))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -761,11 +761,11 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -775,14 +775,14 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -819,7 +819,7 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -835,21 +835,21 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -866,28 +866,28 @@ subroutine amg_dcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_sludist_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#elif defined(HAVE_UMF_)
#elif defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
+5 -5
View File
@@ -100,10 +100,10 @@ subroutine amg_dprecinit(ctxt,prec,ptype,info)
use amg_d_gs_solver
use amg_d_poly_smoother
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_d_umf_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_d_slu_solver
#endif
@@ -242,11 +242,11 @@ subroutine amg_dprecinit(ctxt,prec,ptype,info)
end do
call prec%set('ML_CYCLE','VCYCLE',info)
call prec%set('SMOOTHER_TYPE','FBGS',info)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call prec%set('COARSE_SOLVE','UMF',info)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call prec%set('COARSE_SOLVE','MUMPS',info)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call prec%set('COARSE_SOLVE','SLU',info)
#else
call prec%set('COARSE_SOLVE','ILU',info)
+7 -7
View File
@@ -87,8 +87,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* October 15, 2003
*
*/
#ifdef Have_SLU_
#include "amg_config.h"
#ifdef AMG_HAVE_SLU
#include "slu_ddefs.h"
#define HANDLE_SIZE 8
@@ -122,7 +122,7 @@ int amg_dslu_fact(int n, int nnz, double *values,
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix A, AC;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -171,10 +171,10 @@ int amg_dslu_fact(int n, int nnz, double *values,
panel_size = sp_ienv(1);
relax = sp_ienv(2);
#if defined(SLU_VERSION_5)
#if defined(AMG_SLU_VERSION_5)
dgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info);
#elif defined(SLU_VERSION_4)
#elif defined(AMG_SLU_VERSION_4)
dgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &stat, &info);
#else
@@ -231,7 +231,7 @@ int amg_dslu_solve(int itrans, int n, int nrhs, double *b, int ldb,
*
*/
int info;
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix B;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -285,7 +285,7 @@ int amg_dslu_free(void *f_factors)
* free all storage in the end
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
factors_t *LUfactors;
/* Free the LU factors in the factors handle */
+20 -19
View File
@@ -88,13 +88,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef Have_SLUDist_
#include "amg_config.h"
#ifdef AMG_HAVE_SLUDIST
#include <math.h>
#include "superlu_ddefs.h"
#define HANDLE_SIZE 8
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
typedef struct {
SuperMatrix *A;
dLUstruct_t *LUstruct;
@@ -131,11 +132,11 @@ int amg_dsludist_fact(int n, int nl, int nnzl, int ffstr,
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
NRformat_loc *Astore;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
dScalePermstruct_t *ScalePermstruct;
dLUstruct_t *LUstruct;
dSOLVEstruct_t SOLVEstruct;
@@ -148,9 +149,9 @@ int amg_dsludist_fact(int n, int nl, int nnzl, int ffstr,
int i, panel_size, permc_spec, relax, info;
trans_t trans;
double drop_tol = 0.0, b[1], berr[1];
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -174,7 +175,7 @@ int amg_dsludist_fact(int n, int nl, int nnzl, int ffstr,
SLU_NR_loc, SLU_D, SLU_GE);
/* Initialize ScalePermstruct and LUstruct. */
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
ScalePermstruct = (dScalePermstruct_t *) SUPERLU_MALLOC(sizeof(dScalePermstruct_t));
LUstruct = (dLUstruct_t *) SUPERLU_MALLOC(sizeof(dLUstruct_t));
dScalePermstructInit(n,n, ScalePermstruct);
@@ -183,11 +184,11 @@ int amg_dsludist_fact(int n, int nl, int nnzl, int ffstr,
LUstruct = (LUstruct_t *) SUPERLU_MALLOC(sizeof(LUstruct_t));
ScalePermstructInit(n,n, ScalePermstruct);
#endif
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
dLUstructInit(n, LUstruct);
#elif (SLUD_VERSION_>=40)
#elif (AMG_SLUD_VERSION>=40)
LUstructInit(n, LUstruct);
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
LUstructInit(n,n, LUstruct);
#else
choke_on_me;
@@ -243,9 +244,9 @@ int amg_dsludist_solve(int itrans, int n, int nrhs,
* performs triangular solve
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
dScalePermstruct_t *ScalePermstruct;
dLUstruct_t *LUstruct;
dSOLVEstruct_t SOLVEstruct;
@@ -259,9 +260,9 @@ int amg_dsludist_solve(int itrans, int n, int nrhs,
trans_t trans;
double drop_tol = 0.0;
double *berr;
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -329,9 +330,9 @@ int amg_dsludist_free(void *f_factors)
* free all storage in the end
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
dScalePermstruct_t *ScalePermstruct;
dLUstruct_t *LUstruct;
dSOLVEstruct_t SOLVEstruct;
@@ -345,9 +346,9 @@ int amg_dsludist_free(void *f_factors)
trans_t trans;
double drop_tol = 0.0;
double *berr;
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -368,7 +369,7 @@ int amg_dsludist_free(void *f_factors)
// we either have a leak or a segfault here.
// To be investigated further.
//Destroy_CompRowLoc_Matrix_dist(A);
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
dScalePermstructFree(ScalePermstruct);
dLUstructFree(LUstruct);
#else
+5 -6
View File
@@ -73,10 +73,9 @@ Availability:
http://www.cise.ufl.edu/research/sparse/umfpack
*/
#include <stdio.h>
#ifdef Have_UMF_
#include "amg_config.h"
#ifdef AMG_HAVE_UMF
#include "umfpack.h"
#endif
@@ -88,7 +87,7 @@ int amg_dumf_fact(int n, int nnz,
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
double Info [UMFPACK_INFO], Control [UMFPACK_CONTROL];
void *Symbolic, *Numeric ;
int i, info;
@@ -146,7 +145,7 @@ int amg_dumf_solve(int itrans, int n,
void *numptr)
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
double Info [UMFPACK_INFO], Control [UMFPACK_CONTROL];
void *Symbolic, *Numeric ;
int i,trans, info;
@@ -178,7 +177,7 @@ int amg_dumf_solve(int itrans, int n,
int amg_dumf_free(void *symptr, void *numptr)
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
void *Symbolic, *Numeric ;
Symbolic = symptr;
Numeric = numptr;
+4 -4
View File
@@ -127,9 +127,9 @@ subroutine amg_s_extprol_bld(a,desc_a,p,prolv,restrv,info,amold,vmold,imold)
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Entering '
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
@@ -373,9 +373,9 @@ contains
info = psb_success_
ctxt = desc_a%get_context()
call psb_info(ctxt,me,np)
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
allocate(nlaggr(np),ilaggr(1))
+26 -26
View File
@@ -90,10 +90,10 @@ subroutine amg_scprecseti(p,what,val,info,ilev,ilmax,pos,idx)
use amg_s_ainv_solver
use amg_s_invk_solver
use amg_s_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_s_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_s_mumps_solver
#endif
@@ -329,10 +329,10 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
use amg_s_ainv_solver
use amg_s_invk_solver
use amg_s_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_s_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_s_mumps_solver
#endif
use amg_s_krm_solver, only : amg_s_krm_solver_type
@@ -480,9 +480,9 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(string))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -494,9 +494,9 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -506,14 +506,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -550,7 +550,7 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -566,14 +566,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -590,14 +590,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -709,9 +709,9 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(trim(string)))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -722,9 +722,9 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -734,14 +734,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -778,7 +778,7 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -794,14 +794,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -818,14 +818,14 @@ subroutine amg_scprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
+3 -3
View File
@@ -100,7 +100,7 @@ subroutine amg_sprecinit(ctxt,prec,ptype,info)
use amg_s_gs_solver
use amg_s_poly_smoother
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_s_slu_solver
#endif
@@ -239,9 +239,9 @@ subroutine amg_sprecinit(ctxt,prec,ptype,info)
end do
call prec%set('ML_CYCLE','VCYCLE',info)
call prec%set('SMOOTHER_TYPE','FBGS',info)
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call prec%set('COARSE_SOLVE','MUMPS',info)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call prec%set('COARSE_SOLVE','SLU',info)
#else
call prec%set('COARSE_SOLVE','ILU',info)
+7 -6
View File
@@ -88,7 +88,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef Have_SLU_
#include "amg_config.h"
#ifdef AMG_HAVE_SLU
#include "slu_sdefs.h"
#define HANDLE_SIZE 8
@@ -122,7 +123,7 @@ int amg_sslu_fact(int n, int nnz, float *values,
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix A, AC;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -171,10 +172,10 @@ int amg_sslu_fact(int n, int nnz, float *values,
panel_size = sp_ienv(1);
relax = sp_ienv(2);
#if defined(SLU_VERSION_5)
#if defined(AMG_SLU_VERSION_5)
sgstrf(&options, &AC, relax, panel_size,
etree, NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info);
#elif defined(SLU_VERSION_4)
#elif defined(AMG_SLU_VERSION_4)
sgstrf(&options, &AC, relax, panel_size,
etree, NULL, 0, perm_c, perm_r, L, U, &stat, &info);
#else
@@ -231,7 +232,7 @@ int amg_sslu_solve(int itrans, int n, int nrhs, float *b, int ldb,
*
*/
int info;
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix B;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -285,7 +286,7 @@ int amg_sslu_free(void *f_factors)
* free all storage in the end
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
factors_t *LUfactors;
/* Free the LU factors in the factors handle */
+4 -4
View File
@@ -127,9 +127,9 @@ subroutine amg_z_extprol_bld(a,desc_a,p,prolv,restrv,info,amold,vmold,imold)
if (debug_level >= psb_debug_outer_) &
& write(debug_unit,*) me,' ',trim(name),&
& 'Entering '
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
@@ -373,9 +373,9 @@ contains
info = psb_success_
ctxt = desc_a%get_context()
call psb_info(ctxt,me,np)
#if defined(LPK8)
#if defined(PSB_LPK8)
info=psb_err_internal_error_
call psb_errpush(info,name,a_err='Need fix for LPK8')
call psb_errpush(info,name,a_err='Need fix for PSB_LPK8')
goto 9999
#else
allocate(nlaggr(np),ilaggr(1))
+40 -40
View File
@@ -90,16 +90,16 @@ subroutine amg_zcprecseti(p,what,val,info,ilev,ilmax,pos,idx)
use amg_z_ainv_solver
use amg_z_invk_solver
use amg_z_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_z_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_z_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_z_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_z_mumps_solver
#endif
@@ -335,16 +335,16 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
use amg_z_ainv_solver
use amg_z_invk_solver
use amg_z_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_z_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_z_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_z_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_z_mumps_solver
#endif
use amg_z_krm_solver, only : amg_z_krm_solver_type
@@ -492,11 +492,11 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(string))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -508,11 +508,11 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -522,14 +522,14 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -566,7 +566,7 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -582,21 +582,21 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -613,28 +613,28 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_sludist_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#elif defined(HAVE_UMF_)
#elif defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -746,11 +746,11 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
select case (psb_toupper(trim(string)))
case('BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -761,11 +761,11 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('L1-BJAC')
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_l1_bjac_,info,pos=pos)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
#else
call p%precv(nlev_)%set('SUB_SOLVE',amg_ilu_n_,info,pos=pos)
@@ -775,14 +775,14 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info)
case('SLU')
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -819,7 +819,7 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
case('MUMPS')
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -835,21 +835,21 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#endif
case('UMF')
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
@@ -866,28 +866,28 @@ subroutine amg_zcprecsetc(p,what,string,info,ilev,ilmax,pos,idx)
#endif
case('SLUDIST')
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_sludist_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_distr_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_distr_mat_,info,pos=pos)
#elif defined(HAVE_UMF_)
#elif defined(PSB_HAVE_UMF)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_umf_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_slu_,info,pos=pos)
if (hier_asb) &
& call amg_warn_coarse_mat(p%precv(nlev_)%parms%get_coarse_mat(),&
& amg_repl_mat_)
call p%precv(nlev_)%set('COARSE_MAT',amg_repl_mat_,info,pos=pos)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call p%precv(nlev_)%set('SMOOTHER_TYPE',amg_bjac_,info,pos=pos)
call p%precv(nlev_)%set('SUB_SOLVE',amg_mumps_,info,pos=pos)
if (hier_asb) &
+5 -5
View File
@@ -99,10 +99,10 @@ subroutine amg_zprecinit(ctxt,prec,ptype,info)
use amg_z_ilu_solver
use amg_z_gs_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_z_umf_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_z_slu_solver
#endif
@@ -233,11 +233,11 @@ subroutine amg_zprecinit(ctxt,prec,ptype,info)
end do
call prec%set('ML_CYCLE','VCYCLE',info)
call prec%set('SMOOTHER_TYPE','FBGS',info)
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
call prec%set('COARSE_SOLVE','UMF',info)
#elif defined(HAVE_MUMPS_)
#elif defined(PSB_HAVE_MUMPS)
call prec%set('COARSE_SOLVE','MUMPS',info)
#elif defined(HAVE_SLU_)
#elif defined(PSB_HAVE_SLU)
call prec%set('COARSE_SOLVE','SLU',info)
#else
call prec%set('COARSE_SOLVE','ILU',info)
+7 -7
View File
@@ -87,8 +87,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* October 15, 2003
*
*/
#ifdef Have_SLU_
#include "amg_config.h"
#ifdef AMG_HAVE_SLU
#include "slu_zdefs.h"
#define HANDLE_SIZE 8
@@ -109,7 +109,7 @@ typedef struct {
int amg_zslu_fact(int n, int nnz,
#ifdef HAVE_SLU_
#ifdef AMG_HAVE_SLU
doublecomplex *values,
#else
void *values,
@@ -127,7 +127,7 @@ int amg_zslu_fact(int n, int nnz,
*
*/
#ifdef Have_SLU_
#ifdef AMG_HAVE_SLU
SuperMatrix A, AC;
SuperMatrix *L, *U;
int *perm_r; /* row permutations from partial pivoting */
@@ -176,10 +176,10 @@ int amg_zslu_fact(int n, int nnz,
panel_size = sp_ienv(1);
relax = sp_ienv(2);
#if defined(SLU_VERSION_5)
#if defined(AMG_SLU_VERSION_5)
zgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info);
#elif defined(SLU_VERSION_4)
#elif defined(AMG_SLU_VERSION_4)
zgstrf(&options, &AC, relax, panel_size, etree,
NULL, 0, perm_c, perm_r, L, U, &stat, &info);
#else
@@ -228,7 +228,7 @@ int amg_zslu_fact(int n, int nnz,
int amg_zslu_solve(int itrans, int n, int nrhs,
#ifdef HAVE_SLU_
#ifdef AMG_HAVE_SLU
doublecomplex *b,
#else
void *b,
+22 -21
View File
@@ -88,13 +88,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifdef Have_SLUDist_
#include "amg_config.h"
#ifdef AMG_HAVE_SLUDIST
#include <math.h>
#include "superlu_zdefs.h"
#define HANDLE_SIZE 8
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
typedef struct {
SuperMatrix *A;
zLUstruct_t *LUstruct;
@@ -118,7 +119,7 @@ typedef struct {
int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
doublecomplex *values, int *rowptr, int *colind,
void **f_factors,
#else
@@ -138,11 +139,11 @@ int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
NRformat_loc *Astore;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
zScalePermstruct_t *ScalePermstruct;
zLUstruct_t *LUstruct;
zSOLVEstruct_t SOLVEstruct;
@@ -155,9 +156,9 @@ int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
int i, panel_size, permc_spec, relax, info;
trans_t trans;
double drop_tol = 0.0,berr[1];
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -181,7 +182,7 @@ int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
SLU_NR_loc, SLU_Z, SLU_GE);
/* Initialize ScalePermstruct and LUstruct. */
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
ScalePermstruct = (zScalePermstruct_t *) SUPERLU_MALLOC(sizeof(zScalePermstruct_t));
LUstruct = (zLUstruct_t *) SUPERLU_MALLOC(sizeof(zLUstruct_t));
zScalePermstructInit(n,n, ScalePermstruct);
@@ -190,11 +191,11 @@ int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
LUstruct = (LUstruct_t *) SUPERLU_MALLOC(sizeof(LUstruct_t));
ScalePermstructInit(n,n, ScalePermstruct);
#endif
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
zLUstructInit(n, LUstruct);
#elif (SLUD_VERSION_>=40)
#elif (AMG_SLUD_VERSION>=40)
LUstructInit(n, LUstruct);
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
LUstructInit(n,n, LUstruct);
#else
choke_on_me;
@@ -242,7 +243,7 @@ int amg_zsludist_fact(int n, int nl, int nnzl, int ffstr,
int amg_zsludist_solve(int itrans, int n, int nrhs,
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
doublecomplex *b,
#else
void *b,
@@ -255,9 +256,9 @@ int amg_zsludist_solve(int itrans, int n, int nrhs,
* performs triangular solve
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
zScalePermstruct_t *ScalePermstruct;
zLUstruct_t *LUstruct;
zSOLVEstruct_t SOLVEstruct;
@@ -271,9 +272,9 @@ int amg_zsludist_solve(int itrans, int n, int nrhs,
trans_t trans;
double drop_tol = 0.0;
double *berr;
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -341,9 +342,9 @@ int amg_zsludist_free(void *f_factors)
* free all storage in the end
*
*/
#ifdef Have_SLUDist_
#ifdef AMG_HAVE_SLUDIST
SuperMatrix *A;
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
zScalePermstruct_t *ScalePermstruct;
zLUstruct_t *LUstruct;
zSOLVEstruct_t SOLVEstruct;
@@ -357,9 +358,9 @@ int amg_zsludist_free(void *f_factors)
trans_t trans;
double drop_tol = 0.0;
double *berr;
#if (SLUD_VERSION_>=50)
#if (AMG_SLUD_VERSION>=50)
superlu_dist_options_t options;
#elif (SLUD_VERSION_>=30)
#elif (AMG_SLUD_VERSION>=30)
superlu_options_t options;
#else
choke_on_me;
@@ -380,7 +381,7 @@ int amg_zsludist_free(void *f_factors)
// we either have a leak or a segfault here.
// To be investigated further.
//Destroy_CompRowLoc_Matrix_dist(A);
#if (SLUD_VERSION_>=63)
#if (AMG_SLUD_VERSION>=63)
zScalePermstructFree(ScalePermstruct);
zLUstructFree(LUstruct);
#else
+5 -6
View File
@@ -73,10 +73,9 @@ Availability:
http://www.cise.ufl.edu/research/sparse/umfpack
*/
#include <stdio.h>
#ifdef Have_UMF_
#include "amg_config.h"
#ifdef AMG_HAVE_UMF
#include "umfpack.h"
#endif
@@ -89,7 +88,7 @@ int amg_zumf_fact(int n, int nnz,
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
double Info [UMFPACK_INFO], Control [UMFPACK_CONTROL];
void *Symbolic, *Numeric ;
int i, info;
@@ -147,7 +146,7 @@ int amg_zumf_solve(int itrans, int n,
void *numptr)
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
double Info [UMFPACK_INFO], Control [UMFPACK_CONTROL];
void *Symbolic, *Numeric ;
int i,trans, info;
@@ -179,7 +178,7 @@ int amg_zumf_solve(int itrans, int n,
int amg_zumf_free(void *symptr, void *numptr)
{
#ifdef Have_UMF_
#ifdef AMG_HAVE_UMF
void *Symbolic, *Numeric ;
Symbolic = symptr;
Numeric = numptr;
@@ -53,10 +53,10 @@ subroutine amg_c_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_c_ainv_solver
use amg_c_invk_solver
use amg_c_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_c_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_c_mumps_solver
#endif
@@ -88,10 +88,10 @@ subroutine amg_c_base_onelev_csetc(lv,what,val,info,pos,idx)
type(amg_c_ainv_solver_type) :: amg_c_ainv_solver_mold
type(amg_c_invk_solver_type) :: amg_c_invk_solver_mold
type(amg_c_invt_solver_type) :: amg_c_invt_solver_mold
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_c_slu_solver_type) :: amg_c_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_c_mumps_solver_type) :: amg_c_mumps_solver_mold
#endif
@@ -216,11 +216,11 @@ subroutine amg_c_base_onelev_csetc(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case ('SLU')
call lv%set(amg_c_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case ('MUMPS')
call lv%set(amg_c_mumps_solver_mold,info,pos=pos)
#endif
@@ -252,14 +252,14 @@ subroutine amg_c_base_onelev_csetc(lv,what,val,info,pos,idx)
allocate(amg_c_dec_aggregator_type :: lv%aggr, stat=info)
case('SYMDEC')
allocate(amg_c_symdec_aggregator_type :: lv%aggr, stat=info)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
#endif
case default
info = psb_err_internal_error_
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call psb_errpush(info,name,a_err='Unsupported PAR_AGGR_ALG')
#else
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (SERIAL_MPI on)')
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (PSB_SERIAL_MPI on)')
#endif
goto 9999
end select
@@ -49,10 +49,10 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
use amg_c_ilu_solver
use amg_c_id_solver
use amg_c_gs_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_c_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_c_mumps_solver
#endif
@@ -78,10 +78,10 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
type(amg_c_id_solver_type) :: amg_c_id_solver_mold
type(amg_c_gs_solver_type) :: amg_c_gs_solver_mold
type(amg_c_bwgs_solver_type) :: amg_c_bwgs_solver_mold
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_c_slu_solver_type) :: amg_c_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_c_mumps_solver_type) :: amg_c_mumps_solver_mold
#endif
@@ -174,11 +174,11 @@ subroutine amg_c_base_onelev_cseti(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case (amg_slu_)
call lv%set(amg_c_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case (amg_mumps_)
call lv%set(amg_c_mumps_solver_mold,info,pos=pos)
#endif
@@ -84,11 +84,7 @@ subroutine amg_c_base_onelev_setsm(lev,val,info,pos)
end if
endif
if (.not.allocated(lev%sm)) then
#ifdef HAVE_MOLD
allocate(lev%sm,mold=val)
#else
allocate(lev%sm,source=val)
#endif
end if
call lev%sm%default()
if (ipos_ == amg_smooth_both_) lev%sm2 => lev%sm
@@ -100,11 +96,7 @@ subroutine amg_c_base_onelev_setsm(lev,val,info,pos)
endif
end if
if (.not.allocated(lev%sm2a)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a,mold=val)
#else
allocate(lev%sm2a,source=val)
#endif
end if
call lev%sm2a%default()
lev%sm2 => lev%sm2a
@@ -81,11 +81,7 @@ subroutine amg_c_base_onelev_setsv(lev,val,info,pos)
end if
if (.not.allocated(lev%sm%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm%sv,mold=val,stat=info)
#else
allocate(lev%sm%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
@@ -125,11 +121,7 @@ subroutine amg_c_base_onelev_setsv(lev,val,info,pos)
end if
end if
if (.not.allocated(lev%sm2a%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a%sv,mold=val,stat=info)
#else
allocate(lev%sm2a%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
+16 -16
View File
@@ -42,7 +42,7 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_d_base_aggregator_mod
use amg_d_dec_aggregator_mod
use amg_d_symdec_aggregator_mod
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
use amg_d_parmatch_aggregator_mod
#endif
use amg_d_poly_smoother
@@ -57,16 +57,16 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_d_ainv_solver
use amg_d_invk_solver
use amg_d_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_d_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_d_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_d_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_d_mumps_solver
#endif
@@ -99,16 +99,16 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
type(amg_d_invk_solver_type) :: amg_d_invk_solver_mold
type(amg_d_invt_solver_type) :: amg_d_invt_solver_mold
type(amg_d_poly_smoother_type) :: amg_d_poly_smoother_mold
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
type(amg_d_umf_solver_type) :: amg_d_umf_solver_mold
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
type(amg_d_sludist_solver_type) :: amg_d_sludist_solver_mold
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_d_slu_solver_type) :: amg_d_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_d_mumps_solver_type) :: amg_d_mumps_solver_mold
#endif
@@ -236,19 +236,19 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case ('SLU')
call lv%set(amg_d_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case ('MUMPS')
call lv%set(amg_d_mumps_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_SLUDIST_
#ifdef PSB_HAVE_SLUDIST
case ('SLUDIST')
call lv%set(amg_d_sludist_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_UMF_
#ifdef PSB_HAVE_UMF
case ('UMF')
call lv%set(amg_d_umf_solver_mold,info,pos=pos)
#endif
@@ -280,16 +280,16 @@ subroutine amg_d_base_onelev_csetc(lv,what,val,info,pos,idx)
allocate(amg_d_dec_aggregator_type :: lv%aggr, stat=info)
case('SYMDEC')
allocate(amg_d_symdec_aggregator_type :: lv%aggr, stat=info)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
case('COUP','COUPLED')
allocate(amg_d_parmatch_aggregator_type :: lv%aggr, stat=info)
#endif
case default
info = psb_err_internal_error_
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call psb_errpush(info,name,a_err='Unsupported PAR_AGGR_ALG')
#else
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (SERIAL_MPI on)')
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (PSB_SERIAL_MPI on)')
#endif
goto 9999
end select
+12 -12
View File
@@ -50,16 +50,16 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
use amg_d_ilu_solver
use amg_d_id_solver
use amg_d_gs_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_d_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_d_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_d_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_d_mumps_solver
#endif
@@ -85,16 +85,16 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
type(amg_d_id_solver_type) :: amg_d_id_solver_mold
type(amg_d_gs_solver_type) :: amg_d_gs_solver_mold
type(amg_d_bwgs_solver_type) :: amg_d_bwgs_solver_mold
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
type(amg_d_umf_solver_type) :: amg_d_umf_solver_mold
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
type(amg_d_sludist_solver_type) :: amg_d_sludist_solver_mold
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_d_slu_solver_type) :: amg_d_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_d_mumps_solver_type) :: amg_d_mumps_solver_mold
#endif
@@ -187,19 +187,19 @@ subroutine amg_d_base_onelev_cseti(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case (amg_slu_)
call lv%set(amg_d_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case (amg_mumps_)
call lv%set(amg_d_mumps_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_SLUDIST_
#ifdef PSB_HAVE_SLUDIST
case (amg_sludist_)
call lv%set(amg_d_sludist_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_UMF_
#ifdef PSB_HAVE_UMF
case (amg_umf_)
call lv%set(amg_d_umf_solver_mold,info,pos=pos)
#endif
@@ -84,11 +84,7 @@ subroutine amg_d_base_onelev_setsm(lev,val,info,pos)
end if
endif
if (.not.allocated(lev%sm)) then
#ifdef HAVE_MOLD
allocate(lev%sm,mold=val)
#else
allocate(lev%sm,source=val)
#endif
end if
call lev%sm%default()
if (ipos_ == amg_smooth_both_) lev%sm2 => lev%sm
@@ -100,11 +96,7 @@ subroutine amg_d_base_onelev_setsm(lev,val,info,pos)
endif
end if
if (.not.allocated(lev%sm2a)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a,mold=val)
#else
allocate(lev%sm2a,source=val)
#endif
end if
call lev%sm2a%default()
lev%sm2 => lev%sm2a
@@ -81,11 +81,7 @@ subroutine amg_d_base_onelev_setsv(lev,val,info,pos)
end if
if (.not.allocated(lev%sm%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm%sv,mold=val,stat=info)
#else
allocate(lev%sm%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
@@ -125,11 +121,7 @@ subroutine amg_d_base_onelev_setsv(lev,val,info,pos)
end if
end if
if (.not.allocated(lev%sm2a%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a%sv,mold=val,stat=info)
#else
allocate(lev%sm2a%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
+10 -10
View File
@@ -42,7 +42,7 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_s_base_aggregator_mod
use amg_s_dec_aggregator_mod
use amg_s_symdec_aggregator_mod
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
use amg_s_parmatch_aggregator_mod
#endif
use amg_s_poly_smoother
@@ -57,10 +57,10 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_s_ainv_solver
use amg_s_invk_solver
use amg_s_invt_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_s_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_s_mumps_solver
#endif
@@ -93,10 +93,10 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
type(amg_s_invk_solver_type) :: amg_s_invk_solver_mold
type(amg_s_invt_solver_type) :: amg_s_invt_solver_mold
type(amg_s_poly_smoother_type) :: amg_s_poly_smoother_mold
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_s_slu_solver_type) :: amg_s_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_s_mumps_solver_type) :: amg_s_mumps_solver_mold
#endif
@@ -224,11 +224,11 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case ('SLU')
call lv%set(amg_s_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case ('MUMPS')
call lv%set(amg_s_mumps_solver_mold,info,pos=pos)
#endif
@@ -260,16 +260,16 @@ subroutine amg_s_base_onelev_csetc(lv,what,val,info,pos,idx)
allocate(amg_s_dec_aggregator_type :: lv%aggr, stat=info)
case('SYMDEC')
allocate(amg_s_symdec_aggregator_type :: lv%aggr, stat=info)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
case('COUP','COUPLED')
allocate(amg_s_parmatch_aggregator_type :: lv%aggr, stat=info)
#endif
case default
info = psb_err_internal_error_
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call psb_errpush(info,name,a_err='Unsupported PAR_AGGR_ALG')
#else
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (SERIAL_MPI on)')
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (PSB_SERIAL_MPI on)')
#endif
goto 9999
end select
@@ -50,10 +50,10 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
use amg_s_ilu_solver
use amg_s_id_solver
use amg_s_gs_solver
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_s_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_s_mumps_solver
#endif
@@ -79,10 +79,10 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
type(amg_s_id_solver_type) :: amg_s_id_solver_mold
type(amg_s_gs_solver_type) :: amg_s_gs_solver_mold
type(amg_s_bwgs_solver_type) :: amg_s_bwgs_solver_mold
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_s_slu_solver_type) :: amg_s_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_s_mumps_solver_type) :: amg_s_mumps_solver_mold
#endif
@@ -175,11 +175,11 @@ subroutine amg_s_base_onelev_cseti(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case (amg_slu_)
call lv%set(amg_s_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case (amg_mumps_)
call lv%set(amg_s_mumps_solver_mold,info,pos=pos)
#endif
@@ -84,11 +84,7 @@ subroutine amg_s_base_onelev_setsm(lev,val,info,pos)
end if
endif
if (.not.allocated(lev%sm)) then
#ifdef HAVE_MOLD
allocate(lev%sm,mold=val)
#else
allocate(lev%sm,source=val)
#endif
end if
call lev%sm%default()
if (ipos_ == amg_smooth_both_) lev%sm2 => lev%sm
@@ -100,11 +96,7 @@ subroutine amg_s_base_onelev_setsm(lev,val,info,pos)
endif
end if
if (.not.allocated(lev%sm2a)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a,mold=val)
#else
allocate(lev%sm2a,source=val)
#endif
end if
call lev%sm2a%default()
lev%sm2 => lev%sm2a
@@ -81,11 +81,7 @@ subroutine amg_s_base_onelev_setsv(lev,val,info,pos)
end if
if (.not.allocated(lev%sm%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm%sv,mold=val,stat=info)
#else
allocate(lev%sm%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
@@ -125,11 +121,7 @@ subroutine amg_s_base_onelev_setsv(lev,val,info,pos)
end if
end if
if (.not.allocated(lev%sm2a%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a%sv,mold=val,stat=info)
#else
allocate(lev%sm2a%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
+15 -15
View File
@@ -53,16 +53,16 @@ subroutine amg_z_base_onelev_csetc(lv,what,val,info,pos,idx)
use amg_z_ainv_solver
use amg_z_invk_solver
use amg_z_invt_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_z_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_z_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_z_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_z_mumps_solver
#endif
@@ -94,16 +94,16 @@ subroutine amg_z_base_onelev_csetc(lv,what,val,info,pos,idx)
type(amg_z_ainv_solver_type) :: amg_z_ainv_solver_mold
type(amg_z_invk_solver_type) :: amg_z_invk_solver_mold
type(amg_z_invt_solver_type) :: amg_z_invt_solver_mold
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
type(amg_z_umf_solver_type) :: amg_z_umf_solver_mold
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
type(amg_z_sludist_solver_type) :: amg_z_sludist_solver_mold
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_z_slu_solver_type) :: amg_z_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_z_mumps_solver_type) :: amg_z_mumps_solver_mold
#endif
@@ -228,19 +228,19 @@ subroutine amg_z_base_onelev_csetc(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case ('SLU')
call lv%set(amg_z_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case ('MUMPS')
call lv%set(amg_z_mumps_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_SLUDIST_
#ifdef PSB_HAVE_SLUDIST
case ('SLUDIST')
call lv%set(amg_z_sludist_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_UMF_
#ifdef PSB_HAVE_UMF
case ('UMF')
call lv%set(amg_z_umf_solver_mold,info,pos=pos)
#endif
@@ -272,14 +272,14 @@ subroutine amg_z_base_onelev_csetc(lv,what,val,info,pos,idx)
allocate(amg_z_dec_aggregator_type :: lv%aggr, stat=info)
case('SYMDEC')
allocate(amg_z_symdec_aggregator_type :: lv%aggr, stat=info)
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
#endif
case default
info = psb_err_internal_error_
#if !defined(SERIAL_MPI)
#if !defined(PSB_SERIAL_MPI)
call psb_errpush(info,name,a_err='Unsupported PAR_AGGR_ALG')
#else
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (SERIAL_MPI on)')
call psb_errpush(info,name,a_err='PAR_AGGR_ALG unsupported (PSB_SERIAL_MPI on)')
#endif
goto 9999
end select
+12 -12
View File
@@ -49,16 +49,16 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
use amg_z_ilu_solver
use amg_z_id_solver
use amg_z_gs_solver
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
use amg_z_umf_solver
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
use amg_z_sludist_solver
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
use amg_z_slu_solver
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
use amg_z_mumps_solver
#endif
@@ -84,16 +84,16 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
type(amg_z_id_solver_type) :: amg_z_id_solver_mold
type(amg_z_gs_solver_type) :: amg_z_gs_solver_mold
type(amg_z_bwgs_solver_type) :: amg_z_bwgs_solver_mold
#if defined(HAVE_UMF_)
#if defined(PSB_HAVE_UMF)
type(amg_z_umf_solver_type) :: amg_z_umf_solver_mold
#endif
#if defined(HAVE_SLUDIST_)
#if defined(PSB_HAVE_SLUDIST)
type(amg_z_sludist_solver_type) :: amg_z_sludist_solver_mold
#endif
#if defined(HAVE_SLU_)
#if defined(PSB_HAVE_SLU)
type(amg_z_slu_solver_type) :: amg_z_slu_solver_mold
#endif
#if defined(HAVE_MUMPS_)
#if defined(PSB_HAVE_MUMPS)
type(amg_z_mumps_solver_type) :: amg_z_mumps_solver_mold
#endif
@@ -186,19 +186,19 @@ subroutine amg_z_base_onelev_cseti(lv,what,val,info,pos,idx)
if (allocated(lv%sm2a)) call lv%sm2a%sv%set('SUB_SOLVE',val,info)
end if
end if
#ifdef HAVE_SLU_
#ifdef PSB_HAVE_SLU
case (amg_slu_)
call lv%set(amg_z_slu_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_MUMPS_
#ifdef PSB_HAVE_MUMPS
case (amg_mumps_)
call lv%set(amg_z_mumps_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_SLUDIST_
#ifdef PSB_HAVE_SLUDIST
case (amg_sludist_)
call lv%set(amg_z_sludist_solver_mold,info,pos=pos)
#endif
#ifdef HAVE_UMF_
#ifdef PSB_HAVE_UMF
case (amg_umf_)
call lv%set(amg_z_umf_solver_mold,info,pos=pos)
#endif
@@ -84,11 +84,7 @@ subroutine amg_z_base_onelev_setsm(lev,val,info,pos)
end if
endif
if (.not.allocated(lev%sm)) then
#ifdef HAVE_MOLD
allocate(lev%sm,mold=val)
#else
allocate(lev%sm,source=val)
#endif
end if
call lev%sm%default()
if (ipos_ == amg_smooth_both_) lev%sm2 => lev%sm
@@ -100,11 +96,7 @@ subroutine amg_z_base_onelev_setsm(lev,val,info,pos)
endif
end if
if (.not.allocated(lev%sm2a)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a,mold=val)
#else
allocate(lev%sm2a,source=val)
#endif
end if
call lev%sm2a%default()
lev%sm2 => lev%sm2a
@@ -81,11 +81,7 @@ subroutine amg_z_base_onelev_setsv(lev,val,info,pos)
end if
if (.not.allocated(lev%sm%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm%sv,mold=val,stat=info)
#else
allocate(lev%sm%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
@@ -125,11 +121,7 @@ subroutine amg_z_base_onelev_setsv(lev,val,info,pos)
end if
end if
if (.not.allocated(lev%sm2a%sv)) then
#ifdef HAVE_MOLD
allocate(lev%sm2a%sv,mold=val,stat=info)
#else
allocate(lev%sm2a%sv,source=val,stat=info)
#endif
if (info /= 0) then
info = 3111
return
@@ -66,7 +66,7 @@ subroutine c_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,&
call psb_erractionsave(err_act)
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info = psb_success_
trans_ = psb_toupper(trans)
select case(trans_)
@@ -59,7 +59,7 @@ subroutine c_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
integer(psb_ipk_) :: err_act
character(len=20) :: name='c_mumps_solver_apply_vect'
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
call psb_erractionsave(err_act)
@@ -58,7 +58,7 @@ subroutine c_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! Local variables
type(psb_cspmat_type) :: atmp
type(psb_c_coo_sparse_mat), target :: acoo
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
integer(psb_lpk_), allocatable :: gia(:), gja(:)
#endif
integer(psb_ipk_) :: n_row,n_col, nrow_a, nza, npr, npc
@@ -69,7 +69,7 @@ subroutine c_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
integer(psb_ipk_) :: np, iam, me, i, err_act, debug_unit, debug_level
character(len=20) :: name='c_mumps_solver_bld', ch_err
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info=psb_success_
@@ -165,7 +165,7 @@ subroutine c_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! switch to global numbering
if (sv%ipar(1) == amg_global_solver_ ) then
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
!
! Strategy here is as follows: because a call to MUMPS
! as a gobal solver is mostly done at the coarsest level,
@@ -66,7 +66,7 @@ subroutine d_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,&
call psb_erractionsave(err_act)
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info = psb_success_
trans_ = psb_toupper(trans)
select case(trans_)
@@ -59,7 +59,7 @@ subroutine d_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
integer(psb_ipk_) :: err_act
character(len=20) :: name='d_mumps_solver_apply_vect'
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
call psb_erractionsave(err_act)
@@ -58,7 +58,7 @@ subroutine d_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! Local variables
type(psb_dspmat_type) :: atmp
type(psb_d_coo_sparse_mat), target :: acoo
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
integer(psb_lpk_), allocatable :: gia(:), gja(:)
#endif
integer(psb_ipk_) :: n_row,n_col, nrow_a, nza, npr, npc
@@ -69,7 +69,7 @@ subroutine d_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
integer(psb_ipk_) :: np, iam, me, i, err_act, debug_unit, debug_level
character(len=20) :: name='d_mumps_solver_bld', ch_err
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info=psb_success_
@@ -165,7 +165,7 @@ subroutine d_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! switch to global numbering
if (sv%ipar(1) == amg_global_solver_ ) then
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
!
! Strategy here is as follows: because a call to MUMPS
! as a gobal solver is mostly done at the coarsest level,
@@ -66,7 +66,7 @@ subroutine s_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,&
call psb_erractionsave(err_act)
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info = psb_success_
trans_ = psb_toupper(trans)
select case(trans_)
@@ -59,7 +59,7 @@ subroutine s_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
integer(psb_ipk_) :: err_act
character(len=20) :: name='s_mumps_solver_apply_vect'
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
call psb_erractionsave(err_act)
@@ -58,7 +58,7 @@ subroutine s_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! Local variables
type(psb_sspmat_type) :: atmp
type(psb_s_coo_sparse_mat), target :: acoo
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
integer(psb_lpk_), allocatable :: gia(:), gja(:)
#endif
integer(psb_ipk_) :: n_row,n_col, nrow_a, nza, npr, npc
@@ -69,7 +69,7 @@ subroutine s_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
integer(psb_ipk_) :: np, iam, me, i, err_act, debug_unit, debug_level
character(len=20) :: name='s_mumps_solver_bld', ch_err
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info=psb_success_
@@ -165,7 +165,7 @@ subroutine s_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! switch to global numbering
if (sv%ipar(1) == amg_global_solver_ ) then
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
!
! Strategy here is as follows: because a call to MUMPS
! as a gobal solver is mostly done at the coarsest level,
@@ -66,7 +66,7 @@ subroutine z_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,&
call psb_erractionsave(err_act)
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info = psb_success_
trans_ = psb_toupper(trans)
select case(trans_)
@@ -59,7 +59,7 @@ subroutine z_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,&
integer(psb_ipk_) :: err_act
character(len=20) :: name='z_mumps_solver_apply_vect'
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
call psb_erractionsave(err_act)
@@ -58,7 +58,7 @@ subroutine z_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! Local variables
type(psb_zspmat_type) :: atmp
type(psb_z_coo_sparse_mat), target :: acoo
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
integer(psb_lpk_), allocatable :: gia(:), gja(:)
#endif
integer(psb_ipk_) :: n_row,n_col, nrow_a, nza, npr, npc
@@ -69,7 +69,7 @@ subroutine z_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
integer(psb_ipk_) :: np, iam, me, i, err_act, debug_unit, debug_level
character(len=20) :: name='z_mumps_solver_bld', ch_err
#if defined(HAVE_MUMPS_)
#if defined(AMG_HAVE_MUMPS)
info=psb_success_
@@ -165,7 +165,7 @@ subroutine z_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold)
! switch to global numbering
if (sv%ipar(1) == amg_global_solver_ ) then
#if defined(IPK4) && defined(LPK8)
#if defined(PSB_IPK4) && defined(PSB_LPK8)
!
! Strategy here is as follows: because a call to MUMPS
! as a gobal solver is mostly done at the coarsest level,