|
|
|
@ -32,17 +32,21 @@
|
|
|
|
|
! POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
!
|
|
|
|
|
!
|
|
|
|
|
! File: amg_ptap.F90
|
|
|
|
|
! File: amg_rap.F90
|
|
|
|
|
!
|
|
|
|
|
! This routine computes the triple product :
|
|
|
|
|
! AC = P^T A P
|
|
|
|
|
! P^T is stored in Restr
|
|
|
|
|
! AC = R A P
|
|
|
|
|
! R is stored in Restr
|
|
|
|
|
! WARNINGS:
|
|
|
|
|
! 1. So far this has only been tested with R=P^T
|
|
|
|
|
! 2. Patterns and descriptors need to be consistent
|
|
|
|
|
! between initial build and application of this.
|
|
|
|
|
!
|
|
|
|
|
subroutine amg_c_ptap(a_csr,desc_a,nlaggr,parms,ac,&
|
|
|
|
|
subroutine amg_c_rap(a_csr,desc_a,nlaggr,parms,ac,&
|
|
|
|
|
& coo_prol,desc_ac,coo_restr,info)
|
|
|
|
|
use psb_base_mod
|
|
|
|
|
use amg_c_inner_mod
|
|
|
|
|
use amg_c_base_aggregator_mod, amg_protect_name => amg_c_ptap
|
|
|
|
|
use amg_c_base_aggregator_mod, amg_protect_name => amg_c_rap
|
|
|
|
|
implicit none
|
|
|
|
|
|
|
|
|
|
! Arguments
|
|
|
|
@ -68,7 +72,7 @@ subroutine amg_c_ptap(a_csr,desc_a,nlaggr,parms,ac,&
|
|
|
|
|
integer(psb_lpk_) :: nrsave, ncsave, nzsave, nza
|
|
|
|
|
logical, parameter :: debug=.false.
|
|
|
|
|
|
|
|
|
|
name='amg_ptap'
|
|
|
|
|
name='amg_rap'
|
|
|
|
|
if(psb_get_errstatus().ne.0) return
|
|
|
|
|
info=psb_success_
|
|
|
|
|
call psb_erractionsave(err_act)
|
|
|
|
@ -151,7 +155,7 @@ subroutine amg_c_ptap(a_csr,desc_a,nlaggr,parms,ac,&
|
|
|
|
|
|
|
|
|
|
if (debug_level >= psb_debug_outer_) &
|
|
|
|
|
& write(debug_unit,*) me,' ',trim(name),&
|
|
|
|
|
& 'Done ptap '
|
|
|
|
|
& 'Done rap '
|
|
|
|
|
|
|
|
|
|
call psb_erractionrestore(err_act)
|
|
|
|
|
return
|
|
|
|
@ -159,4 +163,4 @@ subroutine amg_c_ptap(a_csr,desc_a,nlaggr,parms,ac,&
|
|
|
|
|
9999 call psb_error_handler(err_act)
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
end subroutine amg_c_ptap
|
|
|
|
|
end subroutine amg_c_rap
|