mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
Change and use #define with PSB_ and AMG_ prefixes
This commit is contained in:
@@ -45,7 +45,7 @@ cleanlib:
|
||||
(cd modules; /bin/rm -f *.a *$(.mod) *$(.fh))
|
||||
|
||||
distclean: clean samplesclean
|
||||
/bin/rm -fr Make.inc
|
||||
/bin/rm -fr Make.inc amgprec/amg_config.h
|
||||
|
||||
samplesclean: clean
|
||||
(cd samples/simple/fileread && $(MAKE) clean)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ LIBNAME=libamg_prec.a
|
||||
all: objs impld
|
||||
|
||||
objs: $(OBJS)
|
||||
/bin/cp -p amg_const.h $(INCDIR)
|
||||
/bin/cp -p amg_const.h amg_config.h $(INCDIR)
|
||||
/bin/cp -p *$(.mod) $(MODDIR)
|
||||
|
||||
impld: objs
|
||||
|
||||
@@ -55,10 +55,6 @@ module amg_base_ainv_mod
|
||||
integer, parameter :: amg_ainv_llk_noth_ = amg_ainv_s_ft_llk_ + 1
|
||||
integer, parameter :: amg_ainv_mlk_ = amg_ainv_llk_noth_ + 1
|
||||
integer, parameter :: amg_ainv_lmx_ = amg_ainv_mlk_
|
||||
#if defined(HAVE_TUMA_SAINV)
|
||||
integer, parameter :: amg_ainv_s_tuma_ = amg_ainv_lmx_ + 1
|
||||
integer, parameter :: amg_ainv_l_tuma_ = amg_ainv_s_tuma_ + 1
|
||||
#endif
|
||||
|
||||
|
||||
end module amg_base_ainv_mod
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
!
|
||||
module amg_c_mumps_solver
|
||||
use amg_c_base_solver_mod
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_MODULES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_MODULES)
|
||||
use cmumps_struc_def
|
||||
#endif
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_INCLUDES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_INCLUDES)
|
||||
include 'cmumps_struc.h'
|
||||
#endif
|
||||
|
||||
@@ -68,7 +68,7 @@ module amg_c_mumps_solver
|
||||
end type amg_c_mumps_rcntl_item
|
||||
|
||||
type, extends(amg_c_base_solver_type) :: amg_c_mumps_solver_type
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
type(cmumps_struc), allocatable :: id
|
||||
#else
|
||||
integer, allocatable :: id
|
||||
@@ -189,7 +189,7 @@ contains
|
||||
|
||||
info = 0
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
@@ -239,7 +239,7 @@ contains
|
||||
character(len=20) :: name='c_mumps_solver_clear_data'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
if (allocated(sv%id)) then
|
||||
if (sv%built) then
|
||||
@@ -279,7 +279,7 @@ contains
|
||||
character(len=20) :: name='c_mumps_solver_free'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
call sv%clear_data(info)
|
||||
if ((info == 0).and.allocated(sv%icntl)) deallocate(sv%icntl,stat=info)
|
||||
@@ -383,7 +383,7 @@ subroutine c_mumps_solver_csetc(sv,what,val,info,idx)
|
||||
|
||||
|
||||
select case(psb_toupper(trim(what)))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = sv%stringval(psb_toupper(trim(val)))
|
||||
#endif
|
||||
@@ -421,7 +421,7 @@ subroutine c_mumps_solver_cseti(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = val
|
||||
case('MUMPS_PRINT_ERR')
|
||||
@@ -467,7 +467,7 @@ subroutine c_mumps_solver_csetr(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_RPAR_ENTRY')
|
||||
if(present(idx)) then
|
||||
! Note: this will allocate %item
|
||||
@@ -504,7 +504,7 @@ subroutine c_mumps_solver_default(sv)
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -561,7 +561,7 @@ function c_mumps_solver_sizeof(sv) result(val)
|
||||
class(amg_c_mumps_solver_type), intent(in) :: sv
|
||||
integer(psb_epk_) :: val
|
||||
integer :: i
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_c_slu_solver
|
||||
use iso_c_binding
|
||||
use amg_c_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_c_base_solver_type) :: amg_c_slu_solver_type
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
!
|
||||
module amg_d_mumps_solver
|
||||
use amg_d_base_solver_mod
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_MODULES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_MODULES)
|
||||
use dmumps_struc_def
|
||||
#endif
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_INCLUDES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_INCLUDES)
|
||||
include 'dmumps_struc.h'
|
||||
#endif
|
||||
|
||||
@@ -68,7 +68,7 @@ module amg_d_mumps_solver
|
||||
end type amg_d_mumps_rcntl_item
|
||||
|
||||
type, extends(amg_d_base_solver_type) :: amg_d_mumps_solver_type
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
type(dmumps_struc), allocatable :: id
|
||||
#else
|
||||
integer, allocatable :: id
|
||||
@@ -189,7 +189,7 @@ contains
|
||||
|
||||
info = 0
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
@@ -239,7 +239,7 @@ contains
|
||||
character(len=20) :: name='d_mumps_solver_clear_data'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
if (allocated(sv%id)) then
|
||||
if (sv%built) then
|
||||
@@ -279,7 +279,7 @@ contains
|
||||
character(len=20) :: name='d_mumps_solver_free'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
call sv%clear_data(info)
|
||||
if ((info == 0).and.allocated(sv%icntl)) deallocate(sv%icntl,stat=info)
|
||||
@@ -383,7 +383,7 @@ subroutine d_mumps_solver_csetc(sv,what,val,info,idx)
|
||||
|
||||
|
||||
select case(psb_toupper(trim(what)))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = sv%stringval(psb_toupper(trim(val)))
|
||||
#endif
|
||||
@@ -421,7 +421,7 @@ subroutine d_mumps_solver_cseti(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = val
|
||||
case('MUMPS_PRINT_ERR')
|
||||
@@ -467,7 +467,7 @@ subroutine d_mumps_solver_csetr(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_RPAR_ENTRY')
|
||||
if(present(idx)) then
|
||||
! Note: this will allocate %item
|
||||
@@ -504,7 +504,7 @@ subroutine d_mumps_solver_default(sv)
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -561,7 +561,7 @@ function d_mumps_solver_sizeof(sv) result(val)
|
||||
class(amg_d_mumps_solver_type), intent(in) :: sv
|
||||
integer(psb_epk_) :: val
|
||||
integer :: i
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
module amg_d_parmatch_aggregator_mod
|
||||
use amg_d_base_aggregator_mod
|
||||
use amg_d_matchboxp_mod
|
||||
#if defined(SERIAL_MPI)
|
||||
#if defined(PSB_SERIAL_MPI)
|
||||
type, extends(amg_d_base_aggregator_type) :: amg_d_parmatch_aggregator_type
|
||||
end type amg_d_parmatch_aggregator_type
|
||||
#else
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_d_slu_solver
|
||||
use iso_c_binding
|
||||
use amg_d_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_d_base_solver_type) :: amg_d_slu_solver_type
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ module amg_d_sludist_solver
|
||||
use iso_c_binding
|
||||
use amg_d_base_solver_mod
|
||||
|
||||
#if (!defined(HAVE_SLUDIST_)) || defined(IPK8)
|
||||
#if (!defined(PSB_HAVE_SLUDIST)) || defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_d_base_solver_type) :: amg_d_sludist_solver_type
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_d_umf_solver
|
||||
use iso_c_binding
|
||||
use amg_d_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
type, extends(amg_d_base_solver_type) :: amg_d_umf_solver_type
|
||||
|
||||
end type amg_d_umf_solver_type
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
!
|
||||
module amg_s_mumps_solver
|
||||
use amg_s_base_solver_mod
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_MODULES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_MODULES)
|
||||
use smumps_struc_def
|
||||
#endif
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_INCLUDES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_INCLUDES)
|
||||
include 'smumps_struc.h'
|
||||
#endif
|
||||
|
||||
@@ -68,7 +68,7 @@ module amg_s_mumps_solver
|
||||
end type amg_s_mumps_rcntl_item
|
||||
|
||||
type, extends(amg_s_base_solver_type) :: amg_s_mumps_solver_type
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
type(smumps_struc), allocatable :: id
|
||||
#else
|
||||
integer, allocatable :: id
|
||||
@@ -189,7 +189,7 @@ contains
|
||||
|
||||
info = 0
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
@@ -239,7 +239,7 @@ contains
|
||||
character(len=20) :: name='s_mumps_solver_clear_data'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
if (allocated(sv%id)) then
|
||||
if (sv%built) then
|
||||
@@ -279,7 +279,7 @@ contains
|
||||
character(len=20) :: name='s_mumps_solver_free'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
call sv%clear_data(info)
|
||||
if ((info == 0).and.allocated(sv%icntl)) deallocate(sv%icntl,stat=info)
|
||||
@@ -383,7 +383,7 @@ subroutine s_mumps_solver_csetc(sv,what,val,info,idx)
|
||||
|
||||
|
||||
select case(psb_toupper(trim(what)))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = sv%stringval(psb_toupper(trim(val)))
|
||||
#endif
|
||||
@@ -421,7 +421,7 @@ subroutine s_mumps_solver_cseti(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = val
|
||||
case('MUMPS_PRINT_ERR')
|
||||
@@ -467,7 +467,7 @@ subroutine s_mumps_solver_csetr(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_RPAR_ENTRY')
|
||||
if(present(idx)) then
|
||||
! Note: this will allocate %item
|
||||
@@ -504,7 +504,7 @@ subroutine s_mumps_solver_default(sv)
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -561,7 +561,7 @@ function s_mumps_solver_sizeof(sv) result(val)
|
||||
class(amg_s_mumps_solver_type), intent(in) :: sv
|
||||
integer(psb_epk_) :: val
|
||||
integer :: i
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
module amg_s_parmatch_aggregator_mod
|
||||
use amg_s_base_aggregator_mod
|
||||
use amg_s_matchboxp_mod
|
||||
#if defined(SERIAL_MPI)
|
||||
#if defined(PSB_SERIAL_MPI)
|
||||
type, extends(amg_s_base_aggregator_type) :: amg_s_parmatch_aggregator_type
|
||||
end type amg_s_parmatch_aggregator_type
|
||||
#else
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_s_slu_solver
|
||||
use iso_c_binding
|
||||
use amg_s_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_s_base_solver_type) :: amg_s_slu_solver_type
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@
|
||||
!
|
||||
module amg_z_mumps_solver
|
||||
use amg_z_base_solver_mod
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_MODULES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_MODULES)
|
||||
use zmumps_struc_def
|
||||
#endif
|
||||
#if defined(HAVE_MUMPS_) && defined(HAVE_MUMPS_INCLUDES_)
|
||||
#if defined(AMG_HAVE_MUMPS) && defined(AMG_HAVE_MUMPS_INCLUDES)
|
||||
include 'zmumps_struc.h'
|
||||
#endif
|
||||
|
||||
@@ -68,7 +68,7 @@ module amg_z_mumps_solver
|
||||
end type amg_z_mumps_rcntl_item
|
||||
|
||||
type, extends(amg_z_base_solver_type) :: amg_z_mumps_solver_type
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
type(zmumps_struc), allocatable :: id
|
||||
#else
|
||||
integer, allocatable :: id
|
||||
@@ -189,7 +189,7 @@ contains
|
||||
|
||||
info = 0
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
@@ -239,7 +239,7 @@ contains
|
||||
character(len=20) :: name='z_mumps_solver_clear_data'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
if (allocated(sv%id)) then
|
||||
if (sv%built) then
|
||||
@@ -279,7 +279,7 @@ contains
|
||||
character(len=20) :: name='z_mumps_solver_free'
|
||||
|
||||
info = 0
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
call psb_erractionsave(err_act)
|
||||
call sv%clear_data(info)
|
||||
if ((info == 0).and.allocated(sv%icntl)) deallocate(sv%icntl,stat=info)
|
||||
@@ -383,7 +383,7 @@ subroutine z_mumps_solver_csetc(sv,what,val,info,idx)
|
||||
|
||||
|
||||
select case(psb_toupper(trim(what)))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = sv%stringval(psb_toupper(trim(val)))
|
||||
#endif
|
||||
@@ -421,7 +421,7 @@ subroutine z_mumps_solver_cseti(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_LOC_GLOB')
|
||||
sv%ipar(1) = val
|
||||
case('MUMPS_PRINT_ERR')
|
||||
@@ -467,7 +467,7 @@ subroutine z_mumps_solver_csetr(sv,what,val,info,idx)
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
case('MUMPS_RPAR_ENTRY')
|
||||
if(present(idx)) then
|
||||
! Note: this will allocate %item
|
||||
@@ -504,7 +504,7 @@ subroutine z_mumps_solver_default(sv)
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -561,7 +561,7 @@ function z_mumps_solver_sizeof(sv) result(val)
|
||||
class(amg_z_mumps_solver_type), intent(in) :: sv
|
||||
integer(psb_epk_) :: val
|
||||
integer :: i
|
||||
#if defined(HAVE_MUMPS_)
|
||||
#if defined(AMG_HAVE_MUMPS)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_z_slu_solver
|
||||
use iso_c_binding
|
||||
use amg_z_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_z_base_solver_type) :: amg_z_slu_solver_type
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ module amg_z_sludist_solver
|
||||
use iso_c_binding
|
||||
use amg_z_base_solver_mod
|
||||
|
||||
#if (!defined(HAVE_SLUDIST_)) || defined(IPK8)
|
||||
#if (!defined(PSB_HAVE_SLUDIST)) || defined(PSB_IPK8)
|
||||
|
||||
type, extends(amg_z_base_solver_type) :: amg_z_sludist_solver_type
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ module amg_z_umf_solver
|
||||
use iso_c_binding
|
||||
use amg_z_base_solver_mod
|
||||
|
||||
#if defined(IPK8)
|
||||
#if defined(PSB_IPK8)
|
||||
type, extends(amg_z_base_solver_type) :: amg_z_umf_solver_type
|
||||
|
||||
end type amg_z_umf_solver_type
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#define AMG_VALID_PRECONDITIONER_STRINGS "NONE","DIAG","BJAC","ML","AS"
|
||||
#define AMG_VALID_PRECONDITIONER_STRING "NONE DIAG BJAC ML AS"
|
||||
|
||||
#include "amg_config.h"
|
||||
#include "psb_types.h"
|
||||
#include "amg_const.h"
|
||||
#include "amg_c_dprec.h"
|
||||
|
||||
|
||||
@@ -667,6 +667,14 @@ SLU_FLAGS
|
||||
MUMPS_LIBS
|
||||
MUMPS_FLAGS
|
||||
EXTRA_LIBS
|
||||
CHAVEMUMPSINCLUDES
|
||||
CHAVEMUMPSMODULES
|
||||
CHAVEMUMPS
|
||||
CSLUDISTVERSION
|
||||
CHAVESLUDIST
|
||||
CSLUVERSION
|
||||
CHAVESLU
|
||||
CHAVEUMF
|
||||
INSTALL_SAMPLESDIR
|
||||
INSTALL_DOCSDIR
|
||||
INSTALL_MODULESDIR
|
||||
@@ -5768,7 +5776,7 @@ if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
MPIFC="$FC";
|
||||
MPICC="$CC";
|
||||
MPICXX="$CXX";
|
||||
CXXDEFINES="-DSERIAL_MPI $CXXDEFINES";
|
||||
CXXDEFINES="$CXXDEFINES";
|
||||
|
||||
else
|
||||
ac_ext=c
|
||||
@@ -7089,7 +7097,7 @@ printf "%s\n" "#define SIZEOF_VOID_P $ac_cv_sizeof_void_p" >>confdefs.h
|
||||
|
||||
# Define for platforms with 64 bit (void * ) pointers
|
||||
if test X"$ac_cv_sizeof_void_p" == X"8" ; then
|
||||
CDEFINES="-DPtr64Bits $CDEFINES"
|
||||
CDEFINES="$CDEFINES"
|
||||
fi
|
||||
ac_ext=${ac_fc_srcext-f}
|
||||
ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
|
||||
@@ -7283,7 +7291,7 @@ elif test "x$pac_fc_case" == "xupper case"; then
|
||||
else
|
||||
pac_f_c_names="-DUNKNOWN"
|
||||
fi
|
||||
CDEFINES="$pac_f_c_names $CDEFINES"
|
||||
CDEFINES="$CDEFINES"
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pac_f_c_names " >&5
|
||||
printf "%s\n" " $pac_f_c_names " >&6; }
|
||||
@@ -7567,7 +7575,7 @@ if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
else
|
||||
PAC_FORTRAN_CHECK_HAVE_MPI_MOD_F08()
|
||||
if test x"$pac_cv_mpi_f08" == x"yes" ; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES";
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran MPI mod" >&5
|
||||
printf %s "checking for Fortran MPI mod... " >&6; }
|
||||
@@ -7589,13 +7597,13 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES"
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_H $FDEFINES"
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
ac_ext=c
|
||||
@@ -7611,8 +7619,8 @@ fi
|
||||
FLINK="$MPIFC"
|
||||
PAC_ARG_OPENMP()
|
||||
if test x"$pac_cv_openmp" == x"yes" ; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DOPENMP $FDEFINES";
|
||||
CDEFINES="-DOPENMP $CDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_OPENMP $FDEFINES";
|
||||
CDEFINES="$CDEFINES";
|
||||
FCOPT="$FCOPT $pac_cv_openmp_fcopt";
|
||||
CCOPT="$CCOPT $pac_cv_openmp_ccopt";
|
||||
FLINK="$FLINK $pac_cv_openmp_fcopt";
|
||||
@@ -7850,7 +7858,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: PSBLAS size of LPK \"$pac_cv_psblas_lpk\"." >&5
|
||||
printf "%s\n" "$as_me: PSBLAS size of LPK \"$pac_cv_psblas_lpk\"." >&6;}
|
||||
if test x"$pac_cv_psblas_lpk" == x8"" ; then
|
||||
CXXDEFINES="-DBIT64 $CXXDEFINES";
|
||||
CXXDEFINES="$CXXDEFINES";
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
@@ -7881,7 +7889,7 @@ AR="${AR} -cDr"
|
||||
###############################################################################
|
||||
# Custom test : do we have a module or include for MPI Fortran interface?
|
||||
if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DSERIAL_MPI $psblas_cv_define_prepend-DMPI_MOD $FDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DSERIAL_MPI $psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES";
|
||||
else
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran MPI mod" >&5
|
||||
printf %s "checking for Fortran MPI mod... " >&6; }
|
||||
@@ -7903,13 +7911,13 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES"
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_H $FDEFINES"
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
ac_ext=c
|
||||
@@ -8339,7 +8347,7 @@ else $as_nop
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_BUGGY_GENERICS $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_BUGGY_GENERICS $FDEFINES"
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
@@ -8375,7 +8383,7 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_FLUSH_STMT $FDEFINES"
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
@@ -8424,12 +8432,14 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_SAME_TYPE_AS $FDEFINES"
|
||||
:
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
as_fn_error $? "Sorry, cannot build PSBLAS without support for SAME_TYPE_AS.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
@@ -8470,12 +8480,14 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_EXTENDS_TYPE_OF $FDEFINES"
|
||||
:
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
as_fn_error $? "Sorry, cannot build PSBLAS without support for EXTENDS_TYPE_OF.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
@@ -8518,12 +8530,14 @@ if ac_fn_fc_try_compile "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_MOLD $FDEFINES"
|
||||
:
|
||||
else $as_nop
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
as_fn_error $? "Sorry, cannot build PSBLAS without support for MOLD= allocation.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8." "$LINENO" 5
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
@@ -9560,7 +9574,7 @@ done
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$pac_lapack_ok" = xyes; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DHAVE_LAPACK $FDEFINES"
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_LAPACK $FDEFINES"
|
||||
:
|
||||
else
|
||||
pac_lapack_ok=no
|
||||
@@ -9959,11 +9973,16 @@ if test "x$amg4psblas_cv_have_mumps" == "xyes" ; then
|
||||
printf "%s\n" "$as_me: PSBLAS defines PSB_LPK_ as $pac_cv_psblas_lpk. MUMPS interfacing will fail when called in global mode on very large matrices. " >&6;}
|
||||
fi
|
||||
if test "x$pac_mumps_fmods_ok" == "xyes" ; then
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_MUMPS_ $amg_cv_define_prepend-DHAVE_MUMPS_MODULES_ $MUMPS_MODULES $FDEFINES"
|
||||
MUMPS_FLAGS="-DHave_MUMPS_ $MUMPS_MODULES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_MUMPS $amg_cv_define_prepend-DAMG_HAVE_MUMPS_MODULES $MUMPS_MODULES $FDEFINES"
|
||||
MUMPS_FLAGS="-DAMG_HAVE_MUMPS $MUMPS_MODULES"
|
||||
CHAVEMUMPS="#define AMG_HAVE_MUMPS"
|
||||
CHAVEMUMPSMODULES="#define AMG_HAVE_MUMPS_MODULES"
|
||||
|
||||
elif test "x$pac_mumps_fincs_ok" == "xyes" ; then
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_MUMPS_ $amg_cv_define_prepend-DHAVE_MUMPS_INCLUDES_ $MUMPS_FINCLUDES $FDEFINES"
|
||||
MUMPS_FLAGS="-DHave_MUMPS_ $MUMPS_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_MUMPS_ $amg_cv_define_prepend-DAMG_HAVE_MUMPS_INCLUDES $MUMPS_FINCLUDES $FDEFINES"
|
||||
MUMPS_FLAGS="-DAMG_HAVE_MUMPS $MUMPS_INCLUDES"
|
||||
CHAVEMUMPS="#define AMG_HAVE_MUMPS"
|
||||
CHAVEMUMPSINCLUDES="#define AMG_HAVE_MUMPS_INCLUDES"
|
||||
else
|
||||
# This should not happen
|
||||
MUMPS_FLAGS=""
|
||||
@@ -10198,8 +10217,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
if test "x$amg4psblas_cv_have_umfpack" == "xyes" ; then
|
||||
UMF_FLAGS="-DHave_UMF_ $UMF_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_UMF_ $FDEFINES"
|
||||
UMF_FLAGS="$UMF_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_UMF $FDEFINES"
|
||||
CHAVEUMF="#define AMG_HAVE_UMF"
|
||||
else
|
||||
UMF_FLAGS=""
|
||||
fi
|
||||
@@ -10452,8 +10472,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
if test "x$amg4psblas_cv_have_superlu" == "xyes" ; then
|
||||
SLU_FLAGS="-DHave_SLU_ -DSLU_VERSION_$pac_slu_version $SLU_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_SLU_ $FDEFINES"
|
||||
SLU_FLAGS="-DAMG_SLU_VERSION_$pac_slu_version $SLU_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_SLU $FDEFINES"
|
||||
CHAVESLU="#define AMG_HAVE_SLU"
|
||||
CSLUVERSION="#define AMG_SLU_VERSION_$pac_slu_version"
|
||||
else
|
||||
SLU_FLAGS=""
|
||||
fi
|
||||
@@ -10819,8 +10841,10 @@ if test "x$amg4psblas_cv_have_superludist" == "xyes" ; then
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Configuring with SuperLU_DIST version flag $pac_sludist_version" >&5
|
||||
printf "%s\n" "$as_me: Configuring with SuperLU_DIST version flag $pac_sludist_version" >&6;}
|
||||
SLUDIST_FLAGS=""
|
||||
SLUDIST_FLAGS="-DHave_SLUDist_ -DSLUD_VERSION_="$pac_sludist_version" $SLUDIST_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_SLUDIST_ $FDEFINES"
|
||||
SLUDIST_FLAGS="$SLUDIST_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_SLUDIST $FDEFINES"
|
||||
CHAVESLUDIST="#define AMG_HAVE_SLUDISST"
|
||||
CSLUDISTVERSION="#define AMG_SLUD_VERSION $pac_sludist_version"
|
||||
else
|
||||
SLUDIST_FLAGS=""
|
||||
fi
|
||||
@@ -10861,6 +10885,17 @@ AMGCXXDEFINES="$CXXDEFINES"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -10878,6 +10913,8 @@ AMGCXXDEFINES="$CXXDEFINES"
|
||||
|
||||
ac_config_files="$ac_config_files Make.inc"
|
||||
|
||||
ac_config_files="$ac_config_files amgprec/amg_config.h"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
# This file is a shell script that caches the results of configure
|
||||
# tests run on this system so they can be shared between configure
|
||||
@@ -11620,6 +11657,7 @@ do
|
||||
case $ac_config_target in
|
||||
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
|
||||
"Make.inc") CONFIG_FILES="$CONFIG_FILES Make.inc" ;;
|
||||
"amgprec/amg_config.h") CONFIG_FILES="$CONFIG_FILES amgprec/amg_config.h" ;;
|
||||
|
||||
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||
esac
|
||||
|
||||
+58
-30
@@ -66,7 +66,7 @@ PSBLAS_DIR="$pac_cv_psblas_dir";
|
||||
PSBLAS_INCDIR="$pac_cv_psblas_incdir";
|
||||
PSBLAS_MODDIR="$pac_cv_psblas_moddir";
|
||||
PSBLAS_LIBDIR="$pac_cv_psblas_libdir";
|
||||
AC_MSG_CHECKING([for PSBLAS install dir])
|
||||
AC_MSG_CHECKING([for PSBLAS install dir])
|
||||
if test "X$PSBLAS_DIR" != "X" ; then
|
||||
case $PSBLAS_DIR in
|
||||
/*) ;;
|
||||
@@ -185,7 +185,7 @@ if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
MPIFC="$FC";
|
||||
MPICC="$CC";
|
||||
MPICXX="$CXX";
|
||||
CXXDEFINES="-DSERIAL_MPI $CXXDEFINES";
|
||||
CXXDEFINES="$CXXDEFINES";
|
||||
|
||||
else
|
||||
AC_LANG([C])
|
||||
@@ -339,7 +339,7 @@ AC_LANG([C])
|
||||
AC_CHECK_SIZEOF(void *)
|
||||
# Define for platforms with 64 bit (void * ) pointers
|
||||
if test X"$ac_cv_sizeof_void_p" == X"8" ; then
|
||||
CDEFINES="-DPtr64Bits $CDEFINES"
|
||||
CDEFINES="$CDEFINES"
|
||||
fi
|
||||
AC_LANG([Fortran])
|
||||
__AC_FC_NAME_MANGLING
|
||||
@@ -392,7 +392,7 @@ else
|
||||
pac_f_c_names="-DUNKNOWN"
|
||||
dnl AC_MSG_NOTICE([Fortran name mangling unknown case])
|
||||
fi
|
||||
CDEFINES="$pac_f_c_names $CDEFINES"
|
||||
CDEFINES="$CDEFINES"
|
||||
|
||||
AC_MSG_RESULT([ $pac_f_c_names ])
|
||||
|
||||
@@ -553,20 +553,20 @@ if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
else
|
||||
PAC_FORTRAN_CHECK_HAVE_MPI_MOD_F08()
|
||||
if test x"$pac_cv_mpi_f08" == x"yes" ; then
|
||||
dnl FDEFINES="$psblas_cv_define_prepend-DMPI_MOD_F08 $FDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES";
|
||||
dnl FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD_F08 $FDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES";
|
||||
else
|
||||
PAC_FORTRAN_CHECK_HAVE_MPI_MOD(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES"])
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_H $FDEFINES"])
|
||||
fi
|
||||
fi
|
||||
|
||||
FLINK="$MPIFC"
|
||||
PAC_ARG_OPENMP()
|
||||
if test x"$pac_cv_openmp" == x"yes" ; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DOPENMP $FDEFINES";
|
||||
CDEFINES="-DOPENMP $CDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DPSB_OPENMP $FDEFINES";
|
||||
CDEFINES="$CDEFINES";
|
||||
FCOPT="$FCOPT $pac_cv_openmp_fcopt";
|
||||
CCOPT="$CCOPT $pac_cv_openmp_ccopt";
|
||||
FLINK="$FLINK $pac_cv_openmp_fcopt";
|
||||
@@ -595,7 +595,7 @@ fi
|
||||
PAC_FORTRAN_PSBLAS_INTEGER_SIZES()
|
||||
AC_MSG_NOTICE([PSBLAS size of LPK "$pac_cv_psblas_lpk".])
|
||||
if test x"$pac_cv_psblas_lpk" == x8"" ; then
|
||||
CXXDEFINES="-DBIT64 $CXXDEFINES";
|
||||
CXXDEFINES="$CXXDEFINES";
|
||||
fi
|
||||
|
||||
###############################################################################
|
||||
@@ -626,11 +626,11 @@ AR="${AR} -cDr"
|
||||
###############################################################################
|
||||
# Custom test : do we have a module or include for MPI Fortran interface?
|
||||
if test x"$pac_cv_serial_mpi" == x"yes" ; then
|
||||
FDEFINES="$psblas_cv_define_prepend-DSERIAL_MPI $psblas_cv_define_prepend-DMPI_MOD $FDEFINES";
|
||||
FDEFINES="$psblas_cv_define_prepend-DSERIAL_MPI $psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES";
|
||||
else
|
||||
PAC_FORTRAN_CHECK_HAVE_MPI_MOD(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DMPI_MOD $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DMPI_H $FDEFINES"])
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_MOD $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_MPI_H $FDEFINES"])
|
||||
fi
|
||||
|
||||
#
|
||||
@@ -692,24 +692,30 @@ PAC_FORTRAN_TEST_FINAL(
|
||||
|
||||
PAC_FORTRAN_TEST_GENERICS(
|
||||
[],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_BUGGY_GENERICS $FDEFINES"]
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_BUGGY_GENERICS $FDEFINES"]
|
||||
)
|
||||
|
||||
PAC_FORTRAN_TEST_FLUSH(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_FLUSH_STMT $FDEFINES"],
|
||||
)
|
||||
|
||||
|
||||
PAC_FORTRAN_TEST_SAME_TYPE(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_SAME_TYPE_AS $FDEFINES"],
|
||||
[],
|
||||
[AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for SAME_TYPE_AS.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8.])]
|
||||
)
|
||||
|
||||
PAC_FORTRAN_TEST_EXTENDS_TYPE(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_EXTENDS_TYPE_OF $FDEFINES"],
|
||||
[],
|
||||
[AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for EXTENDS_TYPE_OF.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8.])]
|
||||
)
|
||||
|
||||
PAC_FORTRAN_TEST_MOLD(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_MOLD $FDEFINES"],
|
||||
[],
|
||||
[AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for MOLD= allocation.
|
||||
Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8.])]
|
||||
)
|
||||
|
||||
###############################################################################
|
||||
@@ -725,7 +731,7 @@ PAC_FORTRAN_TEST_MOLD(
|
||||
AC_LANG([Fortran])
|
||||
PAC_BLAS([], [AC_MSG_ERROR([[Cannot find BLAS library, specify a path using --with-blas=DIR/LIB (for example --with-blas=/usr/path/lib/libcxml.a)]])])
|
||||
PAC_LAPACK(
|
||||
[FDEFINES="$psblas_cv_define_prepend-DHAVE_LAPACK $FDEFINES"],
|
||||
[FDEFINES="$psblas_cv_define_prepend-DPSB_HAVE_LAPACK $FDEFINES"],
|
||||
)
|
||||
AC_LANG([C])
|
||||
###############################################################################
|
||||
@@ -752,11 +758,16 @@ if test "x$amg4psblas_cv_have_mumps" == "xyes" ; then
|
||||
AC_MSG_NOTICE([PSBLAS defines PSB_LPK_ as $pac_cv_psblas_lpk. MUMPS interfacing will fail when called in global mode on very large matrices. ])
|
||||
fi
|
||||
if test "x$pac_mumps_fmods_ok" == "xyes" ; then
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_MUMPS_ $amg_cv_define_prepend-DHAVE_MUMPS_MODULES_ $MUMPS_MODULES $FDEFINES"
|
||||
MUMPS_FLAGS="-DHave_MUMPS_ $MUMPS_MODULES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_MUMPS $amg_cv_define_prepend-DAMG_HAVE_MUMPS_MODULES $MUMPS_MODULES $FDEFINES"
|
||||
MUMPS_FLAGS="-DAMG_HAVE_MUMPS $MUMPS_MODULES"
|
||||
CHAVEMUMPS="#define AMG_HAVE_MUMPS"
|
||||
CHAVEMUMPSMODULES="#define AMG_HAVE_MUMPS_MODULES"
|
||||
|
||||
elif test "x$pac_mumps_fincs_ok" == "xyes" ; then
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_MUMPS_ $amg_cv_define_prepend-DHAVE_MUMPS_INCLUDES_ $MUMPS_FINCLUDES $FDEFINES"
|
||||
MUMPS_FLAGS="-DHave_MUMPS_ $MUMPS_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_MUMPS_ $amg_cv_define_prepend-DAMG_HAVE_MUMPS_INCLUDES $MUMPS_FINCLUDES $FDEFINES"
|
||||
MUMPS_FLAGS="-DAMG_HAVE_MUMPS $MUMPS_INCLUDES"
|
||||
CHAVEMUMPS="#define AMG_HAVE_MUMPS"
|
||||
CHAVEMUMPSINCLUDES="#define AMG_HAVE_MUMPS_INCLUDES"
|
||||
else
|
||||
# This should not happen
|
||||
MUMPS_FLAGS=""
|
||||
@@ -769,16 +780,19 @@ fi
|
||||
|
||||
PAC_CHECK_UMFPACK
|
||||
if test "x$amg4psblas_cv_have_umfpack" == "xyes" ; then
|
||||
UMF_FLAGS="-DHave_UMF_ $UMF_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_UMF_ $FDEFINES"
|
||||
UMF_FLAGS="$UMF_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_UMF $FDEFINES"
|
||||
CHAVEUMF="#define AMG_HAVE_UMF"
|
||||
else
|
||||
UMF_FLAGS=""
|
||||
fi
|
||||
|
||||
PAC_CHECK_SUPERLU
|
||||
if test "x$amg4psblas_cv_have_superlu" == "xyes" ; then
|
||||
SLU_FLAGS="-DHave_SLU_ -DSLU_VERSION_$pac_slu_version $SLU_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_SLU_ $FDEFINES"
|
||||
SLU_FLAGS="-DAMG_SLU_VERSION_$pac_slu_version $SLU_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_SLU $FDEFINES"
|
||||
CHAVESLU="#define AMG_HAVE_SLU"
|
||||
CSLUVERSION="#define AMG_SLU_VERSION_$pac_slu_version"
|
||||
else
|
||||
SLU_FLAGS=""
|
||||
fi
|
||||
@@ -789,8 +803,10 @@ if test "x$amg4psblas_cv_have_superludist" == "xyes" ; then
|
||||
pac_sludist_version="$amg4psblas_cv_superludist_major$amg4psblas_cv_superludist_minor";
|
||||
AC_MSG_NOTICE([Configuring with SuperLU_DIST version flag $pac_sludist_version])
|
||||
SLUDIST_FLAGS=""
|
||||
SLUDIST_FLAGS="-DHave_SLUDist_ -DSLUD_VERSION_="$pac_sludist_version" $SLUDIST_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DHAVE_SLUDIST_ $FDEFINES"
|
||||
SLUDIST_FLAGS="$SLUDIST_INCLUDES"
|
||||
FDEFINES="$amg_cv_define_prepend-DAMG_HAVE_SLUDIST $FDEFINES"
|
||||
CHAVESLUDIST="#define AMG_HAVE_SLUDISST"
|
||||
CSLUDISTVERSION="#define AMG_SLUD_VERSION $pac_sludist_version"
|
||||
else
|
||||
SLUDIST_FLAGS=""
|
||||
fi
|
||||
@@ -829,6 +845,17 @@ AC_SUBST(INSTALL_MODULESDIR)
|
||||
AC_SUBST(INSTALL_DOCSDIR)
|
||||
AC_SUBST(INSTALL_SAMPLESDIR)
|
||||
|
||||
AC_SUBST(CHAVEUMF)
|
||||
AC_SUBST(CHAVESLU)
|
||||
AC_SUBST(CSLUVERSION)
|
||||
AC_SUBST(CHAVESLUDIST)
|
||||
AC_SUBST(CSLUDISTVERSION)
|
||||
AC_SUBST(CHAVEMUMPS)
|
||||
AC_SUBST(CHAVEMUMPSMODULES)
|
||||
AC_SUBST(CHAVEMUMPSINCLUDES)
|
||||
|
||||
|
||||
|
||||
AC_SUBST(EXTRA_LIBS)
|
||||
AC_SUBST(MUMPS_FLAGS)
|
||||
AC_SUBST(MUMPS_LIBS)
|
||||
@@ -847,6 +874,7 @@ AC_SUBST(COMPILERULES)
|
||||
# the following files will be created by Automake
|
||||
|
||||
AC_CONFIG_FILES([Make.inc])
|
||||
AC_CONFIG_FILES([amgprec/amg_config.h])
|
||||
AC_OUTPUT()
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -93,7 +93,7 @@ contains
|
||||
& a1,a2,a3,b1,b2,b3,c,g,info,f,amold,vmold,partition, nrl,iv)
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
use omp_lib
|
||||
#endif
|
||||
!
|
||||
@@ -262,7 +262,7 @@ contains
|
||||
|
||||
! A nifty MPI function will split the process list
|
||||
npdims = 0
|
||||
#if defined(SERIAL_MPI)
|
||||
#if defined(PSB_SERIAL_MPI)
|
||||
npdims = 1
|
||||
#else
|
||||
call mpi_dims_create(np,3,npdims,info)
|
||||
@@ -379,7 +379,7 @@ contains
|
||||
integer(psb_lpk_), allocatable :: irow(:),icol(:)
|
||||
real(psb_dpk_), allocatable :: val(:)
|
||||
real(psb_dpk_) :: x,y,z, zt(nb)
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
nth = omp_get_num_threads()
|
||||
ith = omp_get_thread_num()
|
||||
#else
|
||||
@@ -566,7 +566,7 @@ contains
|
||||
& a1,a2,b1,b2,c,g,info,f,amold,vmold,partition, nrl,iv)
|
||||
use psb_base_mod
|
||||
use psb_util_mod
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
use omp_lib
|
||||
#endif
|
||||
!
|
||||
@@ -725,7 +725,7 @@ contains
|
||||
|
||||
! A nifty MPI function will split the process list
|
||||
npdims = 0
|
||||
#if defined(SERIAL_MPI)
|
||||
#if defined(PSB_SERIAL_MPI)
|
||||
npdims = 1
|
||||
#else
|
||||
call mpi_dims_create(np,2,npdims,info)
|
||||
@@ -836,7 +836,7 @@ contains
|
||||
integer(psb_lpk_), allocatable :: irow(:),icol(:)
|
||||
real(psb_dpk_), allocatable :: val(:)
|
||||
real(psb_dpk_) :: x,y,z, zt(nb)
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
nth = omp_get_num_threads()
|
||||
ith = omp_get_thread_num()
|
||||
#else
|
||||
|
||||
@@ -74,7 +74,7 @@ program amg_d_pde2d
|
||||
use amg_d_pde2d_box_mod
|
||||
use amg_d_pde2d_gauss_mod
|
||||
use amg_d_genpde_mod
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
use omp_lib
|
||||
#endif
|
||||
implicit none
|
||||
@@ -212,7 +212,7 @@ program amg_d_pde2d
|
||||
|
||||
call psb_init(ctxt)
|
||||
call psb_info(ctxt,iam,np)
|
||||
#if defined(OPENMP)
|
||||
#if defined(PSB_OPENMP)
|
||||
!$OMP parallel shared(nth)
|
||||
!$OMP master
|
||||
nth = omp_get_num_threads()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user