Fix interface to matching method.

TestFerdous
Salvatore Filippone 3 years ago
parent fa2f8f53d5
commit f2cf59c276

@ -224,6 +224,7 @@ contains
wtemp(k) = w(k)/abs(w(k))
nlsingl = nlsingl + 1
end if
!!$ write(0,*) k,mate(k),ilaggr(k),' negative match ',abs(w(k)), epsilon(nrmagg)
else if (idx > nc) then
write(0,*) 'Impossible: mate(k) > nc'
cycle
@ -313,7 +314,11 @@ contains
! Shift all indices already assigned (i.e. >0)
!
do k=1,nr
if (ilaggr(k) > 0) ilaggr(k) = ilaggr(k) + naggrm1
if (ilaggr(k) > 0) then
ilaggr(k) = ilaggr(k) + naggrm1
!!$ else
!!$ write(0,*) 'Leftover ILAGGR',k,ilaggr(k),mate(k),abs(w(k)),epsilon(nrmagg)
end if
end do
call psb_halo(ilaggr,desc_a,info)
call psb_halo(wtemp,desc_a,info)

@ -381,7 +381,7 @@ contains
! For now we ignore IDX
select case(what)
select case(psb_toupper(trim(what)))
case('NWM_MATCH_ALG')
ag%matching_alg=val
case('NWM_SWEEPS')
@ -395,7 +395,6 @@ contains
case('AGGR_SIZE')
ag%orig_aggr_size = val
ag%n_sweeps=max(1,ceiling(log(val*1.0)/log(2.0)))
write(0,*) 'Check: ', val,ag%orig_aggr_size, ag%n_sweeps, 2**ag%n_sweeps
case default
! Do nothing
end select

@ -69,7 +69,13 @@ psb_i_t dnew_Match_If(psb_i_t nr, psb_i_t irp[], psb_i_t ja[],
runRomaWrapper(s,t,weights, nr, mateNode,preprocess,romaInput,lambda ,nt, pstat, timeDiff);
/* loop here only makes sense when nr==nz */
for (i=0; i< nr; i++) {
mate[i] = mateNode[i]+1;
//fprintf(stderr,"From runRomaWrapper: %d %d\n",i,mateNode[i]);
if (mateNode[i]>=0) {
mate[i] = mateNode[i]+1;
} else {
mate[i] = mateNode[i];
//fprintf(stderr,"From runRomaWrapper: %d %d\n",i,mateNode[i]);
}
}
return(0);
}

Loading…
Cancel
Save