diff --git a/mlprec/mld_c_base_aggregator_mod.f90 b/mlprec/mld_c_base_aggregator_mod.f90 index dcaee1d1..26a512cc 100644 --- a/mlprec/mld_c_base_aggregator_mod.f90 +++ b/mlprec/mld_c_base_aggregator_mod.f90 @@ -93,12 +93,15 @@ module mld_c_base_aggregator_mod procedure, pass(ag) :: free => mld_c_base_aggregator_free procedure, pass(ag) :: default => mld_c_base_aggregator_default procedure, pass(ag) :: descr => mld_c_base_aggregator_descr + procedure, pass(ag) :: sizeof => mld_c_base_aggregator_sizeof procedure, pass(ag) :: set_aggr_type => mld_c_base_aggregator_set_aggr_type procedure, nopass :: fmt => mld_c_base_aggregator_fmt procedure, pass(ag) :: cseti => mld_c_base_aggregator_cseti procedure, pass(ag) :: csetr => mld_c_base_aggregator_csetr procedure, pass(ag) :: csetc => mld_c_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc + procedure, nopass :: xt_desc => mld_c_base_aggregator_xt_desc + procedure, pass(ag) :: backfix => mld_c_base_aggregator_backfix end type mld_c_base_aggregator_type abstract interface @@ -221,6 +224,35 @@ contains val = "Default aggregator " end function mld_c_base_aggregator_fmt + function mld_c_base_aggregator_sizeof(ag) result(val) + implicit none + class(mld_c_base_aggregator_type), intent(in) :: ag + integer(psb_epk_) :: val + + val = 1 + end function mld_c_base_aggregator_sizeof + + function mld_c_base_aggregator_xt_desc() result(val) + implicit none + logical :: val + + val = .false. + end function mld_c_base_aggregator_xt_desc + + subroutine mld_c_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) + implicit none + class(mld_c_base_aggregator_type), intent(inout) :: ag + type(psb_cspmat_type), pointer :: base_a + type(psb_cspmat_type), intent(inout), target :: ac + type(psb_desc_type), pointer :: base_desc + type(psb_desc_type), intent(inout), target :: desc_ac + integer(psb_ipk_), intent(out) :: info + + ! Base version is to do nothing. + info = psb_success_ + + end subroutine mld_c_base_aggregator_backfix + subroutine mld_c_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_c_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_d_base_aggregator_mod.f90 b/mlprec/mld_d_base_aggregator_mod.f90 index 49307c4f..9e465a51 100644 --- a/mlprec/mld_d_base_aggregator_mod.f90 +++ b/mlprec/mld_d_base_aggregator_mod.f90 @@ -93,12 +93,15 @@ module mld_d_base_aggregator_mod procedure, pass(ag) :: free => mld_d_base_aggregator_free procedure, pass(ag) :: default => mld_d_base_aggregator_default procedure, pass(ag) :: descr => mld_d_base_aggregator_descr + procedure, pass(ag) :: sizeof => mld_d_base_aggregator_sizeof procedure, pass(ag) :: set_aggr_type => mld_d_base_aggregator_set_aggr_type procedure, nopass :: fmt => mld_d_base_aggregator_fmt procedure, pass(ag) :: cseti => mld_d_base_aggregator_cseti procedure, pass(ag) :: csetr => mld_d_base_aggregator_csetr procedure, pass(ag) :: csetc => mld_d_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc + procedure, nopass :: xt_desc => mld_d_base_aggregator_xt_desc + procedure, pass(ag) :: backfix => mld_d_base_aggregator_backfix end type mld_d_base_aggregator_type abstract interface @@ -221,6 +224,35 @@ contains val = "Default aggregator " end function mld_d_base_aggregator_fmt + function mld_d_base_aggregator_sizeof(ag) result(val) + implicit none + class(mld_d_base_aggregator_type), intent(in) :: ag + integer(psb_epk_) :: val + + val = 1 + end function mld_d_base_aggregator_sizeof + + function mld_d_base_aggregator_xt_desc() result(val) + implicit none + logical :: val + + val = .false. + end function mld_d_base_aggregator_xt_desc + + subroutine mld_d_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) + implicit none + class(mld_d_base_aggregator_type), intent(inout) :: ag + type(psb_dspmat_type), pointer :: base_a + type(psb_dspmat_type), intent(inout), target :: ac + type(psb_desc_type), pointer :: base_desc + type(psb_desc_type), intent(inout), target :: desc_ac + integer(psb_ipk_), intent(out) :: info + + ! Base version is to do nothing. + info = psb_success_ + + end subroutine mld_d_base_aggregator_backfix + subroutine mld_d_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_d_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_s_base_aggregator_mod.f90 b/mlprec/mld_s_base_aggregator_mod.f90 index ebc69a26..8f5f9693 100644 --- a/mlprec/mld_s_base_aggregator_mod.f90 +++ b/mlprec/mld_s_base_aggregator_mod.f90 @@ -93,12 +93,15 @@ module mld_s_base_aggregator_mod procedure, pass(ag) :: free => mld_s_base_aggregator_free procedure, pass(ag) :: default => mld_s_base_aggregator_default procedure, pass(ag) :: descr => mld_s_base_aggregator_descr + procedure, pass(ag) :: sizeof => mld_s_base_aggregator_sizeof procedure, pass(ag) :: set_aggr_type => mld_s_base_aggregator_set_aggr_type procedure, nopass :: fmt => mld_s_base_aggregator_fmt procedure, pass(ag) :: cseti => mld_s_base_aggregator_cseti procedure, pass(ag) :: csetr => mld_s_base_aggregator_csetr procedure, pass(ag) :: csetc => mld_s_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc + procedure, nopass :: xt_desc => mld_s_base_aggregator_xt_desc + procedure, pass(ag) :: backfix => mld_s_base_aggregator_backfix end type mld_s_base_aggregator_type abstract interface @@ -221,6 +224,35 @@ contains val = "Default aggregator " end function mld_s_base_aggregator_fmt + function mld_s_base_aggregator_sizeof(ag) result(val) + implicit none + class(mld_s_base_aggregator_type), intent(in) :: ag + integer(psb_epk_) :: val + + val = 1 + end function mld_s_base_aggregator_sizeof + + function mld_s_base_aggregator_xt_desc() result(val) + implicit none + logical :: val + + val = .false. + end function mld_s_base_aggregator_xt_desc + + subroutine mld_s_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) + implicit none + class(mld_s_base_aggregator_type), intent(inout) :: ag + type(psb_sspmat_type), pointer :: base_a + type(psb_sspmat_type), intent(inout), target :: ac + type(psb_desc_type), pointer :: base_desc + type(psb_desc_type), intent(inout), target :: desc_ac + integer(psb_ipk_), intent(out) :: info + + ! Base version is to do nothing. + info = psb_success_ + + end subroutine mld_s_base_aggregator_backfix + subroutine mld_s_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_s_base_aggregator_type), intent(in) :: ag diff --git a/mlprec/mld_z_base_aggregator_mod.f90 b/mlprec/mld_z_base_aggregator_mod.f90 index 2b8d1aca..4579685b 100644 --- a/mlprec/mld_z_base_aggregator_mod.f90 +++ b/mlprec/mld_z_base_aggregator_mod.f90 @@ -93,12 +93,15 @@ module mld_z_base_aggregator_mod procedure, pass(ag) :: free => mld_z_base_aggregator_free procedure, pass(ag) :: default => mld_z_base_aggregator_default procedure, pass(ag) :: descr => mld_z_base_aggregator_descr + procedure, pass(ag) :: sizeof => mld_z_base_aggregator_sizeof procedure, pass(ag) :: set_aggr_type => mld_z_base_aggregator_set_aggr_type procedure, nopass :: fmt => mld_z_base_aggregator_fmt procedure, pass(ag) :: cseti => mld_z_base_aggregator_cseti procedure, pass(ag) :: csetr => mld_z_base_aggregator_csetr procedure, pass(ag) :: csetc => mld_z_base_aggregator_csetc generic, public :: set => cseti, csetr, csetc + procedure, nopass :: xt_desc => mld_z_base_aggregator_xt_desc + procedure, pass(ag) :: backfix => mld_z_base_aggregator_backfix end type mld_z_base_aggregator_type abstract interface @@ -221,6 +224,35 @@ contains val = "Default aggregator " end function mld_z_base_aggregator_fmt + function mld_z_base_aggregator_sizeof(ag) result(val) + implicit none + class(mld_z_base_aggregator_type), intent(in) :: ag + integer(psb_epk_) :: val + + val = 1 + end function mld_z_base_aggregator_sizeof + + function mld_z_base_aggregator_xt_desc() result(val) + implicit none + logical :: val + + val = .false. + end function mld_z_base_aggregator_xt_desc + + subroutine mld_z_base_aggregator_backfix(ag,base_a,ac,base_desc,desc_ac,info) + implicit none + class(mld_z_base_aggregator_type), intent(inout) :: ag + type(psb_zspmat_type), pointer :: base_a + type(psb_zspmat_type), intent(inout), target :: ac + type(psb_desc_type), pointer :: base_desc + type(psb_desc_type), intent(inout), target :: desc_ac + integer(psb_ipk_), intent(out) :: info + + ! Base version is to do nothing. + info = psb_success_ + + end subroutine mld_z_base_aggregator_backfix + subroutine mld_z_base_aggregator_descr(ag,parms,iout,info) implicit none class(mld_z_base_aggregator_type), intent(in) :: ag