mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
Change and use #define with PSB_ and AMG_ prefixes
This commit is contained in:
@@ -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
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
@@ -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))
|
||||
|
||||
@@ -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) &
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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) &
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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) &
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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) &
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user