Merge branch 'development' into MixedI8

stopcriterion
Salvatore Filippone 6 years ago
commit b4404483cd

@ -83,6 +83,9 @@
! For more details see ! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level ! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263. ! Schwarz method, Computing, 63 (1999), 233-263.
! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! (1996), 179-196.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007), ! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196. ! 1181-1196.

@ -47,10 +47,10 @@
! !
! !
! Arguments: ! Arguments:
! p - type(mld_c_onelev_type), input/output. ! ag - type(mld_c_dec_aggregator_type), input/output.
! The 'one-level' data structure containing the control ! The aggregator object, carrying with itself the mapping algorithm.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! parms - The auxiliary parameters object
! !
! a - type(psb_cspmat_type). ! a - type(psb_cspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -60,13 +60,6 @@
! !
! !
! Arguments: ! Arguments:
! aggr_type - integer, input.
! The scalar used to identify the aggregation algorithm.
! theta - real, input.
! The aggregation threshold used in the aggregation algorithm.
! a - type(psb_cspmat_type), input.
! The sparse matrix structure containing the local part of
! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! ilaggr - integer, dimension(:), allocatable. ! ilaggr - integer, dimension(:), allocatable.

@ -46,9 +46,9 @@
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
! Note: upon exit ! Note: upon exit
! !
@ -71,7 +71,7 @@ subroutine mld_c_soc1_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_c_inner_mod!, mld_protect_name => mld_c_soc1_map_bld use mld_c_inner_mod
implicit none implicit none

@ -70,7 +70,7 @@ subroutine mld_c_soc2_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_c_inner_mod!, mld_protect_name => mld_c_soc2_map_bld use mld_c_inner_mod
implicit none implicit none

@ -44,15 +44,16 @@
! This routine is mainly an interface to map_bld where the real work is performed. ! This routine is mainly an interface to map_bld where the real work is performed.
! It takes care of some consistency checking, and calls map_to_tprol, which is ! It takes care of some consistency checking, and calls map_to_tprol, which is
! refactored and shared among all the aggregation methods that produce a simple ! refactored and shared among all the aggregation methods that produce a simple
! integer mapping. ! integer mapping. It also symmetrizes the pattern of the local matrix A.
! !
! !
! !
! Arguments: ! Arguments:
! p - type(mld_c_onelev_type), input/output. ! Arguments:
! The 'one-level' data structure containing the control ! ag - type(mld_c_dec_aggregator_type), input/output.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! The aggregator object, carrying with itself the mapping algorithm.
! ! parms - The auxiliary parameters object
!
! a - type(psb_cspmat_type). ! a - type(psb_cspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -49,7 +49,7 @@
! !
! This routine builds A_C according to a "bizarre" aggregation algorithm, ! This routine builds A_C according to a "bizarre" aggregation algorithm,
! using a "naive" prolongator proposed by the authors of MLD2P4. However, this ! using a "naive" prolongator proposed by the authors of MLD2P4. However, this
! prolongator still requires a deep analysis and testing and its use is not ! prolongator still requires additional analysis and testing and its use is not
! recommended. ! recommended.
! !
! The coarse-level matrix A_C is distributed among the parallel processes or ! The coarse-level matrix A_C is distributed among the parallel processes or

@ -59,18 +59,13 @@
! radius of D^(-1)A, to be used in the computation of omega, is provided, ! radius of D^(-1)A, to be used in the computation of omega, is provided,
! according to the value of p%parms%aggr_omega_alg, specified by the user ! according to the value of p%parms%aggr_omega_alg, specified by the user
! through mld_cprecinit and mld_cprecset. ! through mld_cprecinit and mld_cprecset.
! 4. Minimum energy aggregation: ADD REFERENCE. ! 4. Minimum energy aggregation:
! M. Sala, R. Tuminaro: A new Petrov-Galerkin smoothed aggregation preconditioner
! for nonsymmetric linear systems, SIAM J. Sci. Comput., 31(1):143-166 (2008)
!
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_c_lev_aggrmat_asb. ! aggregator%mat_asb.
!
! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196.
!
! !
! !
! Arguments: ! Arguments:
@ -102,7 +97,8 @@
! The tentative prolongator on input, the computed prolongator on output ! The tentative prolongator on input, the computed prolongator on output
! !
! op_restr - type(psb_cspmat_type), output ! op_restr - type(psb_cspmat_type), output
! The restrictor operator; normally, it is the transpose of the prolongator. ! The restrictor operator; in this particular case, it is different
! from the transpose of the prolongator.
! !
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.

@ -53,7 +53,7 @@
! specified by the user through mld_cprecinit and mld_zprecset. ! specified by the user through mld_cprecinit and mld_zprecset.
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_c_lev_aggrmat_asb. ! aggregator%mat_asb.
! !
! For details see ! For details see
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of

@ -83,6 +83,9 @@
! For more details see ! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level ! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263. ! Schwarz method, Computing, 63 (1999), 233-263.
! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! (1996), 179-196.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007), ! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196. ! 1181-1196.

@ -47,10 +47,10 @@
! !
! !
! Arguments: ! Arguments:
! p - type(mld_d_onelev_type), input/output. ! ag - type(mld_d_dec_aggregator_type), input/output.
! The 'one-level' data structure containing the control ! The aggregator object, carrying with itself the mapping algorithm.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! parms - The auxiliary parameters object
! !
! a - type(psb_dspmat_type). ! a - type(psb_dspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -60,13 +60,6 @@
! !
! !
! Arguments: ! Arguments:
! aggr_type - integer, input.
! The scalar used to identify the aggregation algorithm.
! theta - real, input.
! The aggregation threshold used in the aggregation algorithm.
! a - type(psb_dspmat_type), input.
! The sparse matrix structure containing the local part of
! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! ilaggr - integer, dimension(:), allocatable. ! ilaggr - integer, dimension(:), allocatable.

@ -46,9 +46,9 @@
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
! Note: upon exit ! Note: upon exit
! !
@ -71,7 +71,7 @@ subroutine mld_d_soc1_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_d_inner_mod!, mld_protect_name => mld_d_soc1_map_bld use mld_d_inner_mod
implicit none implicit none

@ -70,7 +70,7 @@ subroutine mld_d_soc2_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_d_inner_mod!, mld_protect_name => mld_d_soc2_map_bld use mld_d_inner_mod
implicit none implicit none

@ -44,15 +44,16 @@
! This routine is mainly an interface to map_bld where the real work is performed. ! This routine is mainly an interface to map_bld where the real work is performed.
! It takes care of some consistency checking, and calls map_to_tprol, which is ! It takes care of some consistency checking, and calls map_to_tprol, which is
! refactored and shared among all the aggregation methods that produce a simple ! refactored and shared among all the aggregation methods that produce a simple
! integer mapping. ! integer mapping. It also symmetrizes the pattern of the local matrix A.
! !
! !
! !
! Arguments: ! Arguments:
! p - type(mld_d_onelev_type), input/output. ! Arguments:
! The 'one-level' data structure containing the control ! ag - type(mld_d_dec_aggregator_type), input/output.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! The aggregator object, carrying with itself the mapping algorithm.
! ! parms - The auxiliary parameters object
!
! a - type(psb_dspmat_type). ! a - type(psb_dspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -49,7 +49,7 @@
! !
! This routine builds A_C according to a "bizarre" aggregation algorithm, ! This routine builds A_C according to a "bizarre" aggregation algorithm,
! using a "naive" prolongator proposed by the authors of MLD2P4. However, this ! using a "naive" prolongator proposed by the authors of MLD2P4. However, this
! prolongator still requires a deep analysis and testing and its use is not ! prolongator still requires additional analysis and testing and its use is not
! recommended. ! recommended.
! !
! The coarse-level matrix A_C is distributed among the parallel processes or ! The coarse-level matrix A_C is distributed among the parallel processes or

@ -59,18 +59,13 @@
! radius of D^(-1)A, to be used in the computation of omega, is provided, ! radius of D^(-1)A, to be used in the computation of omega, is provided,
! according to the value of p%parms%aggr_omega_alg, specified by the user ! according to the value of p%parms%aggr_omega_alg, specified by the user
! through mld_dprecinit and mld_dprecset. ! through mld_dprecinit and mld_dprecset.
! 4. Minimum energy aggregation: ADD REFERENCE. ! 4. Minimum energy aggregation:
! M. Sala, R. Tuminaro: A new Petrov-Galerkin smoothed aggregation preconditioner
! for nonsymmetric linear systems, SIAM J. Sci. Comput., 31(1):143-166 (2008)
!
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_d_lev_aggrmat_asb. ! aggregator%mat_asb.
!
! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196.
!
! !
! !
! Arguments: ! Arguments:
@ -102,7 +97,8 @@
! The tentative prolongator on input, the computed prolongator on output ! The tentative prolongator on input, the computed prolongator on output
! !
! op_restr - type(psb_dspmat_type), output ! op_restr - type(psb_dspmat_type), output
! The restrictor operator; normally, it is the transpose of the prolongator. ! The restrictor operator; in this particular case, it is different
! from the transpose of the prolongator.
! !
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.

@ -53,7 +53,7 @@
! specified by the user through mld_dprecinit and mld_zprecset. ! specified by the user through mld_dprecinit and mld_zprecset.
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_d_lev_aggrmat_asb. ! aggregator%mat_asb.
! !
! For details see ! For details see
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of

@ -83,6 +83,9 @@
! For more details see ! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level ! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263. ! Schwarz method, Computing, 63 (1999), 233-263.
! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! (1996), 179-196.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007), ! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196. ! 1181-1196.

@ -47,10 +47,10 @@
! !
! !
! Arguments: ! Arguments:
! p - type(mld_s_onelev_type), input/output. ! ag - type(mld_s_dec_aggregator_type), input/output.
! The 'one-level' data structure containing the control ! The aggregator object, carrying with itself the mapping algorithm.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! parms - The auxiliary parameters object
! !
! a - type(psb_sspmat_type). ! a - type(psb_sspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -60,13 +60,6 @@
! !
! !
! Arguments: ! Arguments:
! aggr_type - integer, input.
! The scalar used to identify the aggregation algorithm.
! theta - real, input.
! The aggregation threshold used in the aggregation algorithm.
! a - type(psb_sspmat_type), input.
! The sparse matrix structure containing the local part of
! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! ilaggr - integer, dimension(:), allocatable. ! ilaggr - integer, dimension(:), allocatable.

@ -46,9 +46,9 @@
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
! Note: upon exit ! Note: upon exit
! !
@ -71,7 +71,7 @@ subroutine mld_s_soc1_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_s_inner_mod!, mld_protect_name => mld_s_soc1_map_bld use mld_s_inner_mod
implicit none implicit none

@ -70,7 +70,7 @@ subroutine mld_s_soc2_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_s_inner_mod!, mld_protect_name => mld_s_soc2_map_bld use mld_s_inner_mod
implicit none implicit none

@ -44,15 +44,16 @@
! This routine is mainly an interface to map_bld where the real work is performed. ! This routine is mainly an interface to map_bld where the real work is performed.
! It takes care of some consistency checking, and calls map_to_tprol, which is ! It takes care of some consistency checking, and calls map_to_tprol, which is
! refactored and shared among all the aggregation methods that produce a simple ! refactored and shared among all the aggregation methods that produce a simple
! integer mapping. ! integer mapping. It also symmetrizes the pattern of the local matrix A.
! !
! !
! !
! Arguments: ! Arguments:
! p - type(mld_s_onelev_type), input/output. ! Arguments:
! The 'one-level' data structure containing the control ! ag - type(mld_s_dec_aggregator_type), input/output.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! The aggregator object, carrying with itself the mapping algorithm.
! ! parms - The auxiliary parameters object
!
! a - type(psb_sspmat_type). ! a - type(psb_sspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -49,7 +49,7 @@
! !
! This routine builds A_C according to a "bizarre" aggregation algorithm, ! This routine builds A_C according to a "bizarre" aggregation algorithm,
! using a "naive" prolongator proposed by the authors of MLD2P4. However, this ! using a "naive" prolongator proposed by the authors of MLD2P4. However, this
! prolongator still requires a deep analysis and testing and its use is not ! prolongator still requires additional analysis and testing and its use is not
! recommended. ! recommended.
! !
! The coarse-level matrix A_C is distributed among the parallel processes or ! The coarse-level matrix A_C is distributed among the parallel processes or

@ -59,18 +59,13 @@
! radius of D^(-1)A, to be used in the computation of omega, is provided, ! radius of D^(-1)A, to be used in the computation of omega, is provided,
! according to the value of p%parms%aggr_omega_alg, specified by the user ! according to the value of p%parms%aggr_omega_alg, specified by the user
! through mld_sprecinit and mld_sprecset. ! through mld_sprecinit and mld_sprecset.
! 4. Minimum energy aggregation: ADD REFERENCE. ! 4. Minimum energy aggregation:
! M. Sala, R. Tuminaro: A new Petrov-Galerkin smoothed aggregation preconditioner
! for nonsymmetric linear systems, SIAM J. Sci. Comput., 31(1):143-166 (2008)
!
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_s_lev_aggrmat_asb. ! aggregator%mat_asb.
!
! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196.
!
! !
! !
! Arguments: ! Arguments:
@ -102,7 +97,8 @@
! The tentative prolongator on input, the computed prolongator on output ! The tentative prolongator on input, the computed prolongator on output
! !
! op_restr - type(psb_sspmat_type), output ! op_restr - type(psb_sspmat_type), output
! The restrictor operator; normally, it is the transpose of the prolongator. ! The restrictor operator; in this particular case, it is different
! from the transpose of the prolongator.
! !
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.

@ -53,7 +53,7 @@
! specified by the user through mld_sprecinit and mld_zprecset. ! specified by the user through mld_sprecinit and mld_zprecset.
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_s_lev_aggrmat_asb. ! aggregator%mat_asb.
! !
! For details see ! For details see
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of

@ -83,6 +83,9 @@
! For more details see ! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level ! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263. ! Schwarz method, Computing, 63 (1999), 233-263.
! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! (1996), 179-196.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007), ! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196. ! 1181-1196.

@ -47,10 +47,10 @@
! !
! !
! Arguments: ! Arguments:
! p - type(mld_z_onelev_type), input/output. ! ag - type(mld_z_dec_aggregator_type), input/output.
! The 'one-level' data structure containing the control ! The aggregator object, carrying with itself the mapping algorithm.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! parms - The auxiliary parameters object
! !
! a - type(psb_zspmat_type). ! a - type(psb_zspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -60,13 +60,6 @@
! !
! !
! Arguments: ! Arguments:
! aggr_type - integer, input.
! The scalar used to identify the aggregation algorithm.
! theta - real, input.
! The aggregation threshold used in the aggregation algorithm.
! a - type(psb_zspmat_type), input.
! The sparse matrix structure containing the local part of
! the fine-level matrix.
! desc_a - type(psb_desc_type), input. ! desc_a - type(psb_desc_type), input.
! The communication descriptor of the fine-level matrix. ! The communication descriptor of the fine-level matrix.
! ilaggr - integer, dimension(:), allocatable. ! ilaggr - integer, dimension(:), allocatable.

@ -46,9 +46,9 @@
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
! Note: upon exit ! Note: upon exit
! !
@ -71,7 +71,7 @@ subroutine mld_z_soc1_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_z_inner_mod!, mld_protect_name => mld_z_soc1_map_bld use mld_z_inner_mod
implicit none implicit none

@ -70,7 +70,7 @@ subroutine mld_z_soc2_map_bld(iorder,theta,a,desc_a,nlaggr,ilaggr,info)
use psb_base_mod use psb_base_mod
use mld_base_prec_type use mld_base_prec_type
use mld_z_inner_mod!, mld_protect_name => mld_z_soc2_map_bld use mld_z_inner_mod
implicit none implicit none

@ -44,15 +44,16 @@
! This routine is mainly an interface to map_bld where the real work is performed. ! This routine is mainly an interface to map_bld where the real work is performed.
! It takes care of some consistency checking, and calls map_to_tprol, which is ! It takes care of some consistency checking, and calls map_to_tprol, which is
! refactored and shared among all the aggregation methods that produce a simple ! refactored and shared among all the aggregation methods that produce a simple
! integer mapping. ! integer mapping. It also symmetrizes the pattern of the local matrix A.
! !
! !
! !
! Arguments: ! Arguments:
! p - type(mld_z_onelev_type), input/output. ! Arguments:
! The 'one-level' data structure containing the control ! ag - type(mld_z_dec_aggregator_type), input/output.
! parameters and (eventually) coarse matrix and prolongator/restrictors. ! The aggregator object, carrying with itself the mapping algorithm.
! ! parms - The auxiliary parameters object
!
! a - type(psb_zspmat_type). ! a - type(psb_zspmat_type).
! The sparse matrix structure containing the local part of the ! The sparse matrix structure containing the local part of the
! fine-level matrix. ! fine-level matrix.

@ -49,7 +49,7 @@
! !
! This routine builds A_C according to a "bizarre" aggregation algorithm, ! This routine builds A_C according to a "bizarre" aggregation algorithm,
! using a "naive" prolongator proposed by the authors of MLD2P4. However, this ! using a "naive" prolongator proposed by the authors of MLD2P4. However, this
! prolongator still requires a deep analysis and testing and its use is not ! prolongator still requires additional analysis and testing and its use is not
! recommended. ! recommended.
! !
! The coarse-level matrix A_C is distributed among the parallel processes or ! The coarse-level matrix A_C is distributed among the parallel processes or

@ -59,18 +59,13 @@
! radius of D^(-1)A, to be used in the computation of omega, is provided, ! radius of D^(-1)A, to be used in the computation of omega, is provided,
! according to the value of p%parms%aggr_omega_alg, specified by the user ! according to the value of p%parms%aggr_omega_alg, specified by the user
! through mld_zprecinit and mld_zprecset. ! through mld_zprecinit and mld_zprecset.
! 4. Minimum energy aggregation: ADD REFERENCE. ! 4. Minimum energy aggregation:
! M. Sala, R. Tuminaro: A new Petrov-Galerkin smoothed aggregation preconditioner
! for nonsymmetric linear systems, SIAM J. Sci. Comput., 31(1):143-166 (2008)
!
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_z_lev_aggrmat_asb. ! aggregator%mat_asb.
!
! For more details see
! M. Brezina and P. Vanek, A black-box iterative solver based on a two-level
! Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of PSBLAS-based
! parallel two-level Schwarz preconditioners, Appl. Num. Math., 57 (2007),
! 1181-1196.
!
! !
! !
! Arguments: ! Arguments:
@ -102,7 +97,8 @@
! The tentative prolongator on input, the computed prolongator on output ! The tentative prolongator on input, the computed prolongator on output
! !
! op_restr - type(psb_zspmat_type), output ! op_restr - type(psb_zspmat_type), output
! The restrictor operator; normally, it is the transpose of the prolongator. ! The restrictor operator; in this particular case, it is different
! from the transpose of the prolongator.
! !
! info - integer, output. ! info - integer, output.
! Error code. ! Error code.

@ -53,7 +53,7 @@
! specified by the user through mld_zprecinit and mld_zprecset. ! specified by the user through mld_zprecinit and mld_zprecset.
! On output from this routine the entries of AC, op_prol, op_restr ! On output from this routine the entries of AC, op_prol, op_restr
! are still in "global numbering" mode; this is fixed in the calling routine ! are still in "global numbering" mode; this is fixed in the calling routine
! mld_z_lev_aggrmat_asb. ! aggregator%mat_asb.
! !
! For details see ! For details see
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. D'Ambra, D. di Serafino and S. Filippone, On the development of

@ -226,7 +226,7 @@ contains
!! The mapping is store in ILAGGR; for each local row index I, !! The mapping is store in ILAGGR; for each local row index I,
!! ILAGGR(I) contains the index of the aggregate to which index I !! ILAGGR(I) contains the index of the aggregate to which index I
!! will contribute, in global numbering. !! will contribute, in global numbering.
!! Many aggregation produce a binary tentative prolongators, but some !! Many aggregation produce a binary tentative prolongator, but some
!! do not, hence we also need the OP_PROL output. !! do not, hence we also need the OP_PROL output.
!! !!
!! \param ag The input aggregator object !! \param ag The input aggregator object

@ -34,59 +34,45 @@
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
! ! Basic (decoupled) aggregation algorithm. Based on the ideas in
!
!
! The aggregator object hosts the aggregation method for building
! the multilevel hierarchy.
!
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
module mld_c_dec_aggregator_mod module mld_c_dec_aggregator_mod
use mld_c_base_aggregator_mod use mld_c_base_aggregator_mod
! !> \namespace mld_c_dec_aggregator_mod \class mld_c_dec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_c_base_aggregator_mod::mld_c_base_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! type, extends(mld_c_base_aggregator_type) :: mld_c_dec_aggregator_type
! The parameters defining the multilevel strategy. !! procedure(mld_c_map_bld), nopass, pointer :: map_bld => null()
! ac - The local part of the current-level matrix, built by !! end type
! coarsening the previous-level matrix. !!
! desc_ac - type(psb_desc_type). !! This is the simplest aggregation method: starting from the
! The communication descriptor associated to the matrix !! strength-of-connection measure for defining the aggregation
! stored in ac. !! presented in
! base_a - type(psb_Tspmat_type), pointer. !!
! Pointer (really a pointer!) to the local part of the current !! M. Brezina and P. Vanek, A black-box iterative solver based on a
! matrix (so we have a unified treatment of residuals). !! two-level Schwarz method, Computing, 63 (1999), 233-263.
! We need this to avoid passing explicitly the current matrix !! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! to the routine which applies the preconditioner. !! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! base_desc - type(psb_desc_type), pointer. !! (1996), 179-196.
! Pointer to the communication descriptor associated to the !!
! matrix pointed by base_a. !! it achieves parallelization by simply acting on the local matrix,
! map - Stores the maps (restriction and prolongation) between the !! i.e. by "decoupling" the subdomains.
! vector spaces associated to the index spaces of the previous !! The data structure hosts a "map_bld" function pointer which allows to
! and current levels. !! choose other ways to measure "strength-of-connection", of which the
! !! Vanek-Brezina-Mandel is the default. More details are available in
! Methods: !!
! Most methods follow the encapsulation hierarchy: they take whatever action !! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! is appropriate for the current object, then call the corresponding method for !! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! the contained object. !! 57 (2007), 1181-1196.
! As an example: the descr() method prints out a description of the !!
! level. It starts by invoking the descr() method of the parms object, !! The map_bld method is used inside the implementation of build_tprol
! then calls the descr() method of the smoother object. !!
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
! !
! !
type, extends(mld_c_base_aggregator_type) :: mld_c_dec_aggregator_type type, extends(mld_c_base_aggregator_type) :: mld_c_dec_aggregator_type

@ -37,59 +37,20 @@
! !
! !
! !
! The aggregator object hosts the aggregation method for building ! Locally symmetrized (decoupled) aggregation algorithm.
! the multilevel hierarchy. This version only differs from the ! This version differs from the basic decoupled aggregation algorithm
! basic decoupled aggregation algorithm because it works on (the ! only because it works on (the pattern of) A+A^T instead of A.
! pattern of) A+A^T instead of A.
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! 57 (2007), 1181-1196.
! !
module mld_c_symdec_aggregator_mod module mld_c_symdec_aggregator_mod
use mld_c_dec_aggregator_mod use mld_c_dec_aggregator_mod
! !> \namespace mld_c_symdec_aggregator_mod \class mld_c_symdec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_c_dec_aggregator_mod::mld_c_dec_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! This version differs from the basic decoupled aggregation algorithm
! The parameters defining the multilevel strategy. !! only because it works on (the pattern of) A+A^T instead of A.
! ac - The local part of the current-level matrix, built by !!
! coarsening the previous-level matrix.
! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix
! stored in ac.
! base_a - type(psb_Tspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix
! to the routine which applies the preconditioner.
! base_desc - type(psb_desc_type), pointer.
! Pointer to the communication descriptor associated to the
! matrix pointed by base_a.
! map - Stores the maps (restriction and prolongation) between the
! vector spaces associated to the index spaces of the previous
! and current levels.
!
! Methods:
! Most methods follow the encapsulation hierarchy: they take whatever action
! is appropriate for the current object, then call the corresponding method for
! the contained object.
! As an example: the descr() method prints out a description of the
! level. It starts by invoking the descr() method of the parms object,
! then calls the descr() method of the smoother object.
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
!
! !
type, extends(mld_c_dec_aggregator_type) :: mld_c_symdec_aggregator_type type, extends(mld_c_dec_aggregator_type) :: mld_c_symdec_aggregator_type

@ -226,7 +226,7 @@ contains
!! The mapping is store in ILAGGR; for each local row index I, !! The mapping is store in ILAGGR; for each local row index I,
!! ILAGGR(I) contains the index of the aggregate to which index I !! ILAGGR(I) contains the index of the aggregate to which index I
!! will contribute, in global numbering. !! will contribute, in global numbering.
!! Many aggregation produce a binary tentative prolongators, but some !! Many aggregation produce a binary tentative prolongator, but some
!! do not, hence we also need the OP_PROL output. !! do not, hence we also need the OP_PROL output.
!! !!
!! \param ag The input aggregator object !! \param ag The input aggregator object

@ -34,59 +34,45 @@
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
! ! Basic (decoupled) aggregation algorithm. Based on the ideas in
!
!
! The aggregator object hosts the aggregation method for building
! the multilevel hierarchy.
!
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
module mld_d_dec_aggregator_mod module mld_d_dec_aggregator_mod
use mld_d_base_aggregator_mod use mld_d_base_aggregator_mod
! !> \namespace mld_d_dec_aggregator_mod \class mld_d_dec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_d_base_aggregator_mod::mld_d_base_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! type, extends(mld_d_base_aggregator_type) :: mld_d_dec_aggregator_type
! The parameters defining the multilevel strategy. !! procedure(mld_d_map_bld), nopass, pointer :: map_bld => null()
! ac - The local part of the current-level matrix, built by !! end type
! coarsening the previous-level matrix. !!
! desc_ac - type(psb_desc_type). !! This is the simplest aggregation method: starting from the
! The communication descriptor associated to the matrix !! strength-of-connection measure for defining the aggregation
! stored in ac. !! presented in
! base_a - type(psb_Tspmat_type), pointer. !!
! Pointer (really a pointer!) to the local part of the current !! M. Brezina and P. Vanek, A black-box iterative solver based on a
! matrix (so we have a unified treatment of residuals). !! two-level Schwarz method, Computing, 63 (1999), 233-263.
! We need this to avoid passing explicitly the current matrix !! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! to the routine which applies the preconditioner. !! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! base_desc - type(psb_desc_type), pointer. !! (1996), 179-196.
! Pointer to the communication descriptor associated to the !!
! matrix pointed by base_a. !! it achieves parallelization by simply acting on the local matrix,
! map - Stores the maps (restriction and prolongation) between the !! i.e. by "decoupling" the subdomains.
! vector spaces associated to the index spaces of the previous !! The data structure hosts a "map_bld" function pointer which allows to
! and current levels. !! choose other ways to measure "strength-of-connection", of which the
! !! Vanek-Brezina-Mandel is the default. More details are available in
! Methods: !!
! Most methods follow the encapsulation hierarchy: they take whatever action !! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! is appropriate for the current object, then call the corresponding method for !! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! the contained object. !! 57 (2007), 1181-1196.
! As an example: the descr() method prints out a description of the !!
! level. It starts by invoking the descr() method of the parms object, !! The map_bld method is used inside the implementation of build_tprol
! then calls the descr() method of the smoother object. !!
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
! !
! !
type, extends(mld_d_base_aggregator_type) :: mld_d_dec_aggregator_type type, extends(mld_d_base_aggregator_type) :: mld_d_dec_aggregator_type

@ -37,59 +37,20 @@
! !
! !
! !
! The aggregator object hosts the aggregation method for building ! Locally symmetrized (decoupled) aggregation algorithm.
! the multilevel hierarchy. This version only differs from the ! This version differs from the basic decoupled aggregation algorithm
! basic decoupled aggregation algorithm because it works on (the ! only because it works on (the pattern of) A+A^T instead of A.
! pattern of) A+A^T instead of A.
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! 57 (2007), 1181-1196.
! !
module mld_d_symdec_aggregator_mod module mld_d_symdec_aggregator_mod
use mld_d_dec_aggregator_mod use mld_d_dec_aggregator_mod
! !> \namespace mld_d_symdec_aggregator_mod \class mld_d_symdec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_d_dec_aggregator_mod::mld_d_dec_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! This version differs from the basic decoupled aggregation algorithm
! The parameters defining the multilevel strategy. !! only because it works on (the pattern of) A+A^T instead of A.
! ac - The local part of the current-level matrix, built by !!
! coarsening the previous-level matrix.
! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix
! stored in ac.
! base_a - type(psb_Tspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix
! to the routine which applies the preconditioner.
! base_desc - type(psb_desc_type), pointer.
! Pointer to the communication descriptor associated to the
! matrix pointed by base_a.
! map - Stores the maps (restriction and prolongation) between the
! vector spaces associated to the index spaces of the previous
! and current levels.
!
! Methods:
! Most methods follow the encapsulation hierarchy: they take whatever action
! is appropriate for the current object, then call the corresponding method for
! the contained object.
! As an example: the descr() method prints out a description of the
! level. It starts by invoking the descr() method of the parms object,
! then calls the descr() method of the smoother object.
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
!
! !
type, extends(mld_d_dec_aggregator_type) :: mld_d_symdec_aggregator_type type, extends(mld_d_dec_aggregator_type) :: mld_d_symdec_aggregator_type

@ -226,7 +226,7 @@ contains
!! The mapping is store in ILAGGR; for each local row index I, !! The mapping is store in ILAGGR; for each local row index I,
!! ILAGGR(I) contains the index of the aggregate to which index I !! ILAGGR(I) contains the index of the aggregate to which index I
!! will contribute, in global numbering. !! will contribute, in global numbering.
!! Many aggregation produce a binary tentative prolongators, but some !! Many aggregation produce a binary tentative prolongator, but some
!! do not, hence we also need the OP_PROL output. !! do not, hence we also need the OP_PROL output.
!! !!
!! \param ag The input aggregator object !! \param ag The input aggregator object

@ -34,59 +34,45 @@
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
! ! Basic (decoupled) aggregation algorithm. Based on the ideas in
!
!
! The aggregator object hosts the aggregation method for building
! the multilevel hierarchy.
!
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
module mld_s_dec_aggregator_mod module mld_s_dec_aggregator_mod
use mld_s_base_aggregator_mod use mld_s_base_aggregator_mod
! !> \namespace mld_s_dec_aggregator_mod \class mld_s_dec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_s_base_aggregator_mod::mld_s_base_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! type, extends(mld_s_base_aggregator_type) :: mld_s_dec_aggregator_type
! The parameters defining the multilevel strategy. !! procedure(mld_s_map_bld), nopass, pointer :: map_bld => null()
! ac - The local part of the current-level matrix, built by !! end type
! coarsening the previous-level matrix. !!
! desc_ac - type(psb_desc_type). !! This is the simplest aggregation method: starting from the
! The communication descriptor associated to the matrix !! strength-of-connection measure for defining the aggregation
! stored in ac. !! presented in
! base_a - type(psb_Tspmat_type), pointer. !!
! Pointer (really a pointer!) to the local part of the current !! M. Brezina and P. Vanek, A black-box iterative solver based on a
! matrix (so we have a unified treatment of residuals). !! two-level Schwarz method, Computing, 63 (1999), 233-263.
! We need this to avoid passing explicitly the current matrix !! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! to the routine which applies the preconditioner. !! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! base_desc - type(psb_desc_type), pointer. !! (1996), 179-196.
! Pointer to the communication descriptor associated to the !!
! matrix pointed by base_a. !! it achieves parallelization by simply acting on the local matrix,
! map - Stores the maps (restriction and prolongation) between the !! i.e. by "decoupling" the subdomains.
! vector spaces associated to the index spaces of the previous !! The data structure hosts a "map_bld" function pointer which allows to
! and current levels. !! choose other ways to measure "strength-of-connection", of which the
! !! Vanek-Brezina-Mandel is the default. More details are available in
! Methods: !!
! Most methods follow the encapsulation hierarchy: they take whatever action !! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! is appropriate for the current object, then call the corresponding method for !! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! the contained object. !! 57 (2007), 1181-1196.
! As an example: the descr() method prints out a description of the !!
! level. It starts by invoking the descr() method of the parms object, !! The map_bld method is used inside the implementation of build_tprol
! then calls the descr() method of the smoother object. !!
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
! !
! !
type, extends(mld_s_base_aggregator_type) :: mld_s_dec_aggregator_type type, extends(mld_s_base_aggregator_type) :: mld_s_dec_aggregator_type

@ -37,59 +37,20 @@
! !
! !
! !
! The aggregator object hosts the aggregation method for building ! Locally symmetrized (decoupled) aggregation algorithm.
! the multilevel hierarchy. This version only differs from the ! This version differs from the basic decoupled aggregation algorithm
! basic decoupled aggregation algorithm because it works on (the ! only because it works on (the pattern of) A+A^T instead of A.
! pattern of) A+A^T instead of A.
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! 57 (2007), 1181-1196.
! !
module mld_s_symdec_aggregator_mod module mld_s_symdec_aggregator_mod
use mld_s_dec_aggregator_mod use mld_s_dec_aggregator_mod
! !> \namespace mld_s_symdec_aggregator_mod \class mld_s_symdec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_s_dec_aggregator_mod::mld_s_dec_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! This version differs from the basic decoupled aggregation algorithm
! The parameters defining the multilevel strategy. !! only because it works on (the pattern of) A+A^T instead of A.
! ac - The local part of the current-level matrix, built by !!
! coarsening the previous-level matrix.
! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix
! stored in ac.
! base_a - type(psb_Tspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix
! to the routine which applies the preconditioner.
! base_desc - type(psb_desc_type), pointer.
! Pointer to the communication descriptor associated to the
! matrix pointed by base_a.
! map - Stores the maps (restriction and prolongation) between the
! vector spaces associated to the index spaces of the previous
! and current levels.
!
! Methods:
! Most methods follow the encapsulation hierarchy: they take whatever action
! is appropriate for the current object, then call the corresponding method for
! the contained object.
! As an example: the descr() method prints out a description of the
! level. It starts by invoking the descr() method of the parms object,
! then calls the descr() method of the smoother object.
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
!
! !
type, extends(mld_s_dec_aggregator_type) :: mld_s_symdec_aggregator_type type, extends(mld_s_dec_aggregator_type) :: mld_s_symdec_aggregator_type

@ -226,7 +226,7 @@ contains
!! The mapping is store in ILAGGR; for each local row index I, !! The mapping is store in ILAGGR; for each local row index I,
!! ILAGGR(I) contains the index of the aggregate to which index I !! ILAGGR(I) contains the index of the aggregate to which index I
!! will contribute, in global numbering. !! will contribute, in global numbering.
!! Many aggregation produce a binary tentative prolongators, but some !! Many aggregation produce a binary tentative prolongator, but some
!! do not, hence we also need the OP_PROL output. !! do not, hence we also need the OP_PROL output.
!! !!
!! \param ag The input aggregator object !! \param ag The input aggregator object

@ -34,59 +34,45 @@
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE. ! POSSIBILITY OF SUCH DAMAGE.
! !
! ! Basic (decoupled) aggregation algorithm. Based on the ideas in
!
!
! The aggregator object hosts the aggregation method for building
! the multilevel hierarchy.
!
! M. Brezina and P. Vanek, A black-box iterative solver based on a ! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263. ! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of ! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math. ! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! 57 (2007), 1181-1196. ! (1996), 179-196.
! !
module mld_z_dec_aggregator_mod module mld_z_dec_aggregator_mod
use mld_z_base_aggregator_mod use mld_z_base_aggregator_mod
! !> \namespace mld_z_dec_aggregator_mod \class mld_z_dec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_z_base_aggregator_mod::mld_z_base_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! type, extends(mld_z_base_aggregator_type) :: mld_z_dec_aggregator_type
! The parameters defining the multilevel strategy. !! procedure(mld_z_map_bld), nopass, pointer :: map_bld => null()
! ac - The local part of the current-level matrix, built by !! end type
! coarsening the previous-level matrix. !!
! desc_ac - type(psb_desc_type). !! This is the simplest aggregation method: starting from the
! The communication descriptor associated to the matrix !! strength-of-connection measure for defining the aggregation
! stored in ac. !! presented in
! base_a - type(psb_Tspmat_type), pointer. !!
! Pointer (really a pointer!) to the local part of the current !! M. Brezina and P. Vanek, A black-box iterative solver based on a
! matrix (so we have a unified treatment of residuals). !! two-level Schwarz method, Computing, 63 (1999), 233-263.
! We need this to avoid passing explicitly the current matrix !! P. Vanek, J. Mandel and M. Brezina, Algebraic Multigrid by Smoothed
! to the routine which applies the preconditioner. !! Aggregation for Second and Fourth Order Elliptic Problems, Computing, 56
! base_desc - type(psb_desc_type), pointer. !! (1996), 179-196.
! Pointer to the communication descriptor associated to the !!
! matrix pointed by base_a. !! it achieves parallelization by simply acting on the local matrix,
! map - Stores the maps (restriction and prolongation) between the !! i.e. by "decoupling" the subdomains.
! vector spaces associated to the index spaces of the previous !! The data structure hosts a "map_bld" function pointer which allows to
! and current levels. !! choose other ways to measure "strength-of-connection", of which the
! !! Vanek-Brezina-Mandel is the default. More details are available in
! Methods: !!
! Most methods follow the encapsulation hierarchy: they take whatever action !! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! is appropriate for the current object, then call the corresponding method for !! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! the contained object. !! 57 (2007), 1181-1196.
! As an example: the descr() method prints out a description of the !!
! level. It starts by invoking the descr() method of the parms object, !! The map_bld method is used inside the implementation of build_tprol
! then calls the descr() method of the smoother object. !!
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
! !
! !
type, extends(mld_z_base_aggregator_type) :: mld_z_dec_aggregator_type type, extends(mld_z_base_aggregator_type) :: mld_z_dec_aggregator_type

@ -37,59 +37,20 @@
! !
! !
! !
! The aggregator object hosts the aggregation method for building ! Locally symmetrized (decoupled) aggregation algorithm.
! the multilevel hierarchy. This version only differs from the ! This version differs from the basic decoupled aggregation algorithm
! basic decoupled aggregation algorithm because it works on (the ! only because it works on (the pattern of) A+A^T instead of A.
! pattern of) A+A^T instead of A.
! !
! M. Brezina and P. Vanek, A black-box iterative solver based on a
! two-level Schwarz method, Computing, 63 (1999), 233-263.
! P. D'Ambra, D. di Serafino and S. Filippone, On the development of
! PSBLAS-based parallel two-level Schwarz preconditioners, Appl. Num. Math.
! 57 (2007), 1181-1196.
! !
module mld_z_symdec_aggregator_mod module mld_z_symdec_aggregator_mod
use mld_z_dec_aggregator_mod use mld_z_dec_aggregator_mod
! !> \namespace mld_z_symdec_aggregator_mod \class mld_z_symdec_aggregator_type
! sm - class(mld_T_base_smoother_type), allocatable !! \extends mld_z_dec_aggregator_mod::mld_z_dec_aggregator_type
! The current level preconditioner (aka smoother). !!
! parms - type(mld_RTml_parms) !! This version differs from the basic decoupled aggregation algorithm
! The parameters defining the multilevel strategy. !! only because it works on (the pattern of) A+A^T instead of A.
! ac - The local part of the current-level matrix, built by !!
! coarsening the previous-level matrix.
! desc_ac - type(psb_desc_type).
! The communication descriptor associated to the matrix
! stored in ac.
! base_a - type(psb_Tspmat_type), pointer.
! Pointer (really a pointer!) to the local part of the current
! matrix (so we have a unified treatment of residuals).
! We need this to avoid passing explicitly the current matrix
! to the routine which applies the preconditioner.
! base_desc - type(psb_desc_type), pointer.
! Pointer to the communication descriptor associated to the
! matrix pointed by base_a.
! map - Stores the maps (restriction and prolongation) between the
! vector spaces associated to the index spaces of the previous
! and current levels.
!
! Methods:
! Most methods follow the encapsulation hierarchy: they take whatever action
! is appropriate for the current object, then call the corresponding method for
! the contained object.
! As an example: the descr() method prints out a description of the
! level. It starts by invoking the descr() method of the parms object,
! then calls the descr() method of the smoother object.
!
! descr - Prints a description of the object.
! default - Set default values
! dump - Dump to file object contents
! set - Sets various parameters; when a request is unknown
! it is passed to the smoother object for further processing.
! check - Sanity checks.
! sizeof - Total memory occupation in bytes
! get_nzeros - Number of nonzeros
!
! !
type, extends(mld_z_dec_aggregator_type) :: mld_z_symdec_aggregator_type type, extends(mld_z_dec_aggregator_type) :: mld_z_symdec_aggregator_type

Loading…
Cancel
Save