@ -1,4 +1,4 @@
! !
!
!
! AMG4PSBLAS version 1.0
! Algebraic Multigrid Package
@ -34,73 +34,6 @@
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE .
!
! moved here from
!
! AMG4PSBLAS Extensions
!
! ( C ) Copyright 2019
!
! Salvatore Filippone Cranfield University
! Pasqua D ' Ambra IAC - CNR , Naples , IT
!
! Redistribution and use in source and binary forms , with or without
! modification , are permitted provided that the following conditions
! are met :
! 1. Redistributions of source code must retain the above copyright
! notice , this list of conditions and the following disclaimer .
! 2. Redistributions in binary form must reproduce the above copyright
! notice , this list of conditions , and the following disclaimer in the
! documentation and / or other materials provided with the distribution .
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
! not be used to endorse or promote products derived from this
! software without specific written permission .
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! ` ` AS IS '' AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED
! TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE AMG4PSBLAS GROUP OR ITS CONTRIBUTORS
! BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR
! CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF
! SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
! INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
! CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE .
!
!
! MLD2P4 version 2.2
! MultiLevel Domain Decomposition Parallel Preconditioners Package
! based on PSBLAS ( Parallel Sparse BLAS version 3.5 )
!
! ( C ) Copyright 2008 - 2018
!
! Salvatore Filippone
! Pasqua D ' Ambra
! Daniela di Serafino
!
! Redistribution and use in source and binary forms , with or without
! modification , are permitted provided that the following conditions
! are met :
! 1. Redistributions of source code must retain the above copyright
! notice , this list of conditions and the following disclaimer .
! 2. Redistributions in binary form must reproduce the above copyright
! notice , this list of conditions , and the following disclaimer in the
! documentation and / or other materials provided with the distribution .
! 3. The name of the AMG4PSBLAS group or the names of its contributors may
! not be used to endorse or promote products derived from this
! software without specific written permission .
!
! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
! ` ` AS IS '' AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED
! TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE AMG4PSBLAS GROUP OR ITS CONTRIBUTORS
! BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR
! CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF
! SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS
! INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
! CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE )
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
! POSSIBILITY OF SUCH DAMAGE .
!
! File : amg_d_parmatch_aggregator_tprol . f90
!
@ -114,7 +47,11 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
use psb_base_mod
use amg_base_prec_type
use amg_d_inner_mod
# if defined ( SERIAL_MPI )
use amg_d_parmatch_aggregator_mod
# else
use amg_d_parmatch_aggregator_mod , amg_protect_name = > amg_d_parmatch_aggregator_build_tprol
# endif
use iso_c_binding
implicit none
class ( amg_d_parmatch_aggregator_type ) , target , intent ( inout ) :: ag
@ -181,6 +118,9 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
call amg_check_def ( parms % aggr_ord , 'Ordering' , &
& amg_aggr_ord_nat_ , is_legal_ml_aggr_ord )
call amg_check_def ( parms % aggr_thresh , 'Aggr_Thresh' , dzero , is_legal_d_aggr_thrs )
# if ! defined ( SERIAL_MPI )
match_algorithm = ag % matching_alg
n_sweeps = ag % n_sweeps
if ( 2 ** n_sweeps / = ag % orig_aggr_size ) then
@ -530,17 +470,11 @@ subroutine amg_d_parmatch_aggregator_build_tprol(ag,parms,ag_data,&
call psb_errpush ( psb_err_from_subroutine_ , name , a_err = 'amg_bootCMatch_if' )
go to 9999
end if
# endif
call psb_erractionrestore ( err_act )
return
9999 call psb_error_handler ( err_act )
return
contains
subroutine do_l1_jacobi ( nsweeps , w , a , desc_a )
integer ( psb_ipk_ ) , intent ( in ) :: nsweeps
real ( psb_dpk_ ) , intent ( inout ) :: w ( : )
type ( psb_dspmat_type ) , intent ( in ) :: a
type ( psb_desc_type ) , intent ( in ) :: desc_a
end subroutine do_l1_jacobi
end subroutine amg_d_parmatch_aggregator_build_tprol