mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 22:55:12 +00:00
New inheritance structure for aggregator object.
This commit is contained in:
@@ -9,29 +9,29 @@ FINCLUDES=$(FMFLAG)$(HERE) $(FMFLAG)$(MODDIR) $(FMFLAG)$(INCDIR) $(PSBLAS_INCLUD
|
||||
#CINCLUDES= -I${SUPERLU_INCDIR} -I${HSL_INCDIR} -I${SPRAL_INCDIR} -I/home/users/pasqua/Ambra/BootCMatch/include -lBCM -L/home/users/pasqua/Ambra/BootCMatch/lib -lm
|
||||
|
||||
OBJS= \
|
||||
mld_s_base_aggregator_mat_asb.o \
|
||||
mld_s_base_aggregator_tprol.o \
|
||||
mld_s_dec_aggregator_mat_asb.o \
|
||||
mld_s_dec_aggregator_tprol.o \
|
||||
mld_s_hybrid_aggregator_tprol.o \
|
||||
mld_s_symdec_aggregator_tprol.o \
|
||||
mld_s_map_to_tprol.o mld_s_dec_map_bld.o mld_s_hyb_map_bld.o\
|
||||
mld_saggrmat_biz_asb.o mld_saggrmat_minnrg_asb.o\
|
||||
mld_saggrmat_nosmth_asb.o mld_saggrmat_smth_asb.o \
|
||||
mld_d_base_aggregator_mat_asb.o \
|
||||
mld_d_base_aggregator_tprol.o \
|
||||
mld_d_dec_aggregator_mat_asb.o \
|
||||
mld_d_dec_aggregator_tprol.o \
|
||||
mld_d_hybrid_aggregator_tprol.o \
|
||||
mld_d_symdec_aggregator_tprol.o \
|
||||
mld_d_map_to_tprol.o mld_d_dec_map_bld.o mld_d_hyb_map_bld.o\
|
||||
mld_daggrmat_biz_asb.o mld_daggrmat_minnrg_asb.o\
|
||||
mld_daggrmat_nosmth_asb.o mld_daggrmat_smth_asb.o \
|
||||
mld_c_base_aggregator_mat_asb.o \
|
||||
mld_c_base_aggregator_tprol.o \
|
||||
mld_c_dec_aggregator_mat_asb.o \
|
||||
mld_c_dec_aggregator_tprol.o \
|
||||
mld_c_hybrid_aggregator_tprol.o \
|
||||
mld_c_symdec_aggregator_tprol.o \
|
||||
mld_c_map_to_tprol.o mld_c_dec_map_bld.o mld_c_hyb_map_bld.o\
|
||||
mld_caggrmat_biz_asb.o mld_caggrmat_minnrg_asb.o\
|
||||
mld_caggrmat_nosmth_asb.o mld_caggrmat_smth_asb.o \
|
||||
mld_z_base_aggregator_mat_asb.o \
|
||||
mld_z_base_aggregator_tprol.o \
|
||||
mld_z_dec_aggregator_mat_asb.o \
|
||||
mld_z_dec_aggregator_tprol.o \
|
||||
mld_z_hybrid_aggregator_tprol.o \
|
||||
mld_z_symdec_aggregator_tprol.o \
|
||||
mld_z_map_to_tprol.o mld_z_dec_map_bld.o mld_z_hyb_map_bld.o\
|
||||
|
||||
+8
-8
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_c_base_aggregator_mat_asb.f90
|
||||
! File: mld_c_dec_aggregator_mat_asb.f90
|
||||
!
|
||||
! Subroutine: mld_c_base_aggregator_mat_asb
|
||||
! Subroutine: mld_c_dec_aggregator_mat_asb
|
||||
! Version: complex
|
||||
!
|
||||
! This routine builds the matrix associated to the current level of the
|
||||
@@ -96,7 +96,7 @@
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(mld_c_base_aggregator_type), input/output.
|
||||
! ag - type(mld_c_dec_aggregator_type), input/output.
|
||||
! The aggregator object
|
||||
! parms - type(mld_sml_parms), input
|
||||
! The aggregation parameters
|
||||
@@ -130,13 +130,13 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_c_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
subroutine mld_c_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
use mld_c_prec_type, mld_protect_name => mld_c_base_aggregator_mat_asb
|
||||
use mld_c_prec_type, mld_protect_name => mld_c_dec_aggregator_mat_asb
|
||||
use mld_c_inner_mod
|
||||
implicit none
|
||||
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_c_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -154,7 +154,7 @@ subroutine mld_c_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_c_base_aggregator_mat_asb'
|
||||
name='mld_c_dec_aggregator_mat_asb'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -208,4 +208,4 @@ subroutine mld_c_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
return
|
||||
|
||||
|
||||
end subroutine mld_c_base_aggregator_mat_asb
|
||||
end subroutine mld_c_dec_aggregator_mat_asb
|
||||
+7
-7
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_c_base_aggregator_tprol.f90
|
||||
! File: mld_c_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: mld_c_base_aggregator_tprol
|
||||
! Subroutine: mld_c_dec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
! This routine is mainly an interface to dec_map_bld where the real work is performed.
|
||||
@@ -72,12 +72,12 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_c_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
subroutine mld_c_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
use mld_c_prec_type, mld_protect_name => mld_c_base_aggregator_build_tprol
|
||||
use mld_c_prec_type, mld_protect_name => mld_c_dec_aggregator_build_tprol
|
||||
use mld_c_inner_mod
|
||||
implicit none
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_c_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -92,7 +92,7 @@ subroutine mld_c_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
integer(psb_ipk_) :: ntaggr
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_c_base_aggregator_tprol'
|
||||
name='mld_c_dec_aggregator_tprol'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -125,4 +125,4 @@ subroutine mld_c_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
end subroutine mld_c_base_aggregator_build_tprol
|
||||
end subroutine mld_c_dec_aggregator_build_tprol
|
||||
+8
-8
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_d_base_aggregator_mat_asb.f90
|
||||
! File: mld_d_dec_aggregator_mat_asb.f90
|
||||
!
|
||||
! Subroutine: mld_d_base_aggregator_mat_asb
|
||||
! Subroutine: mld_d_dec_aggregator_mat_asb
|
||||
! Version: real
|
||||
!
|
||||
! This routine builds the matrix associated to the current level of the
|
||||
@@ -96,7 +96,7 @@
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(mld_d_base_aggregator_type), input/output.
|
||||
! ag - type(mld_d_dec_aggregator_type), input/output.
|
||||
! The aggregator object
|
||||
! parms - type(mld_dml_parms), input
|
||||
! The aggregation parameters
|
||||
@@ -130,13 +130,13 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_d_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
subroutine mld_d_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
use mld_d_prec_type, mld_protect_name => mld_d_base_aggregator_mat_asb
|
||||
use mld_d_prec_type, mld_protect_name => mld_d_dec_aggregator_mat_asb
|
||||
use mld_d_inner_mod
|
||||
implicit none
|
||||
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_d_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -154,7 +154,7 @@ subroutine mld_d_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_d_base_aggregator_mat_asb'
|
||||
name='mld_d_dec_aggregator_mat_asb'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -208,4 +208,4 @@ subroutine mld_d_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
return
|
||||
|
||||
|
||||
end subroutine mld_d_base_aggregator_mat_asb
|
||||
end subroutine mld_d_dec_aggregator_mat_asb
|
||||
+7
-7
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_d_base_aggregator_tprol.f90
|
||||
! File: mld_d_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: mld_d_base_aggregator_tprol
|
||||
! Subroutine: mld_d_dec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
! This routine is mainly an interface to dec_map_bld where the real work is performed.
|
||||
@@ -72,12 +72,12 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_d_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
subroutine mld_d_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
use mld_d_prec_type, mld_protect_name => mld_d_base_aggregator_build_tprol
|
||||
use mld_d_prec_type, mld_protect_name => mld_d_dec_aggregator_build_tprol
|
||||
use mld_d_inner_mod
|
||||
implicit none
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_d_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -92,7 +92,7 @@ subroutine mld_d_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
integer(psb_ipk_) :: ntaggr
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_d_base_aggregator_tprol'
|
||||
name='mld_d_dec_aggregator_tprol'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -125,4 +125,4 @@ subroutine mld_d_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
end subroutine mld_d_base_aggregator_build_tprol
|
||||
end subroutine mld_d_dec_aggregator_build_tprol
|
||||
+8
-8
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_s_base_aggregator_mat_asb.f90
|
||||
! File: mld_s_dec_aggregator_mat_asb.f90
|
||||
!
|
||||
! Subroutine: mld_s_base_aggregator_mat_asb
|
||||
! Subroutine: mld_s_dec_aggregator_mat_asb
|
||||
! Version: real
|
||||
!
|
||||
! This routine builds the matrix associated to the current level of the
|
||||
@@ -96,7 +96,7 @@
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(mld_s_base_aggregator_type), input/output.
|
||||
! ag - type(mld_s_dec_aggregator_type), input/output.
|
||||
! The aggregator object
|
||||
! parms - type(mld_sml_parms), input
|
||||
! The aggregation parameters
|
||||
@@ -130,13 +130,13 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_s_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
subroutine mld_s_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
use mld_s_prec_type, mld_protect_name => mld_s_base_aggregator_mat_asb
|
||||
use mld_s_prec_type, mld_protect_name => mld_s_dec_aggregator_mat_asb
|
||||
use mld_s_inner_mod
|
||||
implicit none
|
||||
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_s_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -154,7 +154,7 @@ subroutine mld_s_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_s_base_aggregator_mat_asb'
|
||||
name='mld_s_dec_aggregator_mat_asb'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -208,4 +208,4 @@ subroutine mld_s_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
return
|
||||
|
||||
|
||||
end subroutine mld_s_base_aggregator_mat_asb
|
||||
end subroutine mld_s_dec_aggregator_mat_asb
|
||||
+7
-7
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_s_base_aggregator_tprol.f90
|
||||
! File: mld_s_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: mld_s_base_aggregator_tprol
|
||||
! Subroutine: mld_s_dec_aggregator_tprol
|
||||
! Version: real
|
||||
!
|
||||
! This routine is mainly an interface to dec_map_bld where the real work is performed.
|
||||
@@ -72,12 +72,12 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_s_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
subroutine mld_s_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
use mld_s_prec_type, mld_protect_name => mld_s_base_aggregator_build_tprol
|
||||
use mld_s_prec_type, mld_protect_name => mld_s_dec_aggregator_build_tprol
|
||||
use mld_s_inner_mod
|
||||
implicit none
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_s_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -92,7 +92,7 @@ subroutine mld_s_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
integer(psb_ipk_) :: ntaggr
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_s_base_aggregator_tprol'
|
||||
name='mld_s_dec_aggregator_tprol'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -125,4 +125,4 @@ subroutine mld_s_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
end subroutine mld_s_base_aggregator_build_tprol
|
||||
end subroutine mld_s_dec_aggregator_build_tprol
|
||||
+8
-8
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_z_base_aggregator_mat_asb.f90
|
||||
! File: mld_z_dec_aggregator_mat_asb.f90
|
||||
!
|
||||
! Subroutine: mld_z_base_aggregator_mat_asb
|
||||
! Subroutine: mld_z_dec_aggregator_mat_asb
|
||||
! Version: complex
|
||||
!
|
||||
! This routine builds the matrix associated to the current level of the
|
||||
@@ -96,7 +96,7 @@
|
||||
!
|
||||
!
|
||||
! Arguments:
|
||||
! ag - type(mld_z_base_aggregator_type), input/output.
|
||||
! ag - type(mld_z_dec_aggregator_type), input/output.
|
||||
! The aggregator object
|
||||
! parms - type(mld_dml_parms), input
|
||||
! The aggregation parameters
|
||||
@@ -130,13 +130,13 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_z_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
subroutine mld_z_dec_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
use mld_z_prec_type, mld_protect_name => mld_z_base_aggregator_mat_asb
|
||||
use mld_z_prec_type, mld_protect_name => mld_z_dec_aggregator_mat_asb
|
||||
use mld_z_inner_mod
|
||||
implicit none
|
||||
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_z_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -154,7 +154,7 @@ subroutine mld_z_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_z_base_aggregator_mat_asb'
|
||||
name='mld_z_dec_aggregator_mat_asb'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -208,4 +208,4 @@ subroutine mld_z_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,op_
|
||||
return
|
||||
|
||||
|
||||
end subroutine mld_z_base_aggregator_mat_asb
|
||||
end subroutine mld_z_dec_aggregator_mat_asb
|
||||
+7
-7
@@ -35,9 +35,9 @@
|
||||
! POSSIBILITY OF SUCH DAMAGE.
|
||||
!
|
||||
!
|
||||
! File: mld_z_base_aggregator_tprol.f90
|
||||
! File: mld_z_dec_aggregator_tprol.f90
|
||||
!
|
||||
! Subroutine: mld_z_base_aggregator_tprol
|
||||
! Subroutine: mld_z_dec_aggregator_tprol
|
||||
! Version: complex
|
||||
!
|
||||
! This routine is mainly an interface to dec_map_bld where the real work is performed.
|
||||
@@ -72,12 +72,12 @@
|
||||
! info - integer, output.
|
||||
! Error code.
|
||||
!
|
||||
subroutine mld_z_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
subroutine mld_z_dec_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
use mld_z_prec_type, mld_protect_name => mld_z_base_aggregator_build_tprol
|
||||
use mld_z_prec_type, mld_protect_name => mld_z_dec_aggregator_build_tprol
|
||||
use mld_z_inner_mod
|
||||
implicit none
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
class(mld_z_dec_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
@@ -92,7 +92,7 @@ subroutine mld_z_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
integer(psb_ipk_) :: ntaggr
|
||||
integer(psb_ipk_) :: debug_level, debug_unit
|
||||
|
||||
name='mld_z_base_aggregator_tprol'
|
||||
name='mld_z_dec_aggregator_tprol'
|
||||
if (psb_get_errstatus().ne.0) return
|
||||
call psb_erractionsave(err_act)
|
||||
debug_unit = psb_get_debug_unit()
|
||||
@@ -125,4 +125,4 @@ subroutine mld_z_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op
|
||||
9999 call psb_error_handler(err_act)
|
||||
return
|
||||
|
||||
end subroutine mld_z_base_aggregator_build_tprol
|
||||
end subroutine mld_z_dec_aggregator_build_tprol
|
||||
@@ -39,6 +39,10 @@ subroutine mld_c_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_c_onelev_mod, mld_protect_name => mld_c_base_onelev_cseti
|
||||
use mld_c_base_aggregator_mod
|
||||
use mld_c_dec_aggregator_mod
|
||||
use mld_c_symdec_aggregator_mod
|
||||
use mld_c_hybrid_aggregator_mod
|
||||
use mld_c_jac_smoother
|
||||
use mld_c_as_smoother
|
||||
use mld_c_diag_solver
|
||||
@@ -182,6 +186,25 @@ subroutine mld_c_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
case ('PAR_AGGR_ALG')
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_c_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_c_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_c_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_c_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_c_onelev_mod, mld_protect_name => mld_c_base_onelev_seti
|
||||
use mld_c_base_aggregator_mod
|
||||
use mld_c_dec_aggregator_mod
|
||||
use mld_c_symdec_aggregator_mod
|
||||
use mld_c_hybrid_aggregator_mod
|
||||
use mld_c_jac_smoother
|
||||
use mld_c_as_smoother
|
||||
use mld_c_diag_solver
|
||||
@@ -182,6 +186,25 @@ subroutine mld_c_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
case (mld_par_aggr_alg_)
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_c_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_c_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_c_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case (mld_aggr_ord_)
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_d_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_d_onelev_mod, mld_protect_name => mld_d_base_onelev_cseti
|
||||
use mld_d_base_aggregator_mod
|
||||
use mld_d_dec_aggregator_mod
|
||||
use mld_d_symdec_aggregator_mod
|
||||
use mld_d_hybrid_aggregator_mod
|
||||
use mld_d_jac_smoother
|
||||
use mld_d_as_smoother
|
||||
use mld_d_diag_solver
|
||||
@@ -202,6 +206,25 @@ subroutine mld_d_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
case ('PAR_AGGR_ALG')
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_d_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_d_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_d_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_d_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_d_onelev_mod, mld_protect_name => mld_d_base_onelev_seti
|
||||
use mld_d_base_aggregator_mod
|
||||
use mld_d_dec_aggregator_mod
|
||||
use mld_d_symdec_aggregator_mod
|
||||
use mld_d_hybrid_aggregator_mod
|
||||
use mld_d_jac_smoother
|
||||
use mld_d_as_smoother
|
||||
use mld_d_diag_solver
|
||||
@@ -202,6 +206,25 @@ subroutine mld_d_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
case (mld_par_aggr_alg_)
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_d_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_d_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_d_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case (mld_aggr_ord_)
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_s_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_s_onelev_mod, mld_protect_name => mld_s_base_onelev_cseti
|
||||
use mld_s_base_aggregator_mod
|
||||
use mld_s_dec_aggregator_mod
|
||||
use mld_s_symdec_aggregator_mod
|
||||
use mld_s_hybrid_aggregator_mod
|
||||
use mld_s_jac_smoother
|
||||
use mld_s_as_smoother
|
||||
use mld_s_diag_solver
|
||||
@@ -182,6 +186,25 @@ subroutine mld_s_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
case ('PAR_AGGR_ALG')
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_s_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_s_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_s_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_s_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_s_onelev_mod, mld_protect_name => mld_s_base_onelev_seti
|
||||
use mld_s_base_aggregator_mod
|
||||
use mld_s_dec_aggregator_mod
|
||||
use mld_s_symdec_aggregator_mod
|
||||
use mld_s_hybrid_aggregator_mod
|
||||
use mld_s_jac_smoother
|
||||
use mld_s_as_smoother
|
||||
use mld_s_diag_solver
|
||||
@@ -182,6 +186,25 @@ subroutine mld_s_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
case (mld_par_aggr_alg_)
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_s_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_s_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_s_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case (mld_aggr_ord_)
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_z_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_z_onelev_mod, mld_protect_name => mld_z_base_onelev_cseti
|
||||
use mld_z_base_aggregator_mod
|
||||
use mld_z_dec_aggregator_mod
|
||||
use mld_z_symdec_aggregator_mod
|
||||
use mld_z_hybrid_aggregator_mod
|
||||
use mld_z_jac_smoother
|
||||
use mld_z_as_smoother
|
||||
use mld_z_diag_solver
|
||||
@@ -202,6 +206,25 @@ subroutine mld_z_base_onelev_cseti(lv,what,val,info,pos)
|
||||
|
||||
case ('PAR_AGGR_ALG')
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_z_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_z_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_z_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case ('AGGR_ORD')
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -39,6 +39,10 @@ subroutine mld_z_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
use psb_base_mod
|
||||
use mld_z_onelev_mod, mld_protect_name => mld_z_base_onelev_seti
|
||||
use mld_z_base_aggregator_mod
|
||||
use mld_z_dec_aggregator_mod
|
||||
use mld_z_symdec_aggregator_mod
|
||||
use mld_z_hybrid_aggregator_mod
|
||||
use mld_z_jac_smoother
|
||||
use mld_z_as_smoother
|
||||
use mld_z_diag_solver
|
||||
@@ -202,6 +206,25 @@ subroutine mld_z_base_onelev_seti(lv,what,val,info,pos)
|
||||
|
||||
case (mld_par_aggr_alg_)
|
||||
lv%parms%par_aggr_alg = val
|
||||
if (allocated(lv%aggr)) then
|
||||
call lv%aggr%free(info)
|
||||
if (info == 0) deallocate(lv%aggr,stat=info)
|
||||
if (info /= 0) then
|
||||
info = psb_err_internal_error_
|
||||
return
|
||||
end if
|
||||
end if
|
||||
|
||||
select case(val)
|
||||
case(mld_dec_aggr_)
|
||||
allocate(mld_z_dec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_sym_dec_aggr_)
|
||||
allocate(mld_z_symdec_aggregator_type :: lv%aggr, stat=info)
|
||||
case(mld_hybrid_aggr_)
|
||||
allocate(mld_z_hybrid_aggregator_type :: lv%aggr, stat=info)
|
||||
case default
|
||||
info = psb_err_internal_error_
|
||||
end select
|
||||
|
||||
case (mld_aggr_ord_)
|
||||
lv%parms%aggr_ord = val
|
||||
|
||||
@@ -97,6 +97,7 @@ module mld_base_prec_type
|
||||
procedure, pass(pm) :: get_coarse => ml_parms_get_coarse
|
||||
procedure, pass(pm) :: clone => ml_parms_clone
|
||||
procedure, pass(pm) :: descr => ml_parms_descr
|
||||
procedure, pass(pm) :: mlcycledsc => ml_parms_mlcycledsc
|
||||
procedure, pass(pm) :: mldescr => ml_parms_mldescr
|
||||
procedure, pass(pm) :: coarsedescr => ml_parms_coarsedescr
|
||||
procedure, pass(pm) :: printout => ml_parms_printout
|
||||
@@ -222,6 +223,13 @@ module mld_base_prec_type
|
||||
integer(psb_ipk_), parameter :: mld_new_ml_prec_ = 7
|
||||
integer(psb_ipk_), parameter :: mld_mult_dev_ml_ = 7
|
||||
integer(psb_ipk_), parameter :: mld_max_ml_cycle_ = 8
|
||||
!
|
||||
! Legal values for entry: mld_par_aggr_alg_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: mld_dec_aggr_ = 0
|
||||
integer(psb_ipk_), parameter :: mld_sym_dec_aggr_ = 1
|
||||
integer(psb_ipk_), parameter :: mld_ext_aggr_ = 2
|
||||
integer(psb_ipk_), parameter :: mld_max_par_aggr_alg_ = mld_ext_aggr_
|
||||
!
|
||||
! Legal values for entry: mld_aggr_type_
|
||||
!
|
||||
@@ -244,14 +252,6 @@ module mld_base_prec_type
|
||||
integer(psb_ipk_), parameter :: mld_filter_mat_ = 1
|
||||
integer(psb_ipk_), parameter :: mld_max_filter_mat_ = mld_filter_mat_
|
||||
!
|
||||
! Legal values for entry: mld_par_aggr_alg_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: mld_dec_aggr_ = 0
|
||||
integer(psb_ipk_), parameter :: mld_sym_dec_aggr_ = 1
|
||||
integer(psb_ipk_), parameter :: mld_ext_aggr_ = 2
|
||||
integer(psb_ipk_), parameter :: mld_bcmatch_aggr_ = 3
|
||||
integer(psb_ipk_), parameter :: mld_max_par_aggr_alg_ = mld_ext_aggr_
|
||||
!
|
||||
! Legal values for entry: mld_aggr_ord_
|
||||
!
|
||||
integer(psb_ipk_), parameter :: mld_aggr_ord_nat_ = 0
|
||||
@@ -322,12 +322,12 @@ module mld_base_prec_type
|
||||
character(len=15), parameter, private :: &
|
||||
& matrix_names(0:1)=(/'distributed ','replicated '/)
|
||||
character(len=18), parameter, private :: &
|
||||
& aggr_type_names(0:2)=(/'No aggregation ',&
|
||||
& aggr_type_names(0:2)=(/'None ',&
|
||||
& 'VMB aggregation ', 'Hybrid aggregation'/)
|
||||
character(len=18), parameter, private :: &
|
||||
& par_aggr_alg_names(0:3)=(/'decoupled aggr. ',&
|
||||
& 'sym. dec. aggr. ',&
|
||||
& 'user defined aggr.', 'matching aggr. '/)
|
||||
& par_aggr_alg_names(0:2)=(/&
|
||||
& 'decoupled aggr. ', 'sym. dec. aggr. ',&
|
||||
& 'user defined aggr.'/)
|
||||
character(len=18), parameter, private :: &
|
||||
& ord_names(0:1)=(/'Natural ordering ','Desc. degree ord. '/)
|
||||
character(len=6), parameter, private :: &
|
||||
@@ -446,8 +446,6 @@ contains
|
||||
val = mld_dec_aggr_
|
||||
case('SYMDEC')
|
||||
val = mld_sym_dec_aggr_
|
||||
case('BCMATCH')
|
||||
val = mld_bcmatch_aggr_
|
||||
case('NAT','NATURAL')
|
||||
val = mld_aggr_ord_nat_
|
||||
case('DESC','RDEGREE','DEGREE')
|
||||
@@ -533,8 +531,7 @@ contains
|
||||
!
|
||||
! Routines printing out a description of the preconditioner
|
||||
!
|
||||
|
||||
subroutine ml_parms_mldescr(pm,iout,info,aggr_name)
|
||||
subroutine ml_parms_mlcycledsc(pm,iout,info)
|
||||
|
||||
Implicit None
|
||||
|
||||
@@ -542,7 +539,6 @@ contains
|
||||
class(mld_ml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
character(len=*), intent(in), optional :: aggr_name
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=mld_no_ml_).and.(pm%ml_cycle<=mld_max_ml_cycle_)) then
|
||||
|
||||
@@ -557,14 +553,24 @@ contains
|
||||
write(iout,*) ' Number of smoother sweeps : pre: ',&
|
||||
& pm%sweeps_pre ,' post: ', pm%sweeps_post
|
||||
end select
|
||||
|
||||
end if
|
||||
end subroutine ml_parms_mlcycledsc
|
||||
|
||||
subroutine ml_parms_mldescr(pm,iout,info)
|
||||
|
||||
Implicit None
|
||||
|
||||
! Arguments
|
||||
class(mld_ml_parms), intent(in) :: pm
|
||||
integer(psb_ipk_), intent(in) :: iout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
info = psb_success_
|
||||
if ((pm%ml_cycle>=mld_no_ml_).and.(pm%ml_cycle<=mld_max_ml_cycle_)) then
|
||||
|
||||
|
||||
if (present(aggr_name)) then
|
||||
write(iout,*) ' Aggregation type: ', &
|
||||
& aggr_name
|
||||
else
|
||||
write(iout,*) ' Aggregation type: ',&
|
||||
& aggr_type_names(pm%aggr_type)
|
||||
end if
|
||||
write(iout,*) ' Aggregation type: ',&
|
||||
& aggr_type_names(pm%aggr_type)
|
||||
write(iout,*) ' parallel algorithm: ',&
|
||||
& par_aggr_alg_names(pm%par_aggr_alg)
|
||||
if (pm%par_aggr_alg /= mld_ext_aggr_) then
|
||||
@@ -574,7 +580,7 @@ contains
|
||||
write(iout,*) ' Aggregation prolongator: ', &
|
||||
& aggr_prols(pm%aggr_prol)
|
||||
if (pm%aggr_prol /= mld_no_smooth_) then
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
write(iout,*) ' with: ', aggr_filters(pm%aggr_filter)
|
||||
if (pm%aggr_omega_alg == mld_eig_est_) then
|
||||
write(iout,*) ' Damping omega computation: spectral radius estimate'
|
||||
write(iout,*) ' Spectral radius estimate: ', &
|
||||
@@ -587,7 +593,7 @@ contains
|
||||
end if
|
||||
end if
|
||||
else
|
||||
write(iout,*) ' Multilevel type: Unkonwn value. Something is amis....',&
|
||||
write(iout,*) ' Multilevel type: Unkonwn value. Something is amiss....',&
|
||||
& pm%ml_cycle
|
||||
end if
|
||||
|
||||
|
||||
@@ -107,38 +107,6 @@ module mld_c_base_aggregator_mod
|
||||
end type mld_c_base_aggregator_type
|
||||
|
||||
|
||||
interface
|
||||
subroutine mld_c_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
import :: mld_c_base_aggregator_type, psb_desc_type, psb_cspmat_type, psb_spk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_sml_parms
|
||||
implicit none
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_cspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_c_base_aggregator_build_tprol
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine mld_c_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
import :: mld_c_base_aggregator_type, psb_desc_type, psb_cspmat_type, psb_spk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_sml_parms
|
||||
implicit none
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_cspmat_type), intent(inout) :: op_prol
|
||||
type(psb_cspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_c_base_aggregator_mat_asb
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
subroutine mld_c_base_aggregator_update_next(ag,agnext,info)
|
||||
@@ -190,7 +158,7 @@ contains
|
||||
implicit none
|
||||
character(len=32) :: val
|
||||
|
||||
val = "Decoupled aggregation"
|
||||
val = "Null "
|
||||
end function mld_c_base_aggregator_fmt
|
||||
|
||||
subroutine mld_c_base_aggregator_descr(ag,parms,iout,info)
|
||||
@@ -205,4 +173,64 @@ contains
|
||||
return
|
||||
end subroutine mld_c_base_aggregator_descr
|
||||
|
||||
subroutine mld_c_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_cspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='c_base_aggregator_build_tprol'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
|
||||
end subroutine mld_c_base_aggregator_build_tprol
|
||||
|
||||
|
||||
subroutine mld_c_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_c_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_cspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_cspmat_type), intent(inout) :: op_prol
|
||||
type(psb_cspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='c_base_aggregator_mat_asb'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
end subroutine mld_c_base_aggregator_mat_asb
|
||||
|
||||
|
||||
end module mld_c_base_aggregator_mod
|
||||
|
||||
@@ -507,7 +507,7 @@ contains
|
||||
else
|
||||
lv%sm2 => lv%sm
|
||||
end if
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_c_base_aggregator_type :: lv%aggr,stat=info)
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_c_dec_aggregator_type :: lv%aggr,stat=info)
|
||||
if (allocated(lv%aggr)) call lv%aggr%default()
|
||||
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
!
|
||||
module mld_c_symdec_aggregator_mod
|
||||
|
||||
use mld_c_base_aggregator_mod
|
||||
use mld_c_dec_aggregator_mod
|
||||
!
|
||||
! sm - class(mld_T_base_smoother_type), allocatable
|
||||
! The current level preconditioner (aka smoother).
|
||||
@@ -91,7 +91,7 @@ module mld_c_symdec_aggregator_mod
|
||||
! get_nzeros - Number of nonzeros
|
||||
!
|
||||
!
|
||||
type, extends(mld_c_base_aggregator_type) :: mld_c_symdec_aggregator_type
|
||||
type, extends(mld_c_dec_aggregator_type) :: mld_c_symdec_aggregator_type
|
||||
|
||||
contains
|
||||
procedure, pass(ag) :: tprol => mld_c_symdec_aggregator_build_tprol
|
||||
|
||||
@@ -107,38 +107,6 @@ module mld_d_base_aggregator_mod
|
||||
end type mld_d_base_aggregator_type
|
||||
|
||||
|
||||
interface
|
||||
subroutine mld_d_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
import :: mld_d_base_aggregator_type, psb_desc_type, psb_dspmat_type, psb_dpk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_dml_parms
|
||||
implicit none
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_dspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_d_base_aggregator_build_tprol
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine mld_d_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
import :: mld_d_base_aggregator_type, psb_desc_type, psb_dspmat_type, psb_dpk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_dml_parms
|
||||
implicit none
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_dspmat_type), intent(inout) :: op_prol
|
||||
type(psb_dspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_d_base_aggregator_mat_asb
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
subroutine mld_d_base_aggregator_update_next(ag,agnext,info)
|
||||
@@ -190,7 +158,7 @@ contains
|
||||
implicit none
|
||||
character(len=32) :: val
|
||||
|
||||
val = "Decoupled aggregation"
|
||||
val = "Null "
|
||||
end function mld_d_base_aggregator_fmt
|
||||
|
||||
subroutine mld_d_base_aggregator_descr(ag,parms,iout,info)
|
||||
@@ -205,4 +173,64 @@ contains
|
||||
return
|
||||
end subroutine mld_d_base_aggregator_descr
|
||||
|
||||
subroutine mld_d_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_dspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='d_base_aggregator_build_tprol'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
|
||||
end subroutine mld_d_base_aggregator_build_tprol
|
||||
|
||||
|
||||
subroutine mld_d_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_d_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_dspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_dspmat_type), intent(inout) :: op_prol
|
||||
type(psb_dspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='d_base_aggregator_mat_asb'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
end subroutine mld_d_base_aggregator_mat_asb
|
||||
|
||||
|
||||
end module mld_d_base_aggregator_mod
|
||||
|
||||
@@ -507,7 +507,7 @@ contains
|
||||
else
|
||||
lv%sm2 => lv%sm
|
||||
end if
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_d_base_aggregator_type :: lv%aggr,stat=info)
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_d_dec_aggregator_type :: lv%aggr,stat=info)
|
||||
if (allocated(lv%aggr)) call lv%aggr%default()
|
||||
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
!
|
||||
module mld_d_symdec_aggregator_mod
|
||||
|
||||
use mld_d_base_aggregator_mod
|
||||
use mld_d_dec_aggregator_mod
|
||||
!
|
||||
! sm - class(mld_T_base_smoother_type), allocatable
|
||||
! The current level preconditioner (aka smoother).
|
||||
@@ -91,7 +91,7 @@ module mld_d_symdec_aggregator_mod
|
||||
! get_nzeros - Number of nonzeros
|
||||
!
|
||||
!
|
||||
type, extends(mld_d_base_aggregator_type) :: mld_d_symdec_aggregator_type
|
||||
type, extends(mld_d_dec_aggregator_type) :: mld_d_symdec_aggregator_type
|
||||
|
||||
contains
|
||||
procedure, pass(ag) :: tprol => mld_d_symdec_aggregator_build_tprol
|
||||
|
||||
@@ -107,38 +107,6 @@ module mld_s_base_aggregator_mod
|
||||
end type mld_s_base_aggregator_type
|
||||
|
||||
|
||||
interface
|
||||
subroutine mld_s_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
import :: mld_s_base_aggregator_type, psb_desc_type, psb_sspmat_type, psb_spk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_sml_parms
|
||||
implicit none
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_sspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_s_base_aggregator_build_tprol
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine mld_s_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
import :: mld_s_base_aggregator_type, psb_desc_type, psb_sspmat_type, psb_spk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_sml_parms
|
||||
implicit none
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_sspmat_type), intent(inout) :: op_prol
|
||||
type(psb_sspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_s_base_aggregator_mat_asb
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
subroutine mld_s_base_aggregator_update_next(ag,agnext,info)
|
||||
@@ -190,7 +158,7 @@ contains
|
||||
implicit none
|
||||
character(len=32) :: val
|
||||
|
||||
val = "Decoupled aggregation"
|
||||
val = "Null "
|
||||
end function mld_s_base_aggregator_fmt
|
||||
|
||||
subroutine mld_s_base_aggregator_descr(ag,parms,iout,info)
|
||||
@@ -205,4 +173,64 @@ contains
|
||||
return
|
||||
end subroutine mld_s_base_aggregator_descr
|
||||
|
||||
subroutine mld_s_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_sspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_base_aggregator_build_tprol'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
|
||||
end subroutine mld_s_base_aggregator_build_tprol
|
||||
|
||||
|
||||
subroutine mld_s_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_s_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_sml_parms), intent(inout) :: parms
|
||||
type(psb_sspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_sspmat_type), intent(inout) :: op_prol
|
||||
type(psb_sspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_base_aggregator_mat_asb'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
end subroutine mld_s_base_aggregator_mat_asb
|
||||
|
||||
|
||||
end module mld_s_base_aggregator_mod
|
||||
|
||||
@@ -507,7 +507,7 @@ contains
|
||||
else
|
||||
lv%sm2 => lv%sm
|
||||
end if
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_s_base_aggregator_type :: lv%aggr,stat=info)
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_s_dec_aggregator_type :: lv%aggr,stat=info)
|
||||
if (allocated(lv%aggr)) call lv%aggr%default()
|
||||
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
!
|
||||
module mld_s_symdec_aggregator_mod
|
||||
|
||||
use mld_s_base_aggregator_mod
|
||||
use mld_s_dec_aggregator_mod
|
||||
!
|
||||
! sm - class(mld_T_base_smoother_type), allocatable
|
||||
! The current level preconditioner (aka smoother).
|
||||
@@ -91,7 +91,7 @@ module mld_s_symdec_aggregator_mod
|
||||
! get_nzeros - Number of nonzeros
|
||||
!
|
||||
!
|
||||
type, extends(mld_s_base_aggregator_type) :: mld_s_symdec_aggregator_type
|
||||
type, extends(mld_s_dec_aggregator_type) :: mld_s_symdec_aggregator_type
|
||||
|
||||
contains
|
||||
procedure, pass(ag) :: tprol => mld_s_symdec_aggregator_build_tprol
|
||||
|
||||
@@ -107,38 +107,6 @@ module mld_z_base_aggregator_mod
|
||||
end type mld_z_base_aggregator_type
|
||||
|
||||
|
||||
interface
|
||||
subroutine mld_z_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
import :: mld_z_base_aggregator_type, psb_desc_type, psb_zspmat_type, psb_dpk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_dml_parms
|
||||
implicit none
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_zspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_z_base_aggregator_build_tprol
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine mld_z_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
import :: mld_z_base_aggregator_type, psb_desc_type, psb_zspmat_type, psb_dpk_, &
|
||||
& psb_ipk_, psb_long_int_k_, mld_dml_parms
|
||||
implicit none
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_zspmat_type), intent(inout) :: op_prol
|
||||
type(psb_zspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
end subroutine mld_z_base_aggregator_mat_asb
|
||||
end interface
|
||||
|
||||
contains
|
||||
|
||||
subroutine mld_z_base_aggregator_update_next(ag,agnext,info)
|
||||
@@ -190,7 +158,7 @@ contains
|
||||
implicit none
|
||||
character(len=32) :: val
|
||||
|
||||
val = "Decoupled aggregation"
|
||||
val = "Null "
|
||||
end function mld_z_base_aggregator_fmt
|
||||
|
||||
subroutine mld_z_base_aggregator_descr(ag,parms,iout,info)
|
||||
@@ -205,4 +173,64 @@ contains
|
||||
return
|
||||
end subroutine mld_z_base_aggregator_descr
|
||||
|
||||
subroutine mld_z_base_aggregator_build_tprol(ag,parms,a,desc_a,ilaggr,nlaggr,op_prol,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), allocatable, intent(out) :: ilaggr(:),nlaggr(:)
|
||||
type(psb_zspmat_type), intent(out) :: op_prol
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='z_base_aggregator_build_tprol'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
|
||||
end subroutine mld_z_base_aggregator_build_tprol
|
||||
|
||||
|
||||
subroutine mld_z_base_aggregator_mat_asb(ag,parms,a,desc_a,ilaggr,nlaggr,ac,&
|
||||
& op_prol,op_restr,info)
|
||||
use psb_base_mod
|
||||
implicit none
|
||||
class(mld_z_base_aggregator_type), target, intent(inout) :: ag
|
||||
type(mld_dml_parms), intent(inout) :: parms
|
||||
type(psb_zspmat_type), intent(in) :: a
|
||||
type(psb_desc_type), intent(in) :: desc_a
|
||||
integer(psb_ipk_), intent(inout) :: ilaggr(:), nlaggr(:)
|
||||
type(psb_zspmat_type), intent(inout) :: op_prol
|
||||
type(psb_zspmat_type), intent(out) :: ac,op_restr
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='z_base_aggregator_mat_asb'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
info = psb_err_missing_override_method_
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 call psb_error_handler(err_act)
|
||||
|
||||
return
|
||||
end subroutine mld_z_base_aggregator_mat_asb
|
||||
|
||||
|
||||
end module mld_z_base_aggregator_mod
|
||||
|
||||
@@ -507,7 +507,7 @@ contains
|
||||
else
|
||||
lv%sm2 => lv%sm
|
||||
end if
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_z_base_aggregator_type :: lv%aggr,stat=info)
|
||||
if (.not.allocated(lv%aggr)) allocate(mld_z_dec_aggregator_type :: lv%aggr,stat=info)
|
||||
if (allocated(lv%aggr)) call lv%aggr%default()
|
||||
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
!
|
||||
module mld_z_symdec_aggregator_mod
|
||||
|
||||
use mld_z_base_aggregator_mod
|
||||
use mld_z_dec_aggregator_mod
|
||||
!
|
||||
! sm - class(mld_T_base_smoother_type), allocatable
|
||||
! The current level preconditioner (aka smoother).
|
||||
@@ -91,7 +91,7 @@ module mld_z_symdec_aggregator_mod
|
||||
! get_nzeros - Number of nonzeros
|
||||
!
|
||||
!
|
||||
type, extends(mld_z_base_aggregator_type) :: mld_z_symdec_aggregator_type
|
||||
type, extends(mld_z_dec_aggregator_type) :: mld_z_symdec_aggregator_type
|
||||
|
||||
contains
|
||||
procedure, pass(ag) :: tprol => mld_z_symdec_aggregator_build_tprol
|
||||
|
||||
Reference in New Issue
Block a user